@@ -5039,20 +5039,18 @@ static AllocatedBuffer ConvertSignatureToP1363(Environment* env,
5039
5039
const unsigned char * sig_data =
5040
5040
reinterpret_cast <unsigned char *>(signature.data ());
5041
5041
5042
- ECDSA_SIG* asn1_sig = d2i_ECDSA_SIG (nullptr , &sig_data, signature.size ());
5043
- if (asn1_sig == nullptr )
5042
+ ECDSASigPointer asn1_sig ( d2i_ECDSA_SIG (nullptr , &sig_data, signature.size () ));
5043
+ if (! asn1_sig)
5044
5044
return AllocatedBuffer ();
5045
5045
5046
5046
AllocatedBuffer buf = env->AllocateManaged (2 * n);
5047
5047
unsigned char * data = reinterpret_cast <unsigned char *>(buf.data ());
5048
5048
5049
- const BIGNUM* r = ECDSA_SIG_get0_r (asn1_sig);
5050
- const BIGNUM* s = ECDSA_SIG_get0_s (asn1_sig);
5049
+ const BIGNUM* r = ECDSA_SIG_get0_r (asn1_sig. get () );
5050
+ const BIGNUM* s = ECDSA_SIG_get0_s (asn1_sig. get () );
5051
5051
CHECK_EQ (n, static_cast <unsigned int >(BN_bn2binpad (r, data, n)));
5052
5052
CHECK_EQ (n, static_cast <unsigned int >(BN_bn2binpad (s, data + n, n)));
5053
5053
5054
- ECDSA_SIG_free (asn1_sig);
5055
-
5056
5054
return buf;
5057
5055
}
5058
5056
@@ -5069,19 +5067,18 @@ static ByteSource ConvertSignatureToDER(
5069
5067
if (signature.length () != 2 * n)
5070
5068
return ByteSource ();
5071
5069
5072
- ECDSA_SIG* asn1_sig = ECDSA_SIG_new ();
5073
- CHECK_NOT_NULL (asn1_sig);
5070
+ ECDSASigPointer asn1_sig ( ECDSA_SIG_new () );
5071
+ CHECK (asn1_sig);
5074
5072
BIGNUM* r = BN_new ();
5075
5073
CHECK_NOT_NULL (r);
5076
5074
BIGNUM* s = BN_new ();
5077
5075
CHECK_NOT_NULL (s);
5078
5076
CHECK_EQ (r, BN_bin2bn (sig_data, n, r));
5079
5077
CHECK_EQ (s, BN_bin2bn (sig_data + n, n, s));
5080
- CHECK_EQ (1 , ECDSA_SIG_set0 (asn1_sig, r, s));
5078
+ CHECK_EQ (1 , ECDSA_SIG_set0 (asn1_sig. get () , r, s));
5081
5079
5082
5080
unsigned char * data = nullptr ;
5083
- int len = i2d_ECDSA_SIG (asn1_sig, &data);
5084
- ECDSA_SIG_free (asn1_sig);
5081
+ int len = i2d_ECDSA_SIG (asn1_sig.get (), &data);
5085
5082
5086
5083
if (len <= 0 )
5087
5084
return ByteSource ();
0 commit comments