From 1b3eaba3025f92770ba468de9e77ebd1e4a660cd Mon Sep 17 00:00:00 2001 From: Yeastplume Date: Mon, 11 Mar 2019 11:56:23 +0000 Subject: [PATCH] [1.1.0] Serialise sigs as raw data, not DER encoded (#2668) * serialise signatures as raw data * rustfmt --- core/src/libtx/secp_ser.rs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/core/src/libtx/secp_ser.rs b/core/src/libtx/secp_ser.rs index 13a4ce14b3..da5864c775 100644 --- a/core/src/libtx/secp_ser.rs +++ b/core/src/libtx/secp_ser.rs @@ -56,7 +56,6 @@ pub mod pubkey_serde { pub mod option_sig_serde { use crate::serde::{Deserialize, Deserializer, Serializer}; use crate::util::secp; - use crate::util::static_secp_instance; use crate::util::{from_hex, to_hex}; use serde::de::Error; @@ -66,11 +65,7 @@ pub mod option_sig_serde { S: Serializer, { match sig { - Some(sig) => { - let static_secp = static_secp_instance(); - let static_secp = static_secp.lock(); - serializer.serialize_str(&to_hex(sig.serialize_der(&static_secp))) - } + Some(sig) => serializer.serialize_str(&to_hex(sig.to_raw_data().to_vec())), None => serializer.serialize_none(), } } @@ -80,14 +75,13 @@ pub mod option_sig_serde { where D: Deserializer<'de>, { - let static_secp = static_secp_instance(); - let static_secp = static_secp.lock(); - Option::<&str>::deserialize(deserializer).and_then(|res| match res { Some(string) => from_hex(string.to_string()) .map_err(|err| Error::custom(err.to_string())) .and_then(|bytes: Vec| { - secp::Signature::from_der(&static_secp, &bytes) + let mut b = [0u8; 64]; + b.copy_from_slice(&bytes[0..64]); + secp::Signature::from_raw_data(&b) .map(|val| Some(val)) .map_err(|err| Error::custom(err.to_string())) }),