On Mon, Apr 24, 2017 at 04:39 +0200, Mike Belopuhov wrote: > AES_Setkey takes key length in bytes rather than bits which makes > it a bit simpler. >
The diff below will have to go right after since glxsb depends on xform.c to do AES-192 and AES-256... >From 25a725a4440bdac11a4860af59dae4f705a76b7b Mon Sep 17 00:00:00 2001 From: Mike Belopuhov <m...@belopuhov.com> Date: Sun, 9 Apr 2017 23:33:50 +0200 Subject: [PATCH] Switch glxsb(4), VIA padlock and AES-NI drivers over to the new AES --- sys/arch/amd64/amd64/aesni.c | 2 +- sys/arch/amd64/amd64/via.c | 6 +++--- sys/arch/i386/i386/via.c | 6 +++--- sys/arch/i386/pci/glxsb.c | 4 ++-- sys/crypto/aes.h | 2 ++ 5 files changed, 11 insertions(+), 9 deletions(-) diff --git sys/arch/amd64/amd64/aesni.c sys/arch/amd64/amd64/aesni.c index c7cb918184e..cd09198246f 100644 --- sys/arch/amd64/amd64/aesni.c +++ sys/arch/amd64/amd64/aesni.c @@ -26,11 +26,11 @@ #include <sys/malloc.h> #include <sys/pool.h> #include <sys/mbuf.h> #include <crypto/cryptodev.h> -#include <crypto/rijndael.h> +#include <crypto/aes.h> #include <crypto/gmac.h> #include <crypto/xform.h> #include <crypto/cryptosoft.h> #include <machine/fpu.h> diff --git sys/arch/amd64/amd64/via.c sys/arch/amd64/amd64/via.c index 2e43f1eaf78..e99944c9bdd 100644 --- sys/arch/amd64/amd64/via.c +++ sys/arch/amd64/amd64/via.c @@ -34,11 +34,11 @@ #include <sys/extent.h> #include <sys/sysctl.h> #ifdef CRYPTO #include <crypto/cryptodev.h> -#include <crypto/rijndael.h> +#include <crypto/aes.h> #include <crypto/xform.h> #include <crypto/cryptosoft.h> #endif #include <uvm/uvm_extern.h> @@ -192,13 +192,13 @@ viac3_crypto_newsession(u_int32_t *sidp, struct cryptoini *cri) ses->ses_klen = c->cri_klen; ses->ses_cw0 = cw0; /* Build expanded keys for both directions */ - rijndaelKeySetupEnc(ses->ses_ekey, c->cri_key, + AES_KeySetup_Encrypt(ses->ses_ekey, c->cri_key, c->cri_klen); - rijndaelKeySetupDec(ses->ses_dkey, c->cri_key, + AES_KeySetup_Decrypt(ses->ses_dkey, c->cri_key, c->cri_klen); for (i = 0; i < 4 * (AES_MAXROUNDS + 1); i++) { ses->ses_ekey[i] = ntohl(ses->ses_ekey[i]); ses->ses_dkey[i] = ntohl(ses->ses_dkey[i]); } diff --git sys/arch/i386/i386/via.c sys/arch/i386/i386/via.c index 7ea3d357aa0..27fdd908af8 100644 --- sys/arch/i386/i386/via.c +++ sys/arch/i386/i386/via.c @@ -34,11 +34,11 @@ #include <sys/extent.h> #include <sys/sysctl.h> #ifdef CRYPTO #include <crypto/cryptodev.h> -#include <crypto/rijndael.h> +#include <crypto/aes.h> #include <crypto/xform.h> #include <crypto/cryptosoft.h> #endif #include <uvm/uvm_extern.h> @@ -195,13 +195,13 @@ viac3_crypto_newsession(u_int32_t *sidp, struct cryptoini *cri) ses->ses_klen = c->cri_klen; ses->ses_cw0 = cw0; /* Build expanded keys for both directions */ - rijndaelKeySetupEnc(ses->ses_ekey, c->cri_key, + AES_KeySetup_Encrypt(ses->ses_ekey, c->cri_key, c->cri_klen); - rijndaelKeySetupDec(ses->ses_dkey, c->cri_key, + AES_KeySetup_Decrypt(ses->ses_dkey, c->cri_key, c->cri_klen); for (i = 0; i < 4 * (AES_MAXROUNDS + 1); i++) { ses->ses_ekey[i] = ntohl(ses->ses_ekey[i]); ses->ses_dkey[i] = ntohl(ses->ses_dkey[i]); } diff --git sys/arch/i386/pci/glxsb.c sys/arch/i386/pci/glxsb.c index c88088dfac6..86d2f8e9120 100644 --- sys/arch/i386/pci/glxsb.c +++ sys/arch/i386/pci/glxsb.c @@ -38,11 +38,11 @@ #include <dev/pci/pcivar.h> #include <dev/pci/pcidevs.h> #ifdef CRYPTO #include <crypto/cryptodev.h> -#include <crypto/rijndael.h> +#include <crypto/aes.h> #include <crypto/xform.h> #include <crypto/cryptosoft.h> #endif #define SB_GLD_MSR_CAP 0x58002000 /* RO - Capabilities */ @@ -404,11 +404,11 @@ glxsb_crypto_newsession(uint32_t *sidp, struct cryptoini *cri) if (swd == NULL) { glxsb_crypto_freesession(sesn); return (ENOMEM); } ses->ses_swd_enc = swd; - txf = &enc_xform_rijndael128; + txf = &enc_xform_aes; if (txf->ctxsize > 0) { swd->sw_kschedule = malloc(txf->ctxsize, M_CRYPTO_DATA, M_NOWAIT|M_ZERO); diff --git sys/crypto/aes.h sys/crypto/aes.h index f3885c773ef..a670a2b522c 100644 --- sys/crypto/aes.h +++ sys/crypto/aes.h @@ -24,10 +24,12 @@ */ #ifndef _AES_H_ #define _AES_H_ +#define AES_MAXROUNDS (14) + typedef struct aes_ctx { uint32_t sk[60]; uint32_t sk_exp[120]; unsigned num_rounds; -- 2.12.2