syntax = "proto2";

package signal;

option java_package = "org.session.libsignal.metadata";
option java_outer_classname = "SignalProtos";

message ServerCertificate {
    message Certificate {
        optional uint32 id  = 1;
        optional bytes  key = 2;
    }

    optional bytes certificate = 1;
    optional bytes signature   = 2;
}

message SenderCertificate {
    optional string sender       = 1;
    optional uint32 senderDevice = 2;
}

message UnidentifiedSenderMessage {

    message Message {
        enum Type {
            PREKEY_MESSAGE          = 1;
            MESSAGE                 = 2;
            FALLBACK_MESSAGE        = 3;
        }

        optional Type              type              = 1;
        optional SenderCertificate senderCertificate = 2;
        optional bytes             content           = 3;
    }

    optional bytes ephemeralPublic  = 1;
    optional bytes encryptedStatic  = 2;
    optional bytes encryptedMessage = 3;
}