[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 13/17] crypto/builtin: Move AES_cbc_encrypt into cipher-builtin.in
From: |
Daniel P . Berrangé |
Subject: |
[PULL 13/17] crypto/builtin: Move AES_cbc_encrypt into cipher-builtin.inc.c |
Date: |
Thu, 10 Sep 2020 11:06:19 +0100 |
From: Richard Henderson <richard.henderson@linaro.org>
By making the function private, we will be able to make further
simplifications. Re-indent the migrated code and fix the missing
braces for CODING_STYLE.
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
crypto/aes.c | 51 ---------------------------------
crypto/cipher-builtin.c.inc | 56 +++++++++++++++++++++++++++++++++++++
include/crypto/aes.h | 4 ---
3 files changed, 56 insertions(+), 55 deletions(-)
diff --git a/crypto/aes.c b/crypto/aes.c
index 0f6a195af8..159800df65 100644
--- a/crypto/aes.c
+++ b/crypto/aes.c
@@ -1599,54 +1599,3 @@ void AES_decrypt(const unsigned char *in, unsigned char
*out,
}
#endif /* AES_ASM */
-
-void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
- const unsigned long length, const AES_KEY *key,
- unsigned char *ivec, const int enc)
-{
-
- unsigned long n;
- unsigned long len = length;
- unsigned char tmp[AES_BLOCK_SIZE];
-
- assert(in && out && key && ivec);
-
- if (enc) {
- while (len >= AES_BLOCK_SIZE) {
- for(n=0; n < AES_BLOCK_SIZE; ++n)
- tmp[n] = in[n] ^ ivec[n];
- AES_encrypt(tmp, out, key);
- memcpy(ivec, out, AES_BLOCK_SIZE);
- len -= AES_BLOCK_SIZE;
- in += AES_BLOCK_SIZE;
- out += AES_BLOCK_SIZE;
- }
- if (len) {
- for(n=0; n < len; ++n)
- tmp[n] = in[n] ^ ivec[n];
- for(n=len; n < AES_BLOCK_SIZE; ++n)
- tmp[n] = ivec[n];
- AES_encrypt(tmp, tmp, key);
- memcpy(out, tmp, AES_BLOCK_SIZE);
- memcpy(ivec, tmp, AES_BLOCK_SIZE);
- }
- } else {
- while (len >= AES_BLOCK_SIZE) {
- memcpy(tmp, in, AES_BLOCK_SIZE);
- AES_decrypt(in, out, key);
- for(n=0; n < AES_BLOCK_SIZE; ++n)
- out[n] ^= ivec[n];
- memcpy(ivec, tmp, AES_BLOCK_SIZE);
- len -= AES_BLOCK_SIZE;
- in += AES_BLOCK_SIZE;
- out += AES_BLOCK_SIZE;
- }
- if (len) {
- memcpy(tmp, in, AES_BLOCK_SIZE);
- AES_decrypt(tmp, tmp, key);
- for(n=0; n < len; ++n)
- out[n] = tmp[n] ^ ivec[n];
- memcpy(ivec, tmp, AES_BLOCK_SIZE);
- }
- }
-}
diff --git a/crypto/cipher-builtin.c.inc b/crypto/cipher-builtin.c.inc
index 8e21f2673f..61baad265a 100644
--- a/crypto/cipher-builtin.c.inc
+++ b/crypto/cipher-builtin.c.inc
@@ -104,6 +104,62 @@ static void do_aes_decrypt_ecb(const void *vctx,
}
}
+static void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
+ const unsigned long length, const AES_KEY *key,
+ unsigned char *ivec, const int enc)
+{
+ unsigned long n;
+ unsigned long len = length;
+ unsigned char tmp[AES_BLOCK_SIZE];
+
+ assert(in && out && key && ivec);
+
+ if (enc) {
+ while (len >= AES_BLOCK_SIZE) {
+ for (n = 0; n < AES_BLOCK_SIZE; ++n) {
+ tmp[n] = in[n] ^ ivec[n];
+ }
+ AES_encrypt(tmp, out, key);
+ memcpy(ivec, out, AES_BLOCK_SIZE);
+ len -= AES_BLOCK_SIZE;
+ in += AES_BLOCK_SIZE;
+ out += AES_BLOCK_SIZE;
+ }
+ if (len) {
+ for (n = 0; n < len; ++n) {
+ tmp[n] = in[n] ^ ivec[n];
+ }
+ for (n = len; n < AES_BLOCK_SIZE; ++n) {
+ tmp[n] = ivec[n];
+ }
+ AES_encrypt(tmp, tmp, key);
+ memcpy(out, tmp, AES_BLOCK_SIZE);
+ memcpy(ivec, tmp, AES_BLOCK_SIZE);
+ }
+ } else {
+ while (len >= AES_BLOCK_SIZE) {
+ memcpy(tmp, in, AES_BLOCK_SIZE);
+ AES_decrypt(in, out, key);
+ for (n = 0; n < AES_BLOCK_SIZE; ++n) {
+ out[n] ^= ivec[n];
+ }
+ memcpy(ivec, tmp, AES_BLOCK_SIZE);
+ len -= AES_BLOCK_SIZE;
+ in += AES_BLOCK_SIZE;
+ out += AES_BLOCK_SIZE;
+ }
+ if (len) {
+ memcpy(tmp, in, AES_BLOCK_SIZE);
+ AES_decrypt(tmp, tmp, key);
+ for (n = 0; n < len; ++n) {
+ out[n] = tmp[n] ^ ivec[n];
+ }
+ memcpy(ivec, tmp, AES_BLOCK_SIZE);
+ }
+ }
+}
+
+
static int qcrypto_cipher_encrypt_aes(QCryptoCipher *cipher,
const void *in,
void *out,
diff --git a/include/crypto/aes.h b/include/crypto/aes.h
index 12fb321b89..ba297d6a73 100644
--- a/include/crypto/aes.h
+++ b/include/crypto/aes.h
@@ -16,7 +16,6 @@ typedef struct aes_key_st AES_KEY;
#define AES_set_decrypt_key QEMU_AES_set_decrypt_key
#define AES_encrypt QEMU_AES_encrypt
#define AES_decrypt QEMU_AES_decrypt
-#define AES_cbc_encrypt QEMU_AES_cbc_encrypt
int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
AES_KEY *key);
@@ -27,9 +26,6 @@ void AES_encrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
void AES_decrypt(const unsigned char *in, unsigned char *out,
const AES_KEY *key);
-void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
- const unsigned long length, const AES_KEY *key,
- unsigned char *ivec, const int enc);
extern const uint8_t AES_sbox[256];
extern const uint8_t AES_isbox[256];
--
2.26.2
- [PULL 03/17] crypto: Rename cipher include files to .c.inc, (continued)
- [PULL 03/17] crypto: Rename cipher include files to .c.inc, Daniel P . Berrangé, 2020/09/10
- [PULL 04/17] crypto: Remove redundant includes, Daniel P . Berrangé, 2020/09/10
- [PULL 05/17] crypto/nettle: Fix xts_encrypt arguments, Daniel P . Berrangé, 2020/09/10
- [PULL 06/17] crypto: Move QCryptoCipherDriver typedef to crypto/cipher.h, Daniel P . Berrangé, 2020/09/10
- [PULL 07/17] crypto: Use the correct const type for driver, Daniel P . Berrangé, 2020/09/10
- [PULL 08/17] crypto: Allocate QCryptoCipher with the subclass, Daniel P . Berrangé, 2020/09/10
- [PULL 09/17] crypto: Move cipher->driver init to qcrypto_*_cipher_ctx_new, Daniel P . Berrangé, 2020/09/10
- [PULL 11/17] crypto/builtin: Remove odd-sized AES block handling, Daniel P . Berrangé, 2020/09/10
- [PULL 12/17] crypto/builtin: Merge qcrypto_cipher_aes_{ecb, xts}_{en, de}crypt, Daniel P . Berrangé, 2020/09/10
- [PULL 10/17] crypto: Constify cipher data tables, Daniel P . Berrangé, 2020/09/10
- [PULL 13/17] crypto/builtin: Move AES_cbc_encrypt into cipher-builtin.inc.c,
Daniel P . Berrangé <=
- [PULL 14/17] crypto/builtin: Split and simplify AES_encrypt_cbc, Daniel P . Berrangé, 2020/09/10
- [PULL 15/17] crypto/builtin: Split QCryptoCipherBuiltin into subclasses, Daniel P . Berrangé, 2020/09/10
- [PULL 16/17] crypto/nettle: Split QCryptoCipherNettle into subclasses, Daniel P . Berrangé, 2020/09/10
- [PULL 17/17] crypto/gcrypt: Split QCryptoCipherGcrypt into subclasses, Daniel P . Berrangé, 2020/09/10
- Re: [PULL 00/17] Crypto next patches, Peter Maydell, 2020/09/12