mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
crypto: hmac - Add support for cloning
Allow hmac to be cloned. The underlying hash can be used directly with a reference count. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
@@ -160,6 +160,20 @@ static int hmac_init_tfm(struct crypto_shash *parent)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int hmac_clone_tfm(struct crypto_shash *dst, struct crypto_shash *src)
|
||||||
|
{
|
||||||
|
struct hmac_ctx *sctx = hmac_ctx(src);
|
||||||
|
struct hmac_ctx *dctx = hmac_ctx(dst);
|
||||||
|
struct crypto_shash *hash;
|
||||||
|
|
||||||
|
hash = crypto_clone_shash(sctx->hash);
|
||||||
|
if (IS_ERR(hash))
|
||||||
|
return PTR_ERR(hash);
|
||||||
|
|
||||||
|
dctx->hash = hash;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void hmac_exit_tfm(struct crypto_shash *parent)
|
static void hmac_exit_tfm(struct crypto_shash *parent)
|
||||||
{
|
{
|
||||||
struct hmac_ctx *ctx = hmac_ctx(parent);
|
struct hmac_ctx *ctx = hmac_ctx(parent);
|
||||||
@@ -227,6 +241,7 @@ static int hmac_create(struct crypto_template *tmpl, struct rtattr **tb)
|
|||||||
inst->alg.import = hmac_import;
|
inst->alg.import = hmac_import;
|
||||||
inst->alg.setkey = hmac_setkey;
|
inst->alg.setkey = hmac_setkey;
|
||||||
inst->alg.init_tfm = hmac_init_tfm;
|
inst->alg.init_tfm = hmac_init_tfm;
|
||||||
|
inst->alg.clone_tfm = hmac_clone_tfm;
|
||||||
inst->alg.exit_tfm = hmac_exit_tfm;
|
inst->alg.exit_tfm = hmac_exit_tfm;
|
||||||
|
|
||||||
inst->free = shash_free_singlespawn_instance;
|
inst->free = shash_free_singlespawn_instance;
|
||||||
|
Reference in New Issue
Block a user