mirror of
https://github.com/grishka/NearDrop.git
synced 2026-04-03 09:46:19 +02:00
82 lines
2.6 KiB
Protocol Buffer
82 lines
2.6 KiB
Protocol Buffer
// Copyright 2020 Google LLC
|
|
//
|
|
// 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
|
|
//
|
|
// https://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 = "proto2";
|
|
|
|
package securegcm;
|
|
|
|
import "securemessage.proto";
|
|
|
|
option optimize_for = LITE_RUNTIME;
|
|
option java_package = "com.google.security.cryptauth.lib.securegcm";
|
|
option java_outer_classname = "DeviceToDeviceMessagesProto";
|
|
option objc_class_prefix = "SGCM";
|
|
|
|
// Used by protocols between devices
|
|
message DeviceToDeviceMessage {
|
|
// the payload of the message
|
|
optional bytes message = 1;
|
|
|
|
// the sequence number of the message - must be increasing.
|
|
optional int32 sequence_number = 2;
|
|
}
|
|
|
|
// sent as the first message from initiator to responder
|
|
// in an unauthenticated Diffie-Hellman Key Exchange
|
|
message InitiatorHello {
|
|
// The session public key to send to the responder
|
|
optional securemessage.GenericPublicKey public_dh_key = 1;
|
|
|
|
// The protocol version
|
|
optional int32 protocol_version = 2 [default = 0];
|
|
}
|
|
|
|
// sent inside the header of the first message from the responder to the
|
|
// initiator in an unauthenticated Diffie-Hellman Key Exchange
|
|
message ResponderHello {
|
|
// The session public key to send to the initiator
|
|
optional securemessage.GenericPublicKey public_dh_key = 1;
|
|
|
|
// The protocol version
|
|
optional int32 protocol_version = 2 [default = 0];
|
|
}
|
|
|
|
// Type of curve
|
|
enum Curve { ED_25519 = 1; }
|
|
|
|
// A convenience proto for encoding curve points in affine representation
|
|
message EcPoint {
|
|
required Curve curve = 1;
|
|
|
|
// x and y are encoded in big-endian two's complement
|
|
// client MUST verify (x,y) is a valid point on the specified curve
|
|
required bytes x = 2;
|
|
required bytes y = 3;
|
|
}
|
|
|
|
message SpakeHandshakeMessage {
|
|
// Each flow in the protocol bumps this counter
|
|
optional int32 flow_number = 1;
|
|
|
|
// Some (but not all) SPAKE flows send a point on an elliptic curve
|
|
optional EcPoint ec_point = 2;
|
|
|
|
// Some (but not all) SPAKE flows send a hash value
|
|
optional bytes hash_value = 3;
|
|
|
|
// The last flow of a SPAKE protocol can send an optional payload,
|
|
// since the key exchange is already complete on the sender's side.
|
|
optional bytes payload = 4;
|
|
}
|