The x9.62 tests replace the PRNG with specific numbers,
[openssl.git] / crypto / ecdsa / ecdsatest.c
index 7beae6f739d119b32033c907f86e3822bb7b1e06..65f4870474ddef1171796a4c7ee20573da5bb271 100644 (file)
@@ -328,6 +328,8 @@ int test_builtin(BIO *out)
        /* now create and verify a signature for every curve */
        for (n = 0; n < crv_len; n++)
                {
        /* now create and verify a signature for every curve */
        for (n = 0; n < crv_len; n++)
                {
+               unsigned char dirt, offset;
+
                nid = curves[n].nid;
                /* create new ecdsa key (== EC_KEY) */
                if ((eckey = EC_KEY_new()) == NULL)
                nid = curves[n].nid;
                /* create new ecdsa key (== EC_KEY) */
                if ((eckey = EC_KEY_new()) == NULL)
@@ -406,9 +408,10 @@ int test_builtin(BIO *out)
                        }
                BIO_printf(out, ".");
                BIO_flush(out);
                        }
                BIO_printf(out, ".");
                BIO_flush(out);
-               /* modify signature */
-               signature[((int)signature[0])%sig_len] ^= 
-                       signature[((int)signature[1])%sig_len];
+               /* modify a single byte of the signature */
+               offset = signature[10] % sig_len;
+               dirt   = signature[11];
+               signature[offset] ^= dirt ? dirt : 1; 
                if (ECDSA_verify(0, digest, 20, signature, sig_len, eckey) == 1)
                        {
                        BIO_printf(out, " failed\n");
                if (ECDSA_verify(0, digest, 20, signature, sig_len, eckey) == 1)
                        {
                        BIO_printf(out, " failed\n");
@@ -468,7 +471,9 @@ int main(void)
        RAND_seed(rnd_seed, sizeof(rnd_seed));
 
        /* the tests */
        RAND_seed(rnd_seed, sizeof(rnd_seed));
 
        /* the tests */
+#ifndef BN_DEBUG_RAND
        if (!x9_62_tests(out))  goto err;
        if (!x9_62_tests(out))  goto err;
+#endif
        if (!test_builtin(out)) goto err;
        
        ret = 1;
        if (!test_builtin(out)) goto err;
        
        ret = 1;