ghash
pmull_ghash_update(ctx->ghash_table, ghash,
pmull_ghash_update(ctx->ghash_table, ghash,
pmull_ghash_update(ctx->ghash_table, ghash, buffer, 1);
u8 ghash[], int err,
unsigned int nbytes, u8 *ghash,
memset(ghash, 0, SM4_BLOCK_SIZE);
gcm_calculate_auth_mac(req, ghash);
walk->nbytes - tail, ghash,
u8 __aligned(8) ghash[SM4_BLOCK_SIZE];
err = gcm_crypt(req, &walk, ghash, err, sm4_ce_pmull_gcm_enc);
scatterwalk_map_and_copy(ghash, req->dst, req->assoclen + req->cryptlen,
u8 __aligned(8) ghash[SM4_BLOCK_SIZE];
err = gcm_crypt(req, &walk, ghash, err, sm4_ce_pmull_gcm_dec);
if (crypto_memneq(authtag, ghash, authsize))
asmlinkage void pmull_ghash_update(const u8 *ghash_table, u8 *ghash,
unsigned int nbytes, u8 *ghash,
unsigned int nbytes, u8 *ghash,
static void gcm_calculate_auth_mac(struct aead_request *req, u8 ghash[])
ghash_preparekey(&ctx->ghash, data->h);
static void ghash_update_sg_and_pad(struct ghash_ctx *ghash,
ghash_update(ghash, walk.addr, n);
ghash_update(ghash, zeroes, pad_len);
struct ghash_ctx ghash;
ghash_init(&ghash, &ctx->ghash);
ghash_update_sg_and_pad(&ghash, req->src, req->assoclen);
ghash_update_sg_and_pad(&ghash, ctext, datalen);
ghash_update(&ghash, (const u8 *)lengths, sizeof(lengths));
ghash_final(&ghash, out);
struct ghash_key ghash;
__be32 ghash[AES_BLOCK_SIZE / sizeof(u32)];
atmel_aes_read_block(dd, AES_GHASHR(0), ctx->ghash);
ctx->ghash, ctx->ghash, atmel_aes_gcm_tag);
atmel_aes_write_block(dd, AES_IDATAR(0), ctx->ghash);
struct ghash_ctx ghash;
ghash_init(&ghash, &ctx->ghash_key);
ghash_update(&ghash, assoc, assoc_len);
ghash_update(&ghash, zeroes, -assoc_len & (GHASH_BLOCK_SIZE - 1));
ghash_update(&ghash, src, src_len);
ghash_update(&ghash, zeroes, -src_len & (GHASH_BLOCK_SIZE - 1));
ghash_update(&ghash, (const u8 *)&tail, sizeof(tail));
ghash_final(&ghash, ghash_out);
ghash(&test_key, data, len, out);
ghash(&key, test_buf, len, hash);
ghash(key1, data, len, hash1);
ghash(key2, data, len, hash2);