| // Copyright 2021 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| // |
| //////////////////////////////////////////////////////////////////////////////// |
| |
| syntax = "proto3"; |
| |
| package google.crypto.tink; |
| |
| option java_package = "com.google.crypto.tink.proto"; |
| option java_multiple_files = true; |
| option go_package = "github.com/google/tink/go/proto/hpke_proto"; |
| |
| enum HpkeKem { |
| KEM_UNKNOWN = 0; |
| DHKEM_X25519_HKDF_SHA256 = 1; |
| DHKEM_P256_HKDF_SHA256 = 2; |
| DHKEM_P384_HKDF_SHA384 = 3; |
| DHKEM_P521_HKDF_SHA512 = 4; |
| } |
| |
| enum HpkeKdf { |
| KDF_UNKNOWN = 0; |
| HKDF_SHA256 = 1; |
| HKDF_SHA384 = 2; |
| HKDF_SHA512 = 3; |
| } |
| |
| enum HpkeAead { |
| AEAD_UNKNOWN = 0; |
| AES_128_GCM = 1; |
| AES_256_GCM = 2; |
| CHACHA20_POLY1305 = 3; |
| } |
| |
| message HpkeParams { |
| HpkeKem kem = 1; |
| HpkeKdf kdf = 2; |
| HpkeAead aead = 3; |
| } |
| |
| message HpkePublicKey { |
| uint32 version = 1; |
| HpkeParams params = 2; |
| // KEM-encoding of public key (i.e., SerializePublicKey() ) as described in |
| // https://www.rfc-editor.org/rfc/rfc9180.html#name-cryptographic-dependencies. |
| bytes public_key = 3; |
| } |
| |
| message HpkePrivateKey { |
| uint32 version = 1; |
| HpkePublicKey public_key = 2; |
| // KEM-encoding of private key (i.e., SerializePrivateKey() ) as described in |
| // https://www.rfc-editor.org/rfc/rfc9180.html#name-cryptographic-dependencies. |
| bytes private_key = 3; |
| } |
| |
| message HpkeKeyFormat { |
| HpkeParams params = 1; |
| } |