syntax = "proto3"; package logoschat.encryption; message EncryptedPayload { oneof encryption { encryption.Plaintext plaintext = 1; encryption.Doubleratchet doubleratchet = 2; encryption.InboxHandshakeV1 inbox_handshake = 3; } } message Plaintext { bytes payload=1; } message Doubleratchet { bytes dh = 1; // 32 byte array uint32 msgNum = 2; uint32 prevChainLen = 3; bytes ciphertext = 4; string aux = 5; } message InboxHandshakeV1 { message InboxHeaderV1 { bytes initiator_static = 1; bytes initiator_ephemeral = 2; bytes responder_static = 3; bytes responder_ephemeral = 4; // Replace with RKI to save bytes } InboxHeaderV1 header = 1; bytes payload = 2; }