svn commit: r336444 - head/sys/crypto/aesni

Conrad Meyer cem at FreeBSD.org
Wed Jul 18 04:43:19 UTC 2018


Author: cem
Date: Wed Jul 18 04:43:18 2018
New Revision: 336444
URL: https://svnweb.freebsd.org/changeset/base/336444

Log:
  aesni(4): Add SHA2-224(-HMAC) support as well

Modified:
  head/sys/crypto/aesni/aesni.c

Modified: head/sys/crypto/aesni/aesni.c
==============================================================================
--- head/sys/crypto/aesni/aesni.c	Wed Jul 18 04:37:14 2018	(r336443)
+++ head/sys/crypto/aesni/aesni.c	Wed Jul 18 04:43:18 2018	(r336444)
@@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$");
 #include <crypto/aesni/aesni.h>
 #include <crypto/aesni/sha_sse.h>
 #include <crypto/sha1.h>
+#include <crypto/sha2/sha224.h>
 #include <crypto/sha2/sha256.h>
 
 #include <opencrypto/cryptodev.h>
@@ -196,6 +197,8 @@ aesni_attach(device_t dev)
 	if (sc->has_sha) {
 		crypto_register(sc->cid, CRYPTO_SHA1, 0, 0);
 		crypto_register(sc->cid, CRYPTO_SHA1_HMAC, 0, 0);
+		crypto_register(sc->cid, CRYPTO_SHA2_224, 0, 0);
+		crypto_register(sc->cid, CRYPTO_SHA2_224_HMAC, 0, 0);
 		crypto_register(sc->cid, CRYPTO_SHA2_256, 0, 0);
 		crypto_register(sc->cid, CRYPTO_SHA2_256_HMAC, 0, 0);
 	}
@@ -266,6 +269,8 @@ aesni_newsession(device_t dev, crypto_session_t cses, 
 			break;
 		case CRYPTO_SHA1:
 		case CRYPTO_SHA1_HMAC:
+		case CRYPTO_SHA2_224:
+		case CRYPTO_SHA2_224_HMAC:
 		case CRYPTO_SHA2_256:
 		case CRYPTO_SHA2_256_HMAC:
 			if (!sc->has_sha)
@@ -352,6 +357,8 @@ aesni_process(device_t dev, struct cryptop *crp, int h
 		case CRYPTO_AES_256_NIST_GMAC:
 		case CRYPTO_SHA1:
 		case CRYPTO_SHA1_HMAC:
+		case CRYPTO_SHA2_224:
+		case CRYPTO_SHA2_224_HMAC:
 		case CRYPTO_SHA2_256:
 		case CRYPTO_SHA2_256_HMAC:
 			if (authcrd != NULL) {
@@ -480,6 +487,8 @@ aesni_cipher_setup(struct aesni_session *ses, struct c
 	switch (ses->auth_algo) {
 	case CRYPTO_SHA1:
 	case CRYPTO_SHA1_HMAC:
+	case CRYPTO_SHA2_224:
+	case CRYPTO_SHA2_224_HMAC:
 	case CRYPTO_SHA2_256:
 	case CRYPTO_SHA2_256_HMAC:
 		error = aesni_authprepare(ses, authini->cri_klen,
@@ -600,6 +609,18 @@ intel_sha256_update(void *vctx, const void *vdata, u_i
 }
 
 static void
+SHA224_Init_fn(void *ctx)
+{
+	SHA224_Init(ctx);
+}
+
+static void
+SHA224_Finalize_fn(void *digest, void *ctx)
+{
+	SHA224_Final(digest, ctx);
+}
+
+static void
 SHA256_Init_fn(void *ctx)
 {
 	SHA256_Init(ctx);
@@ -868,6 +889,17 @@ aesni_cipher_mac(struct aesni_session *ses, struct cry
 		InitFn = SHA256_Init_fn;
 		UpdateFn = intel_sha256_update;
 		FinalizeFn = SHA256_Finalize_fn;
+		ctx = &sctx.sha2;
+		break;
+
+	case CRYPTO_SHA2_224_HMAC:
+		hmac = true;
+		/* FALLTHROUGH */
+	case CRYPTO_SHA2_224:
+		hashlen = SHA2_224_HASH_LEN;
+		InitFn = SHA224_Init_fn;
+		UpdateFn = intel_sha256_update;
+		FinalizeFn = SHA224_Finalize_fn;
 		ctx = &sctx.sha2;
 		break;
 	default:


More information about the svn-src-all mailing list