Commit 0ea48146 authored by Herbert Xu's avatar Herbert Xu

crypto: ghash-clmulni-intel - Use u128 instead of be128 for internal key

The internal key isn't actually in big-endian format so let's switch
to u128 which also happens to allow us to remove a sparse warning.

Based on suggestion by Ard Biesheuvel.
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
Acked-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
parent 59ecc260
...@@ -92,7 +92,7 @@ __clmul_gf128mul_ble: ...@@ -92,7 +92,7 @@ __clmul_gf128mul_ble:
ret ret
ENDPROC(__clmul_gf128mul_ble) ENDPROC(__clmul_gf128mul_ble)
/* void clmul_ghash_mul(char *dst, const be128 *shash) */ /* void clmul_ghash_mul(char *dst, const u128 *shash) */
ENTRY(clmul_ghash_mul) ENTRY(clmul_ghash_mul)
movups (%rdi), DATA movups (%rdi), DATA
movups (%rsi), SHASH movups (%rsi), SHASH
...@@ -106,7 +106,7 @@ ENDPROC(clmul_ghash_mul) ...@@ -106,7 +106,7 @@ ENDPROC(clmul_ghash_mul)
/* /*
* void clmul_ghash_update(char *dst, const char *src, unsigned int srclen, * void clmul_ghash_update(char *dst, const char *src, unsigned int srclen,
* const be128 *shash); * const u128 *shash);
*/ */
ENTRY(clmul_ghash_update) ENTRY(clmul_ghash_update)
cmp $16, %rdx cmp $16, %rdx
......
...@@ -25,17 +25,17 @@ ...@@ -25,17 +25,17 @@
#define GHASH_BLOCK_SIZE 16 #define GHASH_BLOCK_SIZE 16
#define GHASH_DIGEST_SIZE 16 #define GHASH_DIGEST_SIZE 16
void clmul_ghash_mul(char *dst, const be128 *shash); void clmul_ghash_mul(char *dst, const u128 *shash);
void clmul_ghash_update(char *dst, const char *src, unsigned int srclen, void clmul_ghash_update(char *dst, const char *src, unsigned int srclen,
const be128 *shash); const u128 *shash);
struct ghash_async_ctx { struct ghash_async_ctx {
struct cryptd_ahash *cryptd_tfm; struct cryptd_ahash *cryptd_tfm;
}; };
struct ghash_ctx { struct ghash_ctx {
be128 shash; u128 shash;
}; };
struct ghash_desc_ctx { struct ghash_desc_ctx {
...@@ -68,11 +68,11 @@ static int ghash_setkey(struct crypto_shash *tfm, ...@@ -68,11 +68,11 @@ static int ghash_setkey(struct crypto_shash *tfm,
a = be64_to_cpu(x->a); a = be64_to_cpu(x->a);
b = be64_to_cpu(x->b); b = be64_to_cpu(x->b);
ctx->shash.a = (__be64)((b << 1) | (a >> 63)); ctx->shash.a = (b << 1) | (a >> 63);
ctx->shash.b = (__be64)((a << 1) | (b >> 63)); ctx->shash.b = (a << 1) | (b >> 63);
if (a >> 63) if (a >> 63)
ctx->shash.b ^= cpu_to_be64(0xc2); ctx->shash.b ^= ((u64)0xc2) << 56;
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment