Separate AKE from OPRF take 2 (#222)
* Separate AKE from OPRF Introduce X25519 implementation * Rename `AkeGroup` to `KeGroup` and `Group` to `OprfGroup` * Add documentation to "Overview"
This commit is contained in:
+10
-9
@@ -29,7 +29,8 @@ use zeroize::Zeroize;
|
||||
|
||||
struct RistrettoSha5123dhNoSlowHash;
|
||||
impl CipherSuite for RistrettoSha5123dhNoSlowHash {
|
||||
type Group = RistrettoPoint;
|
||||
type OprfGroup = RistrettoPoint;
|
||||
type KeGroup = RistrettoPoint;
|
||||
type KeyExchange = TripleDH;
|
||||
type Hash = sha2::Sha512;
|
||||
type SlowHash = NoOpHash;
|
||||
@@ -280,11 +281,11 @@ fn generate_parameters<CS: CipherSuite>() -> TestVectorParameters {
|
||||
let mut rng = OsRng;
|
||||
|
||||
// Inputs
|
||||
let server_s_kp = KeyPair::<CS::Group>::generate_random(&mut rng);
|
||||
let server_e_kp = KeyPair::<CS::Group>::generate_random(&mut rng);
|
||||
let client_s_kp = KeyPair::<CS::Group>::generate_random(&mut rng);
|
||||
let client_e_kp = KeyPair::<CS::Group>::generate_random(&mut rng);
|
||||
let fake_kp = KeyPair::<CS::Group>::generate_random(&mut rng);
|
||||
let server_s_kp = KeyPair::<CS::OprfGroup>::generate_random(&mut rng);
|
||||
let server_e_kp = KeyPair::<CS::OprfGroup>::generate_random(&mut rng);
|
||||
let client_s_kp = KeyPair::<CS::OprfGroup>::generate_random(&mut rng);
|
||||
let client_e_kp = KeyPair::<CS::OprfGroup>::generate_random(&mut rng);
|
||||
let fake_kp = KeyPair::<CS::OprfGroup>::generate_random(&mut rng);
|
||||
let credential_identifier = b"credIdentifier";
|
||||
let id_u = b"idU";
|
||||
let id_s = b"idS";
|
||||
@@ -307,14 +308,14 @@ fn generate_parameters<CS: CipherSuite>() -> TestVectorParameters {
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let blinding_factor = CS::Group::random_nonzero_scalar(&mut rng);
|
||||
let blinding_factor_bytes = CS::Group::scalar_as_bytes(blinding_factor);
|
||||
let blinding_factor = CS::OprfGroup::random_nonzero_scalar(&mut rng);
|
||||
let blinding_factor_bytes = CS::OprfGroup::scalar_as_bytes(blinding_factor);
|
||||
|
||||
let mut blinding_factor_registration_rng = CycleRng::new(blinding_factor_bytes.to_vec());
|
||||
let client_registration_start_result =
|
||||
ClientRegistration::<CS>::start(&mut blinding_factor_registration_rng, password).unwrap();
|
||||
let blinding_factor_bytes_returned =
|
||||
CS::Group::scalar_as_bytes(client_registration_start_result.state.token.blind);
|
||||
CS::OprfGroup::scalar_as_bytes(client_registration_start_result.state.token.blind);
|
||||
assert_eq!(
|
||||
hex::encode(&blinding_factor_bytes),
|
||||
hex::encode(&blinding_factor_bytes_returned)
|
||||
|
||||
@@ -17,7 +17,8 @@ use serde_json::Value;
|
||||
|
||||
struct Ristretto255Sha512NoSlowHash;
|
||||
impl CipherSuite for Ristretto255Sha512NoSlowHash {
|
||||
type Group = RistrettoPoint;
|
||||
type OprfGroup = RistrettoPoint;
|
||||
type KeGroup = RistrettoPoint;
|
||||
type KeyExchange = TripleDH;
|
||||
type Hash = sha2::Sha512;
|
||||
type SlowHash = NoOpHash;
|
||||
@@ -27,7 +28,8 @@ impl CipherSuite for Ristretto255Sha512NoSlowHash {
|
||||
struct P256Sha256NoSlowHash;
|
||||
#[cfg(feature = "p256")]
|
||||
impl CipherSuite for P256Sha256NoSlowHash {
|
||||
type Group = p256_::ProjectivePoint;
|
||||
type OprfGroup = p256_::ProjectivePoint;
|
||||
type KeGroup = p256_::ProjectivePoint;
|
||||
type KeyExchange = TripleDH;
|
||||
type Hash = sha2::Sha256;
|
||||
type SlowHash = NoOpHash;
|
||||
@@ -750,7 +752,7 @@ fn populate_test_vectors<CS: CipherSuite>(values: &Value) -> TestVectorParameter
|
||||
dummy_private_key: parse_default!(
|
||||
values,
|
||||
"client_private_key",
|
||||
vec![0u8; <PrivateKey<CS::Group> as SizedBytes>::Len::to_usize()]
|
||||
vec![0u8; <PrivateKey<CS::OprfGroup> as SizedBytes>::Len::to_usize()]
|
||||
),
|
||||
dummy_masking_key: parse_default!(values, "masking_key", vec![0u8; 64]),
|
||||
context: parse!(values, "Context"),
|
||||
|
||||
Reference in New Issue
Block a user