Deleted Added
full compact
testcrypto.c (302408) testcrypto.c (362181)
1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0

--- 19 unchanged lines hidden (view full) ---

28#define TEST_STRING "12345"
29#define ALIGNED_STRING "123456789012345"
30
31static const apr_crypto_driver_t *get_driver(abts_case *tc, apr_pool_t *pool,
32 const char *name, const char *params)
33{
34
35 const apr_crypto_driver_t *driver = NULL;
1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements. See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0

--- 19 unchanged lines hidden (view full) ---

28#define TEST_STRING "12345"
29#define ALIGNED_STRING "123456789012345"
30
31static const apr_crypto_driver_t *get_driver(abts_case *tc, apr_pool_t *pool,
32 const char *name, const char *params)
33{
34
35 const apr_crypto_driver_t *driver = NULL;
36 const apu_err_t *err = NULL;
36 const apu_err_t *result = NULL;
37 apr_status_t rv;
38
39 rv = apr_crypto_init(pool);
40 ABTS_ASSERT(tc, "failed to init apr_crypto", rv == APR_SUCCESS);
41
37 apr_status_t rv;
38
39 rv = apr_crypto_init(pool);
40 ABTS_ASSERT(tc, "failed to init apr_crypto", rv == APR_SUCCESS);
41
42 rv = apr_crypto_get_driver(&driver, name, params, &err, pool);
43 if (APR_SUCCESS != rv && err) {
44 ABTS_NOT_IMPL(tc, err->msg);
42 rv = apr_crypto_get_driver(&driver, name, params, &result, pool);
43 if (APR_ENOTIMPL == rv) {
44 ABTS_NOT_IMPL(tc,
45 apr_psprintf(pool, "Crypto driver '%s' not implemented", (char *)name));
45 return NULL;
46 }
46 return NULL;
47 }
47 if (APR_ENOTIMPL == rv) {
48 ABTS_NOT_IMPL(tc, (char *)driver);
48 if (APR_EDSOOPEN == rv) {
49 ABTS_NOT_IMPL(tc,
50 apr_psprintf(pool, "Crypto driver '%s' DSO could not be opened", (char *)name));
49 return NULL;
50 }
51 return NULL;
52 }
51 ABTS_ASSERT(tc, "failed to apr_crypto_get_driver", rv == APR_SUCCESS);
53 if (APR_SUCCESS != rv && result) {
54 char err[1024];
55 apr_strerror(rv, err, sizeof(err) - 1);
56 fprintf(stderr, "get_driver error %d: %s: '%s' native error %d: %s (%s),",
57 rv, err, name, result->rc, result->reason ? result->reason : "",
58 result->msg ? result->msg : "");
59 }
60 ABTS_ASSERT(tc, apr_psprintf(pool, "failed to apr_crypto_get_driver for '%s' with %d",
61 name, rv), rv == APR_SUCCESS);
52 ABTS_ASSERT(tc, "apr_crypto_get_driver returned NULL", driver != NULL);
53 if (!driver || rv) {
54 return NULL;
55 }
56
57 return driver;
58
59}
60
61static const apr_crypto_driver_t *get_nss_driver(abts_case *tc,
62 apr_pool_t *pool)
63{
64
65 /* initialise NSS */
62 ABTS_ASSERT(tc, "apr_crypto_get_driver returned NULL", driver != NULL);
63 if (!driver || rv) {
64 return NULL;
65 }
66
67 return driver;
68
69}
70
71static const apr_crypto_driver_t *get_nss_driver(abts_case *tc,
72 apr_pool_t *pool)
73{
74
75 /* initialise NSS */
66 return get_driver(tc, pool, "nss", "dir=data");
76 return get_driver(tc, pool, "nss", "");
67
68}
69
70static const apr_crypto_driver_t *get_openssl_driver(abts_case *tc,
71 apr_pool_t *pool)
72{
73
74 return get_driver(tc, pool, "openssl", NULL);
75
76}
77
77
78}
79
80static const apr_crypto_driver_t *get_openssl_driver(abts_case *tc,
81 apr_pool_t *pool)
82{
83
84 return get_driver(tc, pool, "openssl", NULL);
85
86}
87
88static const apr_crypto_driver_t *get_commoncrypto_driver(abts_case *tc,
89 apr_pool_t *pool)
90{
91
92 return get_driver(tc, pool, "commoncrypto", NULL);
93
94}
95
78static apr_crypto_t *make(abts_case *tc, apr_pool_t *pool,
79 const apr_crypto_driver_t *driver)
80{
81
82 apr_crypto_t *f = NULL;
83
84 if (!driver) {
85 return NULL;
86 }
87
88 /* get the context */
89 apr_crypto_make(&f, driver, "engine=openssl", pool);
90 ABTS_ASSERT(tc, "apr_crypto_make returned NULL", f != NULL);
91
92 return f;
93
94}
95
96static apr_crypto_t *make(abts_case *tc, apr_pool_t *pool,
97 const apr_crypto_driver_t *driver)
98{
99
100 apr_crypto_t *f = NULL;
101
102 if (!driver) {
103 return NULL;
104 }
105
106 /* get the context */
107 apr_crypto_make(&f, driver, "engine=openssl", pool);
108 ABTS_ASSERT(tc, "apr_crypto_make returned NULL", f != NULL);
109
110 return f;
111
112}
113
114static const apr_crypto_key_t *keysecret(abts_case *tc, apr_pool_t *pool,
115 const apr_crypto_driver_t *driver, const apr_crypto_t *f,
116 apr_crypto_block_key_type_e type, apr_crypto_block_key_mode_e mode,
117 int doPad, apr_size_t secretLen, const char *description)
118{
119 apr_crypto_key_t *key = NULL;
120 const apu_err_t *result = NULL;
121 apr_crypto_key_rec_t *rec = apr_pcalloc(pool, sizeof(apr_crypto_key_rec_t));
122 apr_status_t rv;
123
124 if (!f) {
125 return NULL;
126 }
127
128 rec->ktype = APR_CRYPTO_KTYPE_SECRET;
129 rec->type = type;
130 rec->mode = mode;
131 rec->pad = doPad;
132 rec->k.secret.secret = apr_pcalloc(pool, secretLen);
133 rec->k.secret.secretLen = secretLen;
134
135 /* init the passphrase */
136 rv = apr_crypto_key(&key, rec, f, pool);
137 if (APR_ENOCIPHER == rv) {
138 apr_crypto_error(&result, f);
139 ABTS_NOT_IMPL(tc,
140 apr_psprintf(pool, "skipped: %s %s key return APR_ENOCIPHER: error %d: %s (%s)\n", description, apr_crypto_driver_name(driver), result->rc, result->reason ? result->reason : "", result->msg ? result->msg : ""));
141 return NULL;
142 }
143 else {
144 if (APR_SUCCESS != rv) {
145 apr_crypto_error(&result, f);
146 fprintf(stderr, "key: %s %s apr error %d / native error %d: %s (%s)\n",
147 description, apr_crypto_driver_name(driver), rv, result->rc,
148 result->reason ? result->reason : "",
149 result->msg ? result->msg : "");
150 }
151 ABTS_ASSERT(tc, "apr_crypto_key returned APR_EKEYLENGTH", rv != APR_EKEYLENGTH);
152 ABTS_ASSERT(tc, "apr_crypto_key returned APR_ENOKEY", rv != APR_ENOKEY);
153 ABTS_ASSERT(tc, "apr_crypto_key returned APR_EPADDING",
154 rv != APR_EPADDING);
155 ABTS_ASSERT(tc, "apr_crypto_key returned APR_EKEYTYPE",
156 rv != APR_EKEYTYPE);
157 ABTS_ASSERT(tc, "failed to apr_crypto_key", rv == APR_SUCCESS);
158 ABTS_ASSERT(tc, "apr_crypto_key returned NULL context", key != NULL);
159 }
160 if (rv) {
161 return NULL;
162 }
163 return key;
164
165}
166
96static const apr_crypto_key_t *passphrase(abts_case *tc, apr_pool_t *pool,
97 const apr_crypto_driver_t *driver, const apr_crypto_t *f,
98 apr_crypto_block_key_type_e type, apr_crypto_block_key_mode_e mode,
99 int doPad, const char *description)
100{
101
102 apr_crypto_key_t *key = NULL;
103 const apu_err_t *result = NULL;

--- 15 unchanged lines hidden (view full) ---

119 "skipped: %s %s passphrase return APR_ENOCIPHER: error %d: %s (%s)\n",
120 description, apr_crypto_driver_name(driver), result->rc,
121 result->reason ? result->reason : "", result->msg ? result->msg : ""));
122 return NULL;
123 }
124 else {
125 if (APR_SUCCESS != rv) {
126 apr_crypto_error(&result, f);
167static const apr_crypto_key_t *passphrase(abts_case *tc, apr_pool_t *pool,
168 const apr_crypto_driver_t *driver, const apr_crypto_t *f,
169 apr_crypto_block_key_type_e type, apr_crypto_block_key_mode_e mode,
170 int doPad, const char *description)
171{
172
173 apr_crypto_key_t *key = NULL;
174 const apu_err_t *result = NULL;

--- 15 unchanged lines hidden (view full) ---

190 "skipped: %s %s passphrase return APR_ENOCIPHER: error %d: %s (%s)\n",
191 description, apr_crypto_driver_name(driver), result->rc,
192 result->reason ? result->reason : "", result->msg ? result->msg : ""));
193 return NULL;
194 }
195 else {
196 if (APR_SUCCESS != rv) {
197 apr_crypto_error(&result, f);
127 fprintf(stderr, "passphrase: %s %s native error %d: %s (%s)\n",
128 description, apr_crypto_driver_name(driver), result->rc,
198 fprintf(stderr, "passphrase: %s %s apr error %d / native error %d: %s (%s)\n",
199 description, apr_crypto_driver_name(driver), rv, result->rc,
129 result->reason ? result->reason : "",
130 result->msg ? result->msg : "");
131 }
132 ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_ENOKEY", rv != APR_ENOKEY);
133 ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_EPADDING", rv != APR_EPADDING);
134 ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_EKEYTYPE", rv != APR_EKEYTYPE);
135 ABTS_ASSERT(tc, "failed to apr_crypto_passphrase", rv == APR_SUCCESS);
136 ABTS_ASSERT(tc, "apr_crypto_passphrase returned NULL context", key != NULL);
137 }
138 if (rv) {
139 return NULL;
140 }
141 return key;
142
143}
144
200 result->reason ? result->reason : "",
201 result->msg ? result->msg : "");
202 }
203 ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_ENOKEY", rv != APR_ENOKEY);
204 ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_EPADDING", rv != APR_EPADDING);
205 ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_EKEYTYPE", rv != APR_EKEYTYPE);
206 ABTS_ASSERT(tc, "failed to apr_crypto_passphrase", rv == APR_SUCCESS);
207 ABTS_ASSERT(tc, "apr_crypto_passphrase returned NULL context", key != NULL);
208 }
209 if (rv) {
210 return NULL;
211 }
212 return key;
213
214}
215
216static const apr_crypto_key_t *keypassphrase(abts_case *tc, apr_pool_t *pool,
217 const apr_crypto_driver_t *driver, const apr_crypto_t *f,
218 apr_crypto_block_key_type_e type, apr_crypto_block_key_mode_e mode,
219 int doPad, const char *description)
220{
221
222 apr_crypto_key_t *key = NULL;
223 const apu_err_t *result = NULL;
224 const char *pass = "secret";
225 const char *salt = "salt";
226 apr_crypto_key_rec_t *rec = apr_pcalloc(pool, sizeof(apr_crypto_key_rec_t));
227 apr_status_t rv;
228
229 if (!f) {
230 return NULL;
231 }
232
233 rec->ktype = APR_CRYPTO_KTYPE_PASSPHRASE;
234 rec->type = type;
235 rec->mode = mode;
236 rec->pad = doPad;
237 rec->k.passphrase.pass = pass;
238 rec->k.passphrase.passLen = strlen(pass);
239 rec->k.passphrase.salt = (unsigned char *)salt;
240 rec->k.passphrase.saltLen = strlen(salt);
241 rec->k.passphrase.iterations = 4096;
242
243 /* init the passphrase */
244 rv = apr_crypto_key(&key, rec, f, pool);
245 if (APR_ENOCIPHER == rv) {
246 apr_crypto_error(&result, f);
247 ABTS_NOT_IMPL(tc, apr_psprintf(pool,
248 "skipped: %s %s key passphrase return APR_ENOCIPHER: error %d: %s (%s)\n",
249 description, apr_crypto_driver_name(driver), result->rc,
250 result->reason ? result->reason : "", result->msg ? result->msg : ""));
251 return NULL;
252 }
253 else {
254 if (APR_SUCCESS != rv) {
255 apr_crypto_error(&result, f);
256 fprintf(stderr, "key passphrase: %s %s apr error %d / native error %d: %s (%s)\n",
257 description, apr_crypto_driver_name(driver), rv, result->rc,
258 result->reason ? result->reason : "",
259 result->msg ? result->msg : "");
260 }
261 ABTS_ASSERT(tc, "apr_crypto_key returned APR_ENOKEY", rv != APR_ENOKEY);
262 ABTS_ASSERT(tc, "apr_crypto_key returned APR_EPADDING", rv != APR_EPADDING);
263 ABTS_ASSERT(tc, "apr_crypto_key returned APR_EKEYTYPE", rv != APR_EKEYTYPE);
264 ABTS_ASSERT(tc, "failed to apr_crypto_key", rv == APR_SUCCESS);
265 ABTS_ASSERT(tc, "apr_crypto_key returned NULL context", key != NULL);
266 }
267 if (rv) {
268 return NULL;
269 }
270 return key;
271
272}
273
145static unsigned char *encrypt_block(abts_case *tc, apr_pool_t *pool,
146 const apr_crypto_driver_t *driver, const apr_crypto_t *f,
147 const apr_crypto_key_t *key, const unsigned char *in,
148 const apr_size_t inlen, unsigned char **cipherText,
149 apr_size_t *cipherTextLen, const unsigned char **iv,
150 apr_size_t *blockSize, const char *description)
151{
152

--- 9 unchanged lines hidden (view full) ---

162 /* init the encryption */
163 rv = apr_crypto_block_encrypt_init(&block, iv, key, blockSize, pool);
164 if (APR_ENOTIMPL == rv) {
165 ABTS_NOT_IMPL(tc, "apr_crypto_block_encrypt_init returned APR_ENOTIMPL");
166 }
167 else {
168 if (APR_SUCCESS != rv) {
169 apr_crypto_error(&result, f);
274static unsigned char *encrypt_block(abts_case *tc, apr_pool_t *pool,
275 const apr_crypto_driver_t *driver, const apr_crypto_t *f,
276 const apr_crypto_key_t *key, const unsigned char *in,
277 const apr_size_t inlen, unsigned char **cipherText,
278 apr_size_t *cipherTextLen, const unsigned char **iv,
279 apr_size_t *blockSize, const char *description)
280{
281

--- 9 unchanged lines hidden (view full) ---

291 /* init the encryption */
292 rv = apr_crypto_block_encrypt_init(&block, iv, key, blockSize, pool);
293 if (APR_ENOTIMPL == rv) {
294 ABTS_NOT_IMPL(tc, "apr_crypto_block_encrypt_init returned APR_ENOTIMPL");
295 }
296 else {
297 if (APR_SUCCESS != rv) {
298 apr_crypto_error(&result, f);
170 fprintf(stderr, "encrypt_init: %s %s native error %d: %s (%s)\n",
171 description, apr_crypto_driver_name(driver), result->rc,
299 fprintf(stderr,
300 "encrypt_init: %s %s (APR %d) native error %d: %s (%s)\n",
301 description, apr_crypto_driver_name(driver), rv, result->rc,
172 result->reason ? result->reason : "",
173 result->msg ? result->msg : "");
174 }
302 result->reason ? result->reason : "",
303 result->msg ? result->msg : "");
304 }
175 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_ENOKEY", rv != APR_ENOKEY);
176 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_ENOIV", rv != APR_ENOIV);
177 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_EKEYTYPE", rv != APR_EKEYTYPE);
178 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_EKEYLENGTH", rv != APR_EKEYLENGTH);
179 ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt_init", rv == APR_SUCCESS);
180 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned NULL context", block != NULL);
305 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_ENOKEY",
306 rv != APR_ENOKEY);
307 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_ENOIV",
308 rv != APR_ENOIV);
309 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_EKEYTYPE",
310 rv != APR_EKEYTYPE);
311 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_EKEYLENGTH",
312 rv != APR_EKEYLENGTH);
313 ABTS_ASSERT(tc,
314 "apr_crypto_block_encrypt_init returned APR_ENOTENOUGHENTROPY",
315 rv != APR_ENOTENOUGHENTROPY);
316 ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt_init",
317 rv == APR_SUCCESS);
318 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned NULL context",
319 block != NULL);
181 }
182 if (!block || rv) {
183 return NULL;
184 }
185
186 /* encrypt the block */
187 rv = apr_crypto_block_encrypt(cipherText, cipherTextLen, in, inlen, block);
188 if (APR_SUCCESS != rv) {
189 apr_crypto_error(&result, f);
320 }
321 if (!block || rv) {
322 return NULL;
323 }
324
325 /* encrypt the block */
326 rv = apr_crypto_block_encrypt(cipherText, cipherTextLen, in, inlen, block);
327 if (APR_SUCCESS != rv) {
328 apr_crypto_error(&result, f);
190 fprintf(stderr, "encrypt: %s %s native error %d: %s (%s)\n",
191 description, apr_crypto_driver_name(driver), result->rc,
192 result->reason ? result->reason : "", result->msg ? result->msg
193 : "");
329 fprintf(stderr, "encrypt: %s %s (APR %d) native error %d: %s (%s)\n",
330 description, apr_crypto_driver_name(driver), rv, result->rc,
331 result->reason ? result->reason : "",
332 result->msg ? result->msg : "");
194 }
195 ABTS_ASSERT(tc, "apr_crypto_block_encrypt returned APR_ECRYPT", rv != APR_ECRYPT);
196 ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt", rv == APR_SUCCESS);
197 ABTS_ASSERT(tc, "apr_crypto_block_encrypt failed to allocate buffer", *cipherText != NULL);
198 if (rv) {
199 return NULL;
200 }
201
202 /* finalise the encryption */
203 rv = apr_crypto_block_encrypt_finish(*cipherText + *cipherTextLen, &len,
204 block);
205 if (APR_SUCCESS != rv) {
206 apr_crypto_error(&result, f);
333 }
334 ABTS_ASSERT(tc, "apr_crypto_block_encrypt returned APR_ECRYPT", rv != APR_ECRYPT);
335 ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt", rv == APR_SUCCESS);
336 ABTS_ASSERT(tc, "apr_crypto_block_encrypt failed to allocate buffer", *cipherText != NULL);
337 if (rv) {
338 return NULL;
339 }
340
341 /* finalise the encryption */
342 rv = apr_crypto_block_encrypt_finish(*cipherText + *cipherTextLen, &len,
343 block);
344 if (APR_SUCCESS != rv) {
345 apr_crypto_error(&result, f);
207 fprintf(stderr, "encrypt_finish: %s %s native error %d: %s (%s)\n",
208 description, apr_crypto_driver_name(driver), result->rc,
209 result->reason ? result->reason : "", result->msg ? result->msg
210 : "");
346 fprintf(stderr,
347 "encrypt_finish: %s %s (APR %d) native error %d: %s (%s)\n",
348 description, apr_crypto_driver_name(driver), rv, result->rc,
349 result->reason ? result->reason : "",
350 result->msg ? result->msg : "");
211 }
212 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_ECRYPT", rv != APR_ECRYPT);
213 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_EPADDING", rv != APR_EPADDING);
351 }
352 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_ECRYPT", rv != APR_ECRYPT);
353 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_EPADDING", rv != APR_EPADDING);
354 ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_ENOSPACE", rv != APR_ENOSPACE);
214 ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt_finish", rv == APR_SUCCESS);
215 *cipherTextLen += len;
216 apr_crypto_block_cleanup(block);
217 if (rv) {
218 return NULL;
219 }
220
221 return *cipherText;

