syntax = "proto3"; package logoschat.encryption; // TODO: This also encompasses plaintexts, is there a better name? // Alternatives: ??? message EncryptedPayload { oneof encryption { encryption.Plaintext plaintext = 1; encryption.Doubleratchet doubleratchet = 2; encryption.XK0 xk0 = 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 XK0 { bytes initiator_static = 1; bytes initiator_ephemeral = 2; bytes responder_static = 3; bytes responder_ephemeral = 4; // Replace with RKI to save bytes bytes payload = 5; }