Message ID | 20200813032537.2888593-13-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: > There's no real reason we need two separate helper functions here. > Standardize on the function signature required for xts_encrypt. > Rename to do_aes_{en,de}crypt_ecb, since the helper does not > itself do anything with respect to xts. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > crypto/cipher-builtin.inc.c | 69 ++++++++++--------------------------- > 1 file changed, 18 insertions(+), 51 deletions(-) Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
On Wed, Aug 12, 2020 at 08:25:32PM -0700, Richard Henderson wrote: > There's no real reason we need two separate helper functions here. > Standardize on the function signature required for xts_encrypt. > Rename to do_aes_{en,de}crypt_ecb, since the helper does not > itself do anything with respect to xts. > > Signed-off-by: Richard Henderson <richard.henderson@linaro.org> > --- > crypto/cipher-builtin.inc.c | 69 ++++++++++--------------------------- > 1 file changed, 18 insertions(+), 51 deletions(-) > > diff --git a/crypto/cipher-builtin.inc.c b/crypto/cipher-builtin.inc.c > index e2ae5d090c..4d971a2b82 100644 > --- a/crypto/cipher-builtin.inc.c > +++ b/crypto/cipher-builtin.inc.c > @@ -72,65 +72,34 @@ static void qcrypto_cipher_free_aes(QCryptoCipher *cipher) > g_free(cipher); > } > > - > -static void qcrypto_cipher_aes_ecb_encrypt(const AES_KEY *key, > - const void *in, > - void *out, > - size_t len) > +static void do_aes_encrypt_ecb(const void *vctx, size_t len, > + uint8_t *out, const uint8_t *in) nitpick - stick with the 1-arg-per-line style, instead of packing args. > { > - const uint8_t *inptr = in; > - uint8_t *outptr = out; > + const QCryptoCipherBuiltinAESContext *ctx = vctx; > > /* We have already verified that len % AES_BLOCK_SIZE == 0. */ > while (len) { > - AES_encrypt(inptr, outptr, key); > - inptr += AES_BLOCK_SIZE; > - outptr += AES_BLOCK_SIZE; > + AES_encrypt(in, out, &ctx->enc); > + in += AES_BLOCK_SIZE; > + out += AES_BLOCK_SIZE; > len -= AES_BLOCK_SIZE; > } > } > > - > -static void qcrypto_cipher_aes_ecb_decrypt(const AES_KEY *key, > - const void *in, > - void *out, > - size_t len) > +static void do_aes_decrypt_ecb(const void *vctx, size_t len, > + uint8_t *out, const uint8_t *in) > { > - const uint8_t *inptr = in; > - uint8_t *outptr = out; > + const QCryptoCipherBuiltinAESContext *ctx = vctx; > > /* We have already verified that len % AES_BLOCK_SIZE == 0. */ > while (len) { > - AES_decrypt(inptr, outptr, key); > - inptr += AES_BLOCK_SIZE; > - outptr += AES_BLOCK_SIZE; > + AES_decrypt(in, out, &ctx->dec); > + in += AES_BLOCK_SIZE; > + out += AES_BLOCK_SIZE; > len -= AES_BLOCK_SIZE; > } > } > > - > -static void qcrypto_cipher_aes_xts_encrypt(const void *ctx, > - size_t length, > - uint8_t *dst, > - const uint8_t *src) > -{ > - const QCryptoCipherBuiltinAESContext *aesctx = ctx; > - > - qcrypto_cipher_aes_ecb_encrypt(&aesctx->enc, src, dst, length); > -} > - > - > -static void qcrypto_cipher_aes_xts_decrypt(const void *ctx, > - size_t length, > - uint8_t *dst, > - const uint8_t *src) > -{ > - const QCryptoCipherBuiltinAESContext *aesctx = ctx; > - > - qcrypto_cipher_aes_ecb_decrypt(&aesctx->dec, src, dst, length); > -} > - > - 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/crypto/cipher-builtin.inc.c b/crypto/cipher-builtin.inc.c index e2ae5d090c..4d971a2b82 100644 --- a/crypto/cipher-builtin.inc.c +++ b/crypto/cipher-builtin.inc.c @@ -72,65 +72,34 @@ static void qcrypto_cipher_free_aes(QCryptoCipher *cipher) g_free(cipher); } - -static void qcrypto_cipher_aes_ecb_encrypt(const AES_KEY *key, - const void *in, - void *out, - size_t len) +static void do_aes_encrypt_ecb(const void *vctx, size_t len, + uint8_t *out, const uint8_t *in) { - const uint8_t *inptr = in; - uint8_t *outptr = out; + const QCryptoCipherBuiltinAESContext *ctx = vctx; /* We have already verified that len % AES_BLOCK_SIZE == 0. */ while (len) { - AES_encrypt(inptr, outptr, key); - inptr += AES_BLOCK_SIZE; - outptr += AES_BLOCK_SIZE; + AES_encrypt(in, out, &ctx->enc); + in += AES_BLOCK_SIZE; + out += AES_BLOCK_SIZE; len -= AES_BLOCK_SIZE; } } - -static void qcrypto_cipher_aes_ecb_decrypt(const AES_KEY *key, - const void *in, - void *out, - size_t len) +static void do_aes_decrypt_ecb(const void *vctx, size_t len, + uint8_t *out, const uint8_t *in) { - const uint8_t *inptr = in; - uint8_t *outptr = out; + const QCryptoCipherBuiltinAESContext *ctx = vctx; /* We have already verified that len % AES_BLOCK_SIZE == 0. */ while (len) { - AES_decrypt(inptr, outptr, key); - inptr += AES_BLOCK_SIZE; - outptr += AES_BLOCK_SIZE; + AES_decrypt(in, out, &ctx->dec); + in += AES_BLOCK_SIZE; + out += AES_BLOCK_SIZE; len -= AES_BLOCK_SIZE; } } - -static void qcrypto_cipher_aes_xts_encrypt(const void *ctx, - size_t length, - uint8_t *dst, - const uint8_t *src) -{ - const QCryptoCipherBuiltinAESContext *aesctx = ctx; - - qcrypto_cipher_aes_ecb_encrypt(&aesctx->enc, src, dst, length); -} - - -static void qcrypto_cipher_aes_xts_decrypt(const void *ctx, - size_t length, - uint8_t *dst, - const uint8_t *src) -{ - const QCryptoCipherBuiltinAESContext *aesctx = ctx; - - qcrypto_cipher_aes_ecb_decrypt(&aesctx->dec, src, dst, length); -} - - static int qcrypto_cipher_encrypt_aes(QCryptoCipher *cipher, const void *in, void *out, @@ -142,8 +111,7 @@ static int qcrypto_cipher_encrypt_aes(QCryptoCipher *cipher, switch (cipher->mode) { case QCRYPTO_CIPHER_MODE_ECB: - qcrypto_cipher_aes_ecb_encrypt(&ctxt->state.aes.key.enc, - in, out, len); + do_aes_encrypt_ecb(&ctxt->state.aes.key, len, out, in); break; case QCRYPTO_CIPHER_MODE_CBC: AES_cbc_encrypt(in, out, len, @@ -153,8 +121,8 @@ static int qcrypto_cipher_encrypt_aes(QCryptoCipher *cipher, case QCRYPTO_CIPHER_MODE_XTS: xts_encrypt(&ctxt->state.aes.key, &ctxt->state.aes.key_tweak, - qcrypto_cipher_aes_xts_encrypt, - qcrypto_cipher_aes_xts_decrypt, + do_aes_encrypt_ecb, + do_aes_decrypt_ecb, ctxt->state.aes.iv, len, out, in); break; @@ -177,8 +145,7 @@ static int qcrypto_cipher_decrypt_aes(QCryptoCipher *cipher, switch (cipher->mode) { case QCRYPTO_CIPHER_MODE_ECB: - qcrypto_cipher_aes_ecb_decrypt(&ctxt->state.aes.key.dec, - in, out, len); + do_aes_decrypt_ecb(&ctxt->state.aes.key, len, out, in); break; case QCRYPTO_CIPHER_MODE_CBC: AES_cbc_encrypt(in, out, len, @@ -188,8 +155,8 @@ static int qcrypto_cipher_decrypt_aes(QCryptoCipher *cipher, case QCRYPTO_CIPHER_MODE_XTS: xts_decrypt(&ctxt->state.aes.key, &ctxt->state.aes.key_tweak, - qcrypto_cipher_aes_xts_encrypt, - qcrypto_cipher_aes_xts_decrypt, + do_aes_encrypt_ecb, + do_aes_decrypt_ecb, ctxt->state.aes.iv, len, out, in); break;
There's no real reason we need two separate helper functions here. Standardize on the function signature required for xts_encrypt. Rename to do_aes_{en,de}crypt_ecb, since the helper does not itself do anything with respect to xts. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> --- crypto/cipher-builtin.inc.c | 69 ++++++++++--------------------------- 1 file changed, 18 insertions(+), 51 deletions(-) -- 2.25.1