This CL makes the following changes to the AT Crypto Libraries:

1) The crypto libs take in std::optional<std::string> public_metadata instead of std::string public_metadata now so that empty string as public_metadata can be treated as a valid value.

2) The crypto libs now accept empty string messages as a valid value to be blinded and verified.

3) In case of RSA Blind Signature with Public Metadata protocol, the crypto libs now encode the message and public metadata together before computing hashes in the blinder and in the verifier.

4) The crypto libs are tested with the latest IETF RSA Blind Signature with public metadata draft's test vectors E2E. Moreover, verification and signing tests are added to the test files. Blinder tests are not explicitly added as these tests need the user to fix the salt and blind values equal to the test vector values. Hence that was done locally to confirm.

Next Cl(s) will modify Client Libraries and Server's Boq Handlers to enable public metadata support in our service.

PiperOrigin-RevId: 520500754
14 files changed
tree: ec40d56c93e2d75d8e560bac2c8a1d5e31cff0fa
  1. build/
  2. depstool/
  3. quiche/
  4. .bazelrc
  5. BUILD.bazel
  6. CONTRIBUTING.md
  7. LICENSE
  8. README.md
  9. WHITESPACE
  10. WORKSPACE.bazel
README.md

QUICHE

QUICHE stands for QUIC, Http, Etc. It is Google‘s production-ready implementation of QUIC, HTTP/2, HTTP/3, and related protocols and tools. It powers Google’s servers, Chromium, Envoy, and other projects. It is actively developed and maintained.

There are two public QUICHE repositories. Either one may be used by embedders, as they are automatically kept in sync:

To embed QUICHE in your project, platform APIs need to be implemented and build files need to be created. Note that it is on the QUICHE team's roadmap to include default implementation for all platform APIs and to open-source build files. In the meanwhile, take a look at open source embedders like Chromium and Envoy to get started:

To contribute to QUICHE, follow instructions at CONTRIBUTING.md.

QUICHE is only supported on little-endian platforms.