X-Git-Url: http://wagner.pp.ru/gitweb/?a=blobdiff_plain;f=gost_pmeth.c;h=ce162f55d3a3e2a2e9783107f556ba2d433ad65d;hb=af0cdae35ebe75209d45928404141d37ffd684ef;hp=d84c7ef933d4cfa246c4c05887cdb2e48d9ee6af;hpb=aed4f443f97e96ed015a7962606b10e1977edd51;p=openssl-gost%2Fengine.git diff --git a/gost_pmeth.c b/gost_pmeth.c index d84c7ef..ce162f5 100644 --- a/gost_pmeth.c +++ b/gost_pmeth.c @@ -369,8 +369,8 @@ static int pkey_gost2012cp_keygen(EVP_PKEY_CTX *ctx, EVP_PKEY *pkey) */ int pack_sign_cp(DSA_SIG *s, int order, unsigned char *sig, size_t *siglen) { - BIGNUM *sig_r = NULL, *sig_s = NULL; - DSA_SIG_get0(&sig_r, &sig_s, s); + const BIGNUM *sig_r = NULL, *sig_s = NULL; + DSA_SIG_get0(s, &sig_r, &sig_s); *siglen = 2 * order; memset(sig, 0, *siglen); store_bignum(sig_s, sig, order); @@ -417,20 +417,20 @@ static int pkey_gost_ec_cp_sign(EVP_PKEY_CTX *ctx, unsigned char *sig, /* ------------------- verify callbacks ---------------------------*/ /* Unpack signature according to cryptopro rules */ -DSA_SIG *unpack_cp_signature(const unsigned char *sig, size_t siglen) +DSA_SIG *unpack_cp_signature(const unsigned char *sigbuf, size_t siglen) { - DSA_SIG *s; - BIGNUM *sig_r = NULL, *sig_s = NULL; + DSA_SIG *sig; + BIGNUM *r = NULL, *s = NULL; - s = DSA_SIG_new(); - if (s == NULL) { + sig = DSA_SIG_new(); + if (sig == NULL) { GOSTerr(GOST_F_UNPACK_CP_SIGNATURE, ERR_R_MALLOC_FAILURE); return NULL; } - DSA_SIG_get0(&sig_r, &sig_s, s); - sig_s = BN_bin2bn(sig, siglen / 2, NULL); - sig_r = BN_bin2bn(sig + siglen / 2, siglen / 2, NULL); - return s; + s = BN_bin2bn(sigbuf, siglen / 2, NULL); + r = BN_bin2bn(sigbuf + siglen / 2, siglen / 2, NULL); + DSA_SIG_set0(sig, r, s); + return sig; } static int pkey_gost_ec_cp_verify(EVP_PKEY_CTX *ctx, const unsigned char *sig, @@ -638,11 +638,13 @@ static int pkey_gost_mac_ctrl_str(EVP_PKEY_CTX *ctx, } param = get_encryption_params(obj); + ASN1_OBJECT_free(obj); if (param == NULL) { GOSTerr(GOST_F_PKEY_GOST_MAC_CTRL_STR, GOST_R_INVALID_MAC_PARAMS); return 0; } + return pkey_gost_mac_ctrl(ctx, EVP_PKEY_CTRL_GOST_PARAMSET, 0, (void *)param); }