From e7f87c05b81f44dfb9c446f9f964846e37900b18 Mon Sep 17 00:00:00 2001 From: Nick Hynes Date: Mon, 27 Nov 2023 15:24:45 +0000 Subject: [PATCH] runtime-sdk: remove compressed format requirement from ECDSA precompiles --- runtime-sdk/src/crypto/signature/secp256k1.rs | 8 +++----- runtime-sdk/src/crypto/signature/secp256r1.rs | 8 +++----- runtime-sdk/src/crypto/signature/secp384r1.rs | 8 +++----- 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/runtime-sdk/src/crypto/signature/secp256k1.rs b/runtime-sdk/src/crypto/signature/secp256k1.rs index f0a81538e7..c2af966e39 100644 --- a/runtime-sdk/src/crypto/signature/secp256k1.rs +++ b/runtime-sdk/src/crypto/signature/secp256k1.rs @@ -36,11 +36,9 @@ impl PublicKey { /// Construct a public key from a slice of bytes. pub fn from_bytes(bytes: &[u8]) -> Result { - let ep = k256::EncodedPoint::from_bytes(bytes).map_err(|_| Error::MalformedPublicKey)?; - if !ep.is_compressed() { - return Err(Error::MalformedPublicKey); - } - Ok(PublicKey(ep)) + k256::EncodedPoint::from_bytes(bytes) + .map_err(|_| Error::MalformedPublicKey) + .map(PublicKey) } /// Verify a signature. diff --git a/runtime-sdk/src/crypto/signature/secp256r1.rs b/runtime-sdk/src/crypto/signature/secp256r1.rs index 2388d4576d..6498ea08e8 100644 --- a/runtime-sdk/src/crypto/signature/secp256r1.rs +++ b/runtime-sdk/src/crypto/signature/secp256r1.rs @@ -23,11 +23,9 @@ impl PublicKey { /// Construct a public key from a slice of bytes. pub fn from_bytes(bytes: &[u8]) -> Result { - let ep = p256::EncodedPoint::from_bytes(bytes).map_err(|_| Error::MalformedPublicKey)?; - if !ep.is_compressed() { - return Err(Error::MalformedPublicKey); - } - Ok(PublicKey(ep)) + p256::EncodedPoint::from_bytes(bytes) + .map_err(|_| Error::MalformedPublicKey) + .map(PublicKey) } /// Verify a signature. diff --git a/runtime-sdk/src/crypto/signature/secp384r1.rs b/runtime-sdk/src/crypto/signature/secp384r1.rs index 4bdac8d849..c36ff52394 100644 --- a/runtime-sdk/src/crypto/signature/secp384r1.rs +++ b/runtime-sdk/src/crypto/signature/secp384r1.rs @@ -22,11 +22,9 @@ impl PublicKey { /// Construct a public key from a slice of bytes. pub fn from_bytes(bytes: &[u8]) -> Result { - let ep = p384::EncodedPoint::from_bytes(bytes).map_err(|_| Error::MalformedPublicKey)?; - if !ep.is_compressed() { - return Err(Error::MalformedPublicKey); - } - Ok(PublicKey(ep)) + p384::EncodedPoint::from_bytes(bytes) + .map_err(|_| Error::MalformedPublicKey) + .map(PublicKey) } /// Verify a signature.