20
20
#include "testrand_impl.h"
21
21
#include "util.h"
22
22
23
- #ifdef ENABLE_OPENSSL_TESTS
24
- #include <openssl/bn.h>
25
- #include <openssl/ec.h>
26
- #include <openssl/ecdsa.h>
27
- #include <openssl/obj_mac.h>
28
- # if OPENSSL_VERSION_NUMBER < 0x10100000L
29
- void ECDSA_SIG_get0 (const ECDSA_SIG * sig , const BIGNUM * * pr , const BIGNUM * * ps ) {* pr = sig -> r ; * ps = sig -> s ;}
30
- # endif
31
- #endif
32
-
33
23
#include "../contrib/lax_der_parsing.c"
34
24
#include "../contrib/lax_der_privatekey_parsing.c"
35
25
@@ -5685,14 +5675,6 @@ void run_ecdsa_end_to_end(void) {
5685
5675
5686
5676
int test_ecdsa_der_parse (const unsigned char * sig , size_t siglen , int certainly_der , int certainly_not_der ) {
5687
5677
static const unsigned char zeroes [32 ] = {0 };
5688
- #ifdef ENABLE_OPENSSL_TESTS
5689
- static const unsigned char max_scalar [32 ] = {
5690
- 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff ,
5691
- 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xff , 0xfe ,
5692
- 0xba , 0xae , 0xdc , 0xe6 , 0xaf , 0x48 , 0xa0 , 0x3b ,
5693
- 0xbf , 0xd2 , 0x5e , 0x8c , 0xd0 , 0x36 , 0x41 , 0x40
5694
- };
5695
- #endif
5696
5678
5697
5679
int ret = 0 ;
5698
5680
@@ -5708,15 +5690,6 @@ int test_ecdsa_der_parse(const unsigned char *sig, size_t siglen, int certainly_
5708
5690
size_t len_der_lax = 2048 ;
5709
5691
int parsed_der_lax = 0 , valid_der_lax = 0 , roundtrips_der_lax = 0 ;
5710
5692
5711
- #ifdef ENABLE_OPENSSL_TESTS
5712
- ECDSA_SIG * sig_openssl ;
5713
- const BIGNUM * r = NULL , * s = NULL ;
5714
- const unsigned char * sigptr ;
5715
- unsigned char roundtrip_openssl [2048 ];
5716
- int len_openssl = 2048 ;
5717
- int parsed_openssl , valid_openssl = 0 , roundtrips_openssl = 0 ;
5718
- #endif
5719
-
5720
5693
parsed_der = secp256k1_ecdsa_signature_parse_der (ctx , & sig_der , sig , siglen );
5721
5694
if (parsed_der ) {
5722
5695
ret |= (!secp256k1_ecdsa_signature_serialize_compact (ctx , compact_der , & sig_der )) << 0 ;
@@ -5757,43 +5730,6 @@ int test_ecdsa_der_parse(const unsigned char *sig, size_t siglen, int certainly_
5757
5730
ret |= (!parsed_der_lax ) << 16 ;
5758
5731
}
5759
5732
5760
- #ifdef ENABLE_OPENSSL_TESTS
5761
- sig_openssl = ECDSA_SIG_new ();
5762
- sigptr = sig ;
5763
- parsed_openssl = (d2i_ECDSA_SIG (& sig_openssl , & sigptr , siglen ) != NULL );
5764
- if (parsed_openssl ) {
5765
- ECDSA_SIG_get0 (sig_openssl , & r , & s );
5766
- 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 ;
5767
- if (valid_openssl ) {
5768
- unsigned char tmp [32 ] = {0 };
5769
- BN_bn2bin (r , tmp + 32 - BN_num_bytes (r ));
5770
- valid_openssl = secp256k1_memcmp_var (tmp , max_scalar , 32 ) < 0 ;
5771
- }
5772
- if (valid_openssl ) {
5773
- unsigned char tmp [32 ] = {0 };
5774
- BN_bn2bin (s , tmp + 32 - BN_num_bytes (s ));
5775
- valid_openssl = secp256k1_memcmp_var (tmp , max_scalar , 32 ) < 0 ;
5776
- }
5777
- }
5778
- len_openssl = i2d_ECDSA_SIG (sig_openssl , NULL );
5779
- if (len_openssl <= 2048 ) {
5780
- unsigned char * ptr = roundtrip_openssl ;
5781
- CHECK (i2d_ECDSA_SIG (sig_openssl , & ptr ) == len_openssl );
5782
- roundtrips_openssl = valid_openssl && ((size_t )len_openssl == siglen ) && (secp256k1_memcmp_var (roundtrip_openssl , sig , siglen ) == 0 );
5783
- } else {
5784
- len_openssl = 0 ;
5785
- }
5786
- ECDSA_SIG_free (sig_openssl );
5787
-
5788
- ret |= (parsed_der && !parsed_openssl ) << 4 ;
5789
- ret |= (valid_der && !valid_openssl ) << 5 ;
5790
- ret |= (roundtrips_openssl && !parsed_der ) << 6 ;
5791
- ret |= (roundtrips_der != roundtrips_openssl ) << 7 ;
5792
- if (roundtrips_openssl ) {
5793
- ret |= (len_der != (size_t )len_openssl ) << 8 ;
5794
- ret |= ((len_der != (size_t )len_openssl ) || (secp256k1_memcmp_var (roundtrip_der , roundtrip_openssl , len_der ) != 0 )) << 9 ;
5795
- }
5796
- #endif
5797
5733
return ret ;
5798
5734
}
5799
5735
@@ -6387,62 +6323,6 @@ void run_ecdsa_edge_cases(void) {
6387
6323
test_ecdsa_edge_cases ();
6388
6324
}
6389
6325
6390
- #ifdef ENABLE_OPENSSL_TESTS
6391
- EC_KEY * get_openssl_key (const unsigned char * key32 ) {
6392
- unsigned char privkey [300 ];
6393
- size_t privkeylen ;
6394
- const unsigned char * pbegin = privkey ;
6395
- int compr = secp256k1_testrand_bits (1 );
6396
- EC_KEY * ec_key = EC_KEY_new_by_curve_name (NID_secp256k1 );
6397
- CHECK (ec_privkey_export_der (ctx , privkey , & privkeylen , key32 , compr ));
6398
- CHECK (d2i_ECPrivateKey (& ec_key , & pbegin , privkeylen ));
6399
- CHECK (EC_KEY_check_key (ec_key ));
6400
- return ec_key ;
6401
- }
6402
-
6403
- void test_ecdsa_openssl (void ) {
6404
- secp256k1_gej qj ;
6405
- secp256k1_ge q ;
6406
- secp256k1_scalar sigr , sigs ;
6407
- secp256k1_scalar one ;
6408
- secp256k1_scalar msg2 ;
6409
- secp256k1_scalar key , msg ;
6410
- EC_KEY * ec_key ;
6411
- unsigned int sigsize = 80 ;
6412
- size_t secp_sigsize = 80 ;
6413
- unsigned char message [32 ];
6414
- unsigned char signature [80 ];
6415
- unsigned char key32 [32 ];
6416
- secp256k1_testrand256_test (message );
6417
- secp256k1_scalar_set_b32 (& msg , message , NULL );
6418
- random_scalar_order_test (& key );
6419
- secp256k1_scalar_get_b32 (key32 , & key );
6420
- secp256k1_ecmult_gen (& ctx -> ecmult_gen_ctx , & qj , & key );
6421
- secp256k1_ge_set_gej (& q , & qj );
6422
- ec_key = get_openssl_key (key32 );
6423
- CHECK (ec_key != NULL );
6424
- CHECK (ECDSA_sign (0 , message , sizeof (message ), signature , & sigsize , ec_key ));
6425
- CHECK (secp256k1_ecdsa_sig_parse (& sigr , & sigs , signature , sigsize ));
6426
- CHECK (secp256k1_ecdsa_sig_verify (& sigr , & sigs , & q , & msg ));
6427
- secp256k1_scalar_set_int (& one , 1 );
6428
- secp256k1_scalar_add (& msg2 , & msg , & one );
6429
- CHECK (!secp256k1_ecdsa_sig_verify (& sigr , & sigs , & q , & msg2 ));
6430
-
6431
- random_sign (& sigr , & sigs , & key , & msg , NULL );
6432
- CHECK (secp256k1_ecdsa_sig_serialize (signature , & secp_sigsize , & sigr , & sigs ));
6433
- CHECK (ECDSA_verify (0 , message , sizeof (message ), signature , secp_sigsize , ec_key ) == 1 );
6434
-
6435
- EC_KEY_free (ec_key );
6436
- }
6437
-
6438
- void run_ecdsa_openssl (void ) {
6439
- int i ;
6440
- for (i = 0 ; i < 10 * count ; i ++ ) {
6441
- test_ecdsa_openssl ();
6442
- }
6443
- }
6444
- #endif
6445
-
6446
6326
#ifdef ENABLE_MODULE_ECDH
6447
6327
# include "modules/ecdh/tests_impl.h"
6448
6328
#endif
@@ -6729,9 +6609,6 @@ int main(int argc, char **argv) {
6729
6609
run_ecdsa_sign_verify ();
6730
6610
run_ecdsa_end_to_end ();
6731
6611
run_ecdsa_edge_cases ();
6732
- #ifdef ENABLE_OPENSSL_TESTS
6733
- run_ecdsa_openssl ();
6734
- #endif
6735
6612
6736
6613
#ifdef ENABLE_MODULE_RECOVERY
6737
6614
/* ECDSA pubkey recovery tests */
0 commit comments