chiark / gitweb /
hash: Provide and use hash_hash connvenience function
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 29 Sep 2019 12:47:39 +0000 (13:47 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 29 Sep 2019 15:01:44 +0000 (16:01 +0100)
No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
md5.c
rsa.c
sha1.c
util.c
util.h

diff --git a/md5.c b/md5.c
index caaa5a68a2410c32aa939a89b0745bc3d422ef11..ca9ddb1ad7069b4850e59e96949c1db32f62efbf 100644 (file)
--- a/md5.c
+++ b/md5.c
@@ -22,6 +22,7 @@
  */
 
 #include "secnet.h"
  */
 
 #include "secnet.h"
+#include "util.h"
 #include <string.h>            /* for memcpy() */
 #include "md5.h"
 
 #include <string.h>            /* for memcpy() */
 #include "md5.h"
 
@@ -287,10 +288,7 @@ void md5_module(dict_t *dict)
 
     dict_add(dict,"md5",new_closure(&st->cl));
 
 
     dict_add(dict,"md5",new_closure(&st->cl));
 
-    uint8_t ctx[st->ops.slen];
-    md5_init(ctx);
-    md5_update(ctx,testinput,strlen(testinput));
-    md5_final(ctx,digest);
+    hash_hash(&st->ops,testinput,strlen(testinput),digest);
     for (i=0; i<16; i++) {
        if (digest[i]!=expected[i]) {
            fatal("md5 module failed self-test");
     for (i=0; i<16; i++) {
        if (digest[i]!=expected[i]) {
            fatal("md5 module failed self-test");
diff --git a/rsa.c b/rsa.c
index c87fcb7642a7a6883508cc71412808b9abeb559f..ccfc55690260ed2ff1da7e4e7fad839b0d30fe02 100644 (file)
--- a/rsa.c
+++ b/rsa.c
@@ -92,10 +92,7 @@ static void rsa_priv_sethash(void *sst, struct hash_if *hash)
 }
 static void rsa_hash(struct rsacommon *c, const uint8_t *buf, int32_t len)
 {
 }
 static void rsa_hash(struct rsacommon *c, const uint8_t *buf, int32_t len)
 {
-    uint8_t hst[c->hashi->slen];
-    c->hashi->init(hst);
-    c->hashi->update(hst,buf,len);
-    c->hashi->final(hst,c->hashbuf);
+    hash_hash(c->hashi,buf,len,c->hashbuf);
 }
 
 static void emsa_pkcs1(MP_INT *n, MP_INT *m,
 }
 
 static void emsa_pkcs1(MP_INT *n, MP_INT *m,
diff --git a/sha1.c b/sha1.c
index b11c25a6686506e22469b768bb04baa3e51a5246..f442e08c91033c805e4c2987810021d507c40525 100644 (file)
--- a/sha1.c
+++ b/sha1.c
@@ -78,6 +78,7 @@ A million repetitions of "a"
 /* #define SHA1HANDSOFF  */
 
 #include "secnet.h"
 /* #define SHA1HANDSOFF  */
 
 #include "secnet.h"
+#include "util.h"
 #include <stdio.h>
 #include <string.h>
 
 #include <stdio.h>
 #include <string.h>
 
@@ -340,10 +341,7 @@ void sha1_module(dict_t *dict)
 
     dict_add(dict,"sha1",new_closure(&st->cl));
 
 
     dict_add(dict,"sha1",new_closure(&st->cl));
 
-    uint8_t ctx[st->ops.slen];
-    sha1_init(ctx);
-    sha1_update(ctx,testinput,strlen(testinput));
-    sha1_final(ctx,digest);
+    hash_hash(&st->ops,testinput,strlen(testinput),digest);
     for (i=0; i<20; i++) {
        if (digest[i]!=expected[i]) {
            fatal("sha1 module failed self-test");
     for (i=0; i<20; i++) {
        if (digest[i]!=expected[i]) {
            fatal("sha1 module failed self-test");
diff --git a/util.c b/util.c
index 5200e18ef3bbb315f9e3a233077883732ff1b3c4..4982c93c58e6ae84fa0d8edc1eefedd59156862a 100644 (file)
--- a/util.c
+++ b/util.c
@@ -484,6 +484,14 @@ int consttime_memeq(const void *s1in, const void *s2in, size_t n)
     return accumulator;
 }
 
     return accumulator;
 }
 
+void hash_hash(const struct hash_if *hashi, const void *msg, int32_t len,
+              uint8_t *digest) {
+    uint8_t hst[hashi->slen];
+    hashi->init(hst);
+    hashi->update(hst,msg,len);
+    hashi->final(hst,digest);
+}
+
 void util_module(dict_t *dict)
 {
     add_closure(dict,"sysbuffer",buffer_apply);
 void util_module(dict_t *dict)
 {
     add_closure(dict,"sysbuffer",buffer_apply);
diff --git a/util.h b/util.h
index eb9e51f15465e20958e0371593c8453a68d8e3d0..598e2b65c4d55a18d2ea3057bddd9732276fe08b 100644 (file)
--- a/util.h
+++ b/util.h
@@ -124,6 +124,9 @@ extern void send_nak(const struct comm_addr *dest, uint32_t our_index,
 
 extern int consttime_memeq(const void *s1, const void *s2, size_t n);
 
 
 extern int consttime_memeq(const void *s1, const void *s2, size_t n);
 
+void hash_hash(const struct hash_if *hashi, const void *msg, int32_t len,
+              uint8_t *digest /* hi->hlen bytes */);
+
 const char *iaddr_to_string(const union iaddr *ia);
 int iaddr_socklen(const union iaddr *ia);
 
 const char *iaddr_to_string(const union iaddr *ia);
 int iaddr_socklen(const union iaddr *ia);