Skip to content

Commit d414116

Browse files
committed
Fix micropython#194 ... hashes are partial and digest can be called as often as you want.
This same techique would work with extmod/moduhashlib.c easily enough
1 parent d7b373c commit d414116

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

ports/esp32/moduhashlib.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ STATIC mp_obj_t sha256_digest(mp_obj_t self_in) {
8888
mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in);
8989
vstr_t vstr;
9090
vstr_init_len(&vstr, 32);
91-
mbedtls_sha256_finish(&self->state.sha256, (unsigned char *)vstr.buf);
91+
mbedtls_sha256_context ctx;
92+
mbedtls_sha256_clone(&ctx, (const mbedtls_sha256_context *)&self->state.sha256);
93+
mbedtls_sha256_finish(&ctx, (unsigned char *)vstr.buf);
9294
return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
9395
}
9496
MP_DEFINE_CONST_FUN_OBJ_1(sha256_digest_obj, sha256_digest);
@@ -97,7 +99,9 @@ STATIC mp_obj_t sha1_digest(mp_obj_t self_in) {
9799
mp_obj_hash_t *self = MP_OBJ_TO_PTR(self_in);
98100
vstr_t vstr;
99101
vstr_init_len(&vstr, 20);
100-
mbedtls_sha1_finish(&self->state.sha1, (unsigned char *)vstr.buf);
102+
mbedtls_sha1_context ctx;
103+
mbedtls_sha1_clone(&ctx, (const mbedtls_sha1_context *)&self->state.sha256);
104+
mbedtls_sha1_finish(&ctx, (unsigned char *)vstr.buf);
101105
return mp_obj_new_str_from_vstr(&mp_type_bytes, &vstr);
102106
}
103107
MP_DEFINE_CONST_FUN_OBJ_1(sha1_digest_obj, sha1_digest);

0 commit comments

Comments
 (0)