134 lines · cpp
1// RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s2 3#include <assert.h>4#include <rmd160.h>5#include <stdio.h>6#include <stdlib.h>7#include <string.h>8 9void test1() {10 RMD160_CTX ctx;11 uint8_t entropy[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };12 uint8_t digest[RMD160_DIGEST_LENGTH];13 14 RMD160Init(&ctx);15 RMD160Update(&ctx, entropy, __arraycount(entropy));16 RMD160Final(digest, &ctx);17 18 printf("test1: '");19 for (size_t i = 0; i < __arraycount(digest); i++)20 printf("%02x", digest[i]);21 printf("'\n");22}23 24void test2() {25 RMD160_CTX ctx;26 uint8_t entropy[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };27 char digest[RMD160_DIGEST_STRING_LENGTH];28 29 RMD160Init(&ctx);30 RMD160Update(&ctx, entropy, __arraycount(entropy));31 char *p = RMD160End(&ctx, digest);32 assert(p == digest);33 34 printf("test2: '%s'\n", digest);35}36 37void test3() {38 RMD160_CTX ctx;39 uint8_t entropy[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };40 41 RMD160Init(&ctx);42 RMD160Update(&ctx, entropy, __arraycount(entropy));43 char *p = RMD160End(&ctx, NULL);44 assert(strlen(p) == RMD160_DIGEST_STRING_LENGTH - 1);45 46 printf("test3: '%s'\n", p);47 48 free(p);49}50 51void test4() {52 char digest[RMD160_DIGEST_STRING_LENGTH];53 54 char *p = RMD160File("/etc/fstab", digest);55 assert(p == digest);56 57 printf("test4: '%s'\n", p);58}59 60void test5() {61 char *p = RMD160File("/etc/fstab", NULL);62 assert(strlen(p) == RMD160_DIGEST_STRING_LENGTH - 1);63 64 printf("test5: '%s'\n", p);65 66 free(p);67}68 69void test6() {70 char digest[RMD160_DIGEST_STRING_LENGTH];71 72 char *p = RMD160FileChunk("/etc/fstab", digest, 10, 20);73 assert(p == digest);74 75 printf("test6: '%s'\n", p);76}77 78void test7() {79 char *p = RMD160FileChunk("/etc/fstab", NULL, 10, 20);80 assert(strlen(p) == RMD160_DIGEST_STRING_LENGTH - 1);81 82 printf("test7: '%s'\n", p);83 84 free(p);85}86 87void test8() {88 uint8_t entropy[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };89 char digest[RMD160_DIGEST_STRING_LENGTH];90 91 char *p = RMD160Data(entropy, __arraycount(entropy), digest);92 assert(p == digest);93 94 printf("test8: '%s'\n", p);95}96 97void test9() {98 uint8_t entropy[] = { 0x11, 0x22, 0x33, 0x44, 0x55, 0x66 };99 100 char *p = RMD160Data(entropy, __arraycount(entropy), NULL);101 assert(strlen(p) == RMD160_DIGEST_STRING_LENGTH - 1);102 103 printf("test9: '%s'\n", p);104 105 free(p);106}107 108int main(void) {109 printf("RMD160\n");110 111 test1();112 test2();113 test3();114 test4();115 test5();116 test6();117 test7();118 test8();119 test9();120 121 // CHECK: RMD160122 // CHECK: test1: '2787e5a006365df6e8e799315b669dc34866783c'123 // CHECK: test2: '2787e5a006365df6e8e799315b669dc34866783c'124 // CHECK: test3: '2787e5a006365df6e8e799315b669dc34866783c'125 // CHECK: test4: '{{.*}}'126 // CHECK: test5: '{{.*}}'127 // CHECK: test6: '{{.*}}'128 // CHECK: test7: '{{.*}}'129 // CHECK: test8: '2787e5a006365df6e8e799315b669dc34866783c'130 // CHECK: test9: '2787e5a006365df6e8e799315b669dc34866783c'131 132 return 0;133}134