common/proto/signature_info.proto (69 lines of code) (raw):
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 resdb;
message SignatureInfo {
enum HashType{
NONE = 0;
RSA = 1;
ED25519 = 2;
CMAC_AES = 3;
ECDSA = 4;
};
HashType hash_type = 1;
int64 node_id = 2;
bytes signature = 3;
};
message SecretKey {
bytes public_key = 1;
bytes private_key = 2;
SignatureInfo.HashType hash_type = 3;
};
message KeyInfo {
bytes key = 1;
SignatureInfo.HashType hash_type = 2;
}
message CertificateKeyInfo {
enum Type {
REPLICA = 0;
CLIENT = 1;
}
KeyInfo key = 1;
int64 node_id = 2;
Type type = 3;
string ip = 4;
int32 port = 5;
// the ip:port the replica uses, if it is a client node, can be ignored.
}
message CertificateKey {
CertificateKeyInfo public_key_info = 1; // the public key of current node.
SignatureInfo certificate = 2; // the certificate of `public_key_info`.
}
// CertificateInfo is published from the adminisotr and will be written to a cert file.
message CertificateInfo {
KeyInfo admin_public_key = 1; // the public key owned by the administor.
CertificateKey public_key = 3; // public key info with certificate.
int64 node_id = 4;
};
// Used to construct SignatureVerifier.
message SignatureKeyInfo {
KeyInfo admin_public_key = 1; // the public key owned by the administor.
KeyInfo private_key = 2; // the private key from the user, used to sign messages.
int64 node_id = 3; // the unique id of the replica or client.
}