diff mbox series

[13/17] crypto/builtin: Move AES_cbc_encrypt into cipher-builtin.inc.c

Message ID 20200813032537.2888593-14-richard.henderson@linaro.org
State New
Headers show
Series crypto/cipher: Class hierarchy cleanups | expand

Commit Message

Richard Henderson Aug. 13, 2020, 3:25 a.m. UTC
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.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 include/crypto/aes.h        |  4 ---
 crypto/aes.c                | 51 ---------------------------------
 crypto/cipher-builtin.inc.c | 56 +++++++++++++++++++++++++++++++++++++
 3 files changed, 56 insertions(+), 55 deletions(-)

Comments

Philippe Mathieu-Daudé Aug. 13, 2020, 8:11 a.m. UTC | #1
On 8/13/20 5:25 AM, Richard Henderson wrote:
> 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.

Patch easier to review using 'git-diff --color-moved=dimmed-zebra
--color-moved-ws=allow-indentation-change'.

Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  include/crypto/aes.h        |  4 ---
>  crypto/aes.c                | 51 ---------------------------------
>  crypto/cipher-builtin.inc.c | 56 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 56 insertions(+), 55 deletions(-)
> 
> 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];
> 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.inc.c b/crypto/cipher-builtin.inc.c
> index 4d971a2b82..416d44b38e 100644
> --- a/crypto/cipher-builtin.inc.c
> +++ b/crypto/cipher-builtin.inc.c
> @@ -100,6 +100,62 @@ static void do_aes_decrypt_ecb(const void *vctx, size_t len,
>      }
>  }
>  
> +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,
>
Daniel P. Berrangé Aug. 17, 2020, 5:01 p.m. UTC | #2
On Wed, Aug 12, 2020 at 08:25:33PM -0700, Richard Henderson wrote:
> 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.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>  include/crypto/aes.h        |  4 ---
>  crypto/aes.c                | 51 ---------------------------------
>  crypto/cipher-builtin.inc.c | 56 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 56 insertions(+), 55 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Regards,
Daniel
diff mbox series

Patch

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];
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.inc.c b/crypto/cipher-builtin.inc.c
index 4d971a2b82..416d44b38e 100644
--- a/crypto/cipher-builtin.inc.c
+++ b/crypto/cipher-builtin.inc.c
@@ -100,6 +100,62 @@  static void do_aes_decrypt_ecb(const void *vctx, size_t len,
     }
 }
 
+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,