Annotation of embedaddon/strongswan/src/charon-tkm/tests/nonceg_tests.c, revision 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>