diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/sha/sha3.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/lib/libcrypto/sha/sha3.c b/src/lib/libcrypto/sha/sha3.c index 043fcbe774..91b912cb73 100644 --- a/src/lib/libcrypto/sha/sha3.c +++ b/src/lib/libcrypto/sha/sha3.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: sha3.c,v 1.18 2025/04/18 07:23:53 jsing Exp $ */ | 1 | /* $OpenBSD: sha3.c,v 1.19 2025/04/18 07:27:42 jsing Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * The MIT License (MIT) | 3 | * The MIT License (MIT) |
| 4 | * | 4 | * |
| @@ -111,13 +111,14 @@ sha3_init(sha3_ctx *c, int mdlen) | |||
| 111 | } | 111 | } |
| 112 | 112 | ||
| 113 | int | 113 | int |
| 114 | sha3_update(sha3_ctx *c, const void *data, size_t len) | 114 | sha3_update(sha3_ctx *c, const void *_data, size_t len) |
| 115 | { | 115 | { |
| 116 | const uint8_t *data = _data; | ||
| 116 | size_t i, j; | 117 | size_t i, j; |
| 117 | 118 | ||
| 118 | j = c->pt; | 119 | j = c->pt; |
| 119 | for (i = 0; i < len; i++) { | 120 | for (i = 0; i < len; i++) { |
| 120 | c->state.b[j++] ^= ((const uint8_t *) data)[i]; | 121 | c->state.b[j++] ^= data[i]; |
| 121 | if (j >= c->rsize) { | 122 | if (j >= c->rsize) { |
| 122 | sha3_keccakf(c->state.q); | 123 | sha3_keccakf(c->state.q); |
| 123 | j = 0; | 124 | j = 0; |
| @@ -129,17 +130,17 @@ sha3_update(sha3_ctx *c, const void *data, size_t len) | |||
| 129 | } | 130 | } |
| 130 | 131 | ||
| 131 | int | 132 | int |
| 132 | sha3_final(void *md, sha3_ctx *c) | 133 | sha3_final(void *_md, sha3_ctx *c) |
| 133 | { | 134 | { |
| 135 | uint8_t *md = _md; | ||
| 134 | int i; | 136 | int i; |
| 135 | 137 | ||
| 136 | c->state.b[c->pt] ^= 0x06; | 138 | c->state.b[c->pt] ^= 0x06; |
| 137 | c->state.b[c->rsize - 1] ^= 0x80; | 139 | c->state.b[c->rsize - 1] ^= 0x80; |
| 138 | sha3_keccakf(c->state.q); | 140 | sha3_keccakf(c->state.q); |
| 139 | 141 | ||
| 140 | for (i = 0; i < c->mdlen; i++) { | 142 | for (i = 0; i < c->mdlen; i++) |
| 141 | ((uint8_t *) md)[i] = c->state.b[i]; | 143 | md[i] = c->state.b[i]; |
| 142 | } | ||
| 143 | 144 | ||
| 144 | return 1; | 145 | return 1; |
| 145 | } | 146 | } |
| @@ -155,8 +156,9 @@ shake_xof(sha3_ctx *c) | |||
| 155 | } | 156 | } |
| 156 | 157 | ||
| 157 | void | 158 | void |
| 158 | shake_out(sha3_ctx *c, void *out, size_t len) | 159 | shake_out(sha3_ctx *c, void *_out, size_t len) |
| 159 | { | 160 | { |
| 161 | uint8_t *out = _out; | ||
| 160 | size_t i, j; | 162 | size_t i, j; |
| 161 | 163 | ||
| 162 | j = c->pt; | 164 | j = c->pt; |
| @@ -165,7 +167,7 @@ shake_out(sha3_ctx *c, void *out, size_t len) | |||
| 165 | sha3_keccakf(c->state.q); | 167 | sha3_keccakf(c->state.q); |
| 166 | j = 0; | 168 | j = 0; |
| 167 | } | 169 | } |
| 168 | ((uint8_t *) out)[i] = c->state.b[j++]; | 170 | out[i] = c->state.b[j++]; |
| 169 | } | 171 | } |
| 170 | c->pt = j; | 172 | c->pt = j; |
| 171 | } | 173 | } |
