summaryrefslogtreecommitdiff
path: root/lib/accelerated/x86/aes-gcm-x86-aesni.c
diff options
context:
space:
mode:
authorDmitry Baryshkov <dbaryshkov@gmail.com>2020-05-27 00:34:02 +0300
committerDmitry Baryshkov <dbaryshkov@gmail.com>2020-05-27 00:36:00 +0300
commit2e0f47858fd85dbb4ffa1cd0c741b3b1ff7203fe (patch)
treeef0ffd3cbeb42eb81101e33bd164db878b728e3a /lib/accelerated/x86/aes-gcm-x86-aesni.c
parent12080aa26a8d963acdfa3aa1b8b444f5f58af6bd (diff)
downloadgnutls-2e0f47858fd85dbb4ffa1cd0c741b3b1ff7203fe.tar.gz
lib: add support for AES-192-GCM
Add support for AES-192 in GCM mode. Signed-off-by: Dmitry Baryshkov <dbaryshkov@gmail.com>
Diffstat (limited to 'lib/accelerated/x86/aes-gcm-x86-aesni.c')
-rw-r--r--lib/accelerated/x86/aes-gcm-x86-aesni.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/accelerated/x86/aes-gcm-x86-aesni.c b/lib/accelerated/x86/aes-gcm-x86-aesni.c
index e5110ef528..6c1bb1f6fd 100644
--- a/lib/accelerated/x86/aes-gcm-x86-aesni.c
+++ b/lib/accelerated/x86/aes-gcm-x86-aesni.c
@@ -60,6 +60,14 @@ static void x86_aes128_set_encrypt_key(void *_ctx,
aesni_set_encrypt_key(key, 16*8, ctx);
}
+static void x86_aes192_set_encrypt_key(void *_ctx,
+ const uint8_t * key)
+{
+ AES_KEY *ctx = _ctx;
+
+ aesni_set_encrypt_key(key, 24*8, ctx);
+}
+
static void x86_aes256_set_encrypt_key(void *_ctx,
const uint8_t * key)
{
@@ -74,6 +82,7 @@ aes_gcm_cipher_init(gnutls_cipher_algorithm_t algorithm, void **_ctx,
{
/* we use key size to distinguish */
if (algorithm != GNUTLS_CIPHER_AES_128_GCM &&
+ algorithm != GNUTLS_CIPHER_AES_192_GCM &&
algorithm != GNUTLS_CIPHER_AES_256_GCM)
return GNUTLS_E_INVALID_REQUEST;
@@ -94,6 +103,9 @@ aes_gcm_cipher_setkey(void *_ctx, const void *key, size_t length)
if (length == 16) {
GCM_SET_KEY(ctx, x86_aes128_set_encrypt_key, x86_aes_encrypt,
key);
+ } else if (length == 24) {
+ GCM_SET_KEY(ctx, x86_aes192_set_encrypt_key, x86_aes_encrypt,
+ key);
} else if (length == 32) {
GCM_SET_KEY(ctx, x86_aes256_set_encrypt_key, x86_aes_encrypt,
key);