Commit 55831cd6 authored by Dr. Stephen Henson's avatar Dr. Stephen Henson
Browse files

Remove s = s * P deferral.

parent 884c33b5
Loading
Loading
Loading
Loading
+2 −18
Original line number Original line Diff line number Diff line
@@ -241,13 +241,6 @@ static int drbg_ec_reseed(DRBG_CTX *dctx,
				const unsigned char *adin, size_t adin_len)
				const unsigned char *adin, size_t adin_len)
	{
	{
	DRBG_EC_CTX *ectx = &dctx->d.ec;
	DRBG_EC_CTX *ectx = &dctx->d.ec;
	/* Check if we have a deferred s = s * P */
	if (ectx->sp_defer)
		{
		if (!drbg_ec_mul(ectx, ectx->s, ectx->s, 0))
			return 0;
		ectx->sp_defer = 0;
		}
	/* Convert s value to a binary buffer. Save it to tbuf as we are
	/* Convert s value to a binary buffer. Save it to tbuf as we are
	 * about to overwrite it.
	 * about to overwrite it.
	 */
	 */
@@ -278,13 +271,6 @@ static int drbg_ec_generate(DRBG_CTX *dctx,
			dctx->status = DRBG_STATUS_RESEED;
			dctx->status = DRBG_STATUS_RESEED;
		return 1;
		return 1;
		}
		}
	/* Check if we have a deferred s = s * P */
	if (ectx->sp_defer)
		{
		if (!drbg_ec_mul(ectx, s, s, 0))
			goto err;
		ectx->sp_defer = 0;
		}


	BN_CTX_start(ectx->bctx);
	BN_CTX_start(ectx->bctx);
	r = BN_CTX_get(ectx->bctx);
	r = BN_CTX_get(ectx->bctx);
@@ -371,8 +357,8 @@ static int drbg_ec_generate(DRBG_CTX *dctx,
		hexprint(stderr, out, dctx->blocklength);
		hexprint(stderr, out, dctx->blocklength);
#endif
#endif
		}
		}
	/* Defer s = s * P until we need it */
	if (!drbg_ec_mul(ectx, ectx->s, ectx->s, 0))
	ectx->sp_defer = 1;
		return 0;
#ifdef EC_DRBG_TRACE
#ifdef EC_DRBG_TRACE
	bnprint(stderr, "s after generate is: ", s);
	bnprint(stderr, "s after generate is: ", s);
#endif
#endif
@@ -534,8 +520,6 @@ int fips_drbg_ec_init(DRBG_CTX *dctx)
	ectx->Q = EC_POINT_new(ectx->curve);
	ectx->Q = EC_POINT_new(ectx->curve);
	ectx->ptmp = EC_POINT_new(ectx->curve);
	ectx->ptmp = EC_POINT_new(ectx->curve);


	ectx->sp_defer = 0;

	x = BN_CTX_get(ectx->bctx);
	x = BN_CTX_get(ectx->bctx);
	y = BN_CTX_get(ectx->bctx);
	y = BN_CTX_get(ectx->bctx);


+0 −2
Original line number Original line Diff line number Diff line
@@ -116,8 +116,6 @@ struct drbg_ec_ctx_st
	EVP_MD_CTX mctx;
	EVP_MD_CTX mctx;
	/* Temporary value storage: should always exceed max digest length */
	/* Temporary value storage: should always exceed max digest length */
	unsigned char vtmp[EC_PRNG_MAX_SEEDLEN];
	unsigned char vtmp[EC_PRNG_MAX_SEEDLEN];
	/* Flag to indicate s = s * P has been deferred */
	int sp_defer;
	/* Temp BN context */
	/* Temp BN context */
	BN_CTX *bctx;
	BN_CTX *bctx;
	};
	};