syntax = "proto3";
package daemon;

message ConnectRequest {
    string connection_name = 1;
    string identity = 2;
    bytes public_key = 3;
    bytes signature = 4;
    bool encrypted = 5;
}

message ConnectResponse {
    enum Result {
        ACCEPTED = 0;
        REJECTED = 1;
    }
    Result response = 1;
}

message EncryptedData {
    bytes nonce = 1;
    bytes payload = 2;
}

message InnerMessage {
    enum Type {
        OPEN = 0;
        CLOSE = 1;
        DATA = 10;
    }
    Type type = 1;
    string id = 2;
    bytes data = 3;
}

message OuterMessage {
    enum Type {
        ALIVE = 0;
        DATA = 10;
        BYE = 20;
        CONNECT_REQUEST = 30;
        CONNECT_RESPONSE = 31;
    }
    Type type = 1;
    bytes message = 2;
    EncryptedData encrypted_message = 3;
    ConnectRequest connect_request = 100;
    ConnectResponse connect_response = 110;
}
