diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/hash.c | 2 | ||||
| -rw-r--r-- | src/lib/tests/hash_test.c | 48 | 
2 files changed, 36 insertions, 14 deletions
diff --git a/src/lib/hash.c b/src/lib/hash.c index 995ba0d2..b465f894 100644 --- a/src/lib/hash.c +++ b/src/lib/hash.c @@ -29,6 +29,7 @@  #include "config.h" +#include <ouroboros/endian.h>  #include <ouroboros/hash.h>  #ifdef HAVE_LIBGCRYPT @@ -90,6 +91,7 @@ void mem_hash(enum hash_algo  algo,          case HASH_CRC32:                  memset(dst, 0, CRC32_HASH_LEN);                  crc32((uint32_t *) dst, buf, len); +                *(uint32_t *) dst = htobe32(*(uint32_t *) dst);                  break;          case HASH_MD5:                  rhash_md5_init(&md5_ctx); diff --git a/src/lib/tests/hash_test.c b/src/lib/tests/hash_test.c index 1e618e48..970d9185 100644 --- a/src/lib/tests/hash_test.c +++ b/src/lib/tests/hash_test.c @@ -21,6 +21,7 @@   */  #include <ouroboros/hash.h> +#include <ouroboros/test.h>  #include <stdlib.h>  #include <stdint.h> @@ -40,6 +41,8 @@ struct vec_entry {  static int test_crc32(void)  { +        int ret = 0; +          struct vec_entry vec [] = {                  { "0",         "f4dbdf21" },                  { "123456789", "cbf43926" }, @@ -49,6 +52,8 @@ static int test_crc32(void)          struct vec_entry * cur = vec; +        TEST_START(); +          while (cur->in != NULL) {                  uint8_t crc[4];                  char    res[9]; @@ -57,18 +62,22 @@ static int test_crc32(void)                  sprintf(res, HASH_FMT32, HASH_VAL32(crc));                  if (strcmp(res, cur->out) != 0) { -                        printf("Hash failed %s != %s", res, cur->out); -                        return -1; +                        printf("Hash failed %s != %s.\n", res, cur->out); +                        ret |= -1;                  }                  ++cur;          } -        return 0; +        TEST_END(ret); + +        return ret;  }  static int test_md5(void)  { +        int ret = 0; +          struct vec_entry vec [] = {{                  "abc",                  "900150983cd24fb0d6963f7d28e17f72" @@ -85,6 +94,9 @@ static int test_md5(void)          struct vec_entry * cur = vec; +        TEST_START(); + +          while (cur->in != NULL) {                  uint8_t md5[16];                  char    res[33]; @@ -93,18 +105,22 @@ static int test_md5(void)                  sprintf(res, HASH_FMT128, HASH_VAL128(md5));                  if (strcmp(res, cur->out) != 0) { -                        printf("Hash failed %s != %s", res, cur->out); -                        return -1; +                        printf("Hash failed %s != %s.\n", res, cur->out); +                        ret |= -1;                  }                  ++cur;          } -        return 0; +        TEST_END(ret); + +        return ret;  }  static int test_sha3(void)  { +        int ret = 0; +          uint8_t sha3[64];          char    res[129]; @@ -114,12 +130,14 @@ static int test_sha3(void)                  "e642824c3f8cf24ad09234ee7d3c766f"                  "c9a3a5168d0c94ad73b46fdf"; +        TEST_START(); +          str_hash(HASH_SHA3_224, sha3, in);          sprintf(res, HASH_FMT224, HASH_VAL224(sha3));          if (strcmp(res, out) != 0) {                  printf("SHA3-224 failed %s != %s", res, out); -                return -1; +                ret |= -1;          }          out = @@ -130,8 +148,8 @@ static int test_sha3(void)          sprintf(res, HASH_FMT256, HASH_VAL256(sha3));          if (strcmp(res, out) != 0) { -                printf("SHA3-256 failed %s != %s", res, out); -                return -1; +                printf("SHA3-256 failed %s != %s.\n", res, out); +                ret |= -1;          }          out = @@ -143,8 +161,8 @@ static int test_sha3(void)          sprintf(res, HASH_FMT384, HASH_VAL384(sha3));          if (strcmp(res, out) != 0) { -                printf("SHA3-384failed %s != %s", res, out); -                return -1; +                printf("SHA3-384failed %s != %s.'n", res, out); +                ret |= -1;          }          out = @@ -157,11 +175,13 @@ static int test_sha3(void)          sprintf(res, HASH_FMT512, HASH_VAL512(sha3));          if (strcmp(res, out) != 0) { -                printf("SHA3-512 failed %s != %s", res, out); -                return -1; +                printf("SHA3-512 failed %s != %s.\n", res, out); +                ret |= -1;          } -        return 0; +        TEST_END(ret); + +        return ret;  }  int hash_test(int     argc,  | 
