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

Reply via email to