added crypto rng registration test.
[gnutls:gnutls.git] / tests / crypto_rng.c
1
2 #ifdef HAVE_CONFIG_H
3 # include <config.h>
4 #endif
5
6 #include <stdio.h>
7
8 #include "utils.h"
9
10 #include <gnutls/gnutls.h>
11 #include <gnutls/crypto.h>
12 #include "../lib/random.h"
13
14 void mylogfn( int level, const char*ptr)
15 {
16        printf ("Got Logs: ");
17        if (ptr)
18                printf ("%s", ptr);
19 }
20
21 int rng_init( void** ctx)
22 {
23  return 0;
24 }
25
26 int rng_rnd ( void* ctx, int level, void* data, int datasize)
27 {
28   memset(data, 1,datasize);
29  return 0;
30 }
31
32 void rng_deinit( void* ctx)
33 {
34 }
35
36 void
37 doit (void)
38 {
39  int rc;
40  char buf1[32];
41  char buf2[32];
42  int failed = 0;
43  gnutls_crypto_rnd_st rng = { rng_init, rng_rnd, rng_deinit };
44
45
46  rc = gnutls_crypto_rnd_register (0, &rng);
47
48  gnutls_global_init ();
49
50  memset(buf2, 1, sizeof(buf2));
51  
52  _gnutls_rnd(GNUTLS_RND_KEY, buf1, sizeof(buf1));
53
54  if (memcmp( buf1, buf2, sizeof(buf1))!=0)
55     failed = 1;
56  
57  gnutls_global_deinit ();
58
59  if (failed == 0) {
60    success("rng registered ok\n");
61  } else {
62     fail ("rng register test failed: %d\n", rc);
63  }
64 }