Annotation of embedaddon/strongswan/src/charon-tkm/tests/nonceg_tests.c, revision 1.1.1.1
1.1 misho 1: /*
2: * Copyright (C) 2012 Reto Buerki
3: * Copyright (C) 2012 Adrian-Ken Rueegsegger
4: * HSR Hochschule fuer Technik Rapperswil
5: *
6: * This program is free software; you can redistribute it and/or modify it
7: * under the terms of the GNU General Public License as published by the
8: * Free Software Foundation; either version 2 of the License, or (at your
9: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
10: *
11: * This program is distributed in the hope that it will be useful, but
12: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14: * for more details.
15: */
16:
17: #include <tests/test_suite.h>
18:
19: #include <tkm/client.h>
20:
21: #include "tkm.h"
22: #include "tkm_nonceg.h"
23:
24: START_TEST(test_nonceg_creation)
25: {
26: tkm_nonceg_t *ng = NULL;
27:
28: ng = tkm_nonceg_create();
29: fail_if(ng == NULL, "Error creating tkm nonce generator");
30:
31: ng->nonce_gen.destroy(&ng->nonce_gen);
32: }
33: END_TEST
34:
35: START_TEST(test_nonceg_allocate_nonce)
36: {
37: tkm_nonceg_t *ng = tkm_nonceg_create();
38:
39: const size_t length = 256;
40: uint8_t zero[length];
41: memset(zero, 0, length);
42:
43: chunk_t nonce;
44: const bool got_nonce = ng->nonce_gen.allocate_nonce(&ng->nonce_gen,
45: length, &nonce);
46:
47: fail_unless(got_nonce, "Call to allocate_nonce failed");
48: fail_unless(nonce.len = length, "Allocated nonce length mismatch");
49: fail_if(memcmp(nonce.ptr, zero, length) == 0, "Unable to allocate nonce");
50:
51: tkm->idmgr->release_id(tkm->idmgr, TKM_CTX_NONCE, 1);
52: ike_nc_reset(1);
53:
54: chunk_free(&nonce);
55: ng->nonce_gen.destroy(&ng->nonce_gen);
56: }
57: END_TEST
58:
59: START_TEST(test_nonceg_get_nonce)
60: {
61: tkm_nonceg_t *ng = tkm_nonceg_create();
62:
63: const size_t length = 128;
64: uint8_t zero[length];
65: memset(zero, 0, length);
66:
67: uint8_t *buf = malloc(length + 1);
68: memset(buf, 0, length);
69: /* set end marker */
70: buf[length] = 255;
71:
72: const bool got_nonce = ng->nonce_gen.get_nonce(&ng->nonce_gen, length, buf);
73: fail_unless(got_nonce, "Call to get_nonce failed");
74: fail_if(memcmp(buf, zero, length) == 0, "Unable to get nonce");
75: fail_if(buf[length] != 255, "End marker not found");
76:
77: tkm->idmgr->release_id(tkm->idmgr, TKM_CTX_NONCE, 1);
78: ike_nc_reset(1);
79:
80: free(buf);
81: ng->nonce_gen.destroy(&ng->nonce_gen);
82: }
83: END_TEST
84:
85: Suite *make_nonceg_tests()
86: {
87: Suite *s;
88: TCase *tc;
89:
90: s = suite_create("nonce generator");
91:
92: tc = tcase_create("creation");
93: tcase_add_test(tc, test_nonceg_creation);
94: suite_add_tcase(s, tc);
95:
96: tc = tcase_create("allocate");
97: tcase_add_test(tc, test_nonceg_allocate_nonce);
98: suite_add_tcase(s, tc);
99:
100: tc = tcase_create("get");
101: tcase_add_test(tc, test_nonceg_get_nonce);
102: suite_add_tcase(s, tc);
103:
104: return s;
105: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>