commit c3925a275220036818d7ccf58c3e054473445a06
parent 4eb513847412ece32ce164eda78b884d53f3562d
Author: erai <erai@omiltem.net>
Date: Wed, 8 May 2024 20:43:06 -0400
fix sha256
Diffstat:
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);
+ }
}