Merge tag 'linux-kselftest-fixes-5.10-rc1' of git://git.kernel.org/pub/scm/linux...
[linux-2.6-microblaze.git] / include / crypto / hash.h
index 0d1b403..af2ff31 100644 (file)
@@ -59,11 +59,6 @@ struct ahash_request {
        void *__ctx[] CRYPTO_MINALIGN_ATTR;
 };
 
-#define AHASH_REQUEST_ON_STACK(name, ahash) \
-       char __##name##_desc[sizeof(struct ahash_request) + \
-               crypto_ahash_reqsize(ahash)] CRYPTO_MINALIGN_ATTR; \
-       struct ahash_request *name = (void *)__##name##_desc
-
 /**
  * struct ahash_alg - asynchronous message digest definition
  * @init: **[mandatory]** Initialize the transformation context. Intended only to initialize the
@@ -123,6 +118,17 @@ struct ahash_request {
  *         data so the transformation can continue from this point onward. No
  *         data processing happens at this point. Driver must not use
  *         req->result.
+ * @init_tfm: Initialize the cryptographic transformation object.
+ *           This function is called only once at the instantiation
+ *           time, right after the transformation context was
+ *           allocated. In case the cryptographic hardware has
+ *           some special requirements which need to be handled
+ *           by software, this function shall check for the precise
+ *           requirement of the transformation and put any software
+ *           fallbacks in place.
+ * @exit_tfm: Deinitialize the cryptographic transformation object.
+ *           This is a counterpart to @init_tfm, used to remove
+ *           various changes set in @init_tfm.
  * @halg: see struct hash_alg_common
  */
 struct ahash_alg {
@@ -135,6 +141,8 @@ struct ahash_alg {
        int (*import)(struct ahash_request *req, const void *in);
        int (*setkey)(struct crypto_ahash *tfm, const u8 *key,
                      unsigned int keylen);
+       int (*init_tfm)(struct crypto_ahash *tfm);
+       void (*exit_tfm)(struct crypto_ahash *tfm);
 
        struct hash_alg_common halg;
 };