Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/uvm uvm(9): Switch from legacy rijndael API to new aes API.



details:   https://anonhg.NetBSD.org/src/rev/b2b1768a550a
branches:  trunk
changeset: 1011427:b2b1768a550a
user:      riastradh <riastradh%NetBSD.org@localhost>
date:      Mon Jun 29 23:33:46 2020 +0000

description:
uvm(9): Switch from legacy rijndael API to new aes API.

diffstat:

 sys/uvm/files.uvm  |   4 ++--
 sys/uvm/uvm_swap.c |  47 +++++++++++++----------------------------------
 2 files changed, 15 insertions(+), 36 deletions(-)

diffs (130 lines):

diff -r 450f952263f8 -r b2b1768a550a sys/uvm/files.uvm
--- a/sys/uvm/files.uvm Mon Jun 29 23:33:05 2020 +0000
+++ b/sys/uvm/files.uvm Mon Jun 29 23:33:46 2020 +0000
@@ -1,4 +1,4 @@
-#      $NetBSD: files.uvm,v 1.34 2020/05/10 22:28:09 pgoyette Exp $
+#      $NetBSD: files.uvm,v 1.35 2020/06/29 23:33:46 riastradh Exp $
 
 #
 # UVM options
@@ -8,7 +8,7 @@
 defparam opt_uvmhist.h         UVMHIST_MAPHIST_SIZE UVMHIST_PDHIST_SIZE
 defflag opt_uvm.h              USE_TOPDOWN_VM UVMMAP_COUNTERS
 defparam opt_uvm.h             UVM_RESERVED_PAGES_PER_CPU
-defflag opt_vmswap.h           VMSWAP : rijndael
+defflag opt_vmswap.h           VMSWAP : aes
 defflag opt_readahead.h                READAHEAD_STATS
 defflag opt_ubc.h              UBC_STATS
 defparam opt_pagermap.h                PAGER_MAP_SIZE
diff -r 450f952263f8 -r b2b1768a550a sys/uvm/uvm_swap.c
--- a/sys/uvm/uvm_swap.c        Mon Jun 29 23:33:05 2020 +0000
+++ b/sys/uvm/uvm_swap.c        Mon Jun 29 23:33:46 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: uvm_swap.c,v 1.193 2020/05/24 14:11:49 jdolecek Exp $  */
+/*     $NetBSD: uvm_swap.c,v 1.194 2020/06/29 23:33:46 riastradh Exp $ */
 
 /*
  * Copyright (c) 1995, 1996, 1997, 2009 Matthew R. Green
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.193 2020/05/24 14:11:49 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_swap.c,v 1.194 2020/06/29 23:33:46 riastradh Exp $");
 
 #include "opt_uvmhist.h"
 #include "opt_compat_netbsd.h"
@@ -65,7 +65,7 @@
 
 #include <miscfs/specfs/specdev.h>
 
-#include <crypto/rijndael/rijndael-api-fst.h>
+#include <crypto/aes/aes.h>
 
 /*
  * uvm_swap.c: manage configuration and i/o to swap space.
@@ -148,8 +148,8 @@
        int                     swd_active;     /* number of active buffers */
 
        volatile uint32_t       *swd_encmap;    /* bitmap of encrypted slots */
-       keyInstance             swd_enckey;     /* AES key expanded for enc */
-       keyInstance             swd_deckey;     /* AES key expanded for dec */
+       struct aesenc           swd_enckey;     /* AES key expanded for enc */
+       struct aesdec           swd_deckey;     /* AES key expanded for dec */
        bool                    swd_encinit;    /* true if keys initialized */
 };
 
@@ -2073,8 +2073,8 @@
        KASSERT(!sdp->swd_encinit);
 
        cprng_strong(kern_cprng, key, sizeof key, 0);
-       rijndael_makeKey(&sdp->swd_enckey, DIR_ENCRYPT, 256, key);
-       rijndael_makeKey(&sdp->swd_deckey, DIR_DECRYPT, 256, key);
+       aes_setenckey256(&sdp->swd_enckey, key);
+       aes_setdeckey256(&sdp->swd_deckey, key);
        explicit_memset(key, 0, sizeof key);
 
        sdp->swd_encinit = true;
@@ -2089,27 +2089,17 @@
 static void
 uvm_swap_encryptpage(struct swapdev *sdp, void *kva, int slot)
 {
-       cipherInstance aes;
        uint8_t preiv[16] = {0}, iv[16];
-       int ok __diagused, nbits __diagused;
 
        /* iv := AES_k(le32enc(slot) || 0^96) */
        le32enc(preiv, slot);
-       ok = rijndael_cipherInit(&aes, MODE_ECB, NULL);
-       KASSERT(ok);
-       nbits = rijndael_blockEncrypt(&aes, &sdp->swd_enckey, preiv,
-           /*length in bits*/128, iv);
-       KASSERT(nbits == 128);
+       aes_enc(&sdp->swd_enckey, (const void *)preiv, iv, AES_256_NROUNDS);
 
        /* *kva := AES-CBC_k(iv, *kva) */
-       ok = rijndael_cipherInit(&aes, MODE_CBC, iv);
-       KASSERT(ok);
-       nbits = rijndael_blockEncrypt(&aes, &sdp->swd_enckey, kva,
-           /*length in bits*/PAGE_SIZE*NBBY, kva);
-       KASSERT(nbits == PAGE_SIZE*NBBY);
+       aes_cbc_enc(&sdp->swd_enckey, kva, kva, PAGE_SIZE, iv,
+           AES_256_NROUNDS);
 
        explicit_memset(&iv, 0, sizeof iv);
-       explicit_memset(&aes, 0, sizeof aes);
 }
 
 /*
@@ -2121,28 +2111,17 @@
 static void
 uvm_swap_decryptpage(struct swapdev *sdp, void *kva, int slot)
 {
-       cipherInstance aes;
        uint8_t preiv[16] = {0}, iv[16];
-       int ok __diagused, nbits __diagused;
 
        /* iv := AES_k(le32enc(slot) || 0^96) */
        le32enc(preiv, slot);
-       ok = rijndael_cipherInit(&aes, MODE_ECB, NULL);
-       KASSERT(ok);
-       nbits = rijndael_blockEncrypt(&aes, &sdp->swd_enckey, preiv,
-           /*length in bits*/128, iv);
-       KASSERTMSG(nbits == 128, "nbits=%d expected %d\n", nbits, 128);
+       aes_enc(&sdp->swd_enckey, (const void *)preiv, iv, AES_256_NROUNDS);
 
        /* *kva := AES-CBC^{-1}_k(iv, *kva) */
-       ok = rijndael_cipherInit(&aes, MODE_CBC, iv);
-       KASSERT(ok);
-       nbits = rijndael_blockDecrypt(&aes, &sdp->swd_deckey, kva,
-           /*length in bits*/PAGE_SIZE*NBBY, kva);
-       KASSERTMSG(nbits == PAGE_SIZE*NBBY,
-           "nbits=%d expected %d\n", nbits, PAGE_SIZE*NBBY);
+       aes_cbc_dec(&sdp->swd_deckey, kva, kva, PAGE_SIZE, iv,
+           AES_256_NROUNDS);
 
        explicit_memset(&iv, 0, sizeof iv);
-       explicit_memset(&aes, 0, sizeof aes);
 }
 
 SYSCTL_SETUP(sysctl_uvmswap_setup, "sysctl uvmswap setup")



Home | Main Index | Thread Index | Old Index