summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2017-02-26 20:07:41 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2017-03-06 22:24:33 +0100
commit3c01784d964e779f285df9604dabe45b994be1a6 (patch)
tree80b3211802fbb50d537e340f43bbfa33a3a9becf
parent4c450f23398ec50567eb9473d040ea76751a97ea (diff)
downloadgnutls-3c01784d964e779f285df9604dabe45b994be1a6.tar.gz
tests: decoupled the random generator operational tests from the forking ones
That also corrects the fact that not all tests were run for all generators, and allows to run the tests in parallel. Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--tests/Makefile.am4
-rw-r--r--tests/rng-fork.c30
-rw-r--r--tests/rng-op-key.c48
-rw-r--r--tests/rng-op-nonce.c48
-rw-r--r--tests/rng-op-random.c48
-rw-r--r--tests/rng-op.c79
6 files changed, 225 insertions, 32 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index e173382323..490aa5162d 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -43,7 +43,7 @@ EXTRA_DIST = suppressions.valgrind eagain-common.h cert-common.h test-chains.h \
pkcs7-interesting/pkcs7-1.der.err pkcs7-interesting/pkcs7-2.der pkcs7-interesting/pkcs7-2.der.err \
client-interesting/client1.raw client-interesting/client2.raw client-interesting/client3.disabled \
server-interesting/server1.raw scripts/common.sh scripts/starttls-common.sh \
- client-interesting/client3.raw
+ client-interesting/client3.raw rng-op.c
AM_CFLAGS = $(WARN_CFLAGS) $(WERROR_CFLAGS)
AM_CPPFLAGS = \
@@ -130,7 +130,7 @@ ctests = mini-record-2 simple gc set_pkcs12_cred cert certuniqueid \
rng-no-onload dtls1-2-mtu-check crl_apis cert_verify_inv_utf8 \
hostname-check-utf8 pkcs8-key-decode-encrypted priority-mix pkcs7 \
send-data-before-handshake recv-data-before-handshake crt_inv_write \
- x509sign-verify-error
+ x509sign-verify-error rng-op-nonce rng-op-random rng-op-key
if HAVE_SECCOMP_TESTS
ctests += dtls-with-seccomp tls-with-seccomp dtls-client-with-seccomp tls-client-with-seccomp
diff --git a/tests/rng-fork.c b/tests/rng-fork.c
index ede12bde75..2b3683b7c1 100644
--- a/tests/rng-fork.c
+++ b/tests/rng-fork.c
@@ -106,36 +106,6 @@ void doit(void)
}
}
- for (i = 0; i <= 65539; i++) {
- ret = gnutls_rnd(GNUTLS_RND_NONCE, buf1, sizeof(buf1));
- if (ret < 0) {
- fail("Error iterating RNG-nonce more than %u times\n", i);
- exit(1);
- }
- }
-
- for (i = 0; i <= 65539; i++) {
- ret = gnutls_rnd(GNUTLS_RND_RANDOM, buf1, sizeof(buf1));
- if (ret < 0) {
- fail("Error iterating RNG-random more than %u times\n", i);
- exit(1);
- }
- }
-#define TMP_SIZE (65*1024)
- tmp = malloc(TMP_SIZE);
- if (tmp == NULL) {
- fail("memory error\n");
- exit(1);
- }
- for (i = 0; i <= 65539; i++) {
- ret = gnutls_rnd(GNUTLS_RND_RANDOM, tmp, TMP_SIZE);
- if (ret < 0) {
- fail("Error iterating RNG-random more than %u times for %d data\n", i, TMP_SIZE);
- exit(1);
- }
- }
- free(tmp);
-
gnutls_global_deinit();
}
#else
diff --git a/tests/rng-op-key.c b/tests/rng-op-key.c
new file mode 100644
index 0000000000..ac504f8a8d
--- /dev/null
+++ b/tests/rng-op-key.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008-2012 Free Software Foundation, Inc.
+ *
+ * Author: Nikos Mavrogiannopoulos
+ *
+ * This file is part of GnuTLS.
+ *
+ * GnuTLS 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GnuTLS 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GnuTLS. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#if !defined(_WIN32)
+#include <sys/wait.h>
+#endif
+
+#include "utils.h"
+#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
+
+#include "rng-op.c"
+
+/* This tests the operation of the GNUTLS_RND_KEY generator.
+ * see rng-op.c for the specific tests.
+ */
+
+void doit(void)
+{
+ try(GNUTLS_RND_KEY);
+}
diff --git a/tests/rng-op-nonce.c b/tests/rng-op-nonce.c
new file mode 100644
index 0000000000..130ba642c2
--- /dev/null
+++ b/tests/rng-op-nonce.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008-2012 Free Software Foundation, Inc.
+ *
+ * Author: Nikos Mavrogiannopoulos
+ *
+ * This file is part of GnuTLS.
+ *
+ * GnuTLS 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GnuTLS 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GnuTLS. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#if !defined(_WIN32)
+#include <sys/wait.h>
+#endif
+
+#include "utils.h"
+#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
+
+#include "rng-op.c"
+
+/* This tests the operation of the GNUTLS_RND_NONCE generator.
+ * see rng-op.c for the specific tests.
+ */
+
+void doit(void)
+{
+ try(GNUTLS_RND_NONCE);
+}
diff --git a/tests/rng-op-random.c b/tests/rng-op-random.c
new file mode 100644
index 0000000000..9931f3aa58
--- /dev/null
+++ b/tests/rng-op-random.c
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008-2012 Free Software Foundation, Inc.
+ *
+ * Author: Nikos Mavrogiannopoulos
+ *
+ * This file is part of GnuTLS.
+ *
+ * GnuTLS 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GnuTLS 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GnuTLS. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#if !defined(_WIN32)
+#include <sys/wait.h>
+#endif
+
+#include "utils.h"
+#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
+
+#include "rng-op.c"
+
+/* This tests the operation of the GNUTLS_RND_RANDOM generator.
+ * see rng-op.c for the specific tests.
+ */
+
+void doit(void)
+{
+ try(GNUTLS_RND_RANDOM);
+}
diff --git a/tests/rng-op.c b/tests/rng-op.c
new file mode 100644
index 0000000000..c52bca813b
--- /dev/null
+++ b/tests/rng-op.c
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2008-2012 Free Software Foundation, Inc.
+ * Copyright (C) 2017 Nikos Mavrogiannopoulos
+ *
+ * Author: Nikos Mavrogiannopoulos
+ *
+ * This file is part of GnuTLS.
+ *
+ * GnuTLS 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 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GnuTLS 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GnuTLS. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/types.h>
+#if !defined(_WIN32)
+#include <sys/wait.h>
+#endif
+
+#include "utils.h"
+#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
+
+/* This tests the operation of the provided random generator
+ * to try() function. It will check whether it can perform more than
+ * 16k iterations, and provide a substantial amount of data.
+ */
+
+static void try(int rnd)
+{
+ unsigned char buf1[64];
+ unsigned char *tmp;
+ int ret;
+ unsigned i;
+
+ global_init();
+
+ for (i = 0; i <= 65539; i++) {
+ ret = gnutls_rnd(rnd, buf1, sizeof(buf1));
+ if (ret < 0) {
+ fail("Error iterating RNG-%d more than %u times\n", rnd, i);
+ exit(1);
+ }
+ }
+
+#define TMP_SIZE (65*1024)
+ tmp = malloc(TMP_SIZE);
+ if (tmp == NULL) {
+ fail("memory error\n");
+ exit(1);
+ }
+
+ for (i = 0; i <= 65539; i++) {
+ ret = gnutls_rnd(rnd, tmp, TMP_SIZE);
+ if (ret < 0) {
+ fail("Error iterating RNG-%d more than %u times for %d data\n", rnd, i, TMP_SIZE);
+ exit(1);
+ }
+ }
+ free(tmp);
+
+ gnutls_global_deinit();
+}