| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| |
| syntax = "proto2"; |
| |
| package encrypted_messages; |
| |
| // Chrome requires this. |
| option optimize_for = LITE_RUNTIME; |
| |
| // This protobuffer is intended to store an encrypted message. |
| // Messages are encrypted with a secret derived from a client key pair (which |
| // should be generated fresh randomly for each message) and a server public |
| // key. The remote message recipient can decrypt the message by performing the |
| // same key exchange using the included client public key to recover the shared |
| // secret. |
| message EncryptedMessage { |
| // An encrypted, serialized message. |
| required bytes encrypted_message = 1; |
| // The server public key version that was used to derive the shared secret. |
| required uint32 server_public_key_version = 2; |
| // The client public key that corresponds to the private key that was used |
| // to derive the shared secret. |
| required bytes client_public_key = 3; |
| // The encryption algorithm used to encrypt the message. |
| enum Algorithm { |
| UNKNOWN_ALGORITHM = 0; |
| AEAD_ECDH_AES_128_CTR_HMAC_SHA256 = 1; |
| } |
| optional Algorithm algorithm = 4 |
| [default = AEAD_ECDH_AES_128_CTR_HMAC_SHA256]; |
| }; |