• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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