diff options
Diffstat (limited to 'src/lib/libcrypto/aes/aes_i386.c')
-rw-r--r-- | src/lib/libcrypto/aes/aes_i386.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/lib/libcrypto/aes/aes_i386.c b/src/lib/libcrypto/aes/aes_i386.c index 7f2241eaf5..85a14454da 100644 --- a/src/lib/libcrypto/aes/aes_i386.c +++ b/src/lib/libcrypto/aes/aes_i386.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: aes_i386.c,v 1.4 2025/07/21 10:24:23 jsing Exp $ */ | 1 | /* $OpenBSD: aes_i386.c,v 1.5 2025/07/22 09:13:49 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2025 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2025 Joel Sing <jsing@openbsd.org> |
4 | * | 4 | * |
@@ -68,6 +68,9 @@ void aesni_ccm64_decrypt_blocks(const unsigned char *in, unsigned char *out, | |||
68 | void aesni_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, | 68 | void aesni_ctr32_encrypt_blocks(const unsigned char *in, unsigned char *out, |
69 | size_t blocks, const void *key, const unsigned char *ivec); | 69 | size_t blocks, const void *key, const unsigned char *ivec); |
70 | 70 | ||
71 | void aesni_ecb_encrypt(const unsigned char *in, unsigned char *out, | ||
72 | size_t length, const AES_KEY *key, int enc); | ||
73 | |||
71 | void aesni_xts_encrypt(const unsigned char *in, unsigned char *out, | 74 | void aesni_xts_encrypt(const unsigned char *in, unsigned char *out, |
72 | size_t length, const AES_KEY *key1, const AES_KEY *key2, | 75 | size_t length, const AES_KEY *key1, const AES_KEY *key2, |
73 | const unsigned char iv[16]); | 76 | const unsigned char iv[16]); |
@@ -161,6 +164,27 @@ aes_ctr32_encrypt_internal(const unsigned char *in, unsigned char *out, | |||
161 | } | 164 | } |
162 | 165 | ||
163 | void | 166 | void |
167 | aes_ecb_encrypt_internal(const unsigned char *in, unsigned char *out, | ||
168 | size_t len, const AES_KEY *key, int encrypt) | ||
169 | { | ||
170 | if ((crypto_cpu_caps_i386 & CRYPTO_CPU_CAPS_I386_AES) != 0) { | ||
171 | aesni_ecb_encrypt(in, out, len, key, encrypt); | ||
172 | return; | ||
173 | } | ||
174 | |||
175 | while (len >= AES_BLOCK_SIZE) { | ||
176 | if (encrypt) | ||
177 | aes_encrypt_generic(in, out, key); | ||
178 | else | ||
179 | aes_decrypt_generic(in, out, key); | ||
180 | |||
181 | in += AES_BLOCK_SIZE; | ||
182 | out += AES_BLOCK_SIZE; | ||
183 | len -= AES_BLOCK_SIZE; | ||
184 | } | ||
185 | } | ||
186 | |||
187 | void | ||
164 | aes_xts_encrypt_internal(const unsigned char *in, unsigned char *out, | 188 | aes_xts_encrypt_internal(const unsigned char *in, unsigned char *out, |
165 | size_t len, const AES_KEY *key1, const AES_KEY *key2, | 189 | size_t len, const AES_KEY *key1, const AES_KEY *key2, |
166 | const unsigned char iv[16], int encrypt) | 190 | const unsigned char iv[16], int encrypt) |