| syntax = "proto3"; |
| package roughtime.config; |
| |
| // These protobufs are only used with JSON serialisation so we attempt to emit |
| // as little C++ code as possible. |
| option optimize_for = CODE_SIZE; |
| |
| // ServersJSON represents a JSON format for distributing information about |
| // Roughtime servers. |
| message ServersJSON { |
| // created contains the RFC3339 time when the JSON file was created. |
| string created = 1; |
| // expires contains the RFC3339 time when the information in this JSON file |
| // expires. |
| string expires = 2; |
| repeated Server servers = 3; |
| } |
| |
| // Server represents a Roughtime server in a JSON configuration. |
| message Server { |
| string name = 1; |
| // public_key_type specifies the type of the public key contained in |
| // |PublicKey|. Normally this will be "ed25519" but implementations should |
| // ignore entries with unknown key types. |
| string public_key_type = 2; |
| bytes public_key = 3; |
| repeated ServerAddress addresses = 4; |
| } |
| |
| // ServerAddress represents the address of a Roughtime server in a JSON |
| // configuration. |
| message ServerAddress { |
| string protocol = 1; |
| // address contains a protocol specific address. For the protocol "udp", the |
| // address has the form "host:port" where host is either a DNS name, an IPv4 |
| // literal, or an IPv6 literal in square brackets. |
| string address = 2; |
| } |
| |
| // Chain represents a history of Roughtime queries where each provably follows |
| // the previous one. |
| message Chain { |
| repeated Link links = 1; |
| } |
| |
| // Link represents an entry in a Chain. |
| message Link { |
| // public_key_type specifies the type of public key contained in |
| // |PublicKey|. See the same field in |Server| for details. |
| string public_key_type = 1; |
| bytes server_public_key = 2; |
| // nonce_or_blind contains either the full nonce (only for the first |Link| |
| // in a |Chain|) or else contains a blind value that is combined with the |
| // previous reply to make the next nonce. In either case, the value is 64 |
| // bytes long. |
| bytes nonce_or_blind = 3; |
| // reply contains the reply from the server. |
| bytes reply = 4; |
| } |