X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=fips%2Frand%2Ffips_drbg_ec.c;h=c4d7612d6c43b6467c2919e9760eb5698d5fb0eb;hp=57344314a19ce757fe8ff79bde4ca5821a651ff0;hb=884c33b5c4ddfa893006628a33a165545ce27d42;hpb=45fcfcb99fd1f37c5b5cd3b76b99b5f70e7f518a diff --git a/fips/rand/fips_drbg_ec.c b/fips/rand/fips_drbg_ec.c index 57344314a1..c4d7612d6c 100644 --- a/fips/rand/fips_drbg_ec.c +++ b/fips/rand/fips_drbg_ec.c @@ -218,7 +218,7 @@ static int drbg_ec_mul(DRBG_EC_CTX *ectx, BIGNUM *r, const BIGNUM *s, int use_q) if (!EC_POINT_get_affine_coordinates_GFp(ectx->curve, ectx->ptmp, r, NULL, ectx->bctx)) return 0; - return 0; + return 1; } static int drbg_ec_instantiate(DRBG_CTX *dctx, @@ -244,7 +244,7 @@ static int drbg_ec_reseed(DRBG_CTX *dctx, /* Check if we have a deferred s = s * P */ if (ectx->sp_defer) { - if (drbg_ec_mul(ectx, ectx->s, ectx->s, 0)) + if (!drbg_ec_mul(ectx, ectx->s, ectx->s, 0)) return 0; ectx->sp_defer = 0; } @@ -281,7 +281,7 @@ static int drbg_ec_generate(DRBG_CTX *dctx, /* Check if we have a deferred s = s * P */ if (ectx->sp_defer) { - if (drbg_ec_mul(ectx, s, s, 0)) + if (!drbg_ec_mul(ectx, s, s, 0)) goto err; ectx->sp_defer = 0; } @@ -323,13 +323,13 @@ static int drbg_ec_generate(DRBG_CTX *dctx, for (;;) { /* Step #6, calculate s = t * P */ - if (drbg_ec_mul(ectx, s, t, 0)) + if (!drbg_ec_mul(ectx, s, t, 0)) goto err; #ifdef EC_DRBG_TRACE bnprint(stderr, "s in generate: ", ectx->s); #endif /* Step #7, calculate r = s * Q */ - if (drbg_ec_mul(ectx, r, s, 1)) + if (!drbg_ec_mul(ectx, r, s, 1)) goto err; #ifdef EC_DRBG_TRACE bnprint(stderr, "r in generate is: ", r); @@ -337,7 +337,7 @@ static int drbg_ec_generate(DRBG_CTX *dctx, dctx->reseed_counter++; /* Get rightmost bits of r to output buffer */ - if (!(dctx->flags & DRBG_FLAG_TEST) && !dctx->lb_valid) + if (!(dctx->xflags & DRBG_FLAG_TEST) && !dctx->lb_valid) { if (!bn2binpad(dctx->lb, dctx->blocklength, r)) goto err; @@ -499,7 +499,7 @@ int fips_drbg_ec_init(DRBG_CTX *dctx) return -2; } - dctx->flags |= DRBG_CUSTOM_RESEED; + dctx->iflags |= DRBG_CUSTOM_RESEED; dctx->reseed_counter = 0; dctx->instantiate = drbg_ec_instantiate; dctx->reseed = drbg_ec_reseed;