Implement Counter Galois Onion encryption in rust

This covers all the cryptographic algorithms from proposal 359.

There's a draft reference implementation in https://gitlab.torproject.org/nickm/cgo-drafts/-/tree/main/rust-demo?ref_type=heads . There is a python reference implementation too.

Part of #1936 (closed)

  • Implement and test ET and PRF constructions
  • Implement and test UIV+ construction
  • Refactor relay-layer operations to combine "originate" and "encrypt"
  • Implement and test client layer operations for CGO
  • Implement and test relay layer operations for CGO.
  • Integrate CGO with KDF logic
  • Add a set of benchmark for CGO crypto Moved to #1959 (closed)
Edited by Nick Mathewson