xts128.c: minor optimization and clarified prototype.

This commit is contained in:
Andy Polyakov 2011-04-20 08:13:58 +00:00
parent e382e4e603
commit daaf5088fd
2 changed files with 12 additions and 2 deletions

View File

@ -121,5 +121,5 @@ size_t CRYPTO_ccm128_tag(CCM128_CONTEXT *ctx, unsigned char *tag, size_t len);
typedef struct xts128_context XTS128_CONTEXT; typedef struct xts128_context XTS128_CONTEXT;
int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char *iv, int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16],
const unsigned char *inp, unsigned char *out, size_t len, int enc); const unsigned char *inp, unsigned char *out, size_t len, int enc);

View File

@ -58,7 +58,7 @@
#endif #endif
#include <assert.h> #include <assert.h>
int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char *iv, int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char iv[16],
const unsigned char *inp, unsigned char *out, const unsigned char *inp, unsigned char *out,
size_t len, int enc) size_t len, int enc)
{ {
@ -84,9 +84,14 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char *iv,
scratch.u[1] = ((u64*)inp)[1]^tweak.u[1]; scratch.u[1] = ((u64*)inp)[1]^tweak.u[1];
#endif #endif
(*ctx->block1)(scratch.c,scratch.c,ctx->key1); (*ctx->block1)(scratch.c,scratch.c,ctx->key1);
#if defined(STRICT_ALIGNMENT)
scratch.u[0] ^= tweak.u[0]; scratch.u[0] ^= tweak.u[0];
scratch.u[1] ^= tweak.u[1]; scratch.u[1] ^= tweak.u[1];
memcpy(out,scratch.c,16); memcpy(out,scratch.c,16);
#else
((u64*)out)[0] = scratch.u[0]^tweak.u[0];
((u64*)out)[1] = scratch.u[1]^tweak.u[1];
#endif
inp += 16; inp += 16;
out += 16; out += 16;
len -= 16; len -= 16;
@ -166,9 +171,14 @@ int CRYPTO_xts128_encrypt(const XTS128_CONTEXT *ctx, const unsigned char *iv,
scratch.u[0] ^= tweak.u[0]; scratch.u[0] ^= tweak.u[0];
scratch.u[1] ^= tweak.u[1]; scratch.u[1] ^= tweak.u[1];
(*ctx->block1)(scratch.c,scratch.c,ctx->key1); (*ctx->block1)(scratch.c,scratch.c,ctx->key1);
#if defined(STRICT_ALIGNMENT)
scratch.u[0] ^= tweak.u[0]; scratch.u[0] ^= tweak.u[0];
scratch.u[1] ^= tweak.u[1]; scratch.u[1] ^= tweak.u[1];
memcpy (out,scratch.c,16); memcpy (out,scratch.c,16);
#else
((u64*)out)[0] = scratch.u[0]^tweak.u[0];
((u64*)out)[1] = scratch.u[1]^tweak.u[1];
#endif
} }
return 0; return 0;