diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2023-07-08 13:09:19 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2023-07-08 13:09:19 -0700 |
commit | 1807b7d221cf815aad9576fdab2172915cb86e06 (patch) | |
tree | be5662ef0b155958d1b87da3ea7eed7f1eb32917 /chksum.c | |
parent | eb576809489a7b1aa15425dfbb5047dac449bd05 (diff) | |
download | txr-1807b7d221cf815aad9576fdab2172915cb86e06.tar.gz txr-1807b7d221cf815aad9576fdab2172915cb86e06.tar.bz2 txr-1807b7d221cf815aad9576fdab2172915cb86e06.zip |
Adding SHA-1 hash.
* chksums/sha1.c, chksums/sha1.h: New files.
* LICENSE, METALICENSE: Mention new code.
* chksum.c (sha1_ctx_s, sha1_ctx_cls): New static variables.
(chksum_init): Register sha-ctx symbol, and sha_ctx_s
COBJ class. Register sha1-stream, sha1, sha1-begin, sha1-hash
and sha1-end intrinsics.
(sha1_stream_impl, sha1_stream, sha1_szmax_upd,
sha1_buf, sha1_str, sha1, sha1_ops, sha1_begin,
sha1_utf8_byte_callback, sha1_hash, sha1_end): These
functions and variables are generated by a call to the
cksum_impl macro.
* Makefile (OBJS): add chksums/sha1.o object file.
Diffstat (limited to 'chksum.c')
-rw-r--r-- | chksum.c | 15 |
1 files changed, 13 insertions, 2 deletions
@@ -43,13 +43,14 @@ #include "stream.h" #include "utf8.h" #include "buf.h" +#include "chksums/sha1.h" #include "chksums/sha256.h" #include "chksums/crc32.h" #include "chksums/md5.h" #include "chksum.h" -static val sha256_ctx_s, md5_ctx_s; -static struct cobj_class *sha256_ctx_cls, *md5_ctx_cls; +static val sha1_ctx_s, sha256_ctx_s, md5_ctx_s; +static struct cobj_class *sha1_ctx_cls, *sha256_ctx_cls, *md5_ctx_cls; static val chksum_ensure_buf(val self, val buf_in, val len, unsigned char **phash, @@ -276,6 +277,9 @@ static val chksum_ensure_buf(val self, val buf_in, return buf; \ } +chksum_impl(sha1, SHA1_t, "SHA-1", SHA1_DIGEST_LENGTH, + SHA1_init, SHA1_update, SHA1_final); + chksum_impl(sha256, SHA256_t, "SHA-256", SHA256_DIGEST_LENGTH, SHA256_init, SHA256_update, SHA256_final); @@ -370,10 +374,17 @@ static val crc32(val obj, val init) void chksum_init(void) { + sha1_ctx_s = intern(lit("sha1-ctx"), user_package); sha256_ctx_s = intern(lit("sha256-ctx"), user_package); md5_ctx_s = intern(lit("md5-ctx"), user_package); + sha1_ctx_cls = cobj_register(sha1_ctx_s); sha256_ctx_cls = cobj_register(sha256_ctx_s); md5_ctx_cls = cobj_register(md5_ctx_s); + reg_fun(intern(lit("sha1-stream"), user_package), func_n3o(sha1_stream, 1)); + reg_fun(intern(lit("sha1"), user_package), func_n2o(sha1, 1)); + reg_fun(intern(lit("sha1-begin"), user_package), func_n0(sha1_begin)); + reg_fun(intern(lit("sha1-hash"), user_package), func_n2(sha1_hash)); + reg_fun(intern(lit("sha1-end"), user_package), func_n2o(sha1_end, 1)); reg_fun(intern(lit("sha256-stream"), user_package), func_n3o(sha256_stream, 1)); reg_fun(intern(lit("sha256"), user_package), func_n2o(sha256, 1)); reg_fun(intern(lit("sha256-begin"), user_package), func_n0(sha256_begin)); |