summaryrefslogtreecommitdiff
path: root/fips
diff options
context:
space:
mode:
authorsteve <steve>2011-11-05 18:14:41 +0000
committersteve <steve>2011-11-05 18:14:41 +0000
commit0eacd1e6ac5d7670cb3a2f0829787a9e53f71fd9 (patch)
tree2685f3de242d5259103bc68dce62bbd466f23382 /fips
parent3674856198ac736be62faa0aa548a0a4c31a6a26 (diff)
downloadopenssl-0eacd1e6ac5d7670cb3a2f0829787a9e53f71fd9.tar.gz
make post failure simulation reversible in all cases
Diffstat (limited to 'fips')
-rw-r--r--fips/fips.h5
-rw-r--r--fips/fips_test_suite.c4
-rw-r--r--fips/rand/fips_drbg_lib.c4
-rw-r--r--fips/rand/fips_rand.c4
-rw-r--r--fips/rand/fips_rand_selftest.c7
5 files changed, 12 insertions, 12 deletions
diff --git a/fips/fips.h b/fips/fips.h
index 8833dd2e9..b6263575c 100644
--- a/fips/fips.h
+++ b/fips/fips.h
@@ -97,9 +97,8 @@ int FIPS_selftest_rsa(void);
int FIPS_selftest_dsa(void);
int FIPS_selftest_ecdsa(void);
int FIPS_selftest_ecdh(void);
-void FIPS_corrupt_drbg(void);
-void FIPS_x931_stick(void);
-void FIPS_drbg_stick(void);
+void FIPS_x931_stick(int onoff);
+void FIPS_drbg_stick(int onoff);
int FIPS_selftest_x931(void);
int FIPS_selftest_hmac(void);
int FIPS_selftest_drbg(void);
diff --git a/fips/fips_test_suite.c b/fips/fips_test_suite.c
index ee706d8a9..57a1b8a6a 100644
--- a/fips/fips_test_suite.c
+++ b/fips/fips_test_suite.c
@@ -1104,9 +1104,9 @@ int main(int argc, char **argv)
if (!FIPS_module_mode())
return 1;
if (do_drbg_stick)
- FIPS_drbg_stick();
+ FIPS_drbg_stick(1);
if (do_rng_stick)
- FIPS_x931_stick();
+ FIPS_x931_stick(1);
/* AES encryption/decryption
*/
diff --git a/fips/rand/fips_drbg_lib.c b/fips/rand/fips_drbg_lib.c
index 1596977fd..e0e1d7509 100644
--- a/fips/rand/fips_drbg_lib.c
+++ b/fips/rand/fips_drbg_lib.c
@@ -544,9 +544,9 @@ void FIPS_drbg_set_reseed_interval(DRBG_CTX *dctx, int interval)
static int drbg_stick = 0;
-void FIPS_drbg_stick(void)
+void FIPS_drbg_stick(int onoff)
{
- drbg_stick = 1;
+ drbg_stick = onoff;
}
/* Continuous DRBG utility function */
diff --git a/fips/rand/fips_rand.c b/fips/rand/fips_rand.c
index cb9184e1f..f80c00575 100644
--- a/fips/rand/fips_rand.c
+++ b/fips/rand/fips_rand.c
@@ -114,9 +114,9 @@ static FIPS_PRNG_CTX sctx;
static int fips_prng_fail = 0;
-void FIPS_x931_stick(void)
+void FIPS_x931_stick(int onoff)
{
- fips_prng_fail = 1;
+ fips_prng_fail = onoff;
}
static void fips_rand_prng_reset(FIPS_PRNG_CTX *ctx)
diff --git a/fips/rand/fips_rand_selftest.c b/fips/rand/fips_rand_selftest.c
index bafce719c..ec949cbdb 100644
--- a/fips/rand/fips_rand_selftest.c
+++ b/fips/rand/fips_rand_selftest.c
@@ -129,15 +129,16 @@ static AES_PRNG_TV aes_256_tv =
static int do_x931_test(unsigned char *key, int keylen,
AES_PRNG_TV *tv)
{
- unsigned char R[16];
+ unsigned char R[16], V[16];
int rv = 1;
+ memcpy(V, tv->V, sizeof(V));
if (!FIPS_x931_set_key(key, keylen))
return 0;
if (!fips_post_started(FIPS_TEST_X931, keylen, NULL))
return 1;
if (!fips_post_corrupt(FIPS_TEST_X931, keylen, NULL))
- tv->V[0]++;
- FIPS_x931_seed(tv->V, 16);
+ V[0]++;
+ FIPS_x931_seed(V, 16);
FIPS_x931_set_dt(tv->DT);
FIPS_x931_bytes(R, 16);
if (memcmp(R, tv->R, 16))