summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crypto/ahash.c3
-rw-r--r--include/crypto/internal/hash.h6
2 files changed, 9 insertions, 0 deletions
diff --git a/crypto/ahash.c b/crypto/ahash.c
index 3878b4da3cfd..2f06e6b4f601 100644
--- a/crypto/ahash.c
+++ b/crypto/ahash.c
@@ -350,6 +350,9 @@ static int ahash_do_req_chain(struct ahash_request *req,
if (!crypto_ahash_need_fallback(tfm))
return -ENOSYS;
+ if (crypto_hash_no_export_core(tfm))
+ return -ENOSYS;
+
{
u8 state[HASH_MAX_STATESIZE];
diff --git a/include/crypto/internal/hash.h b/include/crypto/internal/hash.h
index 0f85c543f80b..f052afa6e7b0 100644
--- a/include/crypto/internal/hash.h
+++ b/include/crypto/internal/hash.h
@@ -91,6 +91,12 @@ static inline bool crypto_hash_alg_needs_key(struct hash_alg_common *alg)
!(alg->base.cra_flags & CRYPTO_ALG_OPTIONAL_KEY);
}
+static inline bool crypto_hash_no_export_core(struct crypto_ahash *tfm)
+{
+ return crypto_hash_alg_common(tfm)->base.cra_flags &
+ CRYPTO_AHASH_ALG_NO_EXPORT_CORE;
+}
+
int crypto_grab_ahash(struct crypto_ahash_spawn *spawn,
struct crypto_instance *inst,
const char *name, u32 type, u32 mask);