os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit c3925a275220036818d7ccf58c3e054473445a06
parent 4eb513847412ece32ce164eda78b884d53f3562d
Author: erai <erai@omiltem.net>
Date:   Wed,  8 May 2024 20:43:06 -0400

fix sha256

Diffstat:
Mlib.c | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msha256.c | 4++--
Msha256_test.c | 11+++++++++--
3 files changed, 68 insertions(+), 4 deletions(-)

diff --git a/lib.c b/lib.c @@ -203,3 +203,60 @@ fdxxd(fd: int, data: *byte, len: int) { i = i + 16; } } + +bzero(s: *byte, size: int) { + var i: int; + i = 0; + loop { + if i == size { + break; + } + s[i] = 0:byte; + i = i + 1; + } +} + +memset(dest: *byte, c: int, size: int) { + var i: int; + + if size < 0 { + return; + } + + i = 0; + loop { + if i == size { + break; + } + dest[i] = c:byte; + i = i + 1; + } +} + +memcpy(dest: *byte, src: *byte, size: int) { + var i: int; + + if size < 0 { + return; + } + + if src > dest { + i = 0; + loop { + if i == size { + break; + } + dest[i] = src[i]; + i = i + 1; + } + } else if src < dest { + i = size; + loop { + if i == 0 { + break; + } + i = i - 1; + dest[i] = src[i]; + } + } +} diff --git a/sha256.c b/sha256.c @@ -412,7 +412,7 @@ sha256_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) { i = 0; loop { if i == 64 { - return; + break; } digest[i] = 0: byte; @@ -438,7 +438,7 @@ sha256_hmac(mac: *byte, key: *byte, klen: int, data: *byte, dlen: int) { i = 0; loop { if i == 64 { - return; + break; } ipad[i] = digest[i] ^ (0x36:byte); diff --git a/sha256_test.c b/sha256_test.c @@ -2,6 +2,13 @@ main(argc: int, argv: **byte, envp: **byte) { var d: _sha256_digest; var digest: *byte; digest = (&d):*byte; - sha256(digest, argv[1], strlen(argv[1])); - fdxxd(1, digest, 32); + if argc == 2 { + sha256(digest, argv[1], strlen(argv[1])); + fdxxd(1, digest, 32); + } else if argc == 3 { + sha256_hmac(digest, argv[1], strlen(argv[1]), argv[2], strlen(argv[2])); + fdxxd(1, digest, 32); + } else { + exit(2); + } }