#ifndef QUICHE_OBLIVIOUS_HTTP_OBLIVIOUS_HTTP_CLIENT_H_ #define QUICHE_OBLIVIOUS_HTTP_OBLIVIOUS_HTTP_CLIENT_H_ #include <string> #include "absl/status/statusor.h" #include "absl/strings/string_view.h" #include "openssl/base.h" #include "openssl/hpke.h" #include "quiche/common/platform/api/quiche_export.h" #include "quiche/oblivious_http/buffers/oblivious_http_request.h" #include "quiche/oblivious_http/buffers/oblivious_http_response.h" #include "quiche/oblivious_http/common/oblivious_http_header_key_config.h" namespace quiche { // 1. Facilitates client side to intiate OHttp request flow by initializing the // HPKE public key obtained from server, and subsequently uses it to encrypt the // Binary HTTP request payload. // 2. After initializing this class with server's HPKE public key, users can // call `CreateObliviousHttpRequest` which constructs OHTTP request of the input // payload(Binary HTTP request). // 3. Handles decryption of response (that's in the form of encrypted Binary // HTTP response) that will be sent back from Server-to-Relay and // Relay-to-client in HTTP POST body. // 4. Handles BoringSSL HPKE context setup and bookkeeping. // This class is immutable (except moves) and thus trivially thread-safe. class QUICHE_EXPORT ObliviousHttpClient { … }; } // namespace quiche #endif // QUICHE_OBLIVIOUS_HTTP_OBLIVIOUS_HTTP_CLIENT_H_