Module Name:    src
Committed By:   riastradh
Date:           Sat Jul 25 22:12:57 UTC 2020

Modified Files:
        src/sys/arch/aarch64/aarch64: cpu.c
        src/sys/arch/arm/vfp: vfp_init.c
        src/sys/arch/x86/x86: identcpu.c
        src/sys/crypto/aes: aes.h aes_bear.c aes_impl.c aes_selftest.c
        src/sys/crypto/aes/arch/arm: aes_armv8.c aes_armv8.h aes_neon.h
            aes_neon_impl.c
        src/sys/crypto/aes/arch/x86: aes_ni.c aes_ni.h aes_sse2.h
            aes_sse2_impl.c aes_ssse3.h aes_ssse3_impl.c aes_via.c aes_via.h
Added Files:
        src/sys/crypto/aes: aes_impl.h

Log Message:
Split aes_impl declarations out into aes_impl.h.

This will make it less painful to add more operations to struct
aes_impl without having to recompile everything that just uses the
block cipher directly or similar.


To generate a diff of this commit:
cvs rdiff -u -r1.52 -r1.53 src/sys/arch/aarch64/aarch64/cpu.c
cvs rdiff -u -r1.68 -r1.69 src/sys/arch/arm/vfp/vfp_init.c
cvs rdiff -u -r1.113 -r1.114 src/sys/arch/x86/x86/identcpu.c
cvs rdiff -u -r1.2 -r1.3 src/sys/crypto/aes/aes.h \
    src/sys/crypto/aes/aes_bear.c src/sys/crypto/aes/aes_selftest.c
cvs rdiff -u -r1.3 -r1.4 src/sys/crypto/aes/aes_impl.c
cvs rdiff -u -r0 -r1.1 src/sys/crypto/aes/aes_impl.h
cvs rdiff -u -r1.3 -r1.4 src/sys/crypto/aes/arch/arm/aes_armv8.c
cvs rdiff -u -r1.1 -r1.2 src/sys/crypto/aes/arch/arm/aes_armv8.h \
    src/sys/crypto/aes/arch/arm/aes_neon.h
cvs rdiff -u -r1.2 -r1.3 src/sys/crypto/aes/arch/arm/aes_neon_impl.c
cvs rdiff -u -r1.2 -r1.3 src/sys/crypto/aes/arch/x86/aes_ni.c \
    src/sys/crypto/aes/arch/x86/aes_sse2.h \
    src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c
cvs rdiff -u -r1.1 -r1.2 src/sys/crypto/aes/arch/x86/aes_ni.h \
    src/sys/crypto/aes/arch/x86/aes_ssse3.h \
    src/sys/crypto/aes/arch/x86/aes_via.h
cvs rdiff -u -r1.3 -r1.4 src/sys/crypto/aes/arch/x86/aes_sse2_impl.c \
    src/sys/crypto/aes/arch/x86/aes_via.c

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

Modified files:

