|
23 | 23 | #include "openssl/ec.h"
|
24 | 24 | #include "openssl/ecdsa.h"
|
25 | 25 | #include "openssl/obj_mac.h"
|
| 26 | +# if OPENSSL_VERSION_NUMBER < 0x10100000L |
| 27 | +void ECDSA_SIG_get0(const ECDSA_SIG *sig, const BIGNUM **pr, const BIGNUM **ps) {*pr = sig->r; *ps = sig->s;} |
| 28 | +# endif |
26 | 29 | #endif
|
27 | 30 |
|
28 | 31 | #include "contrib/lax_der_parsing.c"
|
@@ -4150,6 +4153,7 @@ int test_ecdsa_der_parse(const unsigned char *sig, size_t siglen, int certainly_
|
4150 | 4153 |
|
4151 | 4154 | #ifdef ENABLE_OPENSSL_TESTS
|
4152 | 4155 | ECDSA_SIG *sig_openssl;
|
| 4156 | + const BIGNUM *r = NULL, *s = NULL; |
4153 | 4157 | const unsigned char *sigptr;
|
4154 | 4158 | unsigned char roundtrip_openssl[2048];
|
4155 | 4159 | int len_openssl = 2048;
|
@@ -4201,15 +4205,16 @@ int test_ecdsa_der_parse(const unsigned char *sig, size_t siglen, int certainly_
|
4201 | 4205 | sigptr = sig;
|
4202 | 4206 | parsed_openssl = (d2i_ECDSA_SIG(&sig_openssl, &sigptr, siglen) != NULL);
|
4203 | 4207 | if (parsed_openssl) {
|
4204 |
| - valid_openssl = !BN_is_negative(sig_openssl->r) && !BN_is_negative(sig_openssl->s) && BN_num_bits(sig_openssl->r) > 0 && BN_num_bits(sig_openssl->r) <= 256 && BN_num_bits(sig_openssl->s) > 0 && BN_num_bits(sig_openssl->s) <= 256; |
| 4208 | + ECDSA_SIG_get0(sig_openssl, &r, &s); |
| 4209 | + valid_openssl = !BN_is_negative(r) && !BN_is_negative(s) && BN_num_bits(r) > 0 && BN_num_bits(r) <= 256 && BN_num_bits(s) > 0 && BN_num_bits(s) <= 256; |
4205 | 4210 | if (valid_openssl) {
|
4206 | 4211 | unsigned char tmp[32] = {0};
|
4207 |
| - BN_bn2bin(sig_openssl->r, tmp + 32 - BN_num_bytes(sig_openssl->r)); |
| 4212 | + BN_bn2bin(r, tmp + 32 - BN_num_bytes(r)); |
4208 | 4213 | valid_openssl = memcmp(tmp, max_scalar, 32) < 0;
|
4209 | 4214 | }
|
4210 | 4215 | if (valid_openssl) {
|
4211 | 4216 | unsigned char tmp[32] = {0};
|
4212 |
| - BN_bn2bin(sig_openssl->s, tmp + 32 - BN_num_bytes(sig_openssl->s)); |
| 4217 | + BN_bn2bin(s, tmp + 32 - BN_num_bytes(s)); |
4213 | 4218 | valid_openssl = memcmp(tmp, max_scalar, 32) < 0;
|
4214 | 4219 | }
|
4215 | 4220 | }
|
|
0 commit comments