X-Git-Url: http://www.wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_ec_sign.c;fp=gost_ec_sign.c;h=2deb09324b50d15a50caaba367362d5f83a496b4;hb=445a097cfc4e18ad1634a4dce8bb9994dbf3ba15;hp=03a2ba09da25079700ebdc69b3de3cf846282bd5;hpb=70c5f3b3b65ed156144ca64ac666dc4400d51e19;p=openssl-gost%2Fengine.git diff --git a/gost_ec_sign.c b/gost_ec_sign.c index 03a2ba0..2deb093 100644 --- a/gost_ec_sign.c +++ b/gost_ec_sign.c @@ -74,7 +74,7 @@ int fill_GOST_EC_params(EC_KEY *eckey, int nid) R3410_ec_params *params = gost_nid2params(nid); EC_GROUP *grp = NULL; EC_POINT *P = NULL; - BIGNUM *p = NULL, *q = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL; + BIGNUM *p = NULL, *q = NULL, *a = NULL, *b = NULL, *x = NULL, *y = NULL, *cofactor = NULL; BN_CTX *ctx; int ok = 0; @@ -95,14 +95,16 @@ int fill_GOST_EC_params(EC_KEY *eckey, int nid) x = BN_CTX_get(ctx); y = BN_CTX_get(ctx); q = BN_CTX_get(ctx); - if (!p || !a || !b || !x || !y || !q) { + cofactor = BN_CTX_get(ctx); + if (!p || !a || !b || !x || !y || !q || !cofactor) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_MALLOC_FAILURE); goto end; } if (!BN_hex2bn(&p, params->p) || !BN_hex2bn(&a, params->a) - || !BN_hex2bn(&b, params->b)) { + || !BN_hex2bn(&b, params->b) + || !BN_hex2bn(&cofactor, params->cofactor) ) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; } @@ -127,7 +129,7 @@ int fill_GOST_EC_params(EC_KEY *eckey, int nid) goto end; } - if (!EC_GROUP_set_generator(grp, P, q, NULL)) { + if (!EC_GROUP_set_generator(grp, P, q, cofactor)) { GOSTerr(GOST_F_FILL_GOST_EC_PARAMS, ERR_R_INTERNAL_ERROR); goto end; }