netbird/signal/proto/signalexchange.proto

52 lines
1.5 KiB
Protocol Buffer
Raw Normal View History

2021-05-01 12:45:37 +02:00
syntax = "proto3";
import "google/protobuf/descriptor.proto";
option go_package = "/proto";
2021-05-01 12:45:37 +02:00
package signalexchange;
service SignalExchange {
// Synchronously connect to the Signal Exchange service offering connection candidates and waiting for connection candidates from the other party (remote peer)
rpc Send(EncryptedMessage) returns (EncryptedMessage) {}
2021-05-01 12:45:37 +02:00
// Connect to the Signal Exchange service offering connection candidates and maintain a channel for receiving candidates from the other party (remote peer)
rpc ConnectStream(stream EncryptedMessage) returns (stream EncryptedMessage) {}
2021-05-01 12:45:37 +02:00
}
// Used for sending through signal.
// The body of this message is the Body message encrypted with the Wireguard private key and the remote Peer key
message EncryptedMessage {
// Wireguard public key
string key = 2;
// Wireguard public key of the remote peer to connect to
string remoteKey = 3;
// encrypted message Body
bytes body = 4;
}
// A decrypted representation of the EncryptedMessage. Used locally before/after encryption
2021-05-01 12:45:37 +02:00
message Message {
// Wireguard public key
string key = 2;
// Wireguard public key of the remote peer to connect to
string remoteKey = 3;
Body body = 4;
}
2021-05-01 12:45:37 +02:00
// Actual body of the message that can contain credentials (type OFFER/ANSWER) or connection Candidate
// This part will be encrypted
message Body {
2021-05-01 12:45:37 +02:00
// Message type
enum Type {
OFFER = 0;
ANSWER = 1;
CANDIDATE = 2;
}
Type type = 1;
string payload = 2;
2021-05-01 12:45:37 +02:00
}