2021-05-01 12:45:37 +02:00
syntax = "proto3" ;
import "google/protobuf/descriptor.proto" ;
option go_package = ".;proto" ;
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)
2021-05-01 18:29:59 +02:00
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)
2021-05-01 18:29:59 +02:00
rpc ConnectStream ( stream EncryptedMessage ) returns ( stream EncryptedMessage ) { }
2021-05-01 12:45:37 +02:00
}
2021-05-01 18:29:59 +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 {
2021-05-01 18:29:59 +02:00
// 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
2021-05-01 18:29:59 +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 ;
2021-05-01 18:29:59 +02:00
string payload = 2 ;
2021-05-01 12:45:37 +02:00
}