X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_ameth.c;h=8a9cd286823d6aedc4eb6206d9d88ea0b9ecced4;hb=286a33984c698f2efa98dd06995c7d734569409c;hp=feec5544a3dfe986f279ea68d9b210aa215ffe44;hpb=b5c8a4f3e8b8483c921b59a4e3257d41d57063de;p=openssl-gost%2Fengine.git diff --git a/gost_ameth.c b/gost_ameth.c index feec554..8a9cd28 100644 --- a/gost_ameth.c +++ b/gost_ameth.c @@ -34,22 +34,6 @@ int store_bignum(BIGNUM *bn, unsigned char *buf, int len) return 1; } -/* Convert byte buffer to bignum, skipping leading zeros*/ -BIGNUM *getbnfrombuf(const unsigned char *buf, size_t len) -{ - BIGNUM *b; - - while (*buf == 0 && len > 0) { - buf++; - len--; - } - if (len) - return BN_bin2bn(buf, len, NULL); - b = BN_new(); - BN_zero(b); - return b; -} - static int pkey_bits_gost(const EVP_PKEY *pk) { if (!pk) @@ -594,7 +578,6 @@ static int param_missing_gost_ec(const EVP_PKEY *pk) return 0; } - static int param_copy_gost_ec(EVP_PKEY *to, const EVP_PKEY *from) { EC_KEY *eto = EVP_PKEY_get0(to); @@ -685,8 +668,8 @@ static int pub_decode_gost_ec(EVP_PKEY *pk, X509_PUBKEY *pub) len = octet->length / 2; ASN1_OCTET_STRING_free(octet); - Y = getbnfrombuf(databuf, len); - X = getbnfrombuf(databuf + len, len); + Y = BN_bin2bn(databuf, len, NULL); + X = BN_bin2bn(databuf + len, len, NULL); OPENSSL_free(databuf); pub_key = EC_POINT_new(group); if (!EC_POINT_set_affine_coordinates_GFp(group, pub_key, X, Y, NULL)) { @@ -772,7 +755,7 @@ static int pub_encode_gost_ec(X509_PUBKEY *pub, const EVP_PKEY *pk) ret = i2d_ASN1_OCTET_STRING(octet, &buf); ASN1_BIT_STRING_free(octet); -err: + err: if (X) BN_free(X); if (Y) @@ -894,6 +877,9 @@ int register_ameth_gost(int nid, EVP_PKEY_ASN1_METHOD **ameth, pkey_size_gost, pkey_bits_gost); EVP_PKEY_asn1_set_ctrl(*ameth, pkey_ctrl_gost); +#if OPENSSL_VERSION_NUMBER >= 0x10100000L + EVP_PKEY_asn1_set_security_bits(*ameth, pkey_bits_gost); +#endif break; case NID_id_GostR3410_2012_256: case NID_id_GostR3410_2012_512: @@ -914,7 +900,7 @@ int register_ameth_gost(int nid, EVP_PKEY_ASN1_METHOD **ameth, EVP_PKEY_asn1_set_ctrl(*ameth, pkey_ctrl_gost); #if OPENSSL_VERSION_NUMBER >= 0x10100000L - EVP_PKEY_asn1_set_security_bits(*ameth,ce_pkey_bits_gost); + EVP_PKEY_asn1_set_security_bits(*ameth, pkey_bits_gost); #endif break; case NID_id_Gost28147_89_MAC: