blob: 26f5c4c10d23c1bba7cee28639bdab688e6ef4f2 [file] [log] [blame]
Paul Bakker37940d9f2009-07-10 22:38:58 +00001BEGIN_HEADER
2#include <polarssl/x509.h>
Paul Bakker96743fc2011-02-12 14:30:57 +00003#include <polarssl/pem.h>
Paul Bakkerb63b0af2011-01-13 17:54:59 +00004
Paul Bakker915275b2012-09-28 07:10:55 +00005int verify_none( void *data, x509_cert *crt, int certificate_depth, int *flags )
Paul Bakkerb63b0af2011-01-13 17:54:59 +00006{
Paul Bakker5a624082011-01-18 16:31:52 +00007 ((void) data);
8 ((void) crt);
9 ((void) certificate_depth);
Paul Bakker915275b2012-09-28 07:10:55 +000010 *flags |= BADCERT_OTHER;
11
12 return 0;
Paul Bakkerb63b0af2011-01-13 17:54:59 +000013}
14
Paul Bakker915275b2012-09-28 07:10:55 +000015int verify_all( void *data, x509_cert *crt, int certificate_depth, int *flags )
Paul Bakkerb63b0af2011-01-13 17:54:59 +000016{
Paul Bakker5a624082011-01-18 16:31:52 +000017 ((void) data);
18 ((void) crt);
19 ((void) certificate_depth);
Paul Bakker915275b2012-09-28 07:10:55 +000020 *flags = 0;
Paul Bakker5a624082011-01-18 16:31:52 +000021
Paul Bakkerb63b0af2011-01-13 17:54:59 +000022 return 0;
23}
24
Paul Bakker37940d9f2009-07-10 22:38:58 +000025END_HEADER
26
Paul Bakker5690efc2011-05-26 13:16:06 +000027BEGIN_DEPENDENCIES
28depends_on:POLARSSL_X509_PARSE_C:POLARSSL_BIGNUM_C
29END_DEPENDENCIES
30
Paul Bakker37940d9f2009-07-10 22:38:58 +000031BEGIN_CASE
32x509_cert_info:crt_file:result_str
33{
34 x509_cert crt;
35 char buf[2000];
Paul Bakker69998dd2009-07-11 19:15:20 +000036 int res;
Paul Bakker37940d9f2009-07-10 22:38:58 +000037
38 memset( &crt, 0, sizeof( x509_cert ) );
39 memset( buf, 0, 2000 );
40
Paul Bakker69e095c2011-12-10 21:55:01 +000041 TEST_ASSERT( x509parse_crtfile( &crt, {crt_file} ) == 0 );
Paul Bakker69998dd2009-07-11 19:15:20 +000042 res = x509parse_cert_info( buf, 2000, "", &crt );
Paul Bakker37940d9f2009-07-10 22:38:58 +000043
Paul Bakkerb08e6842012-02-11 18:43:20 +000044 x509_free( &crt );
45
Paul Bakker37940d9f2009-07-10 22:38:58 +000046 TEST_ASSERT( res != -1 );
47 TEST_ASSERT( res != -2 );
48
49 TEST_ASSERT( strcmp( buf, {result_str} ) == 0 );
50}
51END_CASE
52
53BEGIN_CASE
54x509_crl_info:crl_file:result_str
55{
56 x509_crl crl;
57 char buf[2000];
Paul Bakker69998dd2009-07-11 19:15:20 +000058 int res;
Paul Bakker37940d9f2009-07-10 22:38:58 +000059
60 memset( &crl, 0, sizeof( x509_crl ) );
61 memset( buf, 0, 2000 );
62
63 TEST_ASSERT( x509parse_crlfile( &crl, {crl_file} ) == 0 );
Paul Bakker69998dd2009-07-11 19:15:20 +000064 res = x509parse_crl_info( buf, 2000, "", &crl );
Paul Bakker37940d9f2009-07-10 22:38:58 +000065
Paul Bakkerb08e6842012-02-11 18:43:20 +000066 x509_crl_free( &crl );
67
Paul Bakker37940d9f2009-07-10 22:38:58 +000068 TEST_ASSERT( res != -1 );
69 TEST_ASSERT( res != -2 );
70
71 TEST_ASSERT( strcmp( buf, {result_str} ) == 0 );
72}
73END_CASE
74
75BEGIN_CASE
Paul Bakkerb63b0af2011-01-13 17:54:59 +000076x509_verify:crt_file:ca_file:crl_file:cn_name:result:flags:verify_callback
Paul Bakker37940d9f2009-07-10 22:38:58 +000077{
78 x509_cert crt;
79 x509_cert ca;
80 x509_crl crl;
81 int flags = 0;
Paul Bakker69998dd2009-07-11 19:15:20 +000082 int res;
Paul Bakker37940d9f2009-07-10 22:38:58 +000083
84 memset( &crt, 0, sizeof( x509_cert ) );
85 memset( &ca, 0, sizeof( x509_cert ) );
86 memset( &crl, 0, sizeof( x509_crl ) );
87
Paul Bakker69e095c2011-12-10 21:55:01 +000088 TEST_ASSERT( x509parse_crtfile( &crt, {crt_file} ) == 0 );
89 TEST_ASSERT( x509parse_crtfile( &ca, {ca_file} ) == 0 );
Paul Bakker37940d9f2009-07-10 22:38:58 +000090 TEST_ASSERT( x509parse_crlfile( &crl, {crl_file} ) == 0 );
91
Paul Bakkerb63b0af2011-01-13 17:54:59 +000092 res = x509parse_verify( &crt, &ca, &crl, {cn_name}, &flags, {verify_callback}, NULL );
Paul Bakker37940d9f2009-07-10 22:38:58 +000093
Paul Bakkerb08e6842012-02-11 18:43:20 +000094 x509_free( &crt );
95 x509_free( &ca );
96 x509_crl_free( &crl );
97
Paul Bakkerb63b0af2011-01-13 17:54:59 +000098 TEST_ASSERT( res == ( {result} ) );
99 TEST_ASSERT( flags == ( {flags} ) );
Paul Bakker37940d9f2009-07-10 22:38:58 +0000100}
101END_CASE
102
103BEGIN_CASE
104x509_dn_gets:crt_file:entity:result_str
105{
106 x509_cert crt;
107 char buf[2000];
Paul Bakker69998dd2009-07-11 19:15:20 +0000108 int res;
Paul Bakker37940d9f2009-07-10 22:38:58 +0000109
110 memset( &crt, 0, sizeof( x509_cert ) );
111 memset( buf, 0, 2000 );
112
Paul Bakker69e095c2011-12-10 21:55:01 +0000113 TEST_ASSERT( x509parse_crtfile( &crt, {crt_file} ) == 0 );
Paul Bakker69998dd2009-07-11 19:15:20 +0000114 res = x509parse_dn_gets( buf, 2000, &crt.{entity} );
Paul Bakker37940d9f2009-07-10 22:38:58 +0000115
Paul Bakkerb08e6842012-02-11 18:43:20 +0000116 x509_free( &crt );
117
Paul Bakker37940d9f2009-07-10 22:38:58 +0000118 TEST_ASSERT( res != -1 );
119 TEST_ASSERT( res != -2 );
120
121 TEST_ASSERT( strcmp( buf, {result_str} ) == 0 );
122}
123END_CASE
124
125BEGIN_CASE
126x509_time_expired:crt_file:entity:result
127{
128 x509_cert crt;
129
130 memset( &crt, 0, sizeof( x509_cert ) );
131
Paul Bakker69e095c2011-12-10 21:55:01 +0000132 TEST_ASSERT( x509parse_crtfile( &crt, {crt_file} ) == 0 );
Paul Bakker37940d9f2009-07-10 22:38:58 +0000133 TEST_ASSERT( x509parse_time_expired( &crt.{entity} ) == {result} );
Paul Bakkerb08e6842012-02-11 18:43:20 +0000134
135 x509_free( &crt );
Paul Bakker37940d9f2009-07-10 22:38:58 +0000136}
137END_CASE
138
139BEGIN_CASE
Paul Bakker6b0fa4f2009-07-20 20:35:41 +0000140x509parse_keyfile:key_file:password:result
Paul Bakker37940d9f2009-07-10 22:38:58 +0000141{
142 rsa_context rsa;
Paul Bakker69998dd2009-07-11 19:15:20 +0000143 int res;
Paul Bakker37940d9f2009-07-10 22:38:58 +0000144
145 memset( &rsa, 0, sizeof( rsa_context ) );
146
Paul Bakker69998dd2009-07-11 19:15:20 +0000147 res = x509parse_keyfile( &rsa, {key_file}, {password} );
Paul Bakker37940d9f2009-07-10 22:38:58 +0000148
149 TEST_ASSERT( res == {result} );
150
151 if( res == 0 )
152 {
153 TEST_ASSERT( rsa_check_privkey( &rsa ) == 0 );
154 }
Paul Bakkerb08e6842012-02-11 18:43:20 +0000155
156 rsa_free( &rsa );
Paul Bakker37940d9f2009-07-10 22:38:58 +0000157}
158END_CASE
159
160BEGIN_CASE
Paul Bakker36f1b192011-07-13 11:32:29 +0000161x509parse_public_keyfile:key_file:result
162{
163 rsa_context rsa;
164 int res;
165
166 memset( &rsa, 0, sizeof( rsa_context ) );
167
168 res = x509parse_public_keyfile( &rsa, {key_file} );
169
170 TEST_ASSERT( res == {result} );
171
172 if( res == 0 )
173 {
174 TEST_ASSERT( rsa_check_pubkey( &rsa ) == 0 );
175 }
Paul Bakkerb08e6842012-02-11 18:43:20 +0000176
177 rsa_free( &rsa );
Paul Bakker36f1b192011-07-13 11:32:29 +0000178}
179END_CASE
180
181BEGIN_CASE
Paul Bakkerb2c38f52009-07-19 19:36:15 +0000182x509parse_crt:crt_data:result_str:result
183{
184 x509_cert crt;
185 unsigned char buf[2000];
186 unsigned char output[2000];
187 int data_len, res;
188
189 memset( &crt, 0, sizeof( x509_cert ) );
190 memset( buf, 0, 2000 );
191 memset( output, 0, 2000 );
192
193 data_len = unhexify( buf, {crt_data} );
194
Paul Bakker69e095c2011-12-10 21:55:01 +0000195 TEST_ASSERT( x509parse_crt( &crt, buf, data_len ) == ( {result} ) );
Paul Bakkerb2c38f52009-07-19 19:36:15 +0000196 if( ( {result} ) == 0 )
197 {
198 res = x509parse_cert_info( (char *) output, 2000, "", &crt );
199
200 TEST_ASSERT( res != -1 );
201 TEST_ASSERT( res != -2 );
202
203 TEST_ASSERT( strcmp( (char *) output, {result_str} ) == 0 );
204 }
Paul Bakkerb08e6842012-02-11 18:43:20 +0000205
206 x509_free( &crt );
Paul Bakkerb2c38f52009-07-19 19:36:15 +0000207}
208END_CASE
209
210BEGIN_CASE
Paul Bakker6b0fa4f2009-07-20 20:35:41 +0000211x509parse_crl:crl_data:result_str:result
212{
213 x509_crl crl;
214 unsigned char buf[2000];
215 unsigned char output[2000];
216 int data_len, res;
217
218 memset( &crl, 0, sizeof( x509_crl ) );
219 memset( buf, 0, 2000 );
220 memset( output, 0, 2000 );
221
222 data_len = unhexify( buf, {crl_data} );
223
224 TEST_ASSERT( x509parse_crl( &crl, buf, data_len ) == ( {result} ) );
225 if( ( {result} ) == 0 )
226 {
227 res = x509parse_crl_info( (char *) output, 2000, "", &crl );
228
229 TEST_ASSERT( res != -1 );
230 TEST_ASSERT( res != -2 );
231
232 TEST_ASSERT( strcmp( (char *) output, {result_str} ) == 0 );
233 }
Paul Bakkerb08e6842012-02-11 18:43:20 +0000234
235 x509_crl_free( &crl );
Paul Bakker6b0fa4f2009-07-20 20:35:41 +0000236}
237END_CASE
238
239BEGIN_CASE
240x509parse_key:key_data:result_str:result
241{
242 rsa_context rsa;
243 unsigned char buf[2000];
244 unsigned char output[2000];
Paul Bakkereaf90d92011-07-13 14:21:52 +0000245 int data_len;
Paul Bakker6b0fa4f2009-07-20 20:35:41 +0000246
247 memset( &rsa, 0, sizeof( rsa_context ) );
248 memset( buf, 0, 2000 );
249 memset( output, 0, 2000 );
250
251 data_len = unhexify( buf, {key_data} );
252
Paul Bakker6b0fa4f2009-07-20 20:35:41 +0000253 TEST_ASSERT( x509parse_key( &rsa, buf, data_len, NULL, 0 ) == ( {result} ) );
254 if( ( {result} ) == 0 )
255 {
256 TEST_ASSERT( 1 );
257 }
Paul Bakkerb08e6842012-02-11 18:43:20 +0000258
259 rsa_free( &rsa );
Paul Bakker6b0fa4f2009-07-20 20:35:41 +0000260}
261END_CASE
262
263BEGIN_CASE
Paul Bakker37940d9f2009-07-10 22:38:58 +0000264x509_selftest:
265{
266 TEST_ASSERT( x509_self_test( 0 ) == 0 );
267}
268END_CASE