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

Only use fake rand once per operation. This stops the EC

pairwise consistency test interfering with the test.
parent d7a3ce98
Loading
Loading
Loading
Loading
+8 −1
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ int restore_rand(void)
		return 1;
	}

static int fbytes_counter = 0;
static int fbytes_counter = 0, use_fake = 0;
static const char *numbers[8] = {
	"651056770906015076056810763456358567190100156695615665659",
	"6140507067065001063065065565667405560006161556565665656654",
@@ -157,6 +157,11 @@ int fbytes(unsigned char *buf, int num)
	int	ret;
	BIGNUM	*tmp = NULL;

	if (use_fake == 0)
		return old_rand->bytes(buf, num);

	use_fake = 0;

	if (fbytes_counter >= 8)
		return 0;
	tmp = BN_new();
@@ -199,11 +204,13 @@ int x9_62_test_internal(BIO *out, int nid, const char *r_in, const char *s_in)
	/* create the key */
	if ((key = EC_KEY_new_by_curve_name(nid)) == NULL)
		goto x962_int_err;
	use_fake = 1;
	if (!EC_KEY_generate_key(key))
		goto x962_int_err;
	BIO_printf(out, ".");
	(void)BIO_flush(out);
	/* create the signature */
	use_fake = 1;
	signature = ECDSA_do_sign(digest, 20, key);
	if (signature == NULL)
		goto x962_int_err;