Message ID | 20200813032537.2888593-14-richard.henderson@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | crypto/cipher: Class hierarchy cleanups | expand |
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, >
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 -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
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,
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(-) -- 2.25.1