This library implements Oblivious HTTP operations as used in clients and gateways as described in RFC 9458.
You can use this library in your own implementations. But if you just want to use OHTTP, you can find ohttp-gp
already packaged into a client or gateway. We've integrated it into:
- A Greatfire Envoy-based client.
- A gateway application that can run on your target resource server or standing alone. The gateway handles decapsulation and re-encapsulation and also serves the specified Key Configuration so clients can self-configure.
Instructions for configuring and deploying each are in the respective repositories.
We also provide a relay, but that relay doesn't need this library. You can combine all three to run OHTTP end-to-end.
This library is reusable (e.g. withing the gog
gateway), but it's specially designed to work within Envoy
, a patch/fork of Chromium's cronet
. This library depends on BoringSSL instead of OpenSSL to implement HPKE operations because the Chromium project uses BoringSSL.
mkdir build
cd build
cmake .. && make && ctest --output-on-failure