OHTTP key config: add support for media types

This is a first step towards supporting extension types for OHTTP key configs. It will allow callers of this API to get and set the media type. It is currently a no-op.

PiperOrigin-RevId: 945762907
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 e1a6218..992b5a9 100644
--- a/quiche/oblivious_http/common/oblivious_http_header_key_config.cc
+++ b/quiche/oblivious_http/common/oblivious_http_header_key_config.cc
@@ -5,6 +5,7 @@
 #include <cstddef>
 #include <cstdint>
 #include <functional>
+#include <optional>
 #include <string>
 #include <utility>
 #include <vector>
@@ -297,8 +298,15 @@
 
 }  // namespace
 
+// static
+std::string ObliviousHttpKeyConfigs::GetAcceptHeaderValueForConcatenatedKeys() {
+  return "application/ohttp-keys";
+}
+
 absl::StatusOr<ObliviousHttpKeyConfigs>
-ObliviousHttpKeyConfigs::ParseConcatenatedKeys(absl::string_view key_config) {
+ObliviousHttpKeyConfigs::ParseConcatenatedKeys(
+    absl::string_view key_config,
+    std::optional<absl::string_view> /*media_type*/) {
   ConfigMap configs;
   PublicKeyMap keys;
   // First, try to parse the keys using the length-prefixed format from RFC
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 b04833e..89bb30a 100644
--- a/quiche/oblivious_http/common/oblivious_http_header_key_config.h
+++ b/quiche/oblivious_http/common/oblivious_http_header_key_config.h
@@ -4,6 +4,7 @@
 #include <stdint.h>
 
 #include <functional>
+#include <optional>
 #include <string>
 #include <utility>
 #include <vector>
@@ -167,11 +168,16 @@
     std::string DebugString() const;
   };
 
+  // Returns the value to use for the "Accept" header when requesting
+  // concatenated keys. Currently returns "application/ohttp-keys".
+  static std::string GetAcceptHeaderValueForConcatenatedKeys();
+
   // Parses the "application/ohttp-keys" media type, which is a byte string
   // formatted according to the RFC:
   // https://www.rfc-editor.org/rfc/rfc9458.html#section-3
   static absl::StatusOr<ObliviousHttpKeyConfigs> ParseConcatenatedKeys(
-      absl::string_view key_configs);
+      absl::string_view key_configs,
+      std::optional<absl::string_view> media_type = std::nullopt);
 
   // Builds `ObliviousHttpKeyConfigs` with multiple key configurations, each
   // made up of Single Key Configuration([{key_id, kem_id, public key},