--- 20 unchanged lines hidden (view full) ---

242 /* init the decryption */
243 rv = apr_crypto_block_decrypt_init(&block, blockSize, iv, key, pool);
244 if (APR_ENOTIMPL == rv) {
245 ABTS_NOT_IMPL(tc, "apr_crypto_block_decrypt_init returned APR_ENOTIMPL");
246 }
247 else {
248 if (APR_SUCCESS != rv) {
249 apr_crypto_error(&result, f);
355 ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt_finish", rv == APR_SUCCESS);
356 *cipherTextLen += len;
357 apr_crypto_block_cleanup(block);
358 if (rv) {
359 return NULL;
360 }
361
362 return *cipherText;

--- 20 unchanged lines hidden (view full) ---

383 /* init the decryption */
384 rv = apr_crypto_block_decrypt_init(&block, blockSize, iv, key, pool);
385 if (APR_ENOTIMPL == rv) {
386 ABTS_NOT_IMPL(tc, "apr_crypto_block_decrypt_init returned APR_ENOTIMPL");
387 }
388 else {
389 if (APR_SUCCESS != rv) {
390 apr_crypto_error(&result, f);
250 fprintf(stderr, "decrypt_init: %s %s native error %d: %s (%s)\n",
251 description, apr_crypto_driver_name(driver), result->rc,
391 fprintf(stderr,
392 "decrypt_init: %s %s (APR %d) native error %d: %s (%s)\n",
393 description, apr_crypto_driver_name(driver), rv, result->rc,
252 result->reason ? result->reason : "",
253 result->msg ? result->msg : "");
254 }
255 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_ENOKEY", rv != APR_ENOKEY);
256 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_ENOIV", rv != APR_ENOIV);
257 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_EKEYTYPE", rv != APR_EKEYTYPE);
258 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_EKEYLENGTH", rv != APR_EKEYLENGTH);
259 ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt_init", rv == APR_SUCCESS);
260 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned NULL context", block != NULL);
261 }
262 if (!block || rv) {
263 return NULL;
264 }
265
266 /* decrypt the block */
267 rv = apr_crypto_block_decrypt(plainText, plainTextLen, cipherText,
268 cipherTextLen, block);
269 if (APR_SUCCESS != rv) {
270 apr_crypto_error(&result, f);
394 result->reason ? result->reason : "",
395 result->msg ? result->msg : "");
396 }
397 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_ENOKEY", rv != APR_ENOKEY);
398 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_ENOIV", rv != APR_ENOIV);
399 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_EKEYTYPE", rv != APR_EKEYTYPE);
400 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_EKEYLENGTH", rv != APR_EKEYLENGTH);
401 ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt_init", rv == APR_SUCCESS);
402 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned NULL context", block != NULL);
403 }
404 if (!block || rv) {
405 return NULL;
406 }
407
408 /* decrypt the block */
409 rv = apr_crypto_block_decrypt(plainText, plainTextLen, cipherText,
410 cipherTextLen, block);
411 if (APR_SUCCESS != rv) {
412 apr_crypto_error(&result, f);
271 fprintf(stderr, "decrypt: %s %s native error %d: %s (%s)\n",
272 description, apr_crypto_driver_name(driver), result->rc,
273 result->reason ? result->reason : "", result->msg ? result->msg
274 : "");
413 fprintf(stderr, "decrypt: %s %s (APR %d) native error %d: %s (%s)\n",
414 description, apr_crypto_driver_name(driver), rv, result->rc,
415 result->reason ? result->reason : "",
416 result->msg ? result->msg : "");
275 }
276 ABTS_ASSERT(tc, "apr_crypto_block_decrypt returned APR_ECRYPT", rv != APR_ECRYPT);
277 ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt", rv == APR_SUCCESS);
278 ABTS_ASSERT(tc, "apr_crypto_block_decrypt failed to allocate buffer", *plainText != NULL);
279 if (rv) {
280 return NULL;
281 }
282
283 /* finalise the decryption */
284 rv = apr_crypto_block_decrypt_finish(*plainText + *plainTextLen, &len,
285 block);
286 if (APR_SUCCESS != rv) {
287 apr_crypto_error(&result, f);
417 }
418 ABTS_ASSERT(tc, "apr_crypto_block_decrypt returned APR_ECRYPT", rv != APR_ECRYPT);
419 ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt", rv == APR_SUCCESS);
420 ABTS_ASSERT(tc, "apr_crypto_block_decrypt failed to allocate buffer", *plainText != NULL);
421 if (rv) {
422 return NULL;
423 }
424
425 /* finalise the decryption */
426 rv = apr_crypto_block_decrypt_finish(*plainText + *plainTextLen, &len,
427 block);
428 if (APR_SUCCESS != rv) {
429 apr_crypto_error(&result, f);
288 fprintf(stderr, "decrypt_finish: %s %s native error %d: %s (%s)\n",
289 description, apr_crypto_driver_name(driver), result->rc,
290 result->reason ? result->reason : "", result->msg ? result->msg
291 : "");
430 fprintf(stderr,
431 "decrypt_finish: %s %s (APR %d) native error %d: %s (%s)\n",
432 description, apr_crypto_driver_name(driver), rv, result->rc,
433 result->reason ? result->reason : "",
434 result->msg ? result->msg : "");
292 }
293 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_ECRYPT", rv != APR_ECRYPT);
294 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_EPADDING", rv != APR_EPADDING);
435 }
436 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_ECRYPT", rv != APR_ECRYPT);
437 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_EPADDING", rv != APR_EPADDING);
438 ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_ENOSPACE", rv != APR_ENOSPACE);
295 ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt_finish", rv == APR_SUCCESS);
296 if (rv) {
297 return NULL;
298 }
299
300 *plainTextLen += len;
301 apr_crypto_block_cleanup(block);
302

--- 8 unchanged lines hidden (view full) ---

311 * with the first driver, and decrypted with the second.
312 *
313 * If the two drivers interoperate, the test passes.
314 */
315static void crypto_block_cross(abts_case *tc, apr_pool_t *pool,
316 const apr_crypto_driver_t **drivers,
317 const apr_crypto_block_key_type_e type,
318 const apr_crypto_block_key_mode_e mode, int doPad,
439 ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt_finish", rv == APR_SUCCESS);
440 if (rv) {
441 return NULL;
442 }
443
444 *plainTextLen += len;
445 apr_crypto_block_cleanup(block);
446

--- 8 unchanged lines hidden (view full) ---

455 * with the first driver, and decrypted with the second.
456 *
457 * If the two drivers interoperate, the test passes.
458 */
459static void crypto_block_cross(abts_case *tc, apr_pool_t *pool,
460 const apr_crypto_driver_t **drivers,
461 const apr_crypto_block_key_type_e type,
462 const apr_crypto_block_key_mode_e mode, int doPad,
319 const unsigned char *in, apr_size_t inlen, const char *description)
463 const unsigned char *in, apr_size_t inlen, apr_size_t secretLen,
464 const char *description)
320{
321 const apr_crypto_driver_t *driver1 = drivers[0];
322 const apr_crypto_driver_t *driver2 = drivers[1];
323 apr_crypto_t *f1 = NULL;
324 apr_crypto_t *f2 = NULL;
325 const apr_crypto_key_t *key1 = NULL;
326 const apr_crypto_key_t *key2 = NULL;
465{
466 const apr_crypto_driver_t *driver1 = drivers[0];
467 const apr_crypto_driver_t *driver2 = drivers[1];
468 apr_crypto_t *f1 = NULL;
469 apr_crypto_t *f2 = NULL;
470 const apr_crypto_key_t *key1 = NULL;
471 const apr_crypto_key_t *key2 = NULL;
472 const apr_crypto_key_t *key3 = NULL;
473 const apr_crypto_key_t *key4 = NULL;
474 const apr_crypto_key_t *key5 = NULL;
475 const apr_crypto_key_t *key6 = NULL;
327
328 unsigned char *cipherText = NULL;
329 apr_size_t cipherTextLen = 0;
330 unsigned char *plainText = NULL;
331 apr_size_t plainTextLen = 0;
332 const unsigned char *iv = NULL;
333 apr_size_t blockSize = 0;
334

--- 5 unchanged lines hidden (view full) ---

340 cipherText = encrypt_block(tc, pool, driver1, f1, key1, in, inlen,
341 &cipherText, &cipherTextLen, &iv, &blockSize, description);
342 plainText = decrypt_block(tc, pool, driver2, f2, key2, cipherText,
343 cipherTextLen, &plainText, &plainTextLen, iv, &blockSize,
344 description);
345
346 if (cipherText && plainText) {
347 if (memcmp(in, plainText, inlen)) {
476
477 unsigned char *cipherText = NULL;
478 apr_size_t cipherTextLen = 0;
479 unsigned char *plainText = NULL;
480 apr_size_t plainTextLen = 0;
481 const unsigned char *iv = NULL;
482 apr_size_t blockSize = 0;
483

--- 5 unchanged lines hidden (view full) ---

489 cipherText = encrypt_block(tc, pool, driver1, f1, key1, in, inlen,
490 &cipherText, &cipherTextLen, &iv, &blockSize, description);
491 plainText = decrypt_block(tc, pool, driver2, f2, key2, cipherText,
492 cipherTextLen, &plainText, &plainTextLen, iv, &blockSize,
493 description);
494
495 if (cipherText && plainText) {
496 if (memcmp(in, plainText, inlen)) {
348 fprintf(stderr, "cross mismatch: %s %s/%s\n", description,
497 fprintf(stderr, "passphrase cross mismatch: %s %s/%s\n", description,
349 apr_crypto_driver_name(driver1), apr_crypto_driver_name(
350 driver2));
351 }
352 ABTS_STR_EQUAL(tc, (char *)in, (char *)plainText);
353 }
354
498 apr_crypto_driver_name(driver1), apr_crypto_driver_name(
499 driver2));
500 }
501 ABTS_STR_EQUAL(tc, (char *)in, (char *)plainText);
502 }
503
504 key3 = keysecret(tc, pool, driver1, f1, type, mode, doPad, secretLen, description);
505 key4 = keysecret(tc, pool, driver2, f2, type, mode, doPad, secretLen, description);
506
507 iv = NULL;
508 blockSize = 0;
509 cipherText = NULL;
510 plainText = NULL;
511 cipherText = encrypt_block(tc, pool, driver1, f1, key3, in, inlen,
512 &cipherText, &cipherTextLen, &iv, &blockSize, description);
513 plainText = decrypt_block(tc, pool, driver2, f2, key4, cipherText,
514 cipherTextLen, &plainText, &plainTextLen, iv, &blockSize,
515 description);
516
517 if (cipherText && plainText) {
518 if (memcmp(in, plainText, inlen)) {
519 fprintf(stderr, "key secret cross mismatch: %s %s/%s\n", description,
520 apr_crypto_driver_name(driver1), apr_crypto_driver_name(
521 driver2));
522 }
523 ABTS_STR_EQUAL(tc, (char *)in, (char *)plainText);
524 }
525
526 key5 = keypassphrase(tc, pool, driver1, f1, type, mode, doPad, description);
527 key6 = keypassphrase(tc, pool, driver2, f2, type, mode, doPad, description);
528
529 iv = NULL;
530 blockSize = 0;
531 cipherText = NULL;
532 plainText = NULL;
533 cipherText = encrypt_block(tc, pool, driver1, f1, key5, in, inlen,
534 &cipherText, &cipherTextLen, &iv, &blockSize, description);
535 plainText = decrypt_block(tc, pool, driver2, f2, key6, cipherText,
536 cipherTextLen, &plainText, &plainTextLen, iv, &blockSize,
537 description);
538
539 if (cipherText && plainText) {
540 if (memcmp(in, plainText, inlen)) {
541 fprintf(stderr, "key passphrase cross mismatch: %s %s/%s\n", description,
542 apr_crypto_driver_name(driver1), apr_crypto_driver_name(
543 driver2));
544 }
545 ABTS_STR_EQUAL(tc, (char *)in, (char *)plainText);
546 }
547
355}
356
357/**
358 * Test initialisation.
359 */
360static void test_crypto_init(abts_case *tc, void *data)
361{
362 apr_pool_t *pool = NULL;

--- 4 unchanged lines hidden (view full) ---

367 rv = apr_crypto_init(pool);
368 ABTS_ASSERT(tc, "failed to init apr_crypto", rv == APR_SUCCESS);
369
370 apr_pool_destroy(pool);
371
372}
373
374/**
548}
549
550/**
551 * Test initialisation.
552 */
553static void test_crypto_init(abts_case *tc, void *data)
554{
555 apr_pool_t *pool = NULL;

--- 4 unchanged lines hidden (view full) ---

560 rv = apr_crypto_init(pool);
561 ABTS_ASSERT(tc, "failed to init apr_crypto", rv == APR_SUCCESS);
562
563 apr_pool_destroy(pool);
564
565}
566
567/**
568 * Simple test of OpenSSL key.
569 */
570static void test_crypto_key_openssl(abts_case *tc, void *data)
571{
572 apr_pool_t *pool = NULL;
573 const apr_crypto_driver_t *driver;
574 apr_crypto_t *f = NULL;
575
576 apr_pool_create(&pool, NULL);
577 driver = get_openssl_driver(tc, pool);
578
579 f = make(tc, pool, driver);
580 keysecret(tc, pool, driver, f, APR_KEY_AES_256, APR_MODE_CBC, 1, 32,
581 "KEY_AES_256/MODE_CBC");
582 apr_pool_destroy(pool);
583
584}
585
586/**
587 * Simple test of NSS key.
588 */
589static void test_crypto_key_nss(abts_case *tc, void *data)
590{
591 apr_pool_t *pool = NULL;
592 const apr_crypto_driver_t *driver;
593 apr_crypto_t *f = NULL;
594
595 apr_pool_create(&pool, NULL);
596 driver = get_nss_driver(tc, pool);
597
598 f = make(tc, pool, driver);
599 keysecret(tc, pool, driver, f, APR_KEY_AES_256, APR_MODE_CBC, 1, 32,
600 "KEY_AES_256/MODE_CBC");
601 apr_pool_destroy(pool);
602
603}
604
605/**
606 * Simple test of CommonCrypto key.
607 */
608static void test_crypto_key_commoncrypto(abts_case *tc, void *data)
609{
610 apr_pool_t *pool = NULL;
611 const apr_crypto_driver_t *driver;
612 apr_crypto_t *f = NULL;
613
614 apr_pool_create(&pool, NULL);
615 driver = get_commoncrypto_driver(tc, pool);
616
617 f = make(tc, pool, driver);
618 keysecret(tc, pool, driver, f, APR_KEY_AES_256, APR_MODE_CBC, 1, 32,
619 "KEY_AES_256/MODE_CBC");
620 apr_pool_destroy(pool);
621
622}
623
624/**
375 * Simple test of OpenSSL block crypt.
376 */
377static void test_crypto_block_openssl(abts_case *tc, void *data)
378{
379 apr_pool_t *pool = NULL;
380 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
381
382 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
383 apr_size_t inlen = sizeof(ALIGNED_STRING);
384
385 apr_pool_create(&pool, NULL);
386 drivers[0] = get_openssl_driver(tc, pool);
387 drivers[1] = get_openssl_driver(tc, pool);
388 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
625 * Simple test of OpenSSL block crypt.
626 */
627static void test_crypto_block_openssl(abts_case *tc, void *data)
628{
629 apr_pool_t *pool = NULL;
630 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
631
632 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
633 apr_size_t inlen = sizeof(ALIGNED_STRING);
634
635 apr_pool_create(&pool, NULL);
636 drivers[0] = get_openssl_driver(tc, pool);
637 drivers[1] = get_openssl_driver(tc, pool);
638 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
389 in, inlen, "KEY_3DES_192/MODE_CBC");
639 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
390 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 0,
640 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 0,
391 in, inlen, "KEY_3DES_192/MODE_ECB");
641 in, inlen, 24, "KEY_3DES_192/MODE_ECB");
392 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
642 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
393 inlen, "KEY_AES_256/MODE_CBC");
643 inlen, 32, "KEY_AES_256/MODE_CBC");
394 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
644 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
395 inlen, "KEY_AES_256/MODE_ECB");
645 inlen, 32, "KEY_AES_256/MODE_ECB");
396 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
646 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
397 inlen, "KEY_AES_192/MODE_CBC");
647 inlen, 24, "KEY_AES_192/MODE_CBC");
398 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
648 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
399 inlen, "KEY_AES_192/MODE_ECB");
649 inlen, 24, "KEY_AES_192/MODE_ECB");
400 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
650 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
401 inlen, "KEY_AES_128/MODE_CBC");
651 inlen, 16, "KEY_AES_128/MODE_CBC");
402 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
652 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
403 inlen, "KEY_AES_128/MODE_ECB");
653 inlen, 16, "KEY_AES_128/MODE_ECB");
404 apr_pool_destroy(pool);
405
406}
407
408/**
409 * Simple test of NSS block crypt.
410 */
411static void test_crypto_block_nss(abts_case *tc, void *data)
412{
413 apr_pool_t *pool = NULL;
414 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
415
416 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
417 apr_size_t inlen = sizeof(ALIGNED_STRING);
418
419 apr_pool_create(&pool, NULL);
420 drivers[0] = get_nss_driver(tc, pool);
421 drivers[1] = get_nss_driver(tc, pool);
422 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
654 apr_pool_destroy(pool);
655
656}
657
658/**
659 * Simple test of NSS block crypt.
660 */
661static void test_crypto_block_nss(abts_case *tc, void *data)
662{
663 apr_pool_t *pool = NULL;
664 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
665
666 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
667 apr_size_t inlen = sizeof(ALIGNED_STRING);
668
669 apr_pool_create(&pool, NULL);
670 drivers[0] = get_nss_driver(tc, pool);
671 drivers[1] = get_nss_driver(tc, pool);
672 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
423 in, inlen, "KEY_3DES_192/MODE_CBC");
673 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
424 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
425 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */
426 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
674 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
675 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */
676 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
427 inlen, "KEY_AES_256/MODE_CBC");
677 inlen, 32, "KEY_AES_256/MODE_CBC");
428 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
678 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
429 inlen, "KEY_AES_256/MODE_ECB");
679 inlen, 32, "KEY_AES_256/MODE_ECB");
430 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
680 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
431 inlen, "KEY_AES_192/MODE_CBC");
681 inlen, 24, "KEY_AES_192/MODE_CBC");
432 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
682 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
433 inlen, "KEY_AES_192/MODE_ECB");
683 inlen, 24, "KEY_AES_192/MODE_ECB");
434 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
684 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
435 inlen, "KEY_AES_128/MODE_CBC");
685 inlen, 16, "KEY_AES_128/MODE_CBC");
436 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
686 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
437 inlen, "KEY_AES_128/MODE_ECB");
687 inlen, 16, "KEY_AES_128/MODE_ECB");
438 apr_pool_destroy(pool);
439
440}
441
442/**
688 apr_pool_destroy(pool);
689
690}
691
692/**
693 * Simple test of Common Crypto block crypt.
694 */
695static void test_crypto_block_commoncrypto(abts_case *tc, void *data)
696{
697 apr_pool_t *pool = NULL;
698 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
699
700 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
701 apr_size_t inlen = sizeof(ALIGNED_STRING);
702
703 apr_pool_create(&pool, NULL);
704 drivers[0] = get_commoncrypto_driver(tc, pool);
705 drivers[1] = get_commoncrypto_driver(tc, pool);
706 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
707 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
708 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 0,
709 in, inlen, 24, "KEY_3DES_192/MODE_ECB");
710 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
711 inlen, 32, "KEY_AES_256/MODE_CBC");
712 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
713 inlen, 32, "KEY_AES_256/MODE_ECB");
714 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
715 inlen, 24, "KEY_AES_192/MODE_CBC");
716 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
717 inlen, 24, "KEY_AES_192/MODE_ECB");
718 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
719 inlen, 16, "KEY_AES_128/MODE_CBC");
720 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
721 inlen, 16, "KEY_AES_128/MODE_ECB");
722 apr_pool_destroy(pool);
723
724}
725
726/**
443 * Encrypt NSS, decrypt OpenSSL.
444 */
445static void test_crypto_block_nss_openssl(abts_case *tc, void *data)
446{
447 apr_pool_t *pool = NULL;
448 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
449
450 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
451 apr_size_t inlen = sizeof(ALIGNED_STRING);
452
453 apr_pool_create(&pool, NULL);
454 drivers[0] = get_nss_driver(tc, pool);
455 drivers[1] = get_openssl_driver(tc, pool);
456
457 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
727 * Encrypt NSS, decrypt OpenSSL.
728 */
729static void test_crypto_block_nss_openssl(abts_case *tc, void *data)
730{
731 apr_pool_t *pool = NULL;
732 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
733
734 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
735 apr_size_t inlen = sizeof(ALIGNED_STRING);
736
737 apr_pool_create(&pool, NULL);
738 drivers[0] = get_nss_driver(tc, pool);
739 drivers[1] = get_openssl_driver(tc, pool);
740
741 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
458 in, inlen, "KEY_3DES_192/MODE_CBC");
742 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
459
460 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
743
744 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
461 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */
745 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, 24, "KEY_3DES_192/MODE_ECB"); */
462 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
746 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
463 inlen, "KEY_AES_256/MODE_CBC");
747 inlen, 32, "KEY_AES_256/MODE_CBC");
464 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
748 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
465 inlen, "KEY_AES_256/MODE_ECB");
466
467 /* all 4 of these tests fail to interoperate - a clue from the xml-security code is that
468 * NSS cannot distinguish between the 128 and 192 bit versions of AES. Will need to be
469 * investigated.
470 */
471 /*
472 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 0, in, inlen, "KEY_AES_192/MODE_CBC");
473 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 0, in, inlen, "KEY_AES_192/MODE_ECB");
474 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 0, in, inlen, "KEY_AES_128/MODE_CBC");
475 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 0, in, inlen, "KEY_AES_128/MODE_ECB");
476 */
749 inlen, 32, "KEY_AES_256/MODE_ECB");
750 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
751 inlen, 24, "KEY_AES_192/MODE_CBC");
752 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
753 inlen, 24, "KEY_AES_192/MODE_ECB");
754 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
755 inlen, 16, "KEY_AES_128/MODE_CBC");
756 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
757 inlen, 16, "KEY_AES_128/MODE_ECB");
477 apr_pool_destroy(pool);
478
479}
480
481/**
482 * Encrypt OpenSSL, decrypt NSS.
483 */
484static void test_crypto_block_openssl_nss(abts_case *tc, void *data)
485{
486 apr_pool_t *pool = NULL;
487 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
488
489 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
490 apr_size_t inlen = sizeof(ALIGNED_STRING);
491
492 apr_pool_create(&pool, NULL);
493 drivers[0] = get_openssl_driver(tc, pool);
494 drivers[1] = get_nss_driver(tc, pool);
495 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
758 apr_pool_destroy(pool);
759
760}
761
762/**
763 * Encrypt OpenSSL, decrypt NSS.
764 */
765static void test_crypto_block_openssl_nss(abts_case *tc, void *data)
766{
767 apr_pool_t *pool = NULL;
768 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
769
770 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
771 apr_size_t inlen = sizeof(ALIGNED_STRING);
772
773 apr_pool_create(&pool, NULL);
774 drivers[0] = get_openssl_driver(tc, pool);
775 drivers[1] = get_nss_driver(tc, pool);
776 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0,
496 in, inlen, "KEY_3DES_192/MODE_CBC");
777 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
497
498 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
778
779 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
499 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */
780 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, 24, "KEY_3DES_192/MODE_ECB"); */
500
501 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
781
782 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
502 inlen, "KEY_AES_256/MODE_CBC");
783 inlen, 32, "KEY_AES_256/MODE_CBC");
503 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
784 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
504 inlen, "KEY_AES_256/MODE_ECB");
785 inlen, 32, "KEY_AES_256/MODE_ECB");
786 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
787 inlen, 24, "KEY_AES_192/MODE_CBC");
788 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
789 inlen, 24, "KEY_AES_192/MODE_ECB");
790 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
791 inlen, 16, "KEY_AES_128/MODE_CBC");
792 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
793 inlen, 16, "KEY_AES_128/MODE_ECB");
794 apr_pool_destroy(pool);
505
795
506 /* all 4 of these tests fail to interoperate - a clue from the xml-security code is that
507 * NSS cannot distinguish between the 128 and 192 bit versions of AES. Will need to be
508 * investigated.
509 */
510 /*
511 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 0, in, inlen, "KEY_AES_192/MODE_CBC");
512 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 0, in, inlen, "KEY_AES_192/MODE_ECB");
513 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 0, in, inlen, "KEY_AES_128/MODE_CBC");
514 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 0, in, inlen, "KEY_AES_128/MODE_ECB");
515 */
796}
797
798/**
799 * Encrypt OpenSSL, decrypt CommonCrypto.
800 */
801static void test_crypto_block_openssl_commoncrypto(abts_case *tc, void *data)
802{
803 apr_pool_t *pool = NULL;
804 const apr_crypto_driver_t *drivers[] =
805 { NULL, NULL };
806
807 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
808 apr_size_t inlen = sizeof(ALIGNED_STRING);
809
810 apr_pool_create(&pool, NULL);
811 drivers[0] = get_openssl_driver(tc, pool);
812 drivers[1] = get_commoncrypto_driver(tc, pool);
813
814 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0, in,
815 inlen, 24, "KEY_3DES_192/MODE_CBC");
816 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 0, in,
817 inlen, 24, "KEY_3DES_192/MODE_ECB");
818 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
819 inlen, 32, "KEY_AES_256/MODE_CBC");
820 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
821 inlen, 32, "KEY_AES_256/MODE_ECB");
822 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
823 inlen, 24, "KEY_AES_192/MODE_CBC");
824 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
825 inlen, 24, "KEY_AES_192/MODE_ECB");
826 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
827 inlen, 16, "KEY_AES_128/MODE_CBC");
828 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
829 inlen, 16, "KEY_AES_128/MODE_ECB");
516 apr_pool_destroy(pool);
517
518}
519
520/**
830 apr_pool_destroy(pool);
831
832}
833
834/**
835 * Encrypt OpenSSL, decrypt CommonCrypto.
836 */
837static void test_crypto_block_commoncrypto_openssl(abts_case *tc, void *data)
838{
839 apr_pool_t *pool = NULL;
840 const apr_crypto_driver_t *drivers[] =
841 { NULL, NULL };
842
843 const unsigned char *in = (const unsigned char *) ALIGNED_STRING;
844 apr_size_t inlen = sizeof(ALIGNED_STRING);
845
846 apr_pool_create(&pool, NULL);
847 drivers[0] = get_commoncrypto_driver(tc, pool);
848 drivers[1] = get_openssl_driver(tc, pool);
849
850 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0, in,
851 inlen, 24, "KEY_3DES_192/MODE_CBC");
852 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 0, in,
853 inlen, 24, "KEY_3DES_192/MODE_ECB");
854 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in,
855 inlen, 32, "KEY_AES_256/MODE_CBC");
856 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in,
857 inlen, 32, "KEY_AES_256/MODE_ECB");
858 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in,
859 inlen, 24, "KEY_AES_192/MODE_CBC");
860 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in,
861 inlen, 24, "KEY_AES_192/MODE_ECB");
862 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in,
863 inlen, 16, "KEY_AES_128/MODE_CBC");
864 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in,
865 inlen, 16, "KEY_AES_128/MODE_ECB");
866 apr_pool_destroy(pool);
867
868}
869
870/**
521 * Simple test of OpenSSL block crypt.
522 */
523static void test_crypto_block_openssl_pad(abts_case *tc, void *data)
524{
525 apr_pool_t *pool = NULL;
526 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
527
528 const unsigned char *in = (const unsigned char *) TEST_STRING;
529 apr_size_t inlen = sizeof(TEST_STRING);
530
531 apr_pool_create(&pool, NULL);
532 drivers[0] = get_openssl_driver(tc, pool);
533 drivers[1] = get_openssl_driver(tc, pool);
534
535 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
871 * Simple test of OpenSSL block crypt.
872 */
873static void test_crypto_block_openssl_pad(abts_case *tc, void *data)
874{
875 apr_pool_t *pool = NULL;
876 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
877
878 const unsigned char *in = (const unsigned char *) TEST_STRING;
879 apr_size_t inlen = sizeof(TEST_STRING);
880
881 apr_pool_create(&pool, NULL);
882 drivers[0] = get_openssl_driver(tc, pool);
883 drivers[1] = get_openssl_driver(tc, pool);
884
885 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
536 in, inlen, "KEY_3DES_192/MODE_CBC");
886 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
537 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 1,
887 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 1,
538 in, inlen, "KEY_3DES_192/MODE_ECB");
888 in, inlen, 24, "KEY_3DES_192/MODE_ECB");
539 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
889 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
540 inlen, "KEY_AES_256/MODE_CBC");
890 inlen, 32, "KEY_AES_256/MODE_CBC");
541 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 1, in,
891 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 1, in,
542 inlen, "KEY_AES_256/MODE_ECB");
892 inlen, 32, "KEY_AES_256/MODE_ECB");
543 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
893 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
544 inlen, "KEY_AES_192/MODE_CBC");
894 inlen, 24, "KEY_AES_192/MODE_CBC");
545 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in,
895 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in,
546 inlen, "KEY_AES_192/MODE_ECB");
896 inlen, 24, "KEY_AES_192/MODE_ECB");
547 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
897 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
548 inlen, "KEY_AES_128/MODE_CBC");
898 inlen, 16, "KEY_AES_128/MODE_CBC");
549 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in,
899 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in,
550 inlen, "KEY_AES_128/MODE_ECB");
900 inlen, 16, "KEY_AES_128/MODE_ECB");
551
552 apr_pool_destroy(pool);
553
554}
555
556/**
557 * Simple test of NSS block crypt.
558 */

--- 6 unchanged lines hidden (view full) ---

565 const unsigned char *in = (const unsigned char *) TEST_STRING;
566 apr_size_t inlen = sizeof(TEST_STRING);
567
568 apr_pool_create(&pool, NULL);
569 drivers[0] = get_nss_driver(tc, pool);
570 drivers[1] = get_nss_driver(tc, pool);
571
572 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
901
902 apr_pool_destroy(pool);
903
904}
905
906/**
907 * Simple test of NSS block crypt.
908 */

--- 6 unchanged lines hidden (view full) ---

915 const unsigned char *in = (const unsigned char *) TEST_STRING;
916 apr_size_t inlen = sizeof(TEST_STRING);
917
918 apr_pool_create(&pool, NULL);
919 drivers[0] = get_nss_driver(tc, pool);
920 drivers[1] = get_nss_driver(tc, pool);
921
922 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
573 in, inlen, "KEY_3DES_192/MODE_CBC");
923 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
574 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
924 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
575 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, "KEY_3DES_192/MODE_ECB"); */
925 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, 24, "KEY_3DES_192/MODE_ECB"); */
576
577 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
926
927 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
578 inlen, "KEY_AES_256/MODE_CBC");
928 inlen, 32, "KEY_AES_256/MODE_CBC");
579
580 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
929
930 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
581 /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, "KEY_AES_256/MODE_ECB");*/
931 /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, 32, "KEY_AES_256/MODE_ECB");*/
582
583 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
932
933 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
584 inlen, "KEY_AES_192/MODE_CBC");
934 inlen, 24, "KEY_AES_192/MODE_CBC");
585
586 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
935
936 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
587 /*crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 1, in, inlen, "KEY_AES_192/MODE_ECB");*/
937 /*crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 1, in, inlen, 24, "KEY_AES_192/MODE_ECB");*/
588
589 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
938
939 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
590 inlen, "KEY_AES_128/MODE_CBC");
940 inlen, 16, "KEY_AES_128/MODE_CBC");
591
592 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
941
942 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
593 /*crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 1, in, inlen, "KEY_AES_128/MODE_ECB");*/
943 /*crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 1, in, inlen, 16, "KEY_AES_128/MODE_ECB");*/
594
595 apr_pool_destroy(pool);
596
597}
598
599/**
944
945 apr_pool_destroy(pool);
946
947}
948
949/**
950 * Simple test of Common Crypto block crypt.
951 */
952static void test_crypto_block_commoncrypto_pad(abts_case *tc, void *data)
953{
954 apr_pool_t *pool = NULL;
955 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
956
957 const unsigned char *in = (const unsigned char *) TEST_STRING;
958 apr_size_t inlen = sizeof(TEST_STRING);
959
960 apr_pool_create(&pool, NULL);
961 drivers[0] = get_commoncrypto_driver(tc, pool);
962 drivers[1] = get_commoncrypto_driver(tc, pool);
963
964 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
965 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
966 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 1,
967 in, inlen, 24, "KEY_3DES_192/MODE_ECB");
968 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
969 inlen, 32, "KEY_AES_256/MODE_CBC");
970 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 1, in,
971 inlen, 32, "KEY_AES_256/MODE_ECB");
972 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
973 inlen, 24, "KEY_AES_192/MODE_CBC");
974 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in,
975 inlen, 24, "KEY_AES_192/MODE_ECB");
976 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
977 inlen, 16, "KEY_AES_128/MODE_CBC");
978 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in,
979 inlen, 16, "KEY_AES_128/MODE_ECB");
980
981 apr_pool_destroy(pool);
982
983}
984
985/**
600 * Encrypt NSS, decrypt OpenSSL.
601 */
602static void test_crypto_block_nss_openssl_pad(abts_case *tc, void *data)
603{
604 apr_pool_t *pool = NULL;
605 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
606
607 const unsigned char *in = (const unsigned char *) TEST_STRING;
608 apr_size_t inlen = sizeof(TEST_STRING);
609
610 apr_pool_create(&pool, NULL);
611 drivers[0] = get_nss_driver(tc, pool);
612 drivers[1] = get_openssl_driver(tc, pool);
613
614 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
986 * Encrypt NSS, decrypt OpenSSL.
987 */
988static void test_crypto_block_nss_openssl_pad(abts_case *tc, void *data)
989{
990 apr_pool_t *pool = NULL;
991 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
992
993 const unsigned char *in = (const unsigned char *) TEST_STRING;
994 apr_size_t inlen = sizeof(TEST_STRING);
995
996 apr_pool_create(&pool, NULL);
997 drivers[0] = get_nss_driver(tc, pool);
998 drivers[1] = get_openssl_driver(tc, pool);
999
1000 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
615 in, inlen, "KEY_3DES_192/MODE_CBC");
1001 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
616
617 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
1002
1003 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
618 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, "KEY_3DES_192/MODE_ECB"); */
1004 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, 24, "KEY_3DES_192/MODE_ECB"); */
619
620 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
1005
1006 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
621 inlen, "KEY_AES_256/MODE_CBC");
1007 inlen, 32, "KEY_AES_256/MODE_CBC");
622
623 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
1008
1009 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
624 /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, "KEY_AES_256/MODE_ECB");*/
1010 /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, 32, "KEY_AES_256/MODE_ECB");*/
625
1011
626 /* all 4 of these tests fail to interoperate - a clue from the xml-security code is that
627 * NSS cannot distinguish between the 128 and 192 bit versions of AES. Will need to be
628 * investigated.
629 */
630 /*
631 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 1, in, inlen, "KEY_AES_192/MODE_CBC");
632 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 1, in, inlen, "KEY_AES_192/MODE_ECB");
633 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 1, in, inlen, "KEY_AES_128/MODE_CBC");
634 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 1, in, inlen, "KEY_AES_128/MODE_ECB");
635 */
1012 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
1013 inlen, 24, "KEY_AES_192/MODE_CBC");
1014
1015 /* KEY_AES_192 / MODE_ECB doesn't support padding on NSS */
1016 /*crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in,
1017 inlen, 24, "KEY_AES_192/MODE_ECB");*/
1018
1019 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
1020 inlen, 16, "KEY_AES_128/MODE_CBC");
1021
1022 /* KEY_AES_192 / MODE_ECB doesn't support padding on NSS */
1023 /*crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in,
1024 inlen, 16, "KEY_AES_128/MODE_ECB");*/
1025
636 apr_pool_destroy(pool);
637
638}
639
640/**
641 * Encrypt OpenSSL, decrypt NSS.
642 */
643static void test_crypto_block_openssl_nss_pad(abts_case *tc, void *data)
644{
645 apr_pool_t *pool = NULL;
646 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
647
648 const unsigned char *in = (const unsigned char *) TEST_STRING;
649 apr_size_t inlen = sizeof(TEST_STRING);
650
651 apr_pool_create(&pool, NULL);
652 drivers[0] = get_openssl_driver(tc, pool);
653 drivers[1] = get_nss_driver(tc, pool);
654 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
1026 apr_pool_destroy(pool);
1027
1028}
1029
1030/**
1031 * Encrypt OpenSSL, decrypt NSS.
1032 */
1033static void test_crypto_block_openssl_nss_pad(abts_case *tc, void *data)
1034{
1035 apr_pool_t *pool = NULL;
1036 const apr_crypto_driver_t *drivers[] = { NULL, NULL };
1037
1038 const unsigned char *in = (const unsigned char *) TEST_STRING;
1039 apr_size_t inlen = sizeof(TEST_STRING);
1040
1041 apr_pool_create(&pool, NULL);
1042 drivers[0] = get_openssl_driver(tc, pool);
1043 drivers[1] = get_nss_driver(tc, pool);
1044 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1,
655 in, inlen, "KEY_3DES_192/MODE_CBC");
1045 in, inlen, 24, "KEY_3DES_192/MODE_CBC");
656
657 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
1046
1047 /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */
658 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, "KEY_3DES_192/MODE_ECB"); */
1048 /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, 24, "KEY_3DES_192/MODE_ECB"); */
659
660 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
1049
1050 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
661 inlen, "KEY_AES_256/MODE_CBC");
1051 inlen, 32, "KEY_AES_256/MODE_CBC");
662
663 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
1052
1053 /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */
664 /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, "KEY_AES_256/MODE_ECB");*/
1054 /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, 32, "KEY_AES_256/MODE_ECB");*/
665
1055
666 /* all 4 of these tests fail to interoperate - a clue from the xml-security code is that
667 * NSS cannot distinguish between the 128 and 192 bit versions of AES. Will need to be
668 * investigated.
669 */
670 /*
671 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 1, in, inlen, "KEY_AES_192/MODE_CBC");
672 crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 1, in, inlen, "KEY_AES_192/MODE_ECB");
673 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 1, in, inlen, "KEY_AES_128/MODE_CBC");
674 crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 1, in, inlen, "KEY_AES_128/MODE_ECB");
675 */
1056 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in, inlen,
1057 24, "KEY_AES_192/MODE_CBC");
1058
1059 /* KEY_AES_192 / MODE_ECB doesn't support padding on NSS */
1060 /*crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in, inlen,
1061 24, "KEY_AES_192/MODE_ECB");*/
1062
1063 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in, inlen,
1064 16, "KEY_AES_128/MODE_CBC");
1065
1066 /* KEY_AES_128 / MODE_ECB doesn't support padding on NSS */
1067 /*crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in, inlen,
1068 16, "KEY_AES_128/MODE_ECB");*/
1069
676 apr_pool_destroy(pool);
677
678}
679
680/**
1070 apr_pool_destroy(pool);
1071
1072}
1073
1074/**
1075 * Encrypt CommonCrypto, decrypt OpenSSL.
1076 */
1077static void test_crypto_block_commoncrypto_openssl_pad(abts_case *tc,
1078 void *data)
1079{
1080 apr_pool_t *pool = NULL;
1081 const apr_crypto_driver_t *drivers[] =
1082 { NULL, NULL };
1083
1084 const unsigned char *in = (const unsigned char *) TEST_STRING;
1085 apr_size_t inlen = sizeof(TEST_STRING);
1086
1087 apr_pool_create(&pool, NULL);
1088 drivers[0] = get_commoncrypto_driver(tc, pool);
1089 drivers[1] = get_openssl_driver(tc, pool);
1090
1091 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1, in,
1092 inlen, 24, "KEY_3DES_192/MODE_CBC");
1093 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 1, in,
1094 inlen, 24, "KEY_3DES_192/MODE_ECB");
1095 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
1096 inlen, 32, "KEY_AES_256/MODE_CBC");
1097 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 1, in,
1098 inlen, 32, "KEY_AES_256/MODE_ECB");
1099 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
1100 inlen, 24, "KEY_AES_192/MODE_CBC");
1101 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in,
1102 inlen, 24, "KEY_AES_192/MODE_ECB");
1103 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
1104 inlen, 16, "KEY_AES_128/MODE_CBC");
1105 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in,
1106 inlen, 16, "KEY_AES_128/MODE_ECB");
1107
1108 apr_pool_destroy(pool);
1109
1110}
1111
1112/**
1113 * Encrypt OpenSSL, decrypt CommonCrypto.
1114 */
1115static void test_crypto_block_openssl_commoncrypto_pad(abts_case *tc,
1116 void *data)
1117{
1118 apr_pool_t *pool = NULL;
1119 const apr_crypto_driver_t *drivers[] =
1120 { NULL, NULL };
1121
1122 const unsigned char *in = (const unsigned char *) TEST_STRING;
1123 apr_size_t inlen = sizeof(TEST_STRING);
1124
1125 apr_pool_create(&pool, NULL);
1126 drivers[0] = get_openssl_driver(tc, pool);
1127 drivers[1] = get_commoncrypto_driver(tc, pool);
1128
1129 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1, in,
1130 inlen, 24, "KEY_3DES_192/MODE_CBC");
1131 crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 1, in,
1132 inlen, 24, "KEY_3DES_192/MODE_ECB");
1133 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in,
1134 inlen, 32, "KEY_AES_256/MODE_CBC");
1135 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 1, in,
1136 inlen, 32, "KEY_AES_256/MODE_ECB");
1137 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in,
1138 inlen, 24, "KEY_AES_192/MODE_CBC");
1139 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in,
1140 inlen, 24, "KEY_AES_192/MODE_ECB");
1141 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in,
1142 inlen, 16, "KEY_AES_128/MODE_CBC");
1143 crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in,
1144 inlen, 16, "KEY_AES_128/MODE_ECB");
1145
1146 apr_pool_destroy(pool);
1147
1148}
1149
1150/**
681 * Get Types, OpenSSL.
682 */
683static void test_crypto_get_block_key_types_openssl(abts_case *tc, void *data)
684{
685 apr_pool_t *pool = NULL;
686 const apr_crypto_driver_t *driver;
687 apr_crypto_t *f;
688 apr_hash_t *types;

--- 70 unchanged lines hidden (view full) ---

759
760 }
761
762 apr_pool_destroy(pool);
763
764}
765
766/**
1151 * Get Types, OpenSSL.
1152 */
1153static void test_crypto_get_block_key_types_openssl(abts_case *tc, void *data)
1154{
1155 apr_pool_t *pool = NULL;
1156 const apr_crypto_driver_t *driver;
1157 apr_crypto_t *f;
1158 apr_hash_t *types;

--- 70 unchanged lines hidden (view full) ---

1229
1230 }
1231
1232 apr_pool_destroy(pool);
1233
1234}
1235
1236/**
1237 * Get Types, Common Crypto.
1238 */
1239static void test_crypto_get_block_key_types_commoncrypto(abts_case *tc, void *data)
1240{
1241 apr_pool_t *pool = NULL;
1242 const apr_crypto_driver_t *driver;
1243 apr_crypto_t *f;
1244 apr_hash_t *types;
1245 int *key_3des_192;
1246 int *key_aes_128;
1247 int *key_aes_192;
1248 int *key_aes_256;
1249
1250 apr_pool_create(&pool, NULL);
1251 driver = get_commoncrypto_driver(tc, pool);
1252 if (driver) {
1253
1254 f = make(tc, pool, driver);
1255 apr_crypto_get_block_key_types(&types, f);
1256
1257 key_3des_192 = apr_hash_get(types, "3des192", APR_HASH_KEY_STRING);
1258 ABTS_PTR_NOTNULL(tc, key_3des_192);
1259 ABTS_INT_EQUAL(tc, *key_3des_192, APR_KEY_3DES_192);
1260
1261 key_aes_128 = apr_hash_get(types, "aes128", APR_HASH_KEY_STRING);
1262 ABTS_PTR_NOTNULL(tc, key_aes_128);
1263 ABTS_INT_EQUAL(tc, *key_aes_128, APR_KEY_AES_128);
1264
1265 key_aes_192 = apr_hash_get(types, "aes192", APR_HASH_KEY_STRING);
1266 ABTS_PTR_NOTNULL(tc, key_aes_192);
1267 ABTS_INT_EQUAL(tc, *key_aes_192, APR_KEY_AES_192);
1268
1269 key_aes_256 = apr_hash_get(types, "aes256", APR_HASH_KEY_STRING);
1270 ABTS_PTR_NOTNULL(tc, key_aes_256);
1271 ABTS_INT_EQUAL(tc, *key_aes_256, APR_KEY_AES_256);
1272
1273 }
1274
1275 apr_pool_destroy(pool);
1276
1277}
1278
1279/**
767 * Get Modes, OpenSSL.
768 */
769static void test_crypto_get_block_key_modes_openssl(abts_case *tc, void *data)
770{
771 apr_pool_t *pool = NULL;
772 const apr_crypto_driver_t *driver;
773 apr_crypto_t *f;
774 apr_hash_t *modes;

--- 49 unchanged lines hidden (view full) ---

824 ABTS_INT_EQUAL(tc, *mode_cbc, APR_MODE_CBC);
825
826 }
827
828 apr_pool_destroy(pool);
829
830}
831
1280 * Get Modes, OpenSSL.
1281 */
1282static void test_crypto_get_block_key_modes_openssl(abts_case *tc, void *data)
1283{
1284 apr_pool_t *pool = NULL;
1285 const apr_crypto_driver_t *driver;
1286 apr_crypto_t *f;
1287 apr_hash_t *modes;

--- 49 unchanged lines hidden (view full) ---

1337 ABTS_INT_EQUAL(tc, *mode_cbc, APR_MODE_CBC);
1338
1339 }
1340
1341 apr_pool_destroy(pool);
1342
1343}
1344
1345/**
1346 * Get Modes, Common Crypto.
1347 */
1348static void test_crypto_get_block_key_modes_commoncrypto(abts_case *tc, void *data)
1349{
1350 apr_pool_t *pool = NULL;
1351 const apr_crypto_driver_t *driver;
1352 apr_crypto_t *f;
1353 apr_hash_t *modes;
1354 int *mode_ecb;
1355 int *mode_cbc;
1356
1357 apr_pool_create(&pool, NULL);
1358 driver = get_commoncrypto_driver(tc, pool);
1359 if (driver) {
1360
1361 f = make(tc, pool, driver);
1362 apr_crypto_get_block_key_modes(&modes, f);
1363
1364 mode_ecb = apr_hash_get(modes, "ecb", APR_HASH_KEY_STRING);
1365 ABTS_PTR_NOTNULL(tc, mode_ecb);
1366 ABTS_INT_EQUAL(tc, *mode_ecb, APR_MODE_ECB);
1367
1368 mode_cbc = apr_hash_get(modes, "cbc", APR_HASH_KEY_STRING);
1369 ABTS_PTR_NOTNULL(tc, mode_cbc);
1370 ABTS_INT_EQUAL(tc, *mode_cbc, APR_MODE_CBC);
1371
1372 }
1373
1374 apr_pool_destroy(pool);
1375
1376}
1377
1378static void test_crypto_memzero(abts_case *tc, void *data)
1379{
1380 /* Aligned message */
1381 struct {
1382 char buf[7 * sizeof(int)];
1383 int untouched;
1384 } msg;
1385 /* A bit of type punning such that 'msg' might look unused
1386 * after the call to apr_crypto_memzero().
1387 */
1388 int *ptr = (int *)&msg;
1389 int i;
1390
1391 /* Fill buf with non-zeros (odds) */
1392 for (i = 1; i < 2 * sizeof(msg.buf); i += 2) {
1393 msg.buf[i / 2] = (char)i;
1394 ABTS_ASSERT(tc, "test_crypto_memzero() barrier", msg.buf[i / 2] != 0);
1395 }
1396
1397 /* Zero out the whole, and check it */
1398 apr_crypto_memzero(&msg, sizeof msg);
1399 for (i = 0; i < sizeof(msg) / sizeof(*ptr); ++i) {
1400 ABTS_ASSERT(tc, "test_crypto_memzero() optimized out", ptr[i] == 0);
1401 }
1402}
1403
1404static void test_crypto_equals(abts_case *tc, void *data)
1405{
1406 /* Buffers of each type of scalar */
1407 union {
1408 char c;
1409 short s;
1410 int i;
1411 long l;
1412 float f;
1413 double d;
1414 void *p;
1415 } buf0[7], buf1[7], buf[7];
1416 char *ptr = (char *)buf;
1417 int i;
1418
1419#define TEST_SCALAR_MATCH(i, x, r) \
1420 ABTS_ASSERT(tc, "test_crypto_equals(" APR_STRINGIFY(x) ")" \
1421 " != " APR_STRINGIFY(r), \
1422 apr_crypto_equals(&buf##r[i].x, &buf[i].x, \
1423 sizeof(buf[i].x)) == r)
1424
1425 /* Fill buf with non-zeros (odds) */
1426 for (i = 1; i < 2 * sizeof(buf); i += 2) {
1427 ptr[i / 2] = (char)i;
1428 }
1429 /* Set buf1 = buf */
1430 memcpy(buf1, buf, sizeof buf);
1431 /* Set buf0 = {0} */
1432 memset(buf0, 0, sizeof buf0);
1433
1434 /* Check that buf1 == buf for each scalar */
1435 TEST_SCALAR_MATCH(0, c, 1);
1436 TEST_SCALAR_MATCH(1, s, 1);
1437 TEST_SCALAR_MATCH(2, i, 1);
1438 TEST_SCALAR_MATCH(3, l, 1);
1439 TEST_SCALAR_MATCH(4, f, 1);
1440 TEST_SCALAR_MATCH(5, d, 1);
1441 TEST_SCALAR_MATCH(6, p, 1);
1442
1443 /* Check that buf0 != buf for each scalar */
1444 TEST_SCALAR_MATCH(0, c, 0);
1445 TEST_SCALAR_MATCH(1, s, 0);
1446 TEST_SCALAR_MATCH(2, i, 0);
1447 TEST_SCALAR_MATCH(3, l, 0);
1448 TEST_SCALAR_MATCH(4, f, 0);
1449 TEST_SCALAR_MATCH(5, d, 0);
1450 TEST_SCALAR_MATCH(6, p, 0);
1451}
1452
832abts_suite *testcrypto(abts_suite *suite)
833{
834 suite = ADD_SUITE(suite);
835
836 /* test simple init and shutdown */
837 abts_run_test(suite, test_crypto_init, NULL);
838
1453abts_suite *testcrypto(abts_suite *suite)
1454{
1455 suite = ADD_SUITE(suite);
1456
1457 /* test simple init and shutdown */
1458 abts_run_test(suite, test_crypto_init, NULL);
1459
1460 /* test key parsing - openssl */
1461 abts_run_test(suite, test_crypto_key_openssl, NULL);
1462
1463 /* test key parsing - nss */
1464 abts_run_test(suite, test_crypto_key_nss, NULL);
1465
1466 /* test key parsing - commoncrypto */
1467 abts_run_test(suite, test_crypto_key_commoncrypto, NULL);
1468
839 /* test a simple encrypt / decrypt operation - openssl */
840 abts_run_test(suite, test_crypto_block_openssl, NULL);
841
842 /* test a padded encrypt / decrypt operation - openssl */
843 abts_run_test(suite, test_crypto_block_openssl_pad, NULL);
844
845 /* test a simple encrypt / decrypt operation - nss */
846 abts_run_test(suite, test_crypto_block_nss, NULL);
847
848 /* test a padded encrypt / decrypt operation - nss */
849 abts_run_test(suite, test_crypto_block_nss_pad, NULL);
850
1469 /* test a simple encrypt / decrypt operation - openssl */
1470 abts_run_test(suite, test_crypto_block_openssl, NULL);
1471
1472 /* test a padded encrypt / decrypt operation - openssl */
1473 abts_run_test(suite, test_crypto_block_openssl_pad, NULL);
1474
1475 /* test a simple encrypt / decrypt operation - nss */
1476 abts_run_test(suite, test_crypto_block_nss, NULL);
1477
1478 /* test a padded encrypt / decrypt operation - nss */
1479 abts_run_test(suite, test_crypto_block_nss_pad, NULL);
1480
1481 /* test a simple encrypt / decrypt operation - commoncrypto */
1482 abts_run_test(suite, test_crypto_block_commoncrypto, NULL);
1483
1484 /* test a padded encrypt / decrypt operation - commoncrypto */
1485 abts_run_test(suite, test_crypto_block_commoncrypto_pad, NULL);
1486
851 /* test encrypt nss / decrypt openssl */
852 abts_run_test(suite, test_crypto_block_nss_openssl, NULL);
853
854 /* test padded encrypt nss / decrypt openssl */
855 abts_run_test(suite, test_crypto_block_nss_openssl_pad, NULL);
856
857 /* test encrypt openssl / decrypt nss */
858 abts_run_test(suite, test_crypto_block_openssl_nss, NULL);
859
860 /* test padded encrypt openssl / decrypt nss */
861 abts_run_test(suite, test_crypto_block_openssl_nss_pad, NULL);
862
1487 /* test encrypt nss / decrypt openssl */
1488 abts_run_test(suite, test_crypto_block_nss_openssl, NULL);
1489
1490 /* test padded encrypt nss / decrypt openssl */
1491 abts_run_test(suite, test_crypto_block_nss_openssl_pad, NULL);
1492
1493 /* test encrypt openssl / decrypt nss */
1494 abts_run_test(suite, test_crypto_block_openssl_nss, NULL);
1495
1496 /* test padded encrypt openssl / decrypt nss */
1497 abts_run_test(suite, test_crypto_block_openssl_nss_pad, NULL);
1498
1499 /* test encrypt openssl / decrypt commoncrypto */
1500 abts_run_test(suite, test_crypto_block_openssl_commoncrypto, NULL);
1501
1502 /* test padded encrypt openssl / decrypt commoncrypto */
1503 abts_run_test(suite, test_crypto_block_openssl_commoncrypto_pad, NULL);
1504
1505 /* test encrypt commoncrypto / decrypt openssl */
1506 abts_run_test(suite, test_crypto_block_commoncrypto_openssl, NULL);
1507
1508 /* test padded encrypt commoncrypto / decrypt openssl */
1509 abts_run_test(suite, test_crypto_block_commoncrypto_openssl_pad, NULL);
1510
863 /* test block key types openssl */
864 abts_run_test(suite, test_crypto_get_block_key_types_openssl, NULL);
865
866 /* test block key types nss */
867 abts_run_test(suite, test_crypto_get_block_key_types_nss, NULL);
868
1511 /* test block key types openssl */
1512 abts_run_test(suite, test_crypto_get_block_key_types_openssl, NULL);
1513
1514 /* test block key types nss */
1515 abts_run_test(suite, test_crypto_get_block_key_types_nss, NULL);
1516
1517 /* test block key types commoncrypto */
1518 abts_run_test(suite, test_crypto_get_block_key_types_commoncrypto, NULL);
1519
869 /* test block key modes openssl */
870 abts_run_test(suite, test_crypto_get_block_key_modes_openssl, NULL);
871
872 /* test block key modes nss */
873 abts_run_test(suite, test_crypto_get_block_key_modes_nss, NULL);
874
1520 /* test block key modes openssl */
1521 abts_run_test(suite, test_crypto_get_block_key_modes_openssl, NULL);
1522
1523 /* test block key modes nss */
1524 abts_run_test(suite, test_crypto_get_block_key_modes_nss, NULL);
1525
1526 /* test block key modes commoncrypto */
1527 abts_run_test(suite, test_crypto_get_block_key_modes_commoncrypto, NULL);
1528
1529 abts_run_test(suite, test_crypto_memzero, NULL);
1530 abts_run_test(suite, test_crypto_equals, NULL);
1531
875 return suite;
876}
877
878#else
879
880/**
881 * Dummy test suite when crypto is turned off.
882 */
883abts_suite *testcrypto(abts_suite *suite)
884{
885 return ADD_SUITE(suite);
886}
887
888#endif /* APU_HAVE_CRYPTO */
1532 return suite;
1533}
1534
1535#else
1536
1537/**
1538 * Dummy test suite when crypto is turned off.
1539 */
1540abts_suite *testcrypto(abts_suite *suite)
1541{
1542 return ADD_SUITE(suite);
1543}
1544
1545#endif /* APU_HAVE_CRYPTO */