From 3c0df649d00d55a31e6f92c29bc3976fdba27f8e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Sat, 24 Aug 2019 10:16:15 -0700 Subject: sha256/md5: hash string more efficiently. * chksum.c (sha256_str, md5_str): Don't construct a byte input stream for hashing a string. Just convert whole thing to temporary UTF-8, hash, and free. --- chksum.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/chksum.c b/chksum.c index 776fe3d1..09e9f3b5 100644 --- a/chksum.c +++ b/chksum.c @@ -141,8 +141,12 @@ static void sha256_buf(val buf, unsigned char *hash) static void sha256_str(val str, unsigned char *hash) { - val s = make_byte_input_stream(str); - sha256_stream_impl(s, nil, hash); + char *s = utf8_dup_to(c_str(str)); + SHA256_t s256; + SHA256_init(&s256); + SHA256_update(&s256, coerce(const unsigned char *, s), strlen(s)); + free(s); + SHA256_final(&s256, hash); } val sha256(val obj, val buf_in) @@ -378,8 +382,12 @@ static void md5_buf(val buf, unsigned char *hash) static void md5_str(val str, unsigned char *hash) { - val s = make_byte_input_stream(str); - md5_stream_impl(s, nil, hash); + char *s = utf8_dup_to(c_str(str)); + MD5_t md5; + MD5_init(&md5); + MD5_update(&md5, coerce(const unsigned char *, s), strlen(s)); + free(s); + MD5_final(&md5, hash); } val md5(val obj, val buf_in) -- cgit v1.2.3