diff options
Diffstat (limited to 'crypto/ghash-generic.c')
| -rw-r--r-- | crypto/ghash-generic.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/crypto/ghash-generic.c b/crypto/ghash-generic.c index be442561693..9d3f0c69a86 100644 --- a/crypto/ghash-generic.c +++ b/crypto/ghash-generic.c @@ -67,6 +67,9 @@ static int ghash_update(struct shash_desc *desc,  	struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);  	u8 *dst = dctx->buffer; +	if (!ctx->gf128) +		return -ENOKEY; +  	if (dctx->bytes) {  		int n = min(srclen, dctx->bytes);  		u8 *pos = dst + (GHASH_BLOCK_SIZE - dctx->bytes); @@ -119,6 +122,9 @@ static int ghash_final(struct shash_desc *desc, u8 *dst)  	struct ghash_ctx *ctx = crypto_shash_ctx(desc->tfm);  	u8 *buf = dctx->buffer; +	if (!ctx->gf128) +		return -ENOKEY; +  	ghash_flush(ctx, dctx);  	memcpy(dst, buf, GHASH_BLOCK_SIZE); @@ -147,7 +153,6 @@ static struct shash_alg ghash_alg = {  		.cra_blocksize		= GHASH_BLOCK_SIZE,  		.cra_ctxsize		= sizeof(struct ghash_ctx),  		.cra_module		= THIS_MODULE, -		.cra_list		= LIST_HEAD_INIT(ghash_alg.base.cra_list),  		.cra_exit		= ghash_exit_tfm,  	},  };  | 
