unit-tests: Move ntru_test_rng_t to a utility class in libtest
authorTobias Brunner <tobias@strongswan.org>
Thu, 28 Nov 2013 17:00:33 +0000 (18:00 +0100)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Wed, 4 Dec 2013 19:32:59 +0000 (20:32 +0100)
src/libstrongswan/plugins/ntru/Makefile.am
src/libstrongswan/plugins/ntru/ntru_test_rng.c [deleted file]
src/libstrongswan/plugins/ntru/ntru_test_rng.h [deleted file]
src/libstrongswan/tests/Makefile.am
src/libstrongswan/tests/suites/test_ntru.c
src/libstrongswan/tests/test_runner.h
src/libstrongswan/tests/utils/test_rng.c [new file with mode: 0644]
src/libstrongswan/tests/utils/test_rng.h [new file with mode: 0644]

index 8e4b878..b11c081 100644 (file)
@@ -14,7 +14,6 @@ libstrongswan_ntru_la_SOURCES = \
        ntru_plugin.h ntru_plugin.c \
        ntru_drbg.h ntru_drbg.c \
        ntru_ke.h ntru_ke.c \
-       ntru_test_rng.h ntru_test_rng.c \
        ntru_crypto/ntru_crypto.h ntru_crypto/ntru_crypto_error.h \
        ntru_crypto/ntru_crypto_ntru_convert.h \
        ntru_crypto/ntru_crypto_ntru_convert.c \
