qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 2/6] crypto: remove code duplication in tweak en


From: Marc-André Lureau
Subject: Re: [Qemu-devel] [PATCH 2/6] crypto: remove code duplication in tweak encrypt/decrypt
Date: Tue, 9 Oct 2018 17:51:20 +0400

Hi

On Tue, Oct 9, 2018 at 4:56 PM Daniel P. Berrangé <address@hidden> wrote:
>
> The tweak encrypt/decrypt functions are identical except for the
> comments, so can be merged. Profiling data shows that the compiler is
> in fact already merging the two merges in the object files.
>
> Signed-off-by: Daniel P. Berrangé <address@hidden>

Reviewed-by: Marc-André Lureau <address@hidden>

> ---
>  crypto/xts.c | 64 ++++++++++++----------------------------------------
>  1 file changed, 15 insertions(+), 49 deletions(-)
>
> diff --git a/crypto/xts.c b/crypto/xts.c
> index 95212341f6..3c1a92f01d 100644
> --- a/crypto/xts.c
> +++ b/crypto/xts.c
> @@ -43,20 +43,20 @@ static void xts_mult_x(uint8_t *I)
>
>
>  /**
> - * xts_tweak_uncrypt:
> + * xts_tweak_encdec:
>   * @param ctxt: the cipher context
>   * @param func: the cipher function
> - * @src: buffer providing the cipher text of XTS_BLOCK_SIZE bytes
> - * @dst: buffer to output the plain text of XTS_BLOCK_SIZE bytes
> + * @src: buffer providing the input text of XTS_BLOCK_SIZE bytes
> + * @dst: buffer to output the output text of XTS_BLOCK_SIZE bytes
>   * @iv: the initialization vector tweak of XTS_BLOCK_SIZE bytes
>   *
> - * Decrypt data with a tweak
> + * Encrypt/decrypt data with a tweak
>   */
> -static void xts_tweak_decrypt(const void *ctx,
> -                              xts_cipher_func *func,
> -                              const uint8_t *src,
> -                              uint8_t *dst,
> -                              uint8_t *iv)
> +static void xts_tweak_encdec(const void *ctx,
> +                             xts_cipher_func *func,
> +                             const uint8_t *src,
> +                             uint8_t *dst,
> +                             uint8_t *iv)
>  {
>      unsigned long x;
>
> @@ -105,7 +105,7 @@ void xts_decrypt(const void *datactx,
>      encfunc(tweakctx, XTS_BLOCK_SIZE, T, iv);
>
>      for (i = 0; i < lim; i++) {
> -        xts_tweak_decrypt(datactx, decfunc, src, dst, T);
> +        xts_tweak_encdec(datactx, decfunc, src, dst, T);
>
>          src += XTS_BLOCK_SIZE;
>          dst += XTS_BLOCK_SIZE;
> @@ -117,7 +117,7 @@ void xts_decrypt(const void *datactx,
>          xts_mult_x(CC);
>
>          /* PP = tweak decrypt block m-1 */
> -        xts_tweak_decrypt(datactx, decfunc, src, PP, CC);
> +        xts_tweak_encdec(datactx, decfunc, src, PP, CC);
>
>          /* Pm = first length % XTS_BLOCK_SIZE bytes of PP */
>          for (i = 0; i < mo; i++) {
> @@ -129,7 +129,7 @@ void xts_decrypt(const void *datactx,
>          }
>
>          /* Pm-1 = Tweak uncrypt CC */
> -        xts_tweak_decrypt(datactx, decfunc, CC, dst, T);
> +        xts_tweak_encdec(datactx, decfunc, CC, dst, T);
>      }
>
>      /* Decrypt the iv back */
> @@ -137,40 +137,6 @@ void xts_decrypt(const void *datactx,
>  }
>
>
> -/**
> - * xts_tweak_crypt:
> - * @param ctxt: the cipher context
> - * @param func: the cipher function
> - * @src: buffer providing the plain text of XTS_BLOCK_SIZE bytes
> - * @dst: buffer to output the cipher text of XTS_BLOCK_SIZE bytes
> - * @iv: the initialization vector tweak of XTS_BLOCK_SIZE bytes
> - *
> - * Encrypt data with a tweak
> - */
> -static void xts_tweak_encrypt(const void *ctx,
> -                              xts_cipher_func *func,
> -                              const uint8_t *src,
> -                              uint8_t *dst,
> -                              uint8_t *iv)
> -{
> -    unsigned long x;
> -
> -    /* tweak encrypt block i */
> -    for (x = 0; x < XTS_BLOCK_SIZE; x++) {
> -        dst[x] = src[x] ^ iv[x];
> -    }
> -
> -    func(ctx, XTS_BLOCK_SIZE, dst, dst);
> -
> -    for (x = 0; x < XTS_BLOCK_SIZE; x++) {
> -        dst[x] = dst[x] ^ iv[x];
> -    }
> -
> -    /* LFSR the tweak */
> -    xts_mult_x(iv);
> -}
> -
> -
>  void xts_encrypt(const void *datactx,
>                   const void *tweakctx,
>                   xts_cipher_func *encfunc,
> @@ -200,7 +166,7 @@ void xts_encrypt(const void *datactx,
>      encfunc(tweakctx, XTS_BLOCK_SIZE, T, iv);
>
>      for (i = 0; i < lim; i++) {
> -        xts_tweak_encrypt(datactx, encfunc, src, dst, T);
> +        xts_tweak_encdec(datactx, encfunc, src, dst, T);
>
>          dst += XTS_BLOCK_SIZE;
>          src += XTS_BLOCK_SIZE;
> @@ -209,7 +175,7 @@ void xts_encrypt(const void *datactx,
>      /* if length is not a multiple of XTS_BLOCK_SIZE then */
>      if (mo > 0) {
>          /* CC = tweak encrypt block m-1 */
> -        xts_tweak_encrypt(datactx, encfunc, src, CC, T);
> +        xts_tweak_encdec(datactx, encfunc, src, CC, T);
>
>          /* Cm = first length % XTS_BLOCK_SIZE bytes of CC */
>          for (i = 0; i < mo; i++) {
> @@ -222,7 +188,7 @@ void xts_encrypt(const void *datactx,
>          }
>
>          /* Cm-1 = Tweak encrypt PP */
> -        xts_tweak_encrypt(datactx, encfunc, PP, dst, T);
> +        xts_tweak_encdec(datactx, encfunc, PP, dst, T);
>      }
>
>      /* Decrypt the iv back */
> --
> 2.17.1
>
>


--
Marc-André Lureau



reply via email to

[Prev in Thread] Current Thread [Next in Thread]