OHTTP key config: expose underlying objects PiperOrigin-RevId: 945883943
diff --git a/quiche/oblivious_http/common/oblivious_http_header_key_config.cc b/quiche/oblivious_http/common/oblivious_http_header_key_config.cc index 992b5a9..e902057 100644 --- a/quiche/oblivious_http/common/oblivious_http_header_key_config.cc +++ b/quiche/oblivious_http/common/oblivious_http_header_key_config.cc
@@ -20,7 +20,6 @@ #include "absl/strings/string_view.h" #include "openssl/base.h" #include "openssl/hpke.h" -#include "quiche/common/platform/api/quiche_bug_tracker.h" #include "quiche/common/platform/api/quiche_logging.h" #include "quiche/common/quiche_data_reader.h" #include "quiche/common/quiche_data_writer.h" @@ -39,6 +38,8 @@ constexpr size_t kSizeOfSymmetricAlgorithmHpkeKdfId = 2; constexpr size_t kSizeOfSymmetricAlgorithmHpkeAeadId = 2; +} // namespace + absl::StatusOr<const EVP_HPKE_KEM*> CheckKemId(uint16_t kem_id) { switch (kem_id) { case EVP_HPKE_DHKEM_P256_HKDF_SHA256: @@ -83,8 +84,6 @@ } } -} // namespace - ObliviousHttpHeaderKeyConfig::ObliviousHttpHeaderKeyConfig(uint8_t key_id, uint16_t kem_id, uint16_t kdf_id,
diff --git a/quiche/oblivious_http/common/oblivious_http_header_key_config.h b/quiche/oblivious_http/common/oblivious_http_header_key_config.h index 89bb30a..36e1a8b 100644 --- a/quiche/oblivious_http/common/oblivious_http_header_key_config.h +++ b/quiche/oblivious_http/common/oblivious_http_header_key_config.h
@@ -21,6 +21,12 @@ namespace quiche { +// Provide access to the underlying EVP_HPKE_KEM, EVP_HPKE_KDF, and +// EVP_HPKE_AEAD if they are supported. +absl::StatusOr<const EVP_HPKE_KEM*> CheckKemId(uint16_t kem_id); +absl::StatusOr<const EVP_HPKE_KDF*> CheckKdfId(uint16_t kdf_id); +absl::StatusOr<const EVP_HPKE_AEAD*> CheckAeadId(uint16_t aead_id); + class QUICHE_EXPORT ObliviousHttpHeaderKeyConfig { public: // https://www.rfc-editor.org/rfc/rfc9458.html#section-4.3-4.2.1
diff --git a/quiche/oblivious_http/common/oblivious_http_header_key_config_test.cc b/quiche/oblivious_http/common/oblivious_http_header_key_config_test.cc index 9d0c63d..7f2d329 100644 --- a/quiche/oblivious_http/common/oblivious_http_header_key_config_test.cc +++ b/quiche/oblivious_http/common/oblivious_http_header_key_config_test.cc
@@ -16,6 +16,7 @@ namespace quiche { namespace { using ::quiche::test::IsOkAndHolds; +using ::quiche::test::StatusIs; using ::testing::AllOf; using ::testing::HasSubstr; using ::testing::Property; @@ -77,6 +78,15 @@ EXPECT_THAT(instance->DebugString(), HasSubstr("AES-256-GCM")); } +TEST(ObliviousHttpHeaderKeyConfig, TestIds) { + QUICHE_EXPECT_OK(CheckKemId(EVP_HPKE_DHKEM_X25519_HKDF_SHA256)); + EXPECT_THAT(CheckKemId(0xFFFF), StatusIs(absl::StatusCode::kUnimplemented)); + QUICHE_EXPECT_OK(CheckKdfId(EVP_HPKE_HKDF_SHA256)); + EXPECT_THAT(CheckKdfId(0xFFFF), StatusIs(absl::StatusCode::kUnimplemented)); + QUICHE_EXPECT_OK(CheckAeadId(EVP_HPKE_AES_256_GCM)); + EXPECT_THAT(CheckAeadId(0xFFFF), StatusIs(absl::StatusCode::kUnimplemented)); +} + TEST(ObliviousHttpHeaderKeyConfig, TestSerializeRecipientContextInfoStandardLabel) { ExpectSerializedRecipientContextInfo("message/bhttp request");