crypto: s390/sha256 - Use API partial block handling
authorHerbert Xu <herbert@gondor.apana.org.au>
Fri, 18 Apr 2025 03:00:04 +0000 (11:00 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Wed, 23 Apr 2025 07:52:46 +0000 (15:52 +0800)
Use the Crypto API partial block handling.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/s390/crypto/sha256_s390.c

index 6f1ccdf93d3e5ee09c9f5210122e995bad05d6e3..e6876c49414d5bcaa609bd83cf531f4c3b513793 100644 (file)
@@ -8,12 +8,13 @@
  *   Copyright IBM Corp. 2005, 2011
  *   Author(s): Jan Glauber (jang@de.ibm.com)
  */
+#include <asm/cpacf.h>
 #include <crypto/internal/hash.h>
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/cpufeature.h>
 #include <crypto/sha2.h>
-#include <asm/cpacf.h>
+#include <linux/cpufeature.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/string.h>
 
 #include "sha.h"
 
@@ -38,22 +39,20 @@ static int s390_sha256_init(struct shash_desc *desc)
 static int sha256_export(struct shash_desc *desc, void *out)
 {
        struct s390_sha_ctx *sctx = shash_desc_ctx(desc);
-       struct sha256_state *octx = out;
+       struct crypto_sha256_state *octx = out;
 
        octx->count = sctx->count;
        memcpy(octx->state, sctx->state, sizeof(octx->state));
-       memcpy(octx->buf, sctx->buf, sizeof(octx->buf));
        return 0;
 }
 
 static int sha256_import(struct shash_desc *desc, const void *in)
 {
        struct s390_sha_ctx *sctx = shash_desc_ctx(desc);
-       const struct sha256_state *ictx = in;
+       const struct crypto_sha256_state *ictx = in;
 
        sctx->count = ictx->count;
        memcpy(sctx->state, ictx->state, sizeof(ictx->state));
-       memcpy(sctx->buf, ictx->buf, sizeof(ictx->buf));
        sctx->func = CPACF_KIMD_SHA_256;
        return 0;
 }
@@ -61,16 +60,17 @@ static int sha256_import(struct shash_desc *desc, const void *in)
 static struct shash_alg sha256_alg = {
        .digestsize     =       SHA256_DIGEST_SIZE,
        .init           =       s390_sha256_init,
-       .update         =       s390_sha_update,
-       .final          =       s390_sha_final,
+       .update         =       s390_sha_update_blocks,
+       .finup          =       s390_sha_finup,
        .export         =       sha256_export,
        .import         =       sha256_import,
-       .descsize       =       sizeof(struct s390_sha_ctx),
-       .statesize      =       sizeof(struct sha256_state),
+       .descsize       =       S390_SHA_CTX_SIZE,
+       .statesize      =       sizeof(struct crypto_sha256_state),
        .base           =       {
                .cra_name       =       "sha256",
                .cra_driver_name=       "sha256-s390",
                .cra_priority   =       300,
+               .cra_flags      =       CRYPTO_AHASH_ALG_BLOCK_ONLY,
                .cra_blocksize  =       SHA256_BLOCK_SIZE,
                .cra_module     =       THIS_MODULE,
        }
@@ -97,16 +97,17 @@ static int s390_sha224_init(struct shash_desc *desc)
 static struct shash_alg sha224_alg = {
        .digestsize     =       SHA224_DIGEST_SIZE,
        .init           =       s390_sha224_init,
-       .update         =       s390_sha_update,
-       .final          =       s390_sha_final,
+       .update         =       s390_sha_update_blocks,
+       .finup          =       s390_sha_finup,
        .export         =       sha256_export,
        .import         =       sha256_import,
-       .descsize       =       sizeof(struct s390_sha_ctx),
-       .statesize      =       sizeof(struct sha256_state),
+       .descsize       =       S390_SHA_CTX_SIZE,
+       .statesize      =       sizeof(struct crypto_sha256_state),
        .base           =       {
                .cra_name       =       "sha224",
                .cra_driver_name=       "sha224-s390",
                .cra_priority   =       300,
+               .cra_flags      =       CRYPTO_AHASH_ALG_BLOCK_ONLY,
                .cra_blocksize  =       SHA224_BLOCK_SIZE,
                .cra_module     =       THIS_MODULE,
        }