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");