diff options
author | Jan Glauber <jan.glauber@de.ibm.com> | 2007-04-27 10:01:54 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-04-27 10:01:46 -0400 |
commit | 131a395c18af43d824841642038e5cc0d48f0bd2 (patch) | |
tree | c3fec61634deee0589e3a0fa3aec0a63803f3815 /arch/s390/crypto/sha256_s390.c | |
parent | 6d4740c89c187ee8f5ac7355c4eeffda26493d1f (diff) |
[S390] crypto: cleanup.
Cleanup code and remove obsolete documentation.
Signed-off-by: Jan Glauber <jan.glauber@de.ibm.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/crypto/sha256_s390.c')
-rw-r--r-- | arch/s390/crypto/sha256_s390.c | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/arch/s390/crypto/sha256_s390.c b/arch/s390/crypto/sha256_s390.c index 78436c696d37..2ced3330bce0 100644 --- a/arch/s390/crypto/sha256_s390.c +++ b/arch/s390/crypto/sha256_s390.c | |||
@@ -26,7 +26,7 @@ | |||
26 | #define SHA256_BLOCK_SIZE 64 | 26 | #define SHA256_BLOCK_SIZE 64 |
27 | 27 | ||
28 | struct s390_sha256_ctx { | 28 | struct s390_sha256_ctx { |
29 | u64 count; | 29 | u64 count; /* message length */ |
30 | u32 state[8]; | 30 | u32 state[8]; |
31 | u8 buf[2 * SHA256_BLOCK_SIZE]; | 31 | u8 buf[2 * SHA256_BLOCK_SIZE]; |
32 | }; | 32 | }; |
@@ -54,10 +54,9 @@ static void sha256_update(struct crypto_tfm *tfm, const u8 *data, | |||
54 | int ret; | 54 | int ret; |
55 | 55 | ||
56 | /* how much is already in the buffer? */ | 56 | /* how much is already in the buffer? */ |
57 | index = sctx->count / 8 & 0x3f; | 57 | index = sctx->count & 0x3f; |
58 | 58 | ||
59 | /* update message bit length */ | 59 | sctx->count += len; |
60 | sctx->count += len * 8; | ||
61 | 60 | ||
62 | if ((index + len) < SHA256_BLOCK_SIZE) | 61 | if ((index + len) < SHA256_BLOCK_SIZE) |
63 | goto store; | 62 | goto store; |
@@ -87,12 +86,17 @@ store: | |||
87 | memcpy(sctx->buf + index , data, len); | 86 | memcpy(sctx->buf + index , data, len); |
88 | } | 87 | } |
89 | 88 | ||
90 | static void pad_message(struct s390_sha256_ctx* sctx) | 89 | /* Add padding and return the message digest */ |
90 | static void sha256_final(struct crypto_tfm *tfm, u8 *out) | ||
91 | { | 91 | { |
92 | int index, end; | 92 | struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm); |
93 | u64 bits; | ||
94 | unsigned int index, end; | ||
95 | int ret; | ||
93 | 96 | ||
94 | index = sctx->count / 8 & 0x3f; | 97 | /* must perform manual padding */ |
95 | end = index < 56 ? SHA256_BLOCK_SIZE : 2 * SHA256_BLOCK_SIZE; | 98 | index = sctx->count & 0x3f; |
99 | end = (index < 56) ? SHA256_BLOCK_SIZE : (2 * SHA256_BLOCK_SIZE); | ||
96 | 100 | ||
97 | /* start pad with 1 */ | 101 | /* start pad with 1 */ |
98 | sctx->buf[index] = 0x80; | 102 | sctx->buf[index] = 0x80; |
@@ -102,21 +106,11 @@ static void pad_message(struct s390_sha256_ctx* sctx) | |||
102 | memset(sctx->buf + index, 0x00, end - index - 8); | 106 | memset(sctx->buf + index, 0x00, end - index - 8); |
103 | 107 | ||
104 | /* append message length */ | 108 | /* append message length */ |
105 | memcpy(sctx->buf + end - 8, &sctx->count, sizeof sctx->count); | 109 | bits = sctx->count * 8; |
106 | 110 | memcpy(sctx->buf + end - 8, &bits, sizeof(bits)); | |
107 | sctx->count = end * 8; | ||
108 | } | ||
109 | |||
110 | /* Add padding and return the message digest */ | ||
111 | static void sha256_final(struct crypto_tfm *tfm, u8 *out) | ||
112 | { | ||
113 | struct s390_sha256_ctx *sctx = crypto_tfm_ctx(tfm); | ||
114 | |||
115 | /* must perform manual padding */ | ||
116 | pad_message(sctx); | ||
117 | 111 | ||
118 | crypt_s390_kimd(KIMD_SHA_256, sctx->state, sctx->buf, | 112 | ret = crypt_s390_kimd(KIMD_SHA_256, sctx->state, sctx->buf, end); |
119 | sctx->count / 8); | 113 | BUG_ON(ret != end); |
120 | 114 | ||
121 | /* copy digest to out */ | 115 | /* copy digest to out */ |
122 | memcpy(out, sctx->state, SHA256_DIGEST_SIZE); | 116 | memcpy(out, sctx->state, SHA256_DIGEST_SIZE); |