Home | History | Annotate | Line # | Download | only in isc
      1  1.4  christos /*	$NetBSD: hmac_test.c,v 1.4 2025/07/17 19:01:47 christos Exp $	*/
      2  1.1  christos 
      3  1.1  christos /*
      4  1.1  christos  * Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      5  1.1  christos  *
      6  1.1  christos  * SPDX-License-Identifier: MPL-2.0
      7  1.1  christos  *
      8  1.1  christos  * This Source Code Form is subject to the terms of the Mozilla Public
      9  1.1  christos  * License, v. 2.0. If a copy of the MPL was not distributed with this
     10  1.1  christos  * file, you can obtain one at https://mozilla.org/MPL/2.0/.
     11  1.1  christos  *
     12  1.1  christos  * See the COPYRIGHT file distributed with this work for additional
     13  1.1  christos  * information regarding copyright ownership.
     14  1.1  christos  */
     15  1.1  christos 
     16  1.1  christos /* ! \file */
     17  1.1  christos 
     18  1.1  christos #include <inttypes.h>
     19  1.1  christos #include <sched.h> /* IWYU pragma: keep */
     20  1.1  christos #include <setjmp.h>
     21  1.1  christos #include <stdarg.h>
     22  1.1  christos #include <stddef.h>
     23  1.1  christos #include <stdlib.h>
     24  1.1  christos #include <string.h>
     25  1.1  christos 
     26  1.1  christos /*
     27  1.1  christos  * As a workaround, include an OpenSSL header file before including cmocka.h,
     28  1.1  christos  * because OpenSSL 3.1.0 uses __attribute__(malloc), conflicting with a
     29  1.1  christos  * redefined malloc in cmocka.h.
     30  1.1  christos  */
     31  1.1  christos #include <openssl/err.h>
     32  1.1  christos 
     33  1.1  christos #define UNIT_TESTING
     34  1.1  christos #include <cmocka.h>
     35  1.1  christos 
     36  1.1  christos #include <isc/buffer.h>
     37  1.3  christos #include <isc/fips.h>
     38  1.1  christos #include <isc/hex.h>
     39  1.1  christos #include <isc/hmac.h>
     40  1.1  christos #include <isc/region.h>
     41  1.1  christos #include <isc/result.h>
     42  1.1  christos 
     43  1.1  christos #include "hmac.c"
     44  1.1  christos 
     45  1.1  christos #include <tests/isc.h>
     46  1.1  christos 
     47  1.1  christos #define TEST_INPUT(x) (x), sizeof(x) - 1
     48  1.1  christos 
     49  1.1  christos static int
     50  1.1  christos _setup(void **state) {
     51  1.1  christos 	isc_hmac_t *hmac_st = isc_hmac_new();
     52  1.1  christos 	if (hmac_st == NULL) {
     53  1.3  christos 		return -1;
     54  1.1  christos 	}
     55  1.1  christos 	*state = hmac_st;
     56  1.3  christos 	return 0;
     57  1.1  christos }
     58  1.1  christos 
     59  1.1  christos static int
     60  1.1  christos _teardown(void **state) {
     61  1.1  christos 	if (*state == NULL) {
     62  1.3  christos 		return -1;
     63  1.1  christos 	}
     64  1.1  christos 	isc_hmac_free(*state);
     65  1.3  christos 	return 0;
     66  1.1  christos }
     67  1.1  christos 
     68  1.1  christos static int
     69  1.1  christos _reset(void **state) {
     70  1.1  christos 	if (*state == NULL) {
     71  1.3  christos 		return -1;
     72  1.1  christos 	}
     73  1.1  christos 	if (isc_hmac_reset(*state) != ISC_R_SUCCESS) {
     74  1.3  christos 		return -1;
     75  1.1  christos 	}
     76  1.3  christos 	return 0;
     77  1.1  christos }
     78  1.1  christos 
     79  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_new) {
     80  1.1  christos 	UNUSED(state);
     81  1.1  christos 
     82  1.1  christos 	isc_hmac_t *hmac_st = isc_hmac_new();
     83  1.1  christos 	assert_non_null(hmac_st);
     84  1.1  christos 	isc_hmac_free(hmac_st); /* Cleanup */
     85  1.1  christos }
     86  1.1  christos 
     87  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_free) {
     88  1.1  christos 	UNUSED(state);
     89  1.1  christos 
     90  1.1  christos 	isc_hmac_t *hmac_st = isc_hmac_new();
     91  1.1  christos 	assert_non_null(hmac_st);
     92  1.1  christos 	isc_hmac_free(hmac_st); /* Test freeing valid message digest context */
     93  1.1  christos 	isc_hmac_free(NULL);	/* Test freeing NULL argument */
     94  1.1  christos }
     95  1.1  christos 
     96  1.1  christos static void
     97  1.1  christos isc_hmac_test(isc_hmac_t *hmac_st, const void *key, size_t keylen,
     98  1.1  christos 	      const isc_md_type_t *type, const char *buf, size_t buflen,
     99  1.1  christos 	      const char *result, const size_t repeats) {
    100  1.1  christos 	isc_result_t res;
    101  1.1  christos 
    102  1.1  christos 	assert_non_null(hmac_st);
    103  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, key, keylen, type),
    104  1.1  christos 			 ISC_R_SUCCESS);
    105  1.1  christos 
    106  1.1  christos 	for (size_t i = 0; i < repeats; i++) {
    107  1.1  christos 		assert_int_equal(isc_hmac_update(hmac_st,
    108  1.1  christos 						 (const unsigned char *)buf,
    109  1.1  christos 						 buflen),
    110  1.1  christos 				 ISC_R_SUCCESS);
    111  1.1  christos 	}
    112  1.1  christos 
    113  1.1  christos 	unsigned char digest[ISC_MAX_MD_SIZE];
    114  1.1  christos 	unsigned int digestlen = sizeof(digest);
    115  1.1  christos 	assert_int_equal(isc_hmac_final(hmac_st, digest, &digestlen),
    116  1.1  christos 			 ISC_R_SUCCESS);
    117  1.1  christos 
    118  1.1  christos 	char hexdigest[ISC_MAX_MD_SIZE * 2 + 3];
    119  1.1  christos 	isc_region_t r = { .base = digest, .length = digestlen };
    120  1.1  christos 	isc_buffer_t b;
    121  1.1  christos 	isc_buffer_init(&b, hexdigest, sizeof(hexdigest));
    122  1.1  christos 
    123  1.1  christos 	res = isc_hex_totext(&r, 0, "", &b);
    124  1.1  christos 
    125  1.1  christos 	assert_return_code(res, ISC_R_SUCCESS);
    126  1.1  christos 
    127  1.4  christos 	assert_memory_equal(hexdigest, result, result ? strlen(result) : 0);
    128  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    129  1.1  christos }
    130  1.1  christos 
    131  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_init) {
    132  1.1  christos 	isc_hmac_t *hmac_st = *state;
    133  1.1  christos 	assert_non_null(hmac_st);
    134  1.1  christos 
    135  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, NULL),
    136  1.1  christos 			 ISC_R_NOTIMPLEMENTED);
    137  1.1  christos 
    138  1.3  christos 	if (!isc_fips_mode()) {
    139  1.3  christos 		expect_assert_failure(isc_hmac_init(NULL, "", 0, ISC_MD_MD5));
    140  1.3  christos 
    141  1.3  christos 		expect_assert_failure(
    142  1.3  christos 			isc_hmac_init(hmac_st, NULL, 0, ISC_MD_MD5));
    143  1.1  christos 
    144  1.3  christos 		assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_MD5),
    145  1.3  christos 				 ISC_R_SUCCESS);
    146  1.3  christos 		assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    147  1.3  christos 	}
    148  1.1  christos 
    149  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA1),
    150  1.1  christos 			 ISC_R_SUCCESS);
    151  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    152  1.1  christos 
    153  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA224),
    154  1.1  christos 			 ISC_R_SUCCESS);
    155  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    156  1.1  christos 
    157  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA256),
    158  1.1  christos 			 ISC_R_SUCCESS);
    159  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    160  1.1  christos 
    161  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA384),
    162  1.1  christos 			 ISC_R_SUCCESS);
    163  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    164  1.1  christos 
    165  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA512),
    166  1.1  christos 			 ISC_R_SUCCESS);
    167  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    168  1.1  christos }
    169  1.1  christos 
    170  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_update) {
    171  1.1  christos 	isc_hmac_t *hmac_st = *state;
    172  1.1  christos 	assert_non_null(hmac_st);
    173  1.1  christos 
    174  1.1  christos 	/* Uses message digest context initialized in isc_hmac_init_test() */
    175  1.1  christos 	expect_assert_failure(isc_hmac_update(NULL, NULL, 0));
    176  1.1  christos 
    177  1.1  christos 	assert_int_equal(isc_hmac_update(hmac_st, NULL, 100), ISC_R_SUCCESS);
    178  1.1  christos 	assert_int_equal(isc_hmac_update(hmac_st, (const unsigned char *)"", 0),
    179  1.1  christos 			 ISC_R_SUCCESS);
    180  1.1  christos }
    181  1.1  christos 
    182  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_reset) {
    183  1.1  christos 	isc_hmac_t *hmac_st = *state;
    184  1.1  christos #if 0
    185  1.3  christos 	unsigned char digest[ISC_MAX_MD_SIZE] ISC_ATTR_UNUSED;
    186  1.3  christos 	unsigned int digestlen ISC_ATTR_UNUSED;
    187  1.1  christos #endif /* if 0 */
    188  1.1  christos 
    189  1.1  christos 	assert_non_null(hmac_st);
    190  1.1  christos 
    191  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA512),
    192  1.1  christos 			 ISC_R_SUCCESS);
    193  1.1  christos 	assert_int_equal(
    194  1.1  christos 		isc_hmac_update(hmac_st, (const unsigned char *)"a", 1),
    195  1.1  christos 		ISC_R_SUCCESS);
    196  1.1  christos 	assert_int_equal(
    197  1.1  christos 		isc_hmac_update(hmac_st, (const unsigned char *)"b", 1),
    198  1.1  christos 		ISC_R_SUCCESS);
    199  1.1  christos 
    200  1.1  christos 	assert_int_equal(isc_hmac_reset(hmac_st), ISC_R_SUCCESS);
    201  1.1  christos 
    202  1.1  christos #if 0
    203  1.1  christos 	/*
    204  1.1  christos 	 * This test would require OpenSSL compiled with mock_assert(),
    205  1.1  christos 	 * so this could be only manually checked that the test will
    206  1.1  christos 	 * segfault when called by hand
    207  1.1  christos 	 */
    208  1.1  christos 	expect_assert_failure(isc_hmac_final(hmac_st, digest, &digestlen));
    209  1.1  christos #endif /* if 0 */
    210  1.1  christos }
    211  1.1  christos 
    212  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_final) {
    213  1.1  christos 	isc_hmac_t *hmac_st = *state;
    214  1.1  christos 	assert_non_null(hmac_st);
    215  1.1  christos 
    216  1.1  christos 	unsigned char digest[ISC_MAX_MD_SIZE];
    217  1.1  christos 	unsigned int digestlen = sizeof(digest);
    218  1.1  christos 
    219  1.1  christos 	/* Fail when message digest context is empty */
    220  1.1  christos 	expect_assert_failure(isc_hmac_final(NULL, digest, &digestlen));
    221  1.1  christos 	/* Fail when output buffer is empty */
    222  1.1  christos 	expect_assert_failure(isc_hmac_final(hmac_st, NULL, &digestlen));
    223  1.1  christos 
    224  1.1  christos 	assert_int_equal(isc_hmac_init(hmac_st, "", 0, ISC_MD_SHA512),
    225  1.1  christos 			 ISC_R_SUCCESS);
    226  1.1  christos 	/* Fail when the digest length pointer is empty */
    227  1.1  christos 	expect_assert_failure(isc_hmac_final(hmac_st, digest, NULL));
    228  1.1  christos }
    229  1.1  christos 
    230  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_md5) {
    231  1.1  christos 	isc_hmac_t *hmac_st = *state;
    232  1.1  christos 
    233  1.3  christos 	if (isc_fips_mode()) {
    234  1.3  christos 		skip();
    235  1.3  christos 		return;
    236  1.3  christos 	}
    237  1.3  christos 
    238  1.1  christos 	/* Test 0 */
    239  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT(""), ISC_MD_MD5, TEST_INPUT(""),
    240  1.1  christos 		      "74E6F7298A9C2D168935F58C001BAD88", 1);
    241  1.1  christos 
    242  1.1  christos 	/* Test 1 */
    243  1.1  christos 	isc_hmac_test(hmac_st,
    244  1.1  christos 		      TEST_INPUT("\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    245  1.1  christos 				 "\x0b\x0b\x0b\x0b\x0b\x0b"),
    246  1.1  christos 		      ISC_MD_MD5,
    247  1.1  christos 		      TEST_INPUT("\x48\x69\x20\x54\x68\x65\x72\x65"),
    248  1.1  christos 		      "9294727A3638BB1C13F48EF8158BFC9D", 1);
    249  1.1  christos 
    250  1.1  christos 	/* Test 2 */
    251  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT("Jefe"), ISC_MD_MD5,
    252  1.1  christos 		      TEST_INPUT("\x77\x68\x61\x74\x20\x64\x6f\x20\x79"
    253  1.1  christos 				 "\x61\x20\x77\x61\x6e\x74\x20\x66\x6f"
    254  1.1  christos 				 "\x72\x20\x6e\x6f\x74\x68\x69\x6e\x67\x3f"),
    255  1.1  christos 		      "750C783E6AB0B503EAA86E310A5DB738", 1);
    256  1.1  christos 
    257  1.1  christos 	/* Test 3 */
    258  1.1  christos 	isc_hmac_test(hmac_st,
    259  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    260  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa"),
    261  1.1  christos 		      ISC_MD_MD5,
    262  1.1  christos 		      TEST_INPUT("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    263  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    264  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    265  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    266  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"),
    267  1.1  christos 		      "56BE34521D144C88DBB8C733F0E8B3F6", 1);
    268  1.1  christos 	/* Test 4 */
    269  1.1  christos 	isc_hmac_test(hmac_st,
    270  1.1  christos 		      TEST_INPUT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
    271  1.1  christos 				 "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    272  1.1  christos 				 "\x15\x16\x17\x18\x19"),
    273  1.1  christos 		      ISC_MD_MD5,
    274  1.1  christos 		      TEST_INPUT("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    275  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    276  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    277  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    278  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"),
    279  1.1  christos 		      "697EAF0ACA3A3AEA3A75164746FFAA79", 1);
    280  1.1  christos #if 0
    281  1.1  christos 	/* Test 5 -- unimplemented optional functionality */
    282  1.1  christos 	isc_hmac_test(hmac_st,
    283  1.1  christos 		      TEST_INPUT("\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
    284  1.1  christos 				 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"),
    285  1.1  christos 		      ISC_MD_MD5,
    286  1.1  christos 		      TEST_INPUT("Test With Truncation"),
    287  1.1  christos 		      "4C1A03424B55E07FE7F27BE1",
    288  1.1  christos 		      1);
    289  1.1  christos 	/* Test 6 -- unimplemented optional functionality */
    290  1.1  christos 	isc_hmac_test(hmac_st,
    291  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    292  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    293  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    294  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    295  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    296  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    297  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    298  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    299  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    300  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    301  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    302  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    303  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    304  1.1  christos 		      ISC_MD_MD5,
    305  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key - "
    306  1.1  christos 				 "Hash Key First"),
    307  1.1  christos 		      "AA4AE5E15272D00E95705637CE8A3B55ED402112",
    308  1.1  christos 		      1);
    309  1.1  christos 	/* Test 7 -- unimplemented optional functionality */
    310  1.1  christos 	isc_hmac_test(hmac_st,
    311  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    312  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    313  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    314  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    315  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    316  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    317  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    318  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    319  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    320  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    321  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    322  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    323  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    324  1.1  christos 		      ISC_MD_MD5,
    325  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key and "
    326  1.1  christos 				 "Larger Than One Block-Size Data"),
    327  1.1  christos 		      "E8E99D0F45237D786D6BBAA7965C7808BBFF1A91",
    328  1.1  christos 		      1);
    329  1.1  christos #endif /* if 0 */
    330  1.1  christos }
    331  1.1  christos 
    332  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_sha1) {
    333  1.1  christos 	isc_hmac_t *hmac_st = *state;
    334  1.1  christos 
    335  1.1  christos 	/* Test 0 */
    336  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT(""), ISC_MD_SHA1, TEST_INPUT(""),
    337  1.1  christos 		      "FBDB1D1B18AA6C08324B7D64B71FB76370690E1D", 1);
    338  1.1  christos 
    339  1.1  christos 	/* Test 1 */
    340  1.1  christos 	isc_hmac_test(hmac_st,
    341  1.1  christos 		      TEST_INPUT("\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    342  1.1  christos 				 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"),
    343  1.1  christos 		      ISC_MD_SHA1,
    344  1.1  christos 		      TEST_INPUT("\x48\x69\x20\x54\x68\x65\x72\x65"),
    345  1.1  christos 		      "B617318655057264E28BC0B6FB378C8EF146BE00", 1);
    346  1.1  christos 	/* Test 2 */
    347  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT("Jefe"), ISC_MD_SHA1,
    348  1.1  christos 		      TEST_INPUT("\x77\x68\x61\x74\x20\x64\x6f\x20\x79\x61"
    349  1.1  christos 				 "\x20\x77\x61\x6e\x74\x20\x66\x6f\x72\x20"
    350  1.1  christos 				 "\x6e\x6f\x74\x68\x69\x6e\x67\x3f"),
    351  1.1  christos 		      "EFFCDF6AE5EB2FA2D27416D5F184DF9C259A7C79", 1);
    352  1.1  christos 	/* Test 3 */
    353  1.1  christos 	isc_hmac_test(hmac_st,
    354  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    355  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    356  1.1  christos 		      ISC_MD_SHA1,
    357  1.1  christos 		      TEST_INPUT("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    358  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    359  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    360  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    361  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"),
    362  1.1  christos 		      "125D7342B9AC11CD91A39AF48AA17B4F63F175D3", 1);
    363  1.1  christos 	/* Test 4 */
    364  1.1  christos 	isc_hmac_test(hmac_st,
    365  1.1  christos 		      TEST_INPUT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
    366  1.1  christos 				 "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    367  1.1  christos 				 "\x15\x16\x17\x18\x19"),
    368  1.1  christos 		      ISC_MD_SHA1,
    369  1.1  christos 		      TEST_INPUT("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    370  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    371  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    372  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    373  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"),
    374  1.1  christos 		      "4C9007F4026250C6BC8414F9BF50C86C2D7235DA", 1);
    375  1.1  christos #if 0
    376  1.1  christos 	/* Test 5 */
    377  1.1  christos 	isc_hmac_test(hmac_st,
    378  1.1  christos 		      TEST_INPUT("\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
    379  1.1  christos 				 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"),
    380  1.1  christos 		      ISC_MD_SHA1,
    381  1.1  christos 		      TEST_INPUT("Test With Truncation"),
    382  1.1  christos 		      "4C1A03424B55E07FE7F27BE1",
    383  1.1  christos 		      1);
    384  1.1  christos #endif /* if 0 */
    385  1.1  christos 	/* Test 6 */
    386  1.1  christos 	isc_hmac_test(hmac_st,
    387  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    388  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    389  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    390  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    391  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    392  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    393  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    394  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    395  1.1  christos 		      ISC_MD_SHA1,
    396  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key - "
    397  1.1  christos 				 "Hash Key First"),
    398  1.1  christos 		      "AA4AE5E15272D00E95705637CE8A3B55ED402112", 1);
    399  1.1  christos 	/* Test 7 */
    400  1.1  christos 	isc_hmac_test(hmac_st,
    401  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    402  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    403  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    404  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    405  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    406  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    407  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    408  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    409  1.1  christos 		      ISC_MD_SHA1,
    410  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key and "
    411  1.1  christos 				 "Larger Than One Block-Size Data"),
    412  1.1  christos 		      "E8E99D0F45237D786D6BBAA7965C7808BBFF1A91", 1);
    413  1.1  christos }
    414  1.1  christos 
    415  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_sha224) {
    416  1.1  christos 	isc_hmac_t *hmac_st = *state;
    417  1.1  christos 
    418  1.1  christos 	/* Test 0 */
    419  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT(""), ISC_MD_SHA224, TEST_INPUT(""),
    420  1.1  christos 		      "5CE14F72894662213E2748D2A6BA234B74263910CEDDE2F5"
    421  1.1  christos 		      "A9271524",
    422  1.1  christos 		      1);
    423  1.1  christos 
    424  1.1  christos 	/* Test 1 */
    425  1.1  christos 	isc_hmac_test(hmac_st,
    426  1.1  christos 		      TEST_INPUT("\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    427  1.1  christos 				 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"),
    428  1.1  christos 		      ISC_MD_SHA224,
    429  1.1  christos 		      TEST_INPUT("\x48\x69\x20\x54\x68\x65\x72\x65"),
    430  1.1  christos 		      "896FB1128ABBDF196832107CD49DF33F47B4B1169912BA"
    431  1.1  christos 		      "4F53684B22",
    432  1.1  christos 		      1);
    433  1.1  christos 	/* Test 2 */
    434  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT("Jefe"), ISC_MD_SHA224,
    435  1.1  christos 		      TEST_INPUT("\x77\x68\x61\x74\x20\x64\x6f\x20\x79\x61"
    436  1.1  christos 				 "\x20\x77\x61\x6e\x74\x20\x66\x6f\x72\x20"
    437  1.1  christos 				 "\x6e\x6f\x74\x68\x69\x6e\x67\x3f"),
    438  1.1  christos 		      "A30E01098BC6DBBF45690F3A7E9E6D0F8BBEA2A39E61480"
    439  1.1  christos 		      "08FD05E44",
    440  1.1  christos 		      1);
    441  1.1  christos 	/* Test 3 */
    442  1.1  christos 	isc_hmac_test(hmac_st,
    443  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    444  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    445  1.1  christos 		      ISC_MD_SHA224,
    446  1.1  christos 		      TEST_INPUT("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    447  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    448  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    449  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    450  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"),
    451  1.1  christos 		      "7FB3CB3588C6C1F6FFA9694D7D6AD2649365B0C1F65D69"
    452  1.1  christos 		      "D1EC8333EA",
    453  1.1  christos 		      1);
    454  1.1  christos 	/* Test 4 */
    455  1.1  christos 	isc_hmac_test(hmac_st,
    456  1.1  christos 		      TEST_INPUT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
    457  1.1  christos 				 "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    458  1.1  christos 				 "\x15\x16\x17\x18\x19"),
    459  1.1  christos 		      ISC_MD_SHA224,
    460  1.1  christos 		      TEST_INPUT("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    461  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    462  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    463  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    464  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"),
    465  1.1  christos 		      "6C11506874013CAC6A2ABC1BB382627CEC6A90D86EFC01"
    466  1.1  christos 		      "2DE7AFEC5A",
    467  1.1  christos 		      1);
    468  1.1  christos #if 0
    469  1.1  christos 	/* Test 5 -- unimplemented optional functionality */
    470  1.1  christos 	isc_hmac_test(hmac_st,
    471  1.1  christos 		      TEST_INPUT("\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
    472  1.1  christos 				 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"),
    473  1.1  christos 		      ISC_MD_SHA224,
    474  1.1  christos 		      TEST_INPUT("Test With Truncation"),
    475  1.1  christos 		      "4C1A03424B55E07FE7F27BE1",
    476  1.1  christos 		      1);
    477  1.1  christos #endif /* if 0 */
    478  1.1  christos 	/* Test 6 */
    479  1.1  christos 	isc_hmac_test(hmac_st,
    480  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    481  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    482  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    483  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    484  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    485  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    486  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    487  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    488  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    489  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    490  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    491  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    492  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    493  1.1  christos 				 "\xaa"),
    494  1.1  christos 		      ISC_MD_SHA224,
    495  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key - "
    496  1.1  christos 				 "Hash Key First"),
    497  1.1  christos 		      "95E9A0DB962095ADAEBE9B2D6F0DBCE2D499F112F2D2B7"
    498  1.1  christos 		      "273FA6870E",
    499  1.1  christos 		      1);
    500  1.1  christos 	/* Test 7 */
    501  1.1  christos 	isc_hmac_test(hmac_st,
    502  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    503  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    504  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    505  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    506  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    507  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    508  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    509  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    510  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    511  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    512  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    513  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    514  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    515  1.1  christos 				 "\xaa"),
    516  1.1  christos 		      ISC_MD_SHA224,
    517  1.1  christos 		      TEST_INPUT("\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20"
    518  1.1  christos 				 "\x74\x65\x73\x74\x20\x75\x73\x69\x6e\x67"
    519  1.1  christos 				 "\x20\x61\x20\x6c\x61\x72\x67\x65\x72\x20"
    520  1.1  christos 				 "\x74\x68\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
    521  1.1  christos 				 "\x2d\x73\x69\x7a\x65\x20\x6b\x65\x79\x20"
    522  1.1  christos 				 "\x61\x6e\x64\x20\x61\x20\x6c\x61\x72\x67"
    523  1.1  christos 				 "\x65\x72\x20\x74\x68\x61\x6e\x20\x62\x6c"
    524  1.1  christos 				 "\x6f\x63\x6b\x2d\x73\x69\x7a\x65\x20\x64"
    525  1.1  christos 				 "\x61\x74\x61\x2e\x20\x54\x68\x65\x20\x6b"
    526  1.1  christos 				 "\x65\x79\x20\x6e\x65\x65\x64\x73\x20\x74"
    527  1.1  christos 				 "\x6f\x20\x62\x65\x20\x68\x61\x73\x68\x65"
    528  1.1  christos 				 "\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x62"
    529  1.1  christos 				 "\x65\x69\x6e\x67\x20\x75\x73\x65\x64\x20"
    530  1.1  christos 				 "\x62\x79\x20\x74\x68\x65\x20\x48\x4d\x41"
    531  1.1  christos 				 "\x43\x20\x61\x6c\x67\x6f\x72\x69\x74\x68"
    532  1.1  christos 				 "\x6d\x2e"),
    533  1.1  christos 		      "3A854166AC5D9F023F54D517D0B39DBD946770DB9C2B95"
    534  1.1  christos 		      "C9F6F565D1",
    535  1.1  christos 		      1);
    536  1.1  christos }
    537  1.1  christos 
    538  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_sha256) {
    539  1.1  christos 	isc_hmac_t *hmac_st = *state;
    540  1.1  christos 
    541  1.1  christos 	/* Test 0 */
    542  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT(""), ISC_MD_SHA256, TEST_INPUT(""),
    543  1.1  christos 		      "B613679A0814D9EC772F95D778C35FC5FF1697C493715653"
    544  1.1  christos 		      "C6C712144292C5AD",
    545  1.1  christos 		      1);
    546  1.1  christos 
    547  1.1  christos 	/* Test 1 */
    548  1.1  christos 	isc_hmac_test(hmac_st,
    549  1.1  christos 		      TEST_INPUT("\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    550  1.1  christos 				 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"),
    551  1.1  christos 		      ISC_MD_SHA256,
    552  1.1  christos 		      TEST_INPUT("\x48\x69\x20\x54\x68\x65\x72\x65"),
    553  1.1  christos 		      "B0344C61D8DB38535CA8AFCEAF0BF12B881DC200C9833D"
    554  1.1  christos 		      "A726E9376C2E32CFF7",
    555  1.1  christos 		      1);
    556  1.1  christos 	/* Test 2 */
    557  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT("Jefe"), ISC_MD_SHA256,
    558  1.1  christos 		      TEST_INPUT("\x77\x68\x61\x74\x20\x64\x6f\x20\x79\x61"
    559  1.1  christos 				 "\x20\x77\x61\x6e\x74\x20\x66\x6f\x72\x20"
    560  1.1  christos 				 "\x6e\x6f\x74\x68\x69\x6e\x67\x3f"),
    561  1.1  christos 		      "5BDCC146BF60754E6A042426089575C75A003F089D2739"
    562  1.1  christos 		      "839DEC58B964EC3843",
    563  1.1  christos 		      1);
    564  1.1  christos 	/* Test 3 */
    565  1.1  christos 	isc_hmac_test(hmac_st,
    566  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    567  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    568  1.1  christos 		      ISC_MD_SHA256,
    569  1.1  christos 		      TEST_INPUT("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    570  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    571  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    572  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    573  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"),
    574  1.1  christos 		      "773EA91E36800E46854DB8EBD09181A72959098B3EF8C1"
    575  1.1  christos 		      "22D9635514CED565FE",
    576  1.1  christos 		      1);
    577  1.1  christos 	/* Test 4 */
    578  1.1  christos 	isc_hmac_test(hmac_st,
    579  1.1  christos 		      TEST_INPUT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
    580  1.1  christos 				 "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    581  1.1  christos 				 "\x15\x16\x17\x18\x19"),
    582  1.1  christos 		      ISC_MD_SHA256,
    583  1.1  christos 		      TEST_INPUT("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    584  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    585  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    586  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    587  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"),
    588  1.1  christos 		      "82558A389A443C0EA4CC819899F2083A85F0FAA3E578F8"
    589  1.1  christos 		      "077A2E3FF46729665B",
    590  1.1  christos 		      1);
    591  1.1  christos #if 0
    592  1.1  christos 	/* Test 5 -- unimplemented optional functionality */
    593  1.1  christos 	isc_hmac_test(hmac_st,
    594  1.1  christos 		      TEST_INPUT("\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
    595  1.1  christos 				 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"),
    596  1.1  christos 		      ISC_MD_SHA256,
    597  1.1  christos 		      TEST_INPUT("Test With Truncation"),
    598  1.1  christos 		      "4C1A03424B55E07FE7F27BE1",
    599  1.1  christos 		      1);
    600  1.1  christos #endif /* if 0 */
    601  1.1  christos 	/* Test 6 */
    602  1.1  christos 	isc_hmac_test(hmac_st,
    603  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    604  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    605  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    606  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    607  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    608  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    609  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    610  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    611  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    612  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    613  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    614  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    615  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    616  1.1  christos 				 "\xaa"),
    617  1.1  christos 		      ISC_MD_SHA256,
    618  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key - "
    619  1.1  christos 				 "Hash Key First"),
    620  1.1  christos 		      "60E431591EE0B67F0D8A26AACBF5B77F8E0BC6213728C5"
    621  1.1  christos 		      "140546040F0EE37F54",
    622  1.1  christos 		      1);
    623  1.1  christos 	/* Test 7 */
    624  1.1  christos 	isc_hmac_test(hmac_st,
    625  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    626  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    627  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    628  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    629  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    630  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    631  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    632  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    633  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    634  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    635  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    636  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    637  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    638  1.1  christos 				 "\xaa"),
    639  1.1  christos 		      ISC_MD_SHA256,
    640  1.1  christos 		      TEST_INPUT("\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20"
    641  1.1  christos 				 "\x74\x65\x73\x74\x20\x75\x73\x69\x6e\x67"
    642  1.1  christos 				 "\x20\x61\x20\x6c\x61\x72\x67\x65\x72\x20"
    643  1.1  christos 				 "\x74\x68\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
    644  1.1  christos 				 "\x2d\x73\x69\x7a\x65\x20\x6b\x65\x79\x20"
    645  1.1  christos 				 "\x61\x6e\x64\x20\x61\x20\x6c\x61\x72\x67"
    646  1.1  christos 				 "\x65\x72\x20\x74\x68\x61\x6e\x20\x62\x6c"
    647  1.1  christos 				 "\x6f\x63\x6b\x2d\x73\x69\x7a\x65\x20\x64"
    648  1.1  christos 				 "\x61\x74\x61\x2e\x20\x54\x68\x65\x20\x6b"
    649  1.1  christos 				 "\x65\x79\x20\x6e\x65\x65\x64\x73\x20\x74"
    650  1.1  christos 				 "\x6f\x20\x62\x65\x20\x68\x61\x73\x68\x65"
    651  1.1  christos 				 "\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x62"
    652  1.1  christos 				 "\x65\x69\x6e\x67\x20\x75\x73\x65\x64\x20"
    653  1.1  christos 				 "\x62\x79\x20\x74\x68\x65\x20\x48\x4d\x41"
    654  1.1  christos 				 "\x43\x20\x61\x6c\x67\x6f\x72\x69\x74\x68"
    655  1.1  christos 				 "\x6d\x2e"),
    656  1.1  christos 		      "9B09FFA71B942FCB27635FBCD5B0E944BFDC63644F0713"
    657  1.1  christos 		      "938A7F51535C3A35E2",
    658  1.1  christos 		      1);
    659  1.1  christos }
    660  1.1  christos 
    661  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_sha384) {
    662  1.1  christos 	isc_hmac_t *hmac_st = *state;
    663  1.1  christos 
    664  1.1  christos 	/* Test 0 */
    665  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT(""), ISC_MD_SHA384, TEST_INPUT(""),
    666  1.1  christos 		      "6C1F2EE938FAD2E24BD91298474382CA218C75DB3D83E114"
    667  1.1  christos 		      "B3D4367776D14D3551289E75E8209CD4B792302840234ADC",
    668  1.1  christos 		      1);
    669  1.1  christos 
    670  1.1  christos 	/* Test 1 */
    671  1.1  christos 	isc_hmac_test(hmac_st,
    672  1.1  christos 		      TEST_INPUT("\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    673  1.1  christos 				 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"),
    674  1.1  christos 		      ISC_MD_SHA384,
    675  1.1  christos 		      TEST_INPUT("\x48\x69\x20\x54\x68\x65\x72\x65"),
    676  1.1  christos 		      "AFD03944D84895626B0825F4AB46907F15F9DADBE4101E"
    677  1.1  christos 		      "C682AA034C7CEBC59CFAEA9EA9076EDE7F4AF152"
    678  1.1  christos 		      "E8B2FA9CB6",
    679  1.1  christos 		      1);
    680  1.1  christos 	/* Test 2 */
    681  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT("Jefe"), ISC_MD_SHA384,
    682  1.1  christos 		      TEST_INPUT("\x77\x68\x61\x74\x20\x64\x6f\x20\x79\x61"
    683  1.1  christos 				 "\x20\x77\x61\x6e\x74\x20\x66\x6f\x72\x20"
    684  1.1  christos 				 "\x6e\x6f\x74\x68\x69\x6e\x67\x3f"),
    685  1.1  christos 		      "AF45D2E376484031617F78D2B58A6B1B9C7EF464F5A01B"
    686  1.1  christos 		      "47E42EC3736322445E8E2240CA5E69E2C78B3239"
    687  1.1  christos 		      "ECFAB21649",
    688  1.1  christos 		      1);
    689  1.1  christos 	/* Test 3 */
    690  1.1  christos 	isc_hmac_test(hmac_st,
    691  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    692  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    693  1.1  christos 		      ISC_MD_SHA384,
    694  1.1  christos 		      TEST_INPUT("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    695  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    696  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    697  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    698  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"),
    699  1.1  christos 		      "88062608D3E6AD8A0AA2ACE014C8A86F0AA635D947AC9F"
    700  1.1  christos 		      "EBE83EF4E55966144B2A5AB39DC13814B94E3AB6"
    701  1.1  christos 		      "E101A34F27",
    702  1.1  christos 		      1);
    703  1.1  christos 	/* Test 4 */
    704  1.1  christos 	isc_hmac_test(hmac_st,
    705  1.1  christos 		      TEST_INPUT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
    706  1.1  christos 				 "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    707  1.1  christos 				 "\x15\x16\x17\x18\x19"),
    708  1.1  christos 		      ISC_MD_SHA384,
    709  1.1  christos 		      TEST_INPUT("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    710  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    711  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    712  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    713  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"),
    714  1.1  christos 		      "3E8A69B7783C25851933AB6290AF6CA77A998148085000"
    715  1.1  christos 		      "9CC5577C6E1F573B4E6801DD23C4A7D679CCF8A3"
    716  1.1  christos 		      "86C674CFFB",
    717  1.1  christos 		      1);
    718  1.1  christos #if 0
    719  1.1  christos 	/* Test 5 -- unimplemented optional functionality */
    720  1.1  christos 	isc_hmac_test(hmac_st,
    721  1.1  christos 		      TEST_INPUT("\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
    722  1.1  christos 				 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"),
    723  1.1  christos 		      ISC_MD_SHA384,
    724  1.1  christos 		      TEST_INPUT("Test With Truncation"),
    725  1.1  christos 		      "4C1A03424B55E07FE7F27BE1",
    726  1.1  christos 		      1);
    727  1.1  christos #endif /* if 0 */
    728  1.1  christos 	/* Test 6 */
    729  1.1  christos 	isc_hmac_test(hmac_st,
    730  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    731  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    732  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    733  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    734  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    735  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    736  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    737  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    738  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    739  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    740  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    741  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    742  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    743  1.1  christos 				 "\xaa"),
    744  1.1  christos 		      ISC_MD_SHA384,
    745  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key - "
    746  1.1  christos 				 "Hash Key First"),
    747  1.1  christos 		      "4ECE084485813E9088D2C63A041BC5B44F9EF1012A2B58"
    748  1.1  christos 		      "8F3CD11F05033AC4C60C2EF6AB4030FE8296248D"
    749  1.1  christos 		      "F163F44952",
    750  1.1  christos 		      1);
    751  1.1  christos 	/* Test 7 */
    752  1.1  christos 	isc_hmac_test(hmac_st,
    753  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    754  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    755  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    756  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    757  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    758  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    759  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    760  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    761  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    762  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    763  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    764  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    765  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    766  1.1  christos 				 "\xaa"),
    767  1.1  christos 		      ISC_MD_SHA384,
    768  1.1  christos 		      TEST_INPUT("\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20"
    769  1.1  christos 				 "\x74\x65\x73\x74\x20\x75\x73\x69\x6e\x67"
    770  1.1  christos 				 "\x20\x61\x20\x6c\x61\x72\x67\x65\x72\x20"
    771  1.1  christos 				 "\x74\x68\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
    772  1.1  christos 				 "\x2d\x73\x69\x7a\x65\x20\x6b\x65\x79\x20"
    773  1.1  christos 				 "\x61\x6e\x64\x20\x61\x20\x6c\x61\x72\x67"
    774  1.1  christos 				 "\x65\x72\x20\x74\x68\x61\x6e\x20\x62\x6c"
    775  1.1  christos 				 "\x6f\x63\x6b\x2d\x73\x69\x7a\x65\x20\x64"
    776  1.1  christos 				 "\x61\x74\x61\x2e\x20\x54\x68\x65\x20\x6b"
    777  1.1  christos 				 "\x65\x79\x20\x6e\x65\x65\x64\x73\x20\x74"
    778  1.1  christos 				 "\x6f\x20\x62\x65\x20\x68\x61\x73\x68\x65"
    779  1.1  christos 				 "\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x62"
    780  1.1  christos 				 "\x65\x69\x6e\x67\x20\x75\x73\x65\x64\x20"
    781  1.1  christos 				 "\x62\x79\x20\x74\x68\x65\x20\x48\x4d\x41"
    782  1.1  christos 				 "\x43\x20\x61\x6c\x67\x6f\x72\x69\x74\x68"
    783  1.1  christos 				 "\x6d\x2e"),
    784  1.1  christos 		      "6617178E941F020D351E2F254E8FD32C602420FEB0B8FB"
    785  1.1  christos 		      "9ADCCEBB82461E99C5A678CC31E799176D3860E6"
    786  1.1  christos 		      "110C46523E",
    787  1.1  christos 		      1);
    788  1.1  christos }
    789  1.1  christos 
    790  1.1  christos ISC_RUN_TEST_IMPL(isc_hmac_sha512) {
    791  1.1  christos 	isc_hmac_t *hmac_st = *state;
    792  1.1  christos 
    793  1.1  christos 	/* Test 0 */
    794  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT(""), ISC_MD_SHA512, TEST_INPUT(""),
    795  1.1  christos 		      "B936CEE86C9F87AA5D3C6F2E84CB5A4239A5FE50480A6EC6"
    796  1.1  christos 		      "6B70AB5B1F4AC6730C6C515421B327EC1D69402E53DFB49A"
    797  1.1  christos 		      "D7381EB067B338FD7B0CB22247225D47",
    798  1.1  christos 		      1);
    799  1.1  christos 
    800  1.1  christos 	/* Test 1 */
    801  1.1  christos 	isc_hmac_test(hmac_st,
    802  1.1  christos 		      TEST_INPUT("\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"
    803  1.1  christos 				 "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b"),
    804  1.1  christos 		      ISC_MD_SHA512,
    805  1.1  christos 		      TEST_INPUT("\x48\x69\x20\x54\x68\x65\x72\x65"),
    806  1.1  christos 		      "87AA7CDEA5EF619D4FF0B4241A1D6CB02379F4E2CE4EC2"
    807  1.1  christos 		      "787AD0B30545E17CDEDAA833B7D6B8A702038B27"
    808  1.1  christos 		      "4EAEA3F4E4BE9D914EEB61F1702E696C203A126854",
    809  1.1  christos 		      1);
    810  1.1  christos 	/* Test 2 */
    811  1.1  christos 	isc_hmac_test(hmac_st, TEST_INPUT("Jefe"), ISC_MD_SHA512,
    812  1.1  christos 		      TEST_INPUT("\x77\x68\x61\x74\x20\x64\x6f\x20\x79\x61"
    813  1.1  christos 				 "\x20\x77\x61\x6e\x74\x20\x66\x6f\x72\x20"
    814  1.1  christos 				 "\x6e\x6f\x74\x68\x69\x6e\x67\x3f"),
    815  1.1  christos 		      "164B7A7BFCF819E2E395FBE73B56E0A387BD64222E831F"
    816  1.1  christos 		      "D610270CD7EA2505549758BF75C05A994A6D034F"
    817  1.1  christos 		      "65F8F0E6FDCAEAB1A34D4A6B4B636E070A38BCE737",
    818  1.1  christos 		      1);
    819  1.1  christos 	/* Test 3 */
    820  1.1  christos 	isc_hmac_test(hmac_st,
    821  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    822  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"),
    823  1.1  christos 		      ISC_MD_SHA512,
    824  1.1  christos 		      TEST_INPUT("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    825  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    826  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    827  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"
    828  1.1  christos 				 "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD"),
    829  1.1  christos 		      "FA73B0089D56A284EFB0F0756C890BE9B1B5DBDD8EE81A"
    830  1.1  christos 		      "3655F83E33B2279D39BF3E848279A722C806B485"
    831  1.1  christos 		      "A47E67C807B946A337BEE8942674278859E13292FB",
    832  1.1  christos 		      1);
    833  1.1  christos 	/* Test 4 */
    834  1.1  christos 	isc_hmac_test(hmac_st,
    835  1.1  christos 		      TEST_INPUT("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a"
    836  1.1  christos 				 "\x0b\x0c\x0d\x0e\x0f\x10\x11\x12\x13\x14"
    837  1.1  christos 				 "\x15\x16\x17\x18\x19"),
    838  1.1  christos 		      ISC_MD_SHA512,
    839  1.1  christos 		      TEST_INPUT("\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    840  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    841  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    842  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"
    843  1.1  christos 				 "\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd\xcd"),
    844  1.1  christos 		      "B0BA465637458C6990E5A8C5F61D4AF7E576D97FF94B87"
    845  1.1  christos 		      "2DE76F8050361EE3DBA91CA5C11AA25EB4D67927"
    846  1.1  christos 		      "5CC5788063A5F19741120C4F2DE2ADEBEB10A298DD",
    847  1.1  christos 		      1);
    848  1.1  christos #if 0
    849  1.1  christos 	/* Test 5 -- unimplemented optional functionality */
    850  1.1  christos 	isc_hmac_test(hmac_st,
    851  1.1  christos 		      TEST_INPUT("\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"
    852  1.1  christos 				 "\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c\x0c"),
    853  1.1  christos 		      ISC_MD_SHA512,
    854  1.1  christos 		      TEST_INPUT("Test With Truncation"),
    855  1.1  christos 		      "4C1A03424B55E07FE7F27BE1",
    856  1.1  christos 		      1);
    857  1.1  christos #endif /* if 0 */
    858  1.1  christos 	/* Test 6 */
    859  1.1  christos 	isc_hmac_test(hmac_st,
    860  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    861  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    862  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    863  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    864  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    865  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    866  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    867  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    868  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    869  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    870  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    871  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    872  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    873  1.1  christos 				 "\xaa"),
    874  1.1  christos 		      ISC_MD_SHA512,
    875  1.1  christos 		      TEST_INPUT("Test Using Larger Than Block-Size Key - "
    876  1.1  christos 				 "Hash Key First"),
    877  1.1  christos 		      "80B24263C7C1A3EBB71493C1DD7BE8B49B46D1F41B4AEE"
    878  1.1  christos 		      "C1121B013783F8F3526B56D037E05F2598BD0FD2"
    879  1.1  christos 		      "215D6A1E5295E64F73F63F0AEC8B915A985D786598",
    880  1.1  christos 		      1);
    881  1.1  christos 	/* Test 7 */
    882  1.1  christos 	isc_hmac_test(hmac_st,
    883  1.1  christos 		      TEST_INPUT("\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    884  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    885  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    886  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    887  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    888  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    889  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    890  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    891  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    892  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    893  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    894  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    895  1.1  christos 				 "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa"
    896  1.1  christos 				 "\xaa"),
    897  1.1  christos 		      ISC_MD_SHA512,
    898  1.1  christos 		      TEST_INPUT("\x54\x68\x69\x73\x20\x69\x73\x20\x61\x20"
    899  1.1  christos 				 "\x74\x65\x73\x74\x20\x75\x73\x69\x6e\x67"
    900  1.1  christos 				 "\x20\x61\x20\x6c\x61\x72\x67\x65\x72\x20"
    901  1.1  christos 				 "\x74\x68\x61\x6e\x20\x62\x6c\x6f\x63\x6b"
    902  1.1  christos 				 "\x2d\x73\x69\x7a\x65\x20\x6b\x65\x79\x20"
    903  1.1  christos 				 "\x61\x6e\x64\x20\x61\x20\x6c\x61\x72\x67"
    904  1.1  christos 				 "\x65\x72\x20\x74\x68\x61\x6e\x20\x62\x6c"
    905  1.1  christos 				 "\x6f\x63\x6b\x2d\x73\x69\x7a\x65\x20\x64"
    906  1.1  christos 				 "\x61\x74\x61\x2e\x20\x54\x68\x65\x20\x6b"
    907  1.1  christos 				 "\x65\x79\x20\x6e\x65\x65\x64\x73\x20\x74"
    908  1.1  christos 				 "\x6f\x20\x62\x65\x20\x68\x61\x73\x68\x65"
    909  1.1  christos 				 "\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x62"
    910  1.1  christos 				 "\x65\x69\x6e\x67\x20\x75\x73\x65\x64\x20"
    911  1.1  christos 				 "\x62\x79\x20\x74\x68\x65\x20\x48\x4d\x41"
    912  1.1  christos 				 "\x43\x20\x61\x6c\x67\x6f\x72\x69\x74\x68"
    913  1.1  christos 				 "\x6d\x2e"),
    914  1.1  christos 		      "E37B6A775DC87DBAA4DFA9F96E5E3FFDDEBD71F8867289"
    915  1.1  christos 		      "865DF5A32D20CDC944B6022CAC3C4982B10D5EEB"
    916  1.1  christos 		      "55C3E4DE15134676FB6DE0446065C97440FA8C6A58",
    917  1.1  christos 		      1);
    918  1.1  christos }
    919  1.1  christos 
    920  1.1  christos ISC_TEST_LIST_START
    921  1.1  christos 
    922  1.1  christos ISC_TEST_ENTRY(isc_hmac_new)
    923  1.1  christos ISC_TEST_ENTRY_CUSTOM(isc_hmac_init, _reset, _reset)
    924  1.1  christos 
    925  1.1  christos ISC_TEST_ENTRY_CUSTOM(isc_hmac_reset, _reset, _reset)
    926  1.1  christos 
    927  1.1  christos ISC_TEST_ENTRY(isc_hmac_md5)
    928  1.1  christos ISC_TEST_ENTRY(isc_hmac_sha1)
    929  1.1  christos ISC_TEST_ENTRY(isc_hmac_sha224)
    930  1.1  christos ISC_TEST_ENTRY(isc_hmac_sha256)
    931  1.1  christos ISC_TEST_ENTRY(isc_hmac_sha384)
    932  1.1  christos ISC_TEST_ENTRY(isc_hmac_sha512)
    933  1.1  christos 
    934  1.1  christos ISC_TEST_ENTRY_CUSTOM(isc_hmac_update, _reset, _reset)
    935  1.1  christos ISC_TEST_ENTRY_CUSTOM(isc_hmac_final, _reset, _reset)
    936  1.1  christos 
    937  1.1  christos ISC_TEST_ENTRY(isc_hmac_free)
    938  1.1  christos 
    939  1.1  christos ISC_TEST_LIST_END
    940  1.1  christos 
    941  1.1  christos ISC_TEST_MAIN_CUSTOM(_setup, _teardown)
    942