From 113882cb5971114e5652f5e52e954a1ed42d855e Mon Sep 17 00:00:00 2001 From: Erik Johnson Date: Tue, 24 Aug 2021 03:06:04 +0200 Subject: [PATCH] Updated opaque SSL changes --- keyconv.c | 18 +++++----- util.c | 94 ++++++++++++++++++++++++++--------------------------- vanitygen.c | 14 ++++---- 3 files changed, 63 insertions(+), 63 deletions(-) diff --git a/keyconv.c b/keyconv.c index 65bf53b..927cc7b 100644 --- a/keyconv.c +++ b/keyconv.c @@ -138,7 +138,7 @@ main(int argc, char **argv) if (key2_in) { BN_CTX *bnctx; - BIGNUM bntmp, bntmp2; + BIGNUM *bntmp, *bntmp2; EC_KEY *pkey2; pkey2 = EC_KEY_new_by_curve_name(NID_secp256k1); @@ -155,19 +155,19 @@ main(int argc, char **argv) fprintf(stderr, "ERROR: Unrecognized key format\n"); return 1; } - BN_init(&bntmp); - BN_init(&bntmp2); + bntmp = BN_new(); + bntmp2 = BN_new(); bnctx = BN_CTX_new(); - EC_GROUP_get_order(EC_KEY_get0_group(pkey), &bntmp2, NULL); - BN_mod_add(&bntmp, + EC_GROUP_get_order(EC_KEY_get0_group(pkey), bntmp2, NULL); + BN_mod_add(bntmp, EC_KEY_get0_private_key(pkey), EC_KEY_get0_private_key(pkey2), - &bntmp2, + bntmp2, bnctx); - vg_set_privkey(&bntmp, pkey); + vg_set_privkey(bntmp, pkey); EC_KEY_free(pkey2); - BN_clear_free(&bntmp); - BN_clear_free(&bntmp2); + BN_clear_free(bntmp); + BN_clear_free(bntmp2); BN_CTX_free(bnctx); } diff --git a/util.c b/util.c index 165f82c..f64642b 100644 --- a/util.c +++ b/util.c @@ -105,19 +105,19 @@ vg_b58_encode_check(void *buf, size_t len, char *result) BN_CTX *bnctx; BIGNUM *bn, *bndiv, *bntmp; - BIGNUM bna, bnb, bnbase, bnrem; + BIGNUM *bna, *bnb, *bnbase, *bnrem; unsigned char *binres; int brlen, zpfx; bnctx = BN_CTX_new(); - BN_init(&bna); - BN_init(&bnb); - BN_init(&bnbase); - BN_init(&bnrem); - BN_set_word(&bnbase, 58); + bna = BN_new(); + bnb = BN_new(); + bnbase = BN_new(); + bnrem = BN_new(); + BN_set_word(bnbase, 58); - bn = &bna; - bndiv = &bnb; + bn = bna; + bndiv = bnb; brlen = (2 * len) + 4; binres = (unsigned char*) malloc(brlen); @@ -133,11 +133,11 @@ vg_b58_encode_check(void *buf, size_t len, char *result) p = brlen; while (!BN_is_zero(bn)) { - BN_div(bndiv, &bnrem, bn, &bnbase, bnctx); + BN_div(bndiv, bnrem, bn, bnbase, bnctx); bntmp = bn; bn = bndiv; bndiv = bntmp; - d = BN_get_word(&bnrem); + d = BN_get_word(bnrem); binres[--p] = vg_b58_alphabet[d]; } @@ -149,10 +149,10 @@ vg_b58_encode_check(void *buf, size_t len, char *result) result[brlen - p] = '\0'; free(binres); - BN_clear_free(&bna); - BN_clear_free(&bnb); - BN_clear_free(&bnbase); - BN_clear_free(&bnrem); + BN_clear_free(bna); + BN_clear_free(bnb); + BN_clear_free(bnbase); + BN_clear_free(bnrem); BN_CTX_free(bnctx); } @@ -164,16 +164,16 @@ vg_b58_decode_check(const char *input, void *buf, size_t len) { int i, l, c; unsigned char *xbuf = NULL; - BIGNUM bn, bnw, bnbase; + BIGNUM *bn, *bnw, *bnbase; BN_CTX *bnctx; unsigned char hash1[32], hash2[32]; int zpfx; int res = 0; - BN_init(&bn); - BN_init(&bnw); - BN_init(&bnbase); - BN_set_word(&bnbase, 58); + bn = BN_new(); + bnw = BN_new(); + bnbase = BN_new(); + BN_set_word(bnbase, 58); bnctx = BN_CTX_new(); /* Build a bignum from the encoded value */ @@ -184,10 +184,10 @@ vg_b58_decode_check(const char *input, void *buf, size_t len) c = vg_b58_reverse_map[(int)input[i]]; if (c < 0) goto out; - BN_clear(&bnw); - BN_set_word(&bnw, c); - BN_mul(&bn, &bn, &bnbase, bnctx); - BN_add(&bn, &bn, &bnw); + BN_clear(bnw); + BN_set_word(bnw, c); + BN_mul(bn, bn, bnbase, bnctx); + BN_add(bn, bn, bnw); } /* Copy the bignum to a byte buffer */ @@ -198,7 +198,7 @@ vg_b58_decode_check(const char *input, void *buf, size_t len) break; zpfx++; } - c = BN_num_bytes(&bn); + c = BN_num_bytes(bn); l = zpfx + c; if (l < 5) goto out; @@ -208,7 +208,7 @@ vg_b58_decode_check(const char *input, void *buf, size_t len) if (zpfx) memset(xbuf, 0, zpfx); if (c) - BN_bn2bin(&bn, xbuf + zpfx); + BN_bn2bin(bn, xbuf + zpfx); /* Check the hash code */ l -= 4; @@ -228,9 +228,9 @@ vg_b58_decode_check(const char *input, void *buf, size_t len) out: if (xbuf) free(xbuf); - BN_clear_free(&bn); - BN_clear_free(&bnw); - BN_clear_free(&bnbase); + BN_clear_free(bn); + BN_clear_free(bnw); + BN_clear_free(bnbase); BN_CTX_free(bnctx); return res; } @@ -334,7 +334,7 @@ vg_set_privkey(const BIGNUM *bnpriv, EC_KEY *pkey) int vg_decode_privkey(const char *b58encoded, EC_KEY *pkey, int *addrtype) { - BIGNUM bnpriv; + BIGNUM *bnpriv; unsigned char ecpriv[48]; int res; @@ -342,17 +342,17 @@ vg_decode_privkey(const char *b58encoded, EC_KEY *pkey, int *addrtype) if (res != 33) return 0; - BN_init(&bnpriv); - BN_bin2bn(ecpriv + 1, res - 1, &bnpriv); - res = vg_set_privkey(&bnpriv, pkey); - BN_clear_free(&bnpriv); + bnpriv = BN_new(); + BN_bin2bn(ecpriv + 1, res - 1, bnpriv); + res = vg_set_privkey(bnpriv, pkey); + BN_clear_free(bnpriv); *addrtype = ecpriv[0]; return 1; } #if OPENSSL_VERSION_NUMBER < 0x10000000L /* The generic PBKDF2 function first appeared in OpenSSL 1.0 */ -/* ==================================================================== +/* = = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = * Copyright (c) 1999-2006 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -398,7 +398,7 @@ vg_decode_privkey(const char *b58encoded, EC_KEY *pkey, int *addrtype) * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. - * ==================================================================== + * = = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = == = * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim @@ -544,15 +544,15 @@ vg_protect_crypt(int parameter_group, salt_len = 4; hmac_len = 8; hmac_keylen = 16; - ciphertext_len = ((plaintext_len + cipher->block_size - 1) / - cipher->block_size) * cipher->block_size; + ciphertext_len = ((plaintext_len + EVP_CIPHER_CTX_block_size(cipher) - 1) / + EVP_CIPHER_CTX_block_size(cipher)) * EVP_CIPHER_CTX_block_size(cipher); pkcs7_padding = 0; hmac_digest = EVP_sha256(); } else { /* PKCS-compliant encoding */ salt_len = 8; - ciphertext_len = ((plaintext_len + cipher->block_size) / - cipher->block_size) * cipher->block_size; + ciphertext_len = ((plaintext_len + EVP_CIPHER_CTX_block_size(cipher)) / + EVP_CIPHER_CTX_block_size(cipher)) * EVP_CIPHER_CTX_block_size(cipher); hmac_digest = NULL; } @@ -578,12 +578,12 @@ vg_protect_crypt(int parameter_group, salt, salt_len, params->iterations, pbkdf_digest, - cipher->key_len + cipher->iv_len + hmac_keylen, + EVP_CIPHER_CTX_key_length(cipher) + EVP_CIPHER_iv_length(cipher) + hmac_keylen, keymaterial); if (!EVP_CipherInit(ctx, cipher, keymaterial, - keymaterial + cipher->key_len, + keymaterial + EVP_CIPHER_CTX_key_length(cipher), enc)) { fprintf(stderr, "ERROR: could not configure cipher\n"); goto out; @@ -619,7 +619,7 @@ vg_protect_crypt(int parameter_group, if (hmac_len) { hlen = sizeof(hmac); HMAC(hmac_digest, - keymaterial + cipher->key_len + cipher->iv_len, + keymaterial + EVP_CIPHER_CTX_key_length(cipher) + EVP_CIPHER_iv_length(cipher), hmac_keylen, enc ? data_in : data_out, plaintext_len, hmac, &hlen); @@ -698,7 +698,7 @@ vg_protect_decode_privkey(EC_KEY *pkey, int *keytype, { unsigned char ecpriv[64]; unsigned char ecenc[128]; - BIGNUM bn; + BIGNUM *bn; int restype; int res; @@ -722,10 +722,10 @@ vg_protect_decode_privkey(EC_KEY *pkey, int *keytype, res = 1; if (pkey) { - BN_init(&bn); - BN_bin2bn(ecpriv, 32, &bn); - res = vg_set_privkey(&bn, pkey); - BN_clear_free(&bn); + bn = BN_new(); + BN_bin2bn(ecpriv, 32, bn); + res = vg_set_privkey(bn, pkey); + BN_clear_free(bn); OPENSSL_cleanse(ecpriv, sizeof(ecpriv)); } diff --git a/vanitygen.c b/vanitygen.c index 9d88121..a34b927 100644 --- a/vanitygen.c +++ b/vanitygen.c @@ -89,8 +89,8 @@ vg_thread_loop(void *arg) exit(1); } - BN_set_word(&vxcp->vxc_bntmp, ptarraysize); - EC_POINT_mul(pgroup, pbatchinc, &vxcp->vxc_bntmp, NULL, NULL, + BN_set_word(vxcp->vxc_bntmp, ptarraysize); + EC_POINT_mul(pgroup, pbatchinc, vxcp->vxc_bntmp, NULL, NULL, vxcp->vxc_bnctx); EC_POINT_make_affine(pgroup, pbatchinc, vxcp->vxc_bnctx); @@ -125,13 +125,13 @@ vg_thread_loop(void *arg) npoints = 0; /* Determine rekey interval */ - EC_GROUP_get_order(pgroup, &vxcp->vxc_bntmp, + EC_GROUP_get_order(pgroup, vxcp->vxc_bntmp, vxcp->vxc_bnctx); - BN_sub(&vxcp->vxc_bntmp2, - &vxcp->vxc_bntmp, + BN_sub(vxcp->vxc_bntmp2, + vxcp->vxc_bntmp, EC_KEY_get0_private_key(pkey)); - rekey_at = BN_get_word(&vxcp->vxc_bntmp2); - if ((rekey_at == BN_MASK2) || (rekey_at > rekey_max)) + rekey_at = BN_get_word(vxcp->vxc_bntmp2); + if ((rekey_at == 0xffffffffffffffffLL) || (rekey_at > rekey_max)) rekey_at = rekey_max; assert(rekey_at > 0);