From ecaa38d1af035beab36818c9da386b851fd39f13 Mon Sep 17 00:00:00 2001 From: Muhamad Azamy Date: Mon, 20 Feb 2023 10:43:00 +0100 Subject: [PATCH] Secret key should only use the x coordinate of a point --- src/peer/e2e/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/peer/e2e/mod.rs b/src/peer/e2e/mod.rs index 00b8712..8bcd30d 100644 --- a/src/peer/e2e/mod.rs +++ b/src/peer/e2e/mod.rs @@ -71,7 +71,8 @@ impl Pair { pub(crate) fn shared>(&self, pk: K) -> Result<[u8; SHARED_KEY_SIZE], Error> { let pk = PublicKey::from_slice(pk.as_ref())?; - let point = secp256k1::ecdh::shared_secret_point(&pk, &self.0.secret_key()); + // we take the x coordinate of the secret point. + let point = &secp256k1::ecdh::shared_secret_point(&pk, &self.0.secret_key())[..32]; use sha2::{Digest, Sha256}; let mut sh = Sha256::new();