Index: src/sys/arch/aarch64/aarch64/cpu.c
diff -u src/sys/arch/aarch64/aarch64/cpu.c:1.52 src/sys/arch/aarch64/aarch64/cpu.c:1.53
--- src/sys/arch/aarch64/aarch64/cpu.c:1.52	Wed Jul  1 08:01:07 2020
+++ src/sys/arch/aarch64/aarch64/cpu.c	Sat Jul 25 22:12:56 2020
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.c,v 1.52 2020/07/01 08:01:07 ryo Exp $ */
+/* $NetBSD: cpu.c,v 1.53 2020/07/25 22:12:56 riastradh Exp $ */
 
 /*
  * Copyright (c) 2017 Ryo Shimizu <r...@nerv.org>
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.52 2020/07/01 08:01:07 ryo Exp $");
+__KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.53 2020/07/25 22:12:56 riastradh Exp $");
 
 #include "locators.h"
 #include "opt_arm_debug.h"
@@ -44,6 +44,7 @@ __KERNEL_RCSID(1, "$NetBSD: cpu.c,v 1.52
 #include <sys/sysctl.h>
 #include <sys/systm.h>
 
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/arm/aes_armv8.h>
 #include <crypto/aes/arch/arm/aes_neon.h>
 

Index: src/sys/arch/arm/vfp/vfp_init.c
diff -u src/sys/arch/arm/vfp/vfp_init.c:1.68 src/sys/arch/arm/vfp/vfp_init.c:1.69
--- src/sys/arch/arm/vfp/vfp_init.c:1.68	Mon Jul 13 16:54:03 2020
+++ src/sys/arch/arm/vfp/vfp_init.c	Sat Jul 25 22:12:56 2020
@@ -1,4 +1,4 @@
-/*      $NetBSD: vfp_init.c,v 1.68 2020/07/13 16:54:03 riastradh Exp $ */
+/*      $NetBSD: vfp_init.c,v 1.69 2020/07/25 22:12:56 riastradh Exp $ */
 
 /*
  * Copyright (c) 2008 ARM Ltd
@@ -32,7 +32,7 @@
 #include "opt_cputypes.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfp_init.c,v 1.68 2020/07/13 16:54:03 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfp_init.c,v 1.69 2020/07/25 22:12:56 riastradh Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -50,7 +50,7 @@ __KERNEL_RCSID(0, "$NetBSD: vfp_init.c,v
 
 #include <uvm/uvm_extern.h>		/* for pmap.h */
 
-#include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/arm/aes_neon.h>
 
 #ifdef FPU_VFP

Index: src/sys/arch/x86/x86/identcpu.c
diff -u src/sys/arch/x86/x86/identcpu.c:1.113 src/sys/arch/x86/x86/identcpu.c:1.114
--- src/sys/arch/x86/x86/identcpu.c:1.113	Mon Jul 20 16:45:41 2020
+++ src/sys/arch/x86/x86/identcpu.c	Sat Jul 25 22:12:56 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: identcpu.c,v 1.113 2020/07/20 16:45:41 riastradh Exp $	*/
+/*	$NetBSD: identcpu.c,v 1.114 2020/07/25 22:12:56 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 1999, 2000, 2001, 2006, 2007, 2008 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: identcpu.c,v 1.113 2020/07/20 16:45:41 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: identcpu.c,v 1.114 2020/07/25 22:12:56 riastradh Exp $");
 
 #include "opt_xen.h"
 
@@ -39,6 +39,7 @@ __KERNEL_RCSID(0, "$NetBSD: identcpu.c,v
 #include <sys/device.h>
 #include <sys/cpu.h>
 
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/x86/aes_ni.h>
 #include <crypto/aes/arch/x86/aes_sse2.h>
 #include <crypto/aes/arch/x86/aes_ssse3.h>

Index: src/sys/crypto/aes/aes.h
diff -u src/sys/crypto/aes/aes.h:1.2 src/sys/crypto/aes/aes.h:1.3
--- src/sys/crypto/aes/aes.h:1.2	Mon Jun 29 23:47:54 2020
+++ src/sys/crypto/aes/aes.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes.h,v 1.2 2020/06/29 23:47:54 riastradh Exp $	*/
+/*	$NetBSD: aes.h,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -54,27 +54,6 @@ struct aesdec {
 	union aes	aesd_aes;
 };
 
-struct aes_impl {
-	const char *ai_name;
-	int	(*ai_probe)(void);
-	void	(*ai_setenckey)(struct aesenc *, const uint8_t *, uint32_t);
-	void	(*ai_setdeckey)(struct aesdec *, const uint8_t *, uint32_t);
-	void	(*ai_enc)(const struct aesenc *, const uint8_t[static 16],
-		    uint8_t[static 16], uint32_t);
-	void	(*ai_dec)(const struct aesdec *, const uint8_t[static 16],
-		    uint8_t[static 16], uint32_t);
-	void	(*ai_cbc_enc)(const struct aesenc *, const uint8_t[static 16],
-		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
-	void	(*ai_cbc_dec)(const struct aesdec *, const uint8_t[static 16],
-		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
-	void	(*ai_xts_enc)(const struct aesenc *, const uint8_t[static 16],
-		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
-	void	(*ai_xts_dec)(const struct aesdec *, const uint8_t[static 16],
-		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
-};
-
-int	aes_selftest(const struct aes_impl *);
-
 uint32_t aes_setenckey128(struct aesenc *, const uint8_t[static 16]);
 uint32_t aes_setenckey192(struct aesenc *, const uint8_t[static 24]);
 uint32_t aes_setenckey256(struct aesenc *, const uint8_t[static 32]);
@@ -97,6 +76,4 @@ void	aes_xts_enc(struct aesenc *, const 
 void	aes_xts_dec(struct aesdec *, const uint8_t[static 16],
 	    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
 
-void	aes_md_init(const struct aes_impl *);
-
 #endif	/* _CRYPTO_AES_AES_H */
