summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@turtle.(none)>2008-04-26 14:43:12 +0300
committerNikos Mavrogiannopoulos <nmav@turtle.(none)>2008-04-26 14:43:12 +0300
commit0024cce1f30126e690c1a37a09202486910fd1b1 (patch)
tree6686db1d08a08b075367b4d07a26a0dbad35ca9b
parent2dca285c9b92f30e82a20e298cc98f6bf09ef629 (diff)
downloadgnutls-0024cce1f30126e690c1a37a09202486910fd1b1.tar.gz
added crypto rng registration test.
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/crypto_rng.c64
2 files changed, 65 insertions, 1 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7fb1fff02c..b2ccc4ede1 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -37,7 +37,7 @@ noinst_LTLIBRARIES = libutils.la
libutils_la_SOURCES = utils.h utils.c
ctests = simple openssl gc set_pkcs12_cred certder \
- certificate_set_x509_crl dn parse_ca moredn
+ certificate_set_x509_crl dn parse_ca moredn crypto_rng
openssl_LDADD = $(LDADD) ../libextra/libgnutls-openssl.la
if HAVE_FORK
ctests += openpgpself x509self x509signself x509dn anonself pskself dhepskself tlsia resume
diff --git a/tests/crypto_rng.c b/tests/crypto_rng.c
new file mode 100644
index 0000000000..2667178a06
--- /dev/null
+++ b/tests/crypto_rng.c
@@ -0,0 +1,64 @@
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include <stdio.h>
+
+#include "utils.h"
+
+#include <gnutls/gnutls.h>
+#include <gnutls/crypto.h>
+#include "../lib/random.h"
+
+void mylogfn( int level, const char*ptr)
+{
+ printf ("Got Logs: ");
+ if (ptr)
+ printf ("%s", ptr);
+}
+
+int rng_init( void** ctx)
+{
+ return 0;
+}
+
+int rng_rnd ( void* ctx, int level, void* data, int datasize)
+{
+ memset(data, 1,datasize);
+ return 0;
+}
+
+void rng_deinit( void* ctx)
+{
+}
+
+void
+doit (void)
+{
+ int rc;
+ char buf1[32];
+ char buf2[32];
+ int failed = 0;
+ gnutls_crypto_rnd_st rng = { rng_init, rng_rnd, rng_deinit };
+
+
+ rc = gnutls_crypto_rnd_register (0, &rng);
+
+ gnutls_global_init ();
+
+ memset(buf2, 1, sizeof(buf2));
+
+ _gnutls_rnd(GNUTLS_RND_KEY, buf1, sizeof(buf1));
+
+ if (memcmp( buf1, buf2, sizeof(buf1))!=0)
+ failed = 1;
+
+ gnutls_global_deinit ();
+
+ if (failed == 0) {
+ success("rng registered ok\n");
+ } else {
+ fail ("rng register test failed: %d\n", rc);
+ }
+}