Implement Clone for every message type
This commit is contained in:
committed by
Kevin Lewi
parent
30e27a11e2
commit
2c7fe4e382
@@ -14,11 +14,11 @@ use rand::{CryptoRng, RngCore};
|
||||
use zeroize::Zeroize;
|
||||
|
||||
pub trait KeyExchange<D: Hash, G: Group> {
|
||||
type KE1State: FromBytes + ToBytesWithPointers + Zeroize;
|
||||
type KE2State: FromBytes + ToBytesWithPointers + Zeroize;
|
||||
type KE1Message: FromBytes + ToBytes;
|
||||
type KE2Message: FromBytes + ToBytes;
|
||||
type KE3Message: FromBytes + ToBytes;
|
||||
type KE1State: FromBytes + ToBytesWithPointers + Zeroize + Clone;
|
||||
type KE2State: FromBytes + ToBytesWithPointers + Zeroize + Clone;
|
||||
type KE1Message: FromBytes + ToBytes + Clone;
|
||||
type KE2Message: FromBytes + ToBytes + Clone;
|
||||
type KE3Message: FromBytes + ToBytes + Clone;
|
||||
|
||||
fn generate_ke1<R: RngCore + CryptoRng>(
|
||||
info: Vec<u8>,
|
||||
|
||||
@@ -237,7 +237,7 @@ impl<D: Hash, G: Group> KeyExchange<D, G> for TripleDH {
|
||||
}
|
||||
|
||||
/// The client state produced after the first key exchange message
|
||||
#[derive(PartialEq, Eq, Zeroize)]
|
||||
#[derive(PartialEq, Eq, Zeroize, Clone)]
|
||||
#[zeroize(drop)]
|
||||
pub struct Ke1State {
|
||||
client_e_sk: Key,
|
||||
@@ -245,7 +245,7 @@ pub struct Ke1State {
|
||||
}
|
||||
|
||||
/// The first key exchange message
|
||||
#[derive(PartialEq, Eq)]
|
||||
#[derive(PartialEq, Eq, Clone)]
|
||||
pub struct Ke1Message {
|
||||
pub(crate) client_nonce: GenericArray<u8, NonceLen>,
|
||||
pub(crate) info: Vec<u8>,
|
||||
@@ -317,6 +317,7 @@ impl FromBytes for Ke1Message {
|
||||
}
|
||||
}
|
||||
/// The server state produced after the second key exchange message
|
||||
#[derive(Clone)]
|
||||
pub struct Ke2State<HashLen: ArrayLength<u8>> {
|
||||
km3: GenericArray<u8, HashLen>,
|
||||
hashed_transcript: GenericArray<u8, HashLen>,
|
||||
@@ -359,6 +360,7 @@ impl<HashLen: ArrayLength<u8>> ToBytesWithPointers for Ke2State<HashLen> {
|
||||
}
|
||||
|
||||
/// The second key exchange message
|
||||
#[derive(Clone)]
|
||||
pub struct Ke2Message<HashLen: ArrayLength<u8>> {
|
||||
server_nonce: GenericArray<u8, NonceLen>,
|
||||
server_e_pk: Key,
|
||||
@@ -446,6 +448,7 @@ type TripleDHDerivationResult<D> = (
|
||||
);
|
||||
|
||||
/// The third key exchange message
|
||||
#[derive(Clone)]
|
||||
pub struct Ke3Message<HashLen: ArrayLength<u8>> {
|
||||
mac: GenericArray<u8, HashLen>,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user