blob: 82f82b11ee1cf53fc7940b9845d6b090b31a4087 [file] [log] [blame]
Paul Bakker17373852011-01-06 14:20:01 +00001BEGIN_HEADER
2#include <polarssl/config.h>
3#include <polarssl/md.h>
4#include <polarssl/md2.h>
5#include <polarssl/md4.h>
6#include <polarssl/md5.h>
7#include <polarssl/sha1.h>
8#include <polarssl/sha2.h>
9#include <polarssl/sha4.h>
10END_HEADER
11
12BEGIN_CASE
13md_text:text_md_name:text_src_string:hex_hash_string
14{
15 char md_name[100];
16 unsigned char src_str[1000];
17 unsigned char hash_str[1000];
18 unsigned char output[100];
19 const md_info_t *md_info = NULL;
20
21 memset(md_name, 0x00, 100);
22 memset(src_str, 0x00, 1000);
23 memset(hash_str, 0x00, 1000);
24 memset(output, 0x00, 100);
25
26 strcpy( (char *) src_str, {text_src_string} );
27
28 strncpy( (char *) md_name, {text_md_name}, 100 );
29 md_info = md_info_from_string(md_name);
30 TEST_ASSERT( md_info != NULL );
31
32 TEST_ASSERT ( 0 == md( md_info, src_str, strlen( (char *) src_str ), output ) );
33 hexify( hash_str, output, md_get_size(md_info) );
34
35 TEST_ASSERT( strcmp( (char *) hash_str, {hex_hash_string} ) == 0 );
36}
37END_CASE
38
39BEGIN_CASE
40md_hex:text_md_name:hex_src_string:hex_hash_string
41{
42 char md_name[100];
43 unsigned char src_str[10000];
44 unsigned char hash_str[10000];
45 unsigned char output[100];
46 int src_len;
47 const md_info_t *md_info = NULL;
48
49 memset(md_name, 0x00, 100);
50 memset(src_str, 0x00, 10000);
51 memset(hash_str, 0x00, 10000);
52 memset(output, 0x00, 100);
53
54 strncpy( (char *) md_name, {text_md_name}, 100 );
55 md_info = md_info_from_string(md_name);
56 TEST_ASSERT( md_info != NULL );
57
58 src_len = unhexify( src_str, {hex_src_string} );
59 TEST_ASSERT ( 0 == md( md_info, src_str, src_len, output ) );
60
61 hexify( hash_str, output, md_get_size(md_info) );
62
63 TEST_ASSERT( strcmp( (char *) hash_str, {hex_hash_string} ) == 0 );
64}
65END_CASE
66
67BEGIN_CASE
68md_text_multi:text_md_name:text_src_string:hex_hash_string
69{
70 char md_name[100];
71 unsigned char src_str[1000];
72 unsigned char hash_str[1000];
73 unsigned char output[100];
74
75 const md_info_t *md_info = NULL;
76 md_context_t ctx = MD_CONTEXT_T_INIT;
77
78 memset(md_name, 0x00, 100);
79 memset(src_str, 0x00, 1000);
80 memset(hash_str, 0x00, 1000);
81 memset(output, 0x00, 100);
82
83 strcpy( (char *) src_str, {text_src_string} );
84
85 strncpy( (char *) md_name, {text_md_name}, 100 );
86 md_info = md_info_from_string(md_name);
87 TEST_ASSERT( md_info != NULL );
88
89 TEST_ASSERT ( 0 == md_starts( md_info, &ctx ) );
90 TEST_ASSERT ( ctx.md_ctx != NULL );
91 TEST_ASSERT ( 0 == md_update( &ctx, src_str, strlen( (char *) src_str ) ) );
92 TEST_ASSERT ( 0 == md_finish( &ctx, output ) );
93 TEST_ASSERT ( 0 == md_free_ctx( &ctx ) );
94
95 hexify( hash_str, output, md_get_size(md_info) );
96
97 TEST_ASSERT( strcmp( (char *) hash_str, {hex_hash_string} ) == 0 );
98}
99END_CASE
100
101BEGIN_CASE
102md_hex_multi:text_md_name:hex_src_string:hex_hash_string
103{
104 char md_name[100];
105 unsigned char src_str[10000];
106 unsigned char hash_str[10000];
107 unsigned char output[100];
108 int src_len;
109 const md_info_t *md_info = NULL;
110 md_context_t ctx = MD_CONTEXT_T_INIT;
111
112 memset(md_name, 0x00, 100);
113 memset(src_str, 0x00, 10000);
114 memset(hash_str, 0x00, 10000);
115 memset(output, 0x00, 100);
116
117 strncpy( (char *) md_name, {text_md_name}, 100 );
118 md_info = md_info_from_string(md_name);
119 TEST_ASSERT( md_info != NULL );
120
121 src_len = unhexify( src_str, {hex_src_string} );
122
123 TEST_ASSERT ( 0 == md_starts( md_info, &ctx ) );
124 TEST_ASSERT ( ctx.md_ctx != NULL );
125 TEST_ASSERT ( 0 == md_update( &ctx, src_str, src_len ) );
126 TEST_ASSERT ( 0 == md_finish( &ctx, output ) );
127 TEST_ASSERT ( 0 == md_free_ctx( &ctx ) );
128
129 hexify( hash_str, output, md_get_size(md_info) );
130
131 TEST_ASSERT( strcmp( (char *) hash_str, {hex_hash_string} ) == 0 );
132}
133END_CASE
134
135BEGIN_CASE
136md_hmac:text_md_name:trunc_size:hex_key_string:hex_src_string:hex_hash_string
137{
138 char md_name[100];
139 unsigned char src_str[10000];
140 unsigned char key_str[10000];
141 unsigned char hash_str[10000];
142 unsigned char output[100];
143 int key_len, src_len;
144 const md_info_t *md_info = NULL;
145
146 memset(md_name, 0x00, 100);
147 memset(src_str, 0x00, 10000);
148 memset(key_str, 0x00, 10000);
149 memset(hash_str, 0x00, 10000);
150 memset(output, 0x00, 100);
151
152 strncpy( (char *) md_name, {text_md_name}, 100 );
153 md_info = md_info_from_string( md_name );
154 TEST_ASSERT( md_info != NULL );
155
156 key_len = unhexify( key_str, {hex_key_string} );
157 src_len = unhexify( src_str, {hex_src_string} );
158
159 TEST_ASSERT ( md_hmac( md_info, key_str, key_len, src_str, src_len, output ) == 0 );
160 hexify( hash_str, output, md_get_size(md_info) );
161
162 TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
163}
164END_CASE
165
166BEGIN_CASE
167md_hmac_multi:text_md_name:trunc_size:hex_key_string:hex_src_string:hex_hash_string
168{
169 char md_name[100];
170 unsigned char src_str[10000];
171 unsigned char key_str[10000];
172 unsigned char hash_str[10000];
173 unsigned char output[100];
174 int key_len, src_len;
175 const md_info_t *md_info = NULL;
176 md_context_t ctx = MD_CONTEXT_T_INIT;
177
178 memset(md_name, 0x00, 100);
179 memset(src_str, 0x00, 10000);
180 memset(key_str, 0x00, 10000);
181 memset(hash_str, 0x00, 10000);
182 memset(output, 0x00, 100);
183
184 strncpy( (char *) md_name, {text_md_name}, 100 );
185 md_info = md_info_from_string( md_name );
186 TEST_ASSERT( md_info != NULL );
187
188 key_len = unhexify( key_str, {hex_key_string} );
189 src_len = unhexify( src_str, {hex_src_string} );
190
191 TEST_ASSERT ( 0 == md_hmac_starts( md_info, &ctx, key_str, key_len ) );
192 TEST_ASSERT ( ctx.md_ctx != NULL );
193 TEST_ASSERT ( 0 == md_hmac_update( &ctx, src_str, src_len ) );
194 TEST_ASSERT ( 0 == md_hmac_finish( &ctx, output ) );
195 TEST_ASSERT ( 0 == md_free_ctx( &ctx ) );
196
197 hexify( hash_str, output, md_get_size(md_info) );
198
199 TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
200}
201END_CASE
202BEGIN_CASE
203md_file:text_md_name:filename:hex_hash_string
204{
205 char md_name[100];
206 unsigned char hash_str[1000];
207 unsigned char output[100];
208 const md_info_t *md_info = NULL;
209
210 memset(md_name, 0x00, 100);
211 memset(hash_str, 0x00, 1000);
212 memset(output, 0x00, 100);
213
214 strncpy( (char *) md_name, {text_md_name}, 100 );
215 md_info = md_info_from_string( md_name );
216 TEST_ASSERT( md_info != NULL );
217
218 md_file( md_info, {filename}, output);
219 hexify( hash_str, output, md_get_size(md_info) );
220
221 TEST_ASSERT( strcmp( (char *) hash_str, {hex_hash_string} ) == 0 );
222}
223END_CASE