syntax = "proto3"; package record.pb; import "core/crypto/pb/crypto.proto"; // Envelope encloses a signed payload produced by a peer, along with the public // key of the keypair it was signed with so that it can be statelessly validated // by the receiver. // // The payload is prefixed with a byte string that determines the type, so it // can be deserialized deterministically. Often, this byte string is a // multicodec. message Envelope { // public_key is the public key of the keypair the enclosed payload was // signed with. crypto.pb.PublicKey public_key = 1; // payload_type encodes the type of payload, so that it can be deserialized // deterministically. bytes payload_type = 2; // payload is the actual payload carried inside this envelope. bytes payload = 3; // signature is the signature produced by the private key corresponding to // the enclosed public key, over the payload, prefixing a domain string for // additional security. bytes signature = 5; }