Commit f63559bef380a95093408691c1081f07da755b74
1 parent
406f104b41
Exists in
master
and in
7 other branches
crypto: sha256-s390 - Add export/import support
This patch adds export/import support to sha256-s390. The exported type is defined by struct sha256_state, which is basically the entire descriptor state of sha256_generic. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Showing 1 changed file with 26 additions and 0 deletions Side-by-side Diff
arch/s390/crypto/sha256_s390.c
... | ... | @@ -42,12 +42,38 @@ |
42 | 42 | return 0; |
43 | 43 | } |
44 | 44 | |
45 | +static int sha256_export(struct shash_desc *desc, void *out) | |
46 | +{ | |
47 | + struct s390_sha_ctx *sctx = shash_desc_ctx(desc); | |
48 | + struct sha256_state *octx = out; | |
49 | + | |
50 | + octx->count = sctx->count; | |
51 | + memcpy(octx->state, sctx->state, sizeof(octx->state)); | |
52 | + memcpy(octx->buf, sctx->buf, sizeof(octx->buf)); | |
53 | + return 0; | |
54 | +} | |
55 | + | |
56 | +static int sha256_import(struct shash_desc *desc, const u8 *in) | |
57 | +{ | |
58 | + struct sha256_state *sctx = shash_desc_ctx(desc); | |
59 | + struct sha256_state *ictx = in; | |
60 | + | |
61 | + sctx->count = ictx->count; | |
62 | + memcpy(sctx->state, ictx->state, sizeof(ictx->state)); | |
63 | + memcpy(sctx->buf, ictx->buf, sizeof(ictx->buf)); | |
64 | + sctx->func = KIMD_SHA_256; | |
65 | + return 0; | |
66 | +} | |
67 | + | |
45 | 68 | static struct shash_alg alg = { |
46 | 69 | .digestsize = SHA256_DIGEST_SIZE, |
47 | 70 | .init = sha256_init, |
48 | 71 | .update = s390_sha_update, |
49 | 72 | .final = s390_sha_final, |
73 | + .export = sha256_export, | |
74 | + .import = sha256_import, | |
50 | 75 | .descsize = sizeof(struct s390_sha_ctx), |
76 | + .statesize = sizeof(struct sha256_state), | |
51 | 77 | .base = { |
52 | 78 | .cra_name = "sha256", |
53 | 79 | .cra_driver_name= "sha256-s390", |