Browse Source

allow to generate shared key

main
kilic 8 months ago
parent
commit
6988f0bfaa
1 changed files with 10 additions and 0 deletions
  1. +10
    -0
      src/eddsa.rs

+ 10
- 0
src/eddsa.rs

@ -140,6 +140,16 @@ where
} }
} }
impl<TE: TECurveConfig> SigningKey<TE> {
pub fn shared_key<D: Digest>(&self, recipient: &PublicKey<TE>) -> [u8; 32] {
let (x, _) = self.secret_key.expand::<TE::ScalarField, D>();
let shared_key: Affine<TE> = (*recipient.as_ref() * x).into();
let mut data = Vec::new();
shared_key.serialize_compressed(&mut data).unwrap();
data[00..32].try_into().unwrap()
}
}
impl<TE: TECurveConfig + Clone> PublicKey<TE> impl<TE: TECurveConfig + Clone> PublicKey<TE>
where where
TE::BaseField: PrimeField + Absorb, TE::BaseField: PrimeField + Absorb,

Loading…
Cancel
Save