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},