crypto: cryptd - Add support for cloning hashes
Allow cryptd hashes to be cloned. The underlying hash will be cloned. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
0303b7f5df
commit
cfbda734d6
|
@ -446,6 +446,21 @@ static int cryptd_hash_init_tfm(struct crypto_ahash *tfm)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int cryptd_hash_clone_tfm(struct crypto_ahash *ntfm,
|
||||||
|
struct crypto_ahash *tfm)
|
||||||
|
{
|
||||||
|
struct cryptd_hash_ctx *nctx = crypto_ahash_ctx(ntfm);
|
||||||
|
struct cryptd_hash_ctx *ctx = crypto_ahash_ctx(tfm);
|
||||||
|
struct crypto_shash *hash;
|
||||||
|
|
||||||
|
hash = crypto_clone_shash(ctx->child);
|
||||||
|
if (IS_ERR(hash))
|
||||||
|
return PTR_ERR(hash);
|
||||||
|
|
||||||
|
nctx->child = hash;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void cryptd_hash_exit_tfm(struct crypto_ahash *tfm)
|
static void cryptd_hash_exit_tfm(struct crypto_ahash *tfm)
|
||||||
{
|
{
|
||||||
struct cryptd_hash_ctx *ctx = crypto_ahash_ctx(tfm);
|
struct cryptd_hash_ctx *ctx = crypto_ahash_ctx(tfm);
|
||||||
|
@ -678,6 +693,7 @@ static int cryptd_create_hash(struct crypto_template *tmpl, struct rtattr **tb,
|
||||||
inst->alg.halg.base.cra_ctxsize = sizeof(struct cryptd_hash_ctx);
|
inst->alg.halg.base.cra_ctxsize = sizeof(struct cryptd_hash_ctx);
|
||||||
|
|
||||||
inst->alg.init_tfm = cryptd_hash_init_tfm;
|
inst->alg.init_tfm = cryptd_hash_init_tfm;
|
||||||
|
inst->alg.clone_tfm = cryptd_hash_clone_tfm;
|
||||||
inst->alg.exit_tfm = cryptd_hash_exit_tfm;
|
inst->alg.exit_tfm = cryptd_hash_exit_tfm;
|
||||||
|
|
||||||
inst->alg.init = cryptd_hash_init_enqueue;
|
inst->alg.init = cryptd_hash_init_enqueue;
|
||||||
|
|
Loading…
Reference in New Issue