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
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(format: "test1: '");
19 for (size_t i = 0; i < __arraycount(digest); i++)
20 printf(format: "%02x", digest[i]);
21 printf(format: "'\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(format: "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(format: "test3: '%s'\n", p);
47
48 free(ptr: 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(format: "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(format: "test5: '%s'\n", p);
65
66 free(ptr: 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(format: "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(format: "test7: '%s'\n", p);
83
84 free(ptr: 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(format: "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(format: "test9: '%s'\n", p);
104
105 free(ptr: p);
106}
107
108int main(void) {
109 printf(format: "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

source code of compiler-rt/test/sanitizer_common/TestCases/NetBSD/rmd160.cpp