Module Name:    src
Committed By:   hikaru
Date:           Tue Dec  3 04:20:45 UTC 2019

Modified Files:
        src/distrib/sets/lists/debug: mi
        src/distrib/sets/lists/tests: mi
        src/tests/crypto/opencrypto: Makefile t_opencrypto.sh
Added Files:
        src/tests/crypto/opencrypto: h_sha2hmac.c

Log Message:
Add HMAC-SHA-{256,384,512} test cases.


To generate a diff of this commit:
cvs rdiff -u -r1.289 -r1.290 src/distrib/sets/lists/debug/mi
cvs rdiff -u -r1.823 -r1.824 src/distrib/sets/lists/tests/mi
cvs rdiff -u -r1.4 -r1.5 src/tests/crypto/opencrypto/Makefile
cvs rdiff -u -r0 -r1.1 src/tests/crypto/opencrypto/h_sha2hmac.c
cvs rdiff -u -r1.8 -r1.9 src/tests/crypto/opencrypto/t_opencrypto.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/distrib/sets/lists/debug/mi
diff -u src/distrib/sets/lists/debug/mi:1.289 src/distrib/sets/lists/debug/mi:1.290
--- src/distrib/sets/lists/debug/mi:1.289	Tue Oct 15 18:33:57 2019
+++ src/distrib/sets/lists/debug/mi	Tue Dec  3 04:20:45 2019
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.289 2019/10/15 18:33:57 christos Exp $
+# $NetBSD: mi,v 1.290 2019/12/03 04:20:45 hikaru Exp $
 ./etc/mtree/set.debug                           comp-sys-root
 ./usr/lib					comp-sys-usr		compatdir
 ./usr/lib/i18n/libBIG5_g.a			comp-c-debuglib		debuglib,compatfile
@@ -1617,6 +1617,7 @@
 ./usr/libdata/debug/usr/tests/crypto/opencrypto/h_md5hmac.debug		tests-crypto-debug	debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/crypto/opencrypto/h_null.debug		tests-crypto-debug	debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/crypto/opencrypto/h_sha1hmac.debug	tests-crypto-debug	debug,atf,compattestfile
+./usr/libdata/debug/usr/tests/crypto/opencrypto/h_sha2hmac.debug	tests-crypto-debug	debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/crypto/opencrypto/h_xcbcmac.debug		tests-crypto-debug	debug,atf,compattestfile
 ./usr/libdata/debug/usr/tests/dev/audio/h_pad.debug			tests-fs-debug		debug,atf,rump
 ./usr/libdata/debug/usr/tests/dev/cgd/h_img2cgd/h_img2cgd.debug			tests-obsolete	obsolete,compattestfile

Index: src/distrib/sets/lists/tests/mi
diff -u src/distrib/sets/lists/tests/mi:1.823 src/distrib/sets/lists/tests/mi:1.824
--- src/distrib/sets/lists/tests/mi:1.823	Sat Nov 30 04:06:22 2019
+++ src/distrib/sets/lists/tests/mi	Tue Dec  3 04:20:45 2019
@@ -1,4 +1,4 @@
-# $NetBSD: mi,v 1.823 2019/11/30 04:06:22 pgoyette Exp $
+# $NetBSD: mi,v 1.824 2019/12/03 04:20:45 hikaru Exp $
 #
 # Note: don't delete entries from here - mark them as "obsolete" instead.
 #
@@ -1379,6 +1379,7 @@
 ./usr/tests/crypto/opencrypto/h_md5hmac		tests-crypto-tests	compattestfile,atf
 ./usr/tests/crypto/opencrypto/h_null		tests-crypto-tests	compattestfile,atf
 ./usr/tests/crypto/opencrypto/h_sha1hmac	tests-crypto-tests	compattestfile,atf
+./usr/tests/crypto/opencrypto/h_sha2hmac	tests-crypto-tests	compattestfile,atf
 ./usr/tests/crypto/opencrypto/h_xcbcmac		tests-crypto-tests	compattestfile,atf
 ./usr/tests/crypto/opencrypto/t_opencrypto	tests-crypto-tests	compattestfile,atf
 ./usr/tests/dev					tests-fs-tests		compattestfile,atf

