syntax="proto3"; //import "gogoproto/gogo.proto" package pb; //option (gogoproto.marshaler_all) = true; //option (gogoproto.sizer_all) = true; //option (gogoproto.unmarshaler_all) = true; //option (gogoproto.goproto_getters_all) = false; /* * Every encrypted file starts with a header describing the * Block Size, Salt, Recipient keys etc. Header represents a * decoded version of this information. It is encoded in * protobuf format before writing to disk. */ message header { uint32 chunk_size = 1; bytes salt = 2; bytes pk = 3; // sender's ephemeral curve PK sender sender_pk = 4; // sender's encrypted ed25519 PK repeated wrapped_key keys = 5; } /* * Sender info is wrapped using the data encryption key */ message sender { bytes pk = 1; } /* * A file encryption key is wrapped by a recipient specific public * key. WrappedKey describes such a wrapped key. */ message wrapped_key { bytes key = 2; }