GHASH_BLOCK_SIZE
int buf_added = min(count, GHASH_BLOCK_SIZE - *buf_count);
if (count >= GHASH_BLOCK_SIZE || *buf_count == GHASH_BLOCK_SIZE) {
int blocks = count / GHASH_BLOCK_SIZE;
src += blocks * GHASH_BLOCK_SIZE;
count %= GHASH_BLOCK_SIZE;
u8 buf[GHASH_BLOCK_SIZE];
memset(&buf[buf_count], 0, GHASH_BLOCK_SIZE - buf_count);
int buf_added = min(count, GHASH_BLOCK_SIZE - *buf_count);
if (count >= GHASH_BLOCK_SIZE || *buf_count == GHASH_BLOCK_SIZE) {
int blocks = count / GHASH_BLOCK_SIZE;
src += blocks * GHASH_BLOCK_SIZE;
count %= GHASH_BLOCK_SIZE;
u8 buf[GHASH_BLOCK_SIZE];
memset(&buf[buf_count], 0, GHASH_BLOCK_SIZE - buf_count);
u8 key[GHASH_BLOCK_SIZE];
memcpy(&ctx->ghash_key.k, key, GHASH_BLOCK_SIZE);
nblocks = n / GHASH_BLOCK_SIZE;
p += nblocks * GHASH_BLOCK_SIZE;
buflen = n % GHASH_BLOCK_SIZE;
memset(&buffer[buflen], 0, GHASH_BLOCK_SIZE - buflen);
u8 __aligned(8) buffer[GHASH_BLOCK_SIZE];
if (n + buflen < GHASH_BLOCK_SIZE) {
unsigned int l = GHASH_BLOCK_SIZE - buflen;
u8 j0[GHASH_BLOCK_SIZE];/* initial counter value */
.ivsize = GHASH_BLOCK_SIZE - sizeof(u32),
static const u8 zeroes[GHASH_BLOCK_SIZE];
unsigned int pad_len = -len % GHASH_BLOCK_SIZE;
unsigned int datalen, u8 out[GHASH_BLOCK_SIZE])
u8 h[GHASH_BLOCK_SIZE];
ctx->state_sz = GHASH_BLOCK_SIZE;
const u8 raw_key[GHASH_BLOCK_SIZE]);
void ghash_final(struct ghash_ctx *ctx, u8 out[GHASH_BLOCK_SIZE]);
size_t len, u8 out[GHASH_BLOCK_SIZE])
u8 h_raw[GHASH_BLOCK_SIZE];
static const u8 zeroes[GHASH_BLOCK_SIZE];
ghash_update(&ghash, zeroes, -assoc_len & (GHASH_BLOCK_SIZE - 1));
ghash_update(&ghash, zeroes, -src_len & (GHASH_BLOCK_SIZE - 1));
min_t(size_t, nblocks, 4096 / GHASH_BLOCK_SIZE);
data += n * GHASH_BLOCK_SIZE;
static const u8 zeroes[GHASH_BLOCK_SIZE];
data += GHASH_BLOCK_SIZE;
static void __maybe_unused ghash_key_to_polyval(const u8 in[GHASH_BLOCK_SIZE],
u8 out[GHASH_BLOCK_SIZE])
static void __maybe_unused ghash_acc_to_polyval(const u8 in[GHASH_BLOCK_SIZE],
void ghash_preparekey(struct ghash_key *key, const u8 raw_key[GHASH_BLOCK_SIZE])
static const u8 zeroes[GHASH_BLOCK_SIZE];
size_t n = min(len, GHASH_BLOCK_SIZE - ctx->partial);
ctx->acc.bytes[GHASH_BLOCK_SIZE - 1 - ctx->partial++] ^=
if (ctx->partial < GHASH_BLOCK_SIZE)
if (len >= GHASH_BLOCK_SIZE) {
size_t nblocks = len / GHASH_BLOCK_SIZE;
data += len & ~(GHASH_BLOCK_SIZE - 1);
len &= GHASH_BLOCK_SIZE - 1;
ctx->acc.bytes[GHASH_BLOCK_SIZE - 1 - i] ^= data[i];
void ghash_final(struct ghash_ctx *ctx, u8 out[GHASH_BLOCK_SIZE])
const u8 raw_key[GHASH_BLOCK_SIZE])
u8 ghash_acc[GHASH_BLOCK_SIZE];
u8 ghash_acc[GHASH_BLOCK_SIZE];
nblocks * GHASH_BLOCK_SIZE);
asmlinkage void ghash_zvkg(u8 accumulator[GHASH_BLOCK_SIZE],
const u8 key[GHASH_BLOCK_SIZE],
const u8 raw_key[GHASH_BLOCK_SIZE])
memcpy(key->h_raw, raw_key, GHASH_BLOCK_SIZE);
u8 ghash_acc[GHASH_BLOCK_SIZE];
const u8 raw_key[GHASH_BLOCK_SIZE])
memcpy(key->h_raw, raw_key, GHASH_BLOCK_SIZE);
u8 ctx[2][GHASH_BLOCK_SIZE] __aligned(8);
memcpy(ctx[1], key->h_raw, GHASH_BLOCK_SIZE);
nblocks * GHASH_BLOCK_SIZE);
u8 raw_key[GHASH_BLOCK_SIZE];
u8 raw_key[GHASH_BLOCK_SIZE];
u8 raw_key[GHASH_BLOCK_SIZE];
u8 out[GHASH_BLOCK_SIZE])
#define HASH_SIZE GHASH_BLOCK_SIZE
u8 hash[GHASH_BLOCK_SIZE];
u8 hash1[GHASH_BLOCK_SIZE];
u8 hash2[GHASH_BLOCK_SIZE];
u8 raw_key[GHASH_BLOCK_SIZE];
4096 / GHASH_BLOCK_SIZE);
data += n * GHASH_BLOCK_SIZE;