summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/evp/e_aes.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/evp/e_aes.c')
-rw-r--r--src/lib/libcrypto/evp/e_aes.c83
1 files changed, 1 insertions, 82 deletions
diff --git a/src/lib/libcrypto/evp/e_aes.c b/src/lib/libcrypto/evp/e_aes.c
index 0949c8bdb4..005f1c49b2 100644
--- a/src/lib/libcrypto/evp/e_aes.c
+++ b/src/lib/libcrypto/evp/e_aes.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: e_aes.c,v 1.80 2025/07/21 10:24:23 jsing Exp $ */ 1/* $OpenBSD: e_aes.c,v 1.81 2025/07/22 09:13:49 jsing Exp $ */
2/* ==================================================================== 2/* ====================================================================
3 * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved. 3 * Copyright (c) 2001-2011 The OpenSSL Project. All rights reserved.
4 * 4 *
@@ -99,36 +99,6 @@ typedef struct {
99 99
100#define MAXBITCHUNK ((size_t)1<<(sizeof(size_t)*8-4)) 100#define MAXBITCHUNK ((size_t)1<<(sizeof(size_t)*8-4))
101 101
102#if defined(AES_ASM) && ( \
103 ((defined(__i386) || defined(__i386__) || \
104 defined(_M_IX86)))|| \
105 defined(__x86_64) || defined(__x86_64__) || \
106 defined(_M_AMD64) || defined(_M_X64) || \
107 defined(__INTEL__) )
108
109#include "x86_arch.h"
110
111/*
112 * AES-NI section
113 */
114#define AESNI_CAPABLE (crypto_cpu_caps_ia32() & CPUCAP_MASK_AESNI)
115
116void aesni_ecb_encrypt(const unsigned char *in, unsigned char *out,
117 size_t length, const AES_KEY *key, int enc);
118
119static int
120aesni_ecb_cipher(EVP_CIPHER_CTX *ctx, unsigned char *out,
121 const unsigned char *in, size_t len)
122{
123 if (len < ctx->cipher->block_size)
124 return 1;
125
126 aesni_ecb_encrypt(in, out, len, ctx->cipher_data, ctx->encrypt);
127
128 return 1;
129}
130#endif
131
132static int 102static int
133aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key, 103aes_init_key(EVP_CIPHER_CTX *ctx, const unsigned char *key,
134 const unsigned char *iv, int enc) 104 const unsigned char *iv, int enc)
@@ -301,19 +271,6 @@ EVP_aes_128_cbc(void)
301} 271}
302LCRYPTO_ALIAS(EVP_aes_128_cbc); 272LCRYPTO_ALIAS(EVP_aes_128_cbc);
303 273
304#ifdef AESNI_CAPABLE
305static const EVP_CIPHER aesni_128_ecb = {
306 .nid = NID_aes_128_ecb,
307 .block_size = 16,
308 .key_len = 16,
309 .iv_len = 0,
310 .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE,
311 .init = aes_ecb_init_key,
312 .do_cipher = aesni_ecb_cipher,
313 .ctx_size = sizeof(EVP_AES_KEY),
314};
315#endif
316
317static const EVP_CIPHER aes_128_ecb = { 274static const EVP_CIPHER aes_128_ecb = {
318 .nid = NID_aes_128_ecb, 275 .nid = NID_aes_128_ecb,
319 .block_size = 16, 276 .block_size = 16,
@@ -328,11 +285,7 @@ static const EVP_CIPHER aes_128_ecb = {
328const EVP_CIPHER * 285const EVP_CIPHER *
329EVP_aes_128_ecb(void) 286EVP_aes_128_ecb(void)
330{ 287{
331#ifdef AESNI_CAPABLE
332 return AESNI_CAPABLE ? &aesni_128_ecb : &aes_128_ecb;
333#else
334 return &aes_128_ecb; 288 return &aes_128_ecb;
335#endif
336} 289}
337LCRYPTO_ALIAS(EVP_aes_128_ecb); 290LCRYPTO_ALIAS(EVP_aes_128_ecb);
338 291
@@ -444,19 +397,6 @@ EVP_aes_192_cbc(void)
444} 397}
445LCRYPTO_ALIAS(EVP_aes_192_cbc); 398LCRYPTO_ALIAS(EVP_aes_192_cbc);
446 399
447#ifdef AESNI_CAPABLE
448static const EVP_CIPHER aesni_192_ecb = {
449 .nid = NID_aes_192_ecb,
450 .block_size = 16,
451 .key_len = 24,
452 .iv_len = 0,
453 .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE,
454 .init = aes_ecb_init_key,
455 .do_cipher = aesni_ecb_cipher,
456 .ctx_size = sizeof(EVP_AES_KEY),
457};
458#endif
459
460static const EVP_CIPHER aes_192_ecb = { 400static const EVP_CIPHER aes_192_ecb = {
461 .nid = NID_aes_192_ecb, 401 .nid = NID_aes_192_ecb,
462 .block_size = 16, 402 .block_size = 16,
@@ -471,11 +411,7 @@ static const EVP_CIPHER aes_192_ecb = {
471const EVP_CIPHER * 411const EVP_CIPHER *
472EVP_aes_192_ecb(void) 412EVP_aes_192_ecb(void)
473{ 413{
474#ifdef AESNI_CAPABLE
475 return AESNI_CAPABLE ? &aesni_192_ecb : &aes_192_ecb;
476#else
477 return &aes_192_ecb; 414 return &aes_192_ecb;
478#endif
479} 415}
480LCRYPTO_ALIAS(EVP_aes_192_ecb); 416LCRYPTO_ALIAS(EVP_aes_192_ecb);
481 417
@@ -587,19 +523,6 @@ EVP_aes_256_cbc(void)
587} 523}
588LCRYPTO_ALIAS(EVP_aes_256_cbc); 524LCRYPTO_ALIAS(EVP_aes_256_cbc);
589 525
590#ifdef AESNI_CAPABLE
591static const EVP_CIPHER aesni_256_ecb = {
592 .nid = NID_aes_256_ecb,
593 .block_size = 16,
594 .key_len = 32,
595 .iv_len = 0,
596 .flags = EVP_CIPH_FLAG_DEFAULT_ASN1 | EVP_CIPH_ECB_MODE,
597 .init = aes_ecb_init_key,
598 .do_cipher = aesni_ecb_cipher,
599 .ctx_size = sizeof(EVP_AES_KEY),
600};
601#endif
602
603static const EVP_CIPHER aes_256_ecb = { 526static const EVP_CIPHER aes_256_ecb = {
604 .nid = NID_aes_256_ecb, 527 .nid = NID_aes_256_ecb,
605 .block_size = 16, 528 .block_size = 16,
@@ -614,11 +537,7 @@ static const EVP_CIPHER aes_256_ecb = {
614const EVP_CIPHER * 537const EVP_CIPHER *
615EVP_aes_256_ecb(void) 538EVP_aes_256_ecb(void)
616{ 539{
617#ifdef AESNI_CAPABLE
618 return AESNI_CAPABLE ? &aesni_256_ecb : &aes_256_ecb;
619#else
620 return &aes_256_ecb; 540 return &aes_256_ecb;
621#endif
622} 541}
623LCRYPTO_ALIAS(EVP_aes_256_ecb); 542LCRYPTO_ALIAS(EVP_aes_256_ecb);
624 543