1 // RUN: %clangxx -O0 -g %s -o %t && %run %t 2>&1 | FileCheck %s
2
3 #include <assert.h>
4 #include <rmd160.h>
5 #include <stdio.h>
6 #include <stdlib.h>
7 #include <string.h>
8
test1()9 void 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
test2()24 void 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
test3()37 void 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
test4()51 void 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
test5()60 void 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
test6()69 void 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
test7()78 void 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
test8()87 void 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
test9()97 void 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
main(void)108 int 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: RMD160
122 // 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