[Identity] Implement some generic OPAQUE types
Summary:
Depends on D3578
Implementation of the CipherSuite trait, which configures the underlying primitives for OPAQUE.
- Group: a finite cyclic group along with a point representation, along with an extension trait PasswordToCurve that allows some customization on how to hash a password to a curve point
- KeyExchange: The key exchange protocol to use in the login step
- Hash: The main hashing function to use
- SlowHash: A slow hashing function, typically used for password hashing
Test Plan:
cargo build
this will get tested more in subsequent diffs that use the CipherSuite
Reviewers: jimpo, karol-bisztyga, atul, anunayk
Reviewed By: jimpo, atul
Subscribers: anunayk, ashoat, palys-swm, Adrian, benschac, yayabosh
Differential Revision: https://phabricator.ashoat.com/D3747