Initialised 'ok' and redo the logic.

The logic with how 'ok' was calculated didn't quite convey what's "ok",
so the logic is slightly redone to make it less confusing.

Reviewed-by: Andy Polyakov <appro@openssl.org>
This commit is contained in:
Richard Levitte 2015-03-25 14:41:58 +01:00
parent b1a5d1c652
commit 06affe3dac

View File

@ -167,7 +167,7 @@ int gost_do_verify(const unsigned char *dgst, int dgst_len,
BIGNUM *q2 = NULL; BIGNUM *q2 = NULL;
BIGNUM *u = NULL, *v = NULL, *z1 = NULL, *z2 = NULL; BIGNUM *u = NULL, *v = NULL, *z1 = NULL, *z2 = NULL;
BIGNUM *tmp2 = NULL, *tmp3 = NULL; BIGNUM *tmp2 = NULL, *tmp3 = NULL;
int ok; int ok = 0;
BN_CTX *ctx = BN_CTX_new(); BN_CTX *ctx = BN_CTX_new();
if(!ctx) { if(!ctx) {
GOSTerr(GOST_F_GOST_DO_VERIFY, ERR_R_MALLOC_FAILURE); GOSTerr(GOST_F_GOST_DO_VERIFY, ERR_R_MALLOC_FAILURE);
@ -208,9 +208,9 @@ int gost_do_verify(const unsigned char *dgst, int dgst_len,
BN_mod_exp(tmp2, dsa->pub_key, z2, dsa->p, ctx); BN_mod_exp(tmp2, dsa->pub_key, z2, dsa->p, ctx);
BN_mod_mul(tmp3, tmp, tmp2, dsa->p, ctx); BN_mod_mul(tmp3, tmp, tmp2, dsa->p, ctx);
BN_mod(u, tmp3, dsa->q, ctx); BN_mod(u, tmp3, dsa->q, ctx);
ok = BN_cmp(u, sig->r); ok = (BN_cmp(u, sig->r) == 0);
if (ok != 0) { if (!ok) {
GOSTerr(GOST_F_GOST_DO_VERIFY, GOST_R_SIGNATURE_MISMATCH); GOSTerr(GOST_F_GOST_DO_VERIFY, GOST_R_SIGNATURE_MISMATCH);
} }
err: err:
@ -219,7 +219,7 @@ err:
BN_CTX_end(ctx); BN_CTX_end(ctx);
BN_CTX_free(ctx); BN_CTX_free(ctx);
} }
return (ok == 0); return ok;
} }
/* /*