Index: src/tests/crypto/opencrypto/Makefile
diff -u src/tests/crypto/opencrypto/Makefile:1.4 src/tests/crypto/opencrypto/Makefile:1.5
--- src/tests/crypto/opencrypto/Makefile:1.4	Fri Jun  9 06:09:02 2017
+++ src/tests/crypto/opencrypto/Makefile	Tue Dec  3 04:20:45 2019
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile,v 1.4 2017/06/09 06:09:02 knakahara Exp $
+# $NetBSD: Makefile,v 1.5 2019/12/03 04:20:45 hikaru Exp $
 
 .include <bsd.own.mk>
 
@@ -24,6 +24,7 @@ PROGS+=		h_md5
 PROGS+=		h_md5hmac
 PROGS+=		h_null
 PROGS+=		h_sha1hmac
+PROGS+=		h_sha2hmac
 PROGS+=		h_xcbcmac
 PROGS+=		h_ioctl
 

Index: src/tests/crypto/opencrypto/t_opencrypto.sh
diff -u src/tests/crypto/opencrypto/t_opencrypto.sh:1.8 src/tests/crypto/opencrypto/t_opencrypto.sh:1.9
--- src/tests/crypto/opencrypto/t_opencrypto.sh:1.8	Fri Jun  9 06:09:02 2017
+++ src/tests/crypto/opencrypto/t_opencrypto.sh	Tue Dec  3 04:20:45 2019
@@ -1,4 +1,4 @@
-#	$NetBSD: t_opencrypto.sh,v 1.8 2017/06/09 06:09:02 knakahara Exp $
+#	$NetBSD: t_opencrypto.sh,v 1.9 2019/12/03 04:20:45 hikaru Exp $
 #
 # Copyright (c) 2014 The NetBSD Foundation, Inc.
 # All rights reserved.
@@ -269,6 +269,19 @@ sha1_hmac_cleanup() {
 	common_cleanup
 }
 
