| // Copyright 2019 the gRPC authors. |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto3"; |
| |
| package hash_name; |
| |
| // A request for a single secret whose hash is similar to a desired name. |
| message HashNameRequest { |
| // The string that is desired in the secret's hash. |
| string desired_name = 1; |
| |
| // The ideal Hamming distance between desired_name and the secret that will |
| // be searched for. |
| int32 ideal_hamming_distance = 2; |
| |
| // A Hamming distance greater than the ideal Hamming distance. Search results |
| // with a Hamming distance less than this value but greater than the ideal |
| // distance will be returned back to the client but will not terminate the |
| // search. |
| int32 interesting_hamming_distance = 3; |
| } |
| |
| message HashNameResponse { |
| // The search result. |
| string secret = 1; |
| |
| // The hash of the search result. A substring of this is of |
| // ideal_hamming_distance Hamming distance or less from desired_name. |
| string hashed_name = 2; |
| |
| // The Hamming distance between hashed_name and desired_name. |
| int32 hamming_distance = 3; |
| } |
| |
| service HashFinder { |
| |
| // Search for a single string whose hash is similar to the specified |
| // desired_name. interesting_hamming_distance is ignored. |
| rpc Find (HashNameRequest) returns (HashNameResponse) {} |
| |
| // Search for a string whose hash is similar to the specified desired_name, |
| // but also stream back less-than-ideal candidates. |
| rpc FindRange (HashNameRequest) returns (stream HashNameResponse) {} |
| } |