added support for stateful PRFs (such as the FIPS_PRF)
authorMartin Willi <martin@strongswan.org>
Fri, 12 Jun 2009 08:39:47 +0000 (10:39 +0200)
committerMartin Willi <martin@strongswan.org>
Fri, 12 Jun 2009 08:39:47 +0000 (10:39 +0200)
src/libstrongswan/crypto/crypto_tester.c
src/libstrongswan/crypto/crypto_tester.h

index 4b81734..da7bea0 100644 (file)
@@ -407,6 +407,10 @@ static bool test_prf(private_crypto_tester_t *this,
                }
                /* bytes to existing buffer */
                memset(out.ptr, 0, out.len);
+               if (vector->stateful)
+               {
+                       prf->set_key(prf, key);
+               }
                prf->get_bytes(prf, seed, out.ptr);
                if (!memeq(vector->out, out.ptr, out.len))
                {
@@ -416,6 +420,10 @@ static bool test_prf(private_crypto_tester_t *this,
                if (seed.len > 2)
                {
                        memset(out.ptr, 0, out.len);
+                       if (vector->stateful)
+                       {
+                               prf->set_key(prf, key);
+                       }
                        prf->allocate_bytes(prf, chunk_create(seed.ptr, 1), NULL);
                        prf->get_bytes(prf, chunk_create(seed.ptr + 1, 1), NULL);
                        prf->get_bytes(prf, chunk_skip(seed, 2), out.ptr);
index 5a97261..d2929f3 100644 (file)
@@ -75,6 +75,8 @@ struct hasher_test_vector_t {
 struct prf_test_vector_t {
        /** prf algorithm this test vector tests */
        pseudo_random_function_t alg;
+       /** is this PRF stateful? */
+       bool stateful;
        /** key length to use, in bytes */
        size_t key_size;
        /** key to use */