arnaucube
arnaucube/arkeddsaPublic Self-hosted repository
allow to generate shared key
kilic onurkilic1004@gmail.com
Tue, 30 Jul 2024 14:43:16 +0300
commit

6988f0bfaafce44550826acc6690fe0815e04633

parent

90bb17584bc8b1fce1e30a0494b70c06bcf18d5e

1 files changed, 10 insertions(+), 0 deletions(-)

jump to
M src/eddsa.rs → src/eddsa.rs

@@ -140,6 +140,16 @@ Signature::new(sig_r, sig_s)

} } +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> where TE::BaseField: PrimeField + Absorb,