From 12e29b320fd187f35f931f3a15fa32872598beb5 Mon Sep 17 00:00:00 2001 From: Pieter Wuille Date: Fri, 10 May 2013 00:53:47 +0200 Subject: [PATCH] Use privkey serialization to construct OpenSSL keys --- src/tests.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/tests.c b/src/tests.c index 88b3e5e..af7bbaa 100644 --- a/src/tests.c +++ b/src/tests.c @@ -378,21 +378,14 @@ void run_ecdsa_sign_verify() { #ifdef ENABLE_OPENSSL_TESTS EC_KEY *get_openssl_key(const secp256k1_num_t *key) { + unsigned char privkey[300]; + int privkeylen; + int compr = secp256k1_rand32() & 1; + const unsigned char* pbegin = privkey; EC_KEY *ec_key = EC_KEY_new_by_curve_name(NID_secp256k1); - BN_CTX *ctx = BN_CTX_new(); - BN_CTX_start(ctx); - BIGNUM *priv_key = BN_CTX_get(ctx); - unsigned char keyb[32]; - secp256k1_num_get_bin(keyb, 32, key); - BN_bin2bn(keyb, 32, priv_key); - const EC_GROUP *group = EC_KEY_get0_group(ec_key); - EC_POINT *pub_key = EC_POINT_new(group); - EC_POINT_mul(group, pub_key, priv_key, NULL, NULL, ctx); - EC_KEY_set_private_key(ec_key, priv_key); - EC_KEY_set_public_key(ec_key, pub_key); - EC_POINT_free(pub_key); - BN_CTX_end(ctx); - BN_CTX_free(ctx); + assert(secp256k1_ecdsa_privkey_serialize(privkey, &privkeylen, key, compr)); + assert(d2i_ECPrivateKey(&ec_key, &pbegin, privkeylen)); + assert(EC_KEY_check_key(ec_key)); return ec_key; }