+atf_test_case sha2_hmac cleanup
+sha2_hmac_head() {
+	common_head "Test SHA2_HMAC crypto"
+}
+
+sha2_hmac_body() {
+	common_body h_sha2hmac
+}
+
+sha2_hmac_cleanup() {
+	common_cleanup
+}
+
 atf_test_case xcbcmac cleanup
 xcbcmac_head() {
 	common_head "Test XCBC_MAC_96 crypto"
@@ -313,6 +326,7 @@ atf_init_test_cases() {
 	atf_add_test_case md5_hmac
 	atf_add_test_case null
 	atf_add_test_case sha1_hmac
+	atf_add_test_case sha2_hmac
 	atf_add_test_case xcbcmac
 	atf_add_test_case ioctl
 }

Added files:

Index: src/tests/crypto/opencrypto/h_sha2hmac.c
diff -u /dev/null src/tests/crypto/opencrypto/h_sha2hmac.c:1.1
--- /dev/null	Tue Dec  3 04:20:45 2019
+++ src/tests/crypto/opencrypto/h_sha2hmac.c	Tue Dec  3 04:20:45 2019
@@ -0,0 +1,268 @@
+/* $NetBSD: h_sha2hmac.c,v 1.1 2019/12/03 04:20:45 hikaru Exp $ */
+
+/*-
+ * Copyright (c) 2014 The NetBSD Foundation, Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <err.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <string.h>
+
+#include <sys/ioctl.h>
+#include <sys/time.h>
+
+#include <crypto/cryptodev.h>
+
+/* Test data from RFC4868 */
+const struct {
+	int num;
+	int alg;
+	size_t key_len;
+	size_t len;
+	size_t mac_len;
+	unsigned char key[80];
+	unsigned char data[80];
+	unsigned char mac[80];
+} tests[] = {
+	{ 1, CRYPTO_SHA2_256_HMAC, 32, 8, 16,
+	  { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b },
+	  "Hi There",
+	  { 0x19, 0x8a, 0x60, 0x7e, 0xb4, 0x4b, 0xfb, 0xc6,
+	    0x99, 0x03, 0xa0, 0xf1, 0xcf, 0x2b, 0xbd, 0xc5 }
+	},
+	{ 2, CRYPTO_SHA2_256_HMAC, 32, 28, 16,
+	  "JefeJefeJefeJefe"
+	  "JefeJefeJefeJefe",
+	  "what do ya want "
+	  "for nothing?",
+	  { 0x16, 0x7f, 0x92, 0x85, 0x88, 0xc5, 0xcc, 0x2e,
+	    0xef, 0x8e, 0x30, 0x93, 0xca, 0xa0, 0xe8, 0x7c }
+	},
+	{ 3, CRYPTO_SHA2_256_HMAC, 32, 50, 16,
+	  { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa },
+	  { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd },
+          { 0xcd, 0xcb, 0x12, 0x20, 0xd1, 0xec, 0xcc, 0xea,
+	    0x91, 0xe5, 0x3a, 0xba, 0x30, 0x92, 0xf9, 0x62 }
+	},
+	{ 4, CRYPTO_SHA2_256_HMAC, 32, 50, 16,
+	  { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+	    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
+	    0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+	    0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20 },
+	  { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd },
+	  { 0x37, 0x2e, 0xfc, 0xf9, 0xb4, 0x0b, 0x35, 0xc2,
+	    0x11, 0x5b, 0x13, 0x46, 0x90, 0x3d, 0x2e, 0xf4 }
+	},
+	{ 5, CRYPTO_SHA2_384_HMAC, 48, 8, 24,
+	  { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b },
+	  "Hi There",
+	  { 0xb6, 0xa8, 0xd5, 0x63, 0x6f, 0x5c, 0x6a, 0x72,
+	    0x24, 0xf9, 0x97, 0x7d, 0xcf, 0x7e, 0xe6, 0xc7,
+	    0xfb, 0x6d, 0x0c, 0x48, 0xcb, 0xde, 0xe9, 0x73 }
+	},
+	{ 6, CRYPTO_SHA2_384_HMAC, 48, 28, 24,
+	  "JefeJefeJefeJefe"
+	  "JefeJefeJefeJefe"
+	  "JefeJefeJefeJefe",
+	  "what do ya want "
+	  "for nothing?",
+	  { 0x2c, 0x73, 0x53, 0x97, 0x4f, 0x18, 0x42, 0xfd,
+	    0x66, 0xd5, 0x3c, 0x45, 0x2c, 0xa4, 0x21, 0x22,
+	    0xb2, 0x8c, 0x0b, 0x59, 0x4c, 0xfb, 0x18, 0x4d }
+	},
+	{ 7, CRYPTO_SHA2_384_HMAC, 48, 50, 24,
+	  { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa },
+	  { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd },
+	  { 0x80, 0x9f, 0x43, 0x9b, 0xe0, 0x02, 0x74, 0x32,
+	    0x1d, 0x4a, 0x53, 0x86, 0x52, 0x16, 0x4b, 0x53,
+	    0x55, 0x4a, 0x50, 0x81, 0x84, 0xa0, 0xc3, 0x16 }
+	},
+	{ 8, CRYPTO_SHA2_384_HMAC, 48, 50, 24,
+	  { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+	    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
+	    0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+	    0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
+	    0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11,
+	    0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19 },
+	  { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd },
+	  { 0x5b, 0x54, 0x00, 0x85, 0xc6, 0xe6, 0x35, 0x80,
+	    0x96, 0x53, 0x2b, 0x24, 0x93, 0x60, 0x9e, 0xd1,
+	    0xcb, 0x29, 0x8f, 0x77, 0x4f, 0x87, 0xbb, 0x5c }
+	},
+	{ 9, CRYPTO_SHA2_512_HMAC, 64, 8, 32,
+	  { 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b,
+	    0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b },
+	  "Hi There",
+	  { 0x63, 0x7e, 0xdc, 0x6e, 0x01, 0xdc, 0xe7, 0xe6,
+	    0x74, 0x2a, 0x99, 0x45, 0x1a, 0xae, 0x82, 0xdf,
+	    0x23, 0xda, 0x3e, 0x92, 0x43, 0x9e, 0x59, 0x0e,
+	    0x43, 0xe7, 0x61, 0xb3, 0x3e, 0x91, 0x0f, 0xb8 }
+	},
+	{ 10, CRYPTO_SHA2_512_HMAC, 64, 28, 32,
+	  "JefeJefeJefeJefe"
+	  "JefeJefeJefeJefe"
+	  "JefeJefeJefeJefe"
+	  "JefeJefeJefeJefe",
+	  "what do ya want "
+	  "for nothing?",
+	  { 0xcb, 0x37, 0x09, 0x17, 0xae, 0x8a, 0x7c, 0xe2,
+	    0x8c, 0xfd, 0x1d, 0x8f, 0x47, 0x05, 0xd6, 0x14,
+	    0x1c, 0x17, 0x3b, 0x2a, 0x93, 0x62, 0xc1, 0x5d,
+	    0xf2, 0x35, 0xdf, 0xb2, 0x51, 0xb1, 0x54, 0x54 }
+	},
+	{ 11, CRYPTO_SHA2_512_HMAC, 64, 50, 32,
+	  { 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
+	    0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa },
+	  { 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
+	    0xdd, 0xdd },
+	  { 0x2e, 0xe7, 0xac, 0xd7, 0x83, 0x62, 0x4c, 0xa9,
+	    0x39, 0x87, 0x10, 0xf3, 0xee, 0x05, 0xae, 0x41,
+	    0xb9, 0xf9, 0xb0, 0x51, 0x0c, 0x87, 0xe4, 0x9e,
+	    0x58, 0x6c, 0xc9, 0xbf, 0x96, 0x17, 0x33, 0xd8
+	  }
+	},
+	{ 12, CRYPTO_SHA2_512_HMAC, 64, 50, 32,
+	  { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
+	    0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10,
+	    0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
+	    0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20,
+	    0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28,
+	    0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 0x30,
+	    0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38,
+	    0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40 },
+	  { 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd,
+	    0xcd, 0xcd },
+	  { 0x5e, 0x66, 0x88, 0xe5, 0xa3, 0xda, 0xec, 0x82,
+	    0x6c, 0xa3, 0x2e, 0xae, 0xa2, 0x24, 0xef, 0xf5,
+	    0xe7, 0x00, 0x62, 0x89, 0x47, 0x47, 0x0e, 0x13,
+	    0xad, 0x01, 0x30, 0x25, 0x61, 0xba, 0xb1, 0x08 }
+	},
+};
+
+int
+main(void)
+{
+	size_t i;
+	int fd, res;
+	struct session_op cs;
+	struct crypt_op co;
+	unsigned char buf[80];
+
+	fd = open("/dev/crypto", O_RDWR, 0);
+	if (fd < 0)
+		err(1, "open");
+	for (i = 0; i < __arraycount(tests); i++) {
+		memset(&cs, 0, sizeof(cs));
+		cs.mac = tests[i].alg;
+		cs.mackeylen = tests[i].key_len;
+		cs.mackey = __UNCONST(&tests[i].key);
+		res = ioctl(fd, CIOCGSESSION, &cs);
+		if (res < 0)
+			err(1, "CIOCGSESSION test %d", tests[i].num);
+
+		memset(&co, 0, sizeof(co));
+		memset(buf, 0, sizeof(buf));
+		co.ses = cs.ses;
+		co.op = COP_ENCRYPT;
+		co.len = tests[i].len;
+		co.src = __UNCONST(&tests[i].data);
+		co.mac = buf;
+		res = ioctl(fd, CIOCCRYPT, &co);
+		if (res < 0)
+			err(1, "CIOCCRYPT test %d", tests[i].num);
+
+		/* compare with trailing zeros */
+		if (memcmp(co.mac, &tests[i].mac, sizeof(tests[i].mac)))
+			errx(1, "verification failed test %d", tests[i].num);
+
+		res = ioctl(fd, CIOCFSESSION, &cs.ses);
+		if (res < 0)
+			err(1, "CIOCFSESSION test %d", tests[i].num);
+	}
+	return 0;
+}

Reply via email to