Move PrivateKey from CipherSuite to ServerSetup
This commit is contained in:
@@ -32,7 +32,6 @@ use std::process::exit;
|
|||||||
|
|
||||||
use opaque_ke::{
|
use opaque_ke::{
|
||||||
ciphersuite::CipherSuite,
|
ciphersuite::CipherSuite,
|
||||||
keypair::PrivateKey,
|
|
||||||
rand::{rngs::OsRng, RngCore},
|
rand::{rngs::OsRng, RngCore},
|
||||||
ClientLogin, ClientLoginFinishParameters, ClientRegistration,
|
ClientLogin, ClientLoginFinishParameters, ClientRegistration,
|
||||||
ClientRegistrationFinishParameters, CredentialFinalization, CredentialRequest,
|
ClientRegistrationFinishParameters, CredentialFinalization, CredentialRequest,
|
||||||
@@ -49,7 +48,6 @@ impl CipherSuite for Default {
|
|||||||
type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
type Hash = sha2::Sha512;
|
type Hash = sha2::Sha512;
|
||||||
type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
type PrivateKey = PrivateKey<Self::Group>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Locker {
|
struct Locker {
|
||||||
|
|||||||
@@ -26,11 +26,10 @@ use std::collections::HashMap;
|
|||||||
use std::process::exit;
|
use std::process::exit;
|
||||||
|
|
||||||
use opaque_ke::{
|
use opaque_ke::{
|
||||||
ciphersuite::CipherSuite, keypair::PrivateKey, rand::rngs::OsRng, ClientLogin,
|
ciphersuite::CipherSuite, rand::rngs::OsRng, ClientLogin, ClientLoginFinishParameters,
|
||||||
ClientLoginFinishParameters, ClientRegistration, ClientRegistrationFinishParameters,
|
ClientRegistration, ClientRegistrationFinishParameters, CredentialFinalization,
|
||||||
CredentialFinalization, CredentialRequest, CredentialResponse, RegistrationRequest,
|
CredentialRequest, CredentialResponse, RegistrationRequest, RegistrationResponse,
|
||||||
RegistrationResponse, RegistrationUpload, ServerLogin, ServerLoginStartParameters,
|
RegistrationUpload, ServerLogin, ServerLoginStartParameters, ServerRegistration, ServerSetup,
|
||||||
ServerRegistration, ServerSetup,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// The ciphersuite trait allows to specify the underlying primitives
|
// The ciphersuite trait allows to specify the underlying primitives
|
||||||
@@ -42,7 +41,6 @@ impl CipherSuite for Default {
|
|||||||
type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
type Hash = sha2::Sha512;
|
type Hash = sha2::Sha512;
|
||||||
type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
type PrivateKey = PrivateKey<Self::Group>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Password-based registration between a client and server
|
// Password-based registration between a client and server
|
||||||
|
|||||||
+2
-4
@@ -6,8 +6,8 @@
|
|||||||
//! Defines the CipherSuite trait to specify the underlying primitives for OPAQUE
|
//! Defines the CipherSuite trait to specify the underlying primitives for OPAQUE
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
hash::Hash, key_exchange::traits::KeyExchange, keypair::SecretKey,
|
hash::Hash, key_exchange::traits::KeyExchange, map_to_curve::GroupWithMapToCurve,
|
||||||
map_to_curve::GroupWithMapToCurve, slow_hash::SlowHash,
|
slow_hash::SlowHash,
|
||||||
};
|
};
|
||||||
use digest::Digest;
|
use digest::Digest;
|
||||||
|
|
||||||
@@ -31,6 +31,4 @@ pub trait CipherSuite {
|
|||||||
type Hash: Hash;
|
type Hash: Hash;
|
||||||
/// A slow hashing function, typically used for password hashing
|
/// A slow hashing function, typically used for password hashing
|
||||||
type SlowHash: SlowHash<Self::Hash>;
|
type SlowHash: SlowHash<Self::Hash>;
|
||||||
/// A private key container, allows remote key implementations
|
|
||||||
type PrivateKey: SecretKey<Self::Group>;
|
|
||||||
}
|
}
|
||||||
|
|||||||
-15
@@ -26,7 +26,6 @@
|
|||||||
//! type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! type Hash = sha2::Sha512;
|
//! type Hash = sha2::Sha512;
|
||||||
//! type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! }
|
//! }
|
||||||
//! ```
|
//! ```
|
||||||
//! See [examples/simple_login.rs](https://github.com/novifinancial/opaque-ke/blob/master/examples/simple_login.rs)
|
//! See [examples/simple_login.rs](https://github.com/novifinancial/opaque-ke/blob/master/examples/simple_login.rs)
|
||||||
@@ -48,7 +47,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! use rand::{rngs::OsRng, RngCore};
|
//! use rand::{rngs::OsRng, RngCore};
|
||||||
//! let mut rng = OsRng;
|
//! let mut rng = OsRng;
|
||||||
@@ -81,7 +79,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! use opaque_ke::ClientRegistration;
|
//! use opaque_ke::ClientRegistration;
|
||||||
//! use rand::{rngs::OsRng, RngCore};
|
//! use rand::{rngs::OsRng, RngCore};
|
||||||
@@ -112,7 +109,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -150,7 +146,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -189,7 +184,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -232,7 +226,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! use opaque_ke::ClientLogin;
|
//! use opaque_ke::ClientLogin;
|
||||||
@@ -266,7 +259,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -320,7 +312,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -366,7 +357,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -442,7 +432,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -520,7 +509,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -586,7 +574,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -624,7 +611,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
@@ -674,7 +660,6 @@
|
|||||||
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
//! # type KeyExchange = opaque_ke::key_exchange::tripledh::TripleDH;
|
||||||
//! # type Hash = sha2::Sha512;
|
//! # type Hash = sha2::Sha512;
|
||||||
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
//! # type SlowHash = opaque_ke::slow_hash::NoOpHash;
|
||||||
//! # type PrivateKey = opaque_ke::keypair::PrivateKey<Self::Group>;
|
|
||||||
//! # }
|
//! # }
|
||||||
//! # use rand::{rngs::OsRng, RngCore};
|
//! # use rand::{rngs::OsRng, RngCore};
|
||||||
//! # let mut client_rng = OsRng;
|
//! # let mut client_rng = OsRng;
|
||||||
|
|||||||
+10
-13
@@ -41,23 +41,20 @@ const STR_OPAQUE_DERIVE_KEY_PAIR: &[u8] = b"OPAQUE-DeriveKeyPair";
|
|||||||
feature = "serialize",
|
feature = "serialize",
|
||||||
derive(serde::Deserialize, serde::Serialize),
|
derive(serde::Deserialize, serde::Serialize),
|
||||||
serde(bound(
|
serde(bound(
|
||||||
deserialize = "KeyPair<CS::Group, CS::PrivateKey>: serde::Deserialize<'de>",
|
deserialize = "KeyPair<CS::Group, S>: serde::Deserialize<'de>",
|
||||||
serialize = "KeyPair<CS::Group, CS::PrivateKey>: serde::Serialize"
|
serialize = "KeyPair<CS::Group, S>: serde::Serialize"
|
||||||
))
|
))
|
||||||
)]
|
)]
|
||||||
pub struct ServerSetup<CS: CipherSuite> {
|
pub struct ServerSetup<
|
||||||
|
CS: CipherSuite,
|
||||||
|
S: SecretKey<CS::Group> = PrivateKey<<CS as CipherSuite>::Group>,
|
||||||
|
> {
|
||||||
oprf_seed: GenericArray<u8, <CS::Hash as Digest>::OutputSize>,
|
oprf_seed: GenericArray<u8, <CS::Hash as Digest>::OutputSize>,
|
||||||
keypair: KeyPair<CS::Group, CS::PrivateKey>,
|
keypair: KeyPair<CS::Group, S>,
|
||||||
pub(crate) fake_keypair: KeyPair<CS::Group>,
|
pub(crate) fake_keypair: KeyPair<CS::Group>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<
|
impl<CS: CipherSuite> ServerSetup<CS, PrivateKey<CS::Group>> {
|
||||||
CS: CipherSuite<Group = G, PrivateKey = PrivateKey<G>>,
|
|
||||||
G: Group + GroupWithMapToCurve<UniformBytesLen = <CS::Hash as Digest>::OutputSize>,
|
|
||||||
> ServerSetup<CS>
|
|
||||||
where
|
|
||||||
<CS as CipherSuite>::KeyExchange: KeyExchange<<CS as CipherSuite>::Hash, G>,
|
|
||||||
{
|
|
||||||
/// Generate a new instance of server setup
|
/// Generate a new instance of server setup
|
||||||
pub fn new<R: CryptoRng + RngCore>(rng: &mut R) -> Self {
|
pub fn new<R: CryptoRng + RngCore>(rng: &mut R) -> Self {
|
||||||
let mut seed = vec![0u8; <CS::Hash as Digest>::OutputSize::to_usize()];
|
let mut seed = vec![0u8; <CS::Hash as Digest>::OutputSize::to_usize()];
|
||||||
@@ -71,7 +68,7 @@ where
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<CS: CipherSuite> ServerSetup<CS> {
|
impl<CS: CipherSuite, S: SecretKey<CS::Group>> ServerSetup<CS, S> {
|
||||||
/// Serialization into bytes
|
/// Serialization into bytes
|
||||||
pub fn serialize(&self) -> Vec<u8> {
|
pub fn serialize(&self) -> Vec<u8> {
|
||||||
[
|
[
|
||||||
@@ -96,7 +93,7 @@ impl<CS: CipherSuite> ServerSetup<CS> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the keypair
|
/// Returns the keypair
|
||||||
pub fn keypair(&self) -> &KeyPair<CS::Group, CS::PrivateKey> {
|
pub fn keypair(&self) -> &KeyPair<CS::Group, S> {
|
||||||
&self.keypair
|
&self.keypair
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ use crate::{
|
|||||||
traits::{FromBytes, KeyExchange, ToBytes},
|
traits::{FromBytes, KeyExchange, ToBytes},
|
||||||
tripledh::{NonceLen, TripleDH},
|
tripledh::{NonceLen, TripleDH},
|
||||||
},
|
},
|
||||||
keypair::{KeyPair, PrivateKey, PublicKey},
|
keypair::{KeyPair, PublicKey},
|
||||||
serialization::{i2osp, os2ip, serialize},
|
serialization::{i2osp, os2ip, serialize},
|
||||||
*,
|
*,
|
||||||
};
|
};
|
||||||
@@ -31,7 +31,6 @@ impl CipherSuite for Default {
|
|||||||
type KeyExchange = TripleDH;
|
type KeyExchange = TripleDH;
|
||||||
type Hash = sha2::Sha512;
|
type Hash = sha2::Sha512;
|
||||||
type SlowHash = crate::slow_hash::NoOpHash;
|
type SlowHash = crate::slow_hash::NoOpHash;
|
||||||
type PrivateKey = PrivateKey<RistrettoPoint>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const HASH_SIZE: usize = 64; // Because of SHA512
|
const HASH_SIZE: usize = 64; // Because of SHA512
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ use crate::{
|
|||||||
errors::*,
|
errors::*,
|
||||||
group::Group,
|
group::Group,
|
||||||
key_exchange::tripledh::{NonceLen, TripleDH},
|
key_exchange::tripledh::{NonceLen, TripleDH},
|
||||||
keypair::{KeyPair, PrivateKey},
|
keypair::KeyPair,
|
||||||
opaque::*,
|
opaque::*,
|
||||||
slow_hash::NoOpHash,
|
slow_hash::NoOpHash,
|
||||||
tests::mock_rng::CycleRng,
|
tests::mock_rng::CycleRng,
|
||||||
@@ -33,7 +33,6 @@ impl CipherSuite for RistrettoSha5123dhNoSlowHash {
|
|||||||
type KeyExchange = TripleDH;
|
type KeyExchange = TripleDH;
|
||||||
type Hash = sha2::Sha512;
|
type Hash = sha2::Sha512;
|
||||||
type SlowHash = NoOpHash;
|
type SlowHash = NoOpHash;
|
||||||
type PrivateKey = PrivateKey<RistrettoPoint>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct TestVectorParameters {
|
pub struct TestVectorParameters {
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ impl CipherSuite for Ristretto255Sha512NoSlowHash {
|
|||||||
type KeyExchange = TripleDH;
|
type KeyExchange = TripleDH;
|
||||||
type Hash = sha2::Sha512;
|
type Hash = sha2::Sha512;
|
||||||
type SlowHash = NoOpHash;
|
type SlowHash = NoOpHash;
|
||||||
type PrivateKey = PrivateKey<RistrettoPoint>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(PartialEq)]
|
#[derive(PartialEq)]
|
||||||
|
|||||||
Reference in New Issue
Block a user