diff --git a/src/libstrongswan/plugins/ntru/ntru_test_rng.c b/src/libstrongswan/plugins/ntru/ntru_test_rng.c
deleted file mode 100644 (file)
index 82eae15..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * Copyright (C) 2013 Andreas Steffen
- * HSR Hochschule fuer Technik Rapperswil
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- */
-
-#include "ntru_test_rng.h"
-
-typedef struct private_ntru_test_rng_t private_ntru_test_rng_t;
-
-/**
- * Private data of an ntru_test_rng_t object.
- */
-struct private_ntru_test_rng_t {
-
-       /**
-        * Public ntru_test_rng_t interface.
-        */
-       ntru_test_rng_t public;
-
-       /**
-        * entropy string
-        */
-       chunk_t entropy;
-};
-
-METHOD(rng_t, get_bytes, bool,
-       private_ntru_test_rng_t *this, size_t bytes, u_int8_t *buffer)
-{
-       if (bytes > this->entropy.len)
-       {
-               return FALSE;
-       }
-       memcpy(buffer, this->entropy.ptr, bytes);
-       this->entropy = chunk_skip(this->entropy, bytes);
-       return TRUE;
-}
-
-METHOD(rng_t, allocate_bytes, bool,
-       private_ntru_test_rng_t *this, size_t bytes, chunk_t *chunk)
-{
-       if (bytes > this->entropy.len)
-       {
-               *chunk = chunk_empty;
-               return FALSE;
-       }
-
-       *chunk = chunk_alloc(bytes);
-       memcpy(chunk->ptr, this->entropy.ptr, bytes);
-       this->entropy = chunk_skip(this->entropy, bytes);
-       return TRUE;
-}
-
-METHOD(rng_t, destroy, void,
-       private_ntru_test_rng_t *this)
-{
-       free(this);
-}
-
-/*
- * Described in header.
- */
-rng_t *ntru_test_rng_create(chunk_t entropy)
-{
-       private_ntru_test_rng_t *this;
-
-       INIT(this,
-               .public = {
-                       .rng = {
-                               .get_bytes = _get_bytes,
-                               .allocate_bytes = _allocate_bytes,
-                               .destroy = _destroy,
-                       },
-               },
-               .entropy = entropy,
-       );
-
-       return &this->public.rng;
-}
-
diff --git a/src/libstrongswan/plugins/ntru/ntru_test_rng.h b/src/libstrongswan/plugins/ntru/ntru_test_rng.h
deleted file mode 100644 (file)
index 75962a7..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2013 Andreas Steffen
- * HSR Hochschule fuer Technik Rapperswil
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 2 of the License, or (at your
- * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- * for more details.
- */
-
-/**
- * @defgroup ntru_test_rng ntru_test_rng
- * @{ @ingroup ntru_p
- */
-
-#ifndef NTRU_TEST_RNG_H_
-#define NTRU_TEST_RNG_H_
-
-typedef struct ntru_test_rng_t ntru_test_rng_t;
-
-#include <library.h>
-
-/**
- * rng_t providing NIST SP 800-90A entropy test vectors
- */
-struct ntru_test_rng_t {
-
-       /**
-        * Implements rng_t.
-        */
-       rng_t rng;
-};
-
-/**
- * Creates an ntru_test_rng_t instance.
- *
- * @param entropy      entropy test vector
- * @return                     created ntru_test_rng_t
- */
-rng_t *ntru_test_rng_create(chunk_t entropy);
-
-#endif /** NTRU_TEST_RNG_H_ @} */
index 81a8050..39e0309 100644 (file)
@@ -2,7 +2,8 @@ check_LTLIBRARIES = libtest.la
 
 libtest_la_SOURCES = \
   test_suite.c test_suite.h \
-  test_runner.c test_runner.h
+  test_runner.c test_runner.h \
+  utils/test_rng.c utils/test_rng.h
 
 libtest_la_CFLAGS = \
   -I$(top_srcdir)/src/libstrongswan \
index 8dd22a5..600e159 100644 (file)
@@ -15,8 +15,8 @@
 
 #include "test_suite.h"
 
+#include <tests/utils/test_rng.h>
 #include <plugins/ntru/ntru_drbg.h>
-#include <plugins/ntru/ntru_test_rng.h>
 
 /**
  * NTRU parameter sets to test
@@ -47,7 +47,7 @@ START_TEST(test_ntru_test_rng)
        in2 = chunk_from_chars(0x07, 0x08);
        in = chunk_cat("cc", in1, in2);
 
-       entropy = ntru_test_rng_create(in);
+       entropy = test_rng_create(in);
        ck_assert(entropy->allocate_bytes(entropy, 6, &out));
        ck_assert(chunk_equals(in1, out));
        ck_assert(entropy->get_bytes(entropy, 2, out.ptr));
@@ -241,7 +241,7 @@ START_TEST(test_ntru_drbg)
        chunk_t out;
 
        out = chunk_alloc(128);
-       entropy = ntru_test_rng_create(drbg_tests[_i].entropy);
+       entropy = test_rng_create(drbg_tests[_i].entropy);
        drbg = ntru_drbg_create(256, drbg_tests[_i].pers_str, entropy);
        ck_assert(drbg != NULL);
        ck_assert(drbg->reseed(drbg));
@@ -263,7 +263,7 @@ START_TEST(test_ntru_drbg_reseed)
        lib->settings->set_int(lib->settings,
                                                  "libstrongswan.plugins.ntru.max_drbg_requests", 2);
        out = chunk_alloc(128);
-       entropy = ntru_test_rng_create(drbg_tests[0].entropy);
+       entropy = test_rng_create(drbg_tests[0].entropy);
        drbg = ntru_drbg_create(256, chunk_empty, entropy);
 
        /* bad output parameters */
@@ -287,7 +287,7 @@ START_TEST(test_ntru_drbg_reseed)
        entropy->destroy(entropy);
 
        /* one automatic reseeding occurs */
-       entropy = ntru_test_rng_create(drbg_tests[0].entropy);
+       entropy = test_rng_create(drbg_tests[0].entropy);
        drbg = ntru_drbg_create(256, chunk_empty, entropy);
        ck_assert(drbg->generate(drbg, 256, 128, out.ptr));
        ck_assert(drbg->generate(drbg, 256, 128, out.ptr));
@@ -311,7 +311,7 @@ START_TEST(test_ntru_ke)
        char buf[10];
        int n, len;
        status_t status;
-       
+
        len = snprintf(buf, sizeof(buf), "%N", diffie_hellman_group_names,
                                   params[_i].group);
        ck_assert(len == 8);
index 2651898..c895c13 100644 (file)
@@ -16,6 +16,9 @@
 /**
  * @defgroup libtest libtest
  *
+ * @defgroup test_utils test_utils
+ * @ingroup libtest
+ *
  * @defgroup test_runner test_runner
  * @{ @ingroup libtest
  */
diff --git a/src/libstrongswan/tests/utils/test_rng.c b/src/libstrongswan/tests/utils/test_rng.c
new file mode 100644 (file)
index 0000000..0156950
--- /dev/null
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2013 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+#include "test_rng.h"
+
+typedef struct private_rng_t private_rng_t;
+
+/**
+ * Private data.
+ */
+struct private_rng_t {
+
+       /**
+        * Public interface.
+        */
+       rng_t public;
+
+       /**
+        * Entropy string.
+        */
+       chunk_t entropy;
+};
+
+METHOD(rng_t, get_bytes, bool,
+       private_rng_t *this, size_t bytes, u_int8_t *buffer)
+{
+       if (bytes > this->entropy.len)
+       {
+               return FALSE;
+       }
+       memcpy(buffer, this->entropy.ptr, bytes);
+       this->entropy = chunk_skip(this->entropy, bytes);
+       return TRUE;
+}
+
+METHOD(rng_t, allocate_bytes, bool,
+       private_rng_t *this, size_t bytes, chunk_t *chunk)
+{
+       if (bytes > this->entropy.len)
+       {
+               *chunk = chunk_empty;
+               return FALSE;
+       }
+
+       *chunk = chunk_alloc(bytes);
+       memcpy(chunk->ptr, this->entropy.ptr, bytes);
+       this->entropy = chunk_skip(this->entropy, bytes);
+       return TRUE;
+}
+
+METHOD(rng_t, destroy, void,
+       private_rng_t *this)
+{
+       free(this);
+}
+
+/*
+ * Described in header.
+ */
+rng_t *test_rng_create(chunk_t entropy)
+{
+       private_rng_t *this;
+
+       INIT(this,
+               .public = {
+                       .get_bytes = _get_bytes,
+                       .allocate_bytes = _allocate_bytes,
+                       .destroy = _destroy,
+               },
+               .entropy = entropy,
+       );
+
+       return &this->public;
+}
diff --git a/src/libstrongswan/tests/utils/test_rng.h b/src/libstrongswan/tests/utils/test_rng.h
new file mode 100644 (file)
index 0000000..e588f3b
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2013 Andreas Steffen
+ * HSR Hochschule fuer Technik Rapperswil
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.  See <http://www.fsf.org/copyleft/gpl.txt>.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * for more details.
+ */
+
+/**
+ * rng_t providing NIST SP 800-90A entropy test vectors
+ *
+ * @defgroup test_rng test_rng
+ * @{ @ingroup test_utils
+ */
+
+#ifndef TEST_RNG_H_
+#define TEST_RNG_H_
+
+#include <library.h>
+
+/**
+ * Creates a test_rng_t instance.
+ *
+ * @param entropy      entropy test vector
+ * @return                     created test_rng_t
+ */
+rng_t *test_rng_create(chunk_t entropy);
+
+#endif /** TEST_RNG_H_ @} */