Index: src/sys/crypto/aes/aes_bear.c
diff -u src/sys/crypto/aes/aes_bear.c:1.2 src/sys/crypto/aes/aes_bear.c:1.3
--- src/sys/crypto/aes/aes_bear.c:1.2	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/aes_bear.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_bear.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_bear.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_bear.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_bear.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/endian.h>
@@ -44,6 +44,7 @@ __KERNEL_RCSID(1, "$NetBSD: aes_bear.c,v
 
 #include <crypto/aes/aes.h>
 #include <crypto/aes/aes_bear.h>
+#include <crypto/aes/aes_impl.h>
 
 static void
 aesbear_setkey(uint32_t rk[static 60], const void *key, uint32_t nrounds)
Index: src/sys/crypto/aes/aes_selftest.c
diff -u src/sys/crypto/aes/aes_selftest.c:1.2 src/sys/crypto/aes/aes_selftest.c:1.3
--- src/sys/crypto/aes/aes_selftest.c:1.2	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/aes_selftest.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_selftest.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_selftest.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_selftest.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_selftest.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $");
 
 #ifdef _KERNEL
 
@@ -66,6 +66,7 @@ hexdump(int (*prf)(const char *, ...) __
 #endif	/* _KERNEL */
 
 #include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 
 static const unsigned aes_keybytes[] __unused = { 16, 24, 32 };
 static const unsigned aes_keybits[] __unused = { 128, 192, 256 };

Index: src/sys/crypto/aes/aes_impl.c
diff -u src/sys/crypto/aes/aes_impl.c:1.3 src/sys/crypto/aes/aes_impl.c:1.4
--- src/sys/crypto/aes/aes_impl.c:1.3	Tue Jun 30 16:21:17 2020
+++ src/sys/crypto/aes/aes_impl.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_impl.c,v 1.3 2020/06/30 16:21:17 riastradh Exp $	*/
+/*	$NetBSD: aes_impl.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_impl.c,v 1.3 2020/06/30 16:21:17 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_impl.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/kernel.h>
@@ -38,6 +38,7 @@ __KERNEL_RCSID(1, "$NetBSD: aes_impl.c,v
 
 #include <crypto/aes/aes.h>
 #include <crypto/aes/aes_bear.h> /* default implementation */
+#include <crypto/aes/aes_impl.h>
 
 static int aes_selftest_stdkeysched(void);
 

Index: src/sys/crypto/aes/arch/arm/aes_armv8.c
diff -u src/sys/crypto/aes/arch/arm/aes_armv8.c:1.3 src/sys/crypto/aes/arch/arm/aes_armv8.c:1.4
--- src/sys/crypto/aes/arch/arm/aes_armv8.c:1.3	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/arch/arm/aes_armv8.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_armv8.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_armv8.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_armv8.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_armv8.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $");
 
 #ifdef _KERNEL
 #include <sys/types.h>
@@ -43,6 +43,7 @@ __KERNEL_RCSID(1, "$NetBSD: aes_armv8.c,
 #endif
 
 #include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/arm/aes_armv8.h>
 
 #include <aarch64/armreg.h>

Index: src/sys/crypto/aes/arch/arm/aes_armv8.h
diff -u src/sys/crypto/aes/arch/arm/aes_armv8.h:1.1 src/sys/crypto/aes/arch/arm/aes_armv8.h:1.2
--- src/sys/crypto/aes/arch/arm/aes_armv8.h:1.1	Mon Jun 29 23:31:41 2020
+++ src/sys/crypto/aes/arch/arm/aes_armv8.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_armv8.h,v 1.1 2020/06/29 23:31:41 riastradh Exp $	*/
+/*	$NetBSD: aes_armv8.h,v 1.2 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -31,7 +31,10 @@
 
 #include <sys/types.h>
 
-#include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
+
+struct aesenc;
+struct aesdec;
 
 /* Assembly routines */
 
Index: src/sys/crypto/aes/arch/arm/aes_neon.h
diff -u src/sys/crypto/aes/arch/arm/aes_neon.h:1.1 src/sys/crypto/aes/arch/arm/aes_neon.h:1.2
--- src/sys/crypto/aes/arch/arm/aes_neon.h:1.1	Mon Jun 29 23:56:31 2020
+++ src/sys/crypto/aes/arch/arm/aes_neon.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_neon.h,v 1.1 2020/06/29 23:56:31 riastradh Exp $	*/
+/*	$NetBSD: aes_neon.h,v 1.2 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -29,7 +29,12 @@
 #ifndef	_CRYPTO_AES_ARCH_ARM_AES_NEON_H
 #define	_CRYPTO_AES_ARCH_ARM_AES_NEON_H
 
-#include <crypto/aes/aes.h>
+#include <sys/types.h>
+
+#include <crypto/aes/aes_impl.h>
+
+struct aesenc;
+struct aesdec;
 
 /*
  * These functions MUST NOT use any vector registers for parameters or

Index: src/sys/crypto/aes/arch/arm/aes_neon_impl.c
diff -u src/sys/crypto/aes/arch/arm/aes_neon_impl.c:1.2 src/sys/crypto/aes/arch/arm/aes_neon_impl.c:1.3
--- src/sys/crypto/aes/arch/arm/aes_neon_impl.c:1.2	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/arch/arm/aes_neon_impl.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_neon_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_neon_impl.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,12 +27,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_neon_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_neon_impl.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/proc.h>
 
 #include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/arm/aes_neon.h>
 
 #ifdef __aarch64__

Index: src/sys/crypto/aes/arch/x86/aes_ni.c
diff -u src/sys/crypto/aes/arch/x86/aes_ni.c:1.2 src/sys/crypto/aes/arch/x86/aes_ni.c:1.3
--- src/sys/crypto/aes/arch/x86/aes_ni.c:1.2	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/arch/x86/aes_ni.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_ni.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_ni.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_ni.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_ni.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $");
 
 #ifdef _KERNEL
 #include <sys/types.h>
@@ -42,6 +42,7 @@ __KERNEL_RCSID(1, "$NetBSD: aes_ni.c,v 1
 #endif
 
 #include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/x86/aes_ni.h>
 
 #ifdef _KERNEL
Index: src/sys/crypto/aes/arch/x86/aes_sse2.h
diff -u src/sys/crypto/aes/arch/x86/aes_sse2.h:1.2 src/sys/crypto/aes/arch/x86/aes_sse2.h:1.3
--- src/sys/crypto/aes/arch/x86/aes_sse2.h:1.2	Mon Jun 29 23:50:05 2020
+++ src/sys/crypto/aes/arch/x86/aes_sse2.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_sse2.h,v 1.2 2020/06/29 23:50:05 riastradh Exp $	*/
+/*	$NetBSD: aes_sse2.h,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -29,7 +29,12 @@
 #ifndef	_CRYPTO_AES_ARCH_X86_AES_SSE2_H
 #define	_CRYPTO_AES_ARCH_X86_AES_SSE2_H
 
-#include <crypto/aes/aes.h>
+#include <sys/types.h>
+
+#include <crypto/aes/aes_impl.h>
+
+struct aesenc;
+struct aesdec;
 
 /*
  * These functions MUST NOT use any vector registers for parameters or
Index: src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c
diff -u src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c:1.2 src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c:1.3
--- src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c:1.2	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/arch/x86/aes_ssse3_impl.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_ssse3_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_ssse3_impl.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,9 +27,10 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_ssse3_impl.c,v 1.2 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_ssse3_impl.c,v 1.3 2020/07/25 22:12:57 riastradh Exp $");
 
 #include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/x86/aes_ssse3.h>
 
 #ifdef _KERNEL

Index: src/sys/crypto/aes/arch/x86/aes_ni.h
diff -u src/sys/crypto/aes/arch/x86/aes_ni.h:1.1 src/sys/crypto/aes/arch/x86/aes_ni.h:1.2
--- src/sys/crypto/aes/arch/x86/aes_ni.h:1.1	Mon Jun 29 23:29:40 2020
+++ src/sys/crypto/aes/arch/x86/aes_ni.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_ni.h,v 1.1 2020/06/29 23:29:40 riastradh Exp $	*/
+/*	$NetBSD: aes_ni.h,v 1.2 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -31,7 +31,10 @@
 
 #include <sys/types.h>
 
-#include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
+
+struct aesenc;
+struct aesdec;
 
 /* Assembly routines */
 
Index: src/sys/crypto/aes/arch/x86/aes_ssse3.h
diff -u src/sys/crypto/aes/arch/x86/aes_ssse3.h:1.1 src/sys/crypto/aes/arch/x86/aes_ssse3.h:1.2
--- src/sys/crypto/aes/arch/x86/aes_ssse3.h:1.1	Mon Jun 29 23:51:35 2020
+++ src/sys/crypto/aes/arch/x86/aes_ssse3.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_ssse3.h,v 1.1 2020/06/29 23:51:35 riastradh Exp $	*/
+/*	$NetBSD: aes_ssse3.h,v 1.2 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -29,7 +29,12 @@
 #ifndef	_CRYPTO_AES_ARCH_X86_AES_SSSE3_H
 #define	_CRYPTO_AES_ARCH_X86_AES_SSSE3_H
 
-#include <crypto/aes/aes.h>
+#include <sys/types.h>
+
+#include <crypto/aes/aes_impl.h>
+
+struct aesenc;
+struct aesdec;
 
 /*
  * These functions MUST NOT use any vector registers for parameters or
Index: src/sys/crypto/aes/arch/x86/aes_via.h
diff -u src/sys/crypto/aes/arch/x86/aes_via.h:1.1 src/sys/crypto/aes/arch/x86/aes_via.h:1.2
--- src/sys/crypto/aes/arch/x86/aes_via.h:1.1	Mon Jun 29 23:39:30 2020
+++ src/sys/crypto/aes/arch/x86/aes_via.h	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_via.h,v 1.1 2020/06/29 23:39:30 riastradh Exp $	*/
+/*	$NetBSD: aes_via.h,v 1.2 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -29,7 +29,7 @@
 #ifndef	_CRYPTO_AES_ARCH_X86_AES_VIA_H
 #define	_CRYPTO_AES_ARCH_X86_AES_VIA_H
 
-#include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 
 extern struct aes_impl aes_via_impl;
 

Index: src/sys/crypto/aes/arch/x86/aes_sse2_impl.c
diff -u src/sys/crypto/aes/arch/x86/aes_sse2_impl.c:1.3 src/sys/crypto/aes/arch/x86/aes_sse2_impl.c:1.4
--- src/sys/crypto/aes/arch/x86/aes_sse2_impl.c:1.3	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/arch/x86/aes_sse2_impl.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_sse2_impl.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_sse2_impl.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,12 +27,13 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_sse2_impl.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_sse2_impl.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $");
 
 #include <sys/types.h>
 #include <sys/endian.h>
 
 #include <crypto/aes/aes.h>
+#include <crypto/aes/aes_impl.h>
 #include <crypto/aes/arch/x86/aes_sse2.h>
 
 #ifdef _KERNEL
Index: src/sys/crypto/aes/arch/x86/aes_via.c
diff -u src/sys/crypto/aes/arch/x86/aes_via.c:1.3 src/sys/crypto/aes/arch/x86/aes_via.c:1.4
--- src/sys/crypto/aes/arch/x86/aes_via.c:1.3	Tue Jun 30 20:32:11 2020
+++ src/sys/crypto/aes/arch/x86/aes_via.c	Sat Jul 25 22:12:57 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: aes_via.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $	*/
+/*	$NetBSD: aes_via.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $	*/
 
 /*-
  * Copyright (c) 2020 The NetBSD Foundation, Inc.
@@ -27,7 +27,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(1, "$NetBSD: aes_via.c,v 1.3 2020/06/30 20:32:11 riastradh Exp $");
+__KERNEL_RCSID(1, "$NetBSD: aes_via.c,v 1.4 2020/07/25 22:12:57 riastradh Exp $");
 
 #ifdef _KERNEL
 #include <sys/types.h>
@@ -47,6 +47,7 @@ struct evcnt { uint64_t ev_count; };
 
 #include <crypto/aes/aes.h>
 #include <crypto/aes/aes_bear.h>
+#include <crypto/aes/aes_impl.h>
 
 #ifdef _KERNEL
 #include <x86/cpufunc.h>

Added files:

Index: src/sys/crypto/aes/aes_impl.h
diff -u /dev/null src/sys/crypto/aes/aes_impl.h:1.1
--- /dev/null	Sat Jul 25 22:12:57 2020
+++ src/sys/crypto/aes/aes_impl.h	Sat Jul 25 22:12:57 2020
@@ -0,0 +1,60 @@
+/*	$NetBSD: aes_impl.h,v 1.1 2020/07/25 22:12:57 riastradh Exp $	*/
+
+/*-
+ * Copyright (c) 2020 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.
+ */
+
+#ifndef	_CRYPTO_AES_AES_IMPL_H
+#define	_CRYPTO_AES_AES_IMPL_H
+
+#include <sys/types.h>
+
+struct aesenc;
+struct aesdec;
+
+struct aes_impl {
+	const char *ai_name;
+	int	(*ai_probe)(void);
+	void	(*ai_setenckey)(struct aesenc *, const uint8_t *, uint32_t);
+	void	(*ai_setdeckey)(struct aesdec *, const uint8_t *, uint32_t);
+	void	(*ai_enc)(const struct aesenc *, const uint8_t[static 16],
+		    uint8_t[static 16], uint32_t);
+	void	(*ai_dec)(const struct aesdec *, const uint8_t[static 16],
+		    uint8_t[static 16], uint32_t);
+	void	(*ai_cbc_enc)(const struct aesenc *, const uint8_t[static 16],
+		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
+	void	(*ai_cbc_dec)(const struct aesdec *, const uint8_t[static 16],
+		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
+	void	(*ai_xts_enc)(const struct aesenc *, const uint8_t[static 16],
+		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
+	void	(*ai_xts_dec)(const struct aesdec *, const uint8_t[static 16],
+		    uint8_t[static 16], size_t, uint8_t[static 16], uint32_t);
+};
+
+void	aes_md_init(const struct aes_impl *);
+
+int	aes_selftest(const struct aes_impl *);
+
+#endif	/* _CRYPTO_AES_AES_IMPL_H */

Reply via email to