28#define TEST_STRING "12345"
29#define ALIGNED_STRING "123456789012345"
56 fprintf(
stderr,
"get_driver error %d: %s: '%s' native error %d: %s (%s),",
146 fprintf(
stderr,
"key: %s %s apr error %d / native error %d: %s (%s)\n",
153 ABTS_ASSERT(tc,
"apr_crypto_key returned APR_EPADDING",
155 ABTS_ASSERT(tc,
"apr_crypto_key returned APR_EKEYTYPE",
170 int doPad,
const char *description)
175 const char *
pass =
"secret";
176 const char *
salt =
"salt";
190 "skipped: %s %s passphrase return APR_ENOCIPHER: error %d: %s (%s)\n",
198 fprintf(
stderr,
"passphrase: %s %s apr error %d / native error %d: %s (%s)\n",
219 int doPad,
const char *description)
224 const char *
pass =
"secret";
225 const char *
salt =
"salt";
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;
248 "skipped: %s %s key passphrase return APR_ENOCIPHER: error %d: %s (%s)\n",
256 fprintf(
stderr,
"key passphrase: %s %s apr error %d / native error %d: %s (%s)\n",
294 ABTS_NOT_IMPL(tc,
"apr_crypto_block_encrypt_init returned APR_ENOTIMPL");
300 "encrypt_init: %s %s (APR %d) native error %d: %s (%s)\n",
305 ABTS_ASSERT(tc,
"apr_crypto_block_encrypt_init returned APR_ENOKEY",
307 ABTS_ASSERT(tc,
"apr_crypto_block_encrypt_init returned APR_ENOIV",
309 ABTS_ASSERT(tc,
"apr_crypto_block_encrypt_init returned APR_EKEYTYPE",
311 ABTS_ASSERT(tc,
"apr_crypto_block_encrypt_init returned APR_EKEYLENGTH",
314 "apr_crypto_block_encrypt_init returned APR_ENOTENOUGHENTROPY",
316 ABTS_ASSERT(tc,
"failed to apr_crypto_block_encrypt_init",
318 ABTS_ASSERT(tc,
"apr_crypto_block_encrypt_init returned NULL context",
329 fprintf(
stderr,
"encrypt: %s %s (APR %d) native error %d: %s (%s)\n",
347 "encrypt_finish: %s %s (APR %d) native error %d: %s (%s)\n",
386 ABTS_NOT_IMPL(tc,
"apr_crypto_block_decrypt_init returned APR_ENOTIMPL");
392 "decrypt_init: %s %s (APR %d) native error %d: %s (%s)\n",
413 fprintf(
stderr,
"decrypt: %s %s (APR %d) native error %d: %s (%s)\n",
431 "decrypt_finish: %s %s (APR %d) native error %d: %s (%s)\n",
464 const char *description)
481 const unsigned char *
iv =
NULL;
497 fprintf(
stderr,
"passphrase cross mismatch: %s %s/%s\n", description,
519 fprintf(
stderr,
"key secret cross mismatch: %s %s/%s\n", description,
541 fprintf(
stderr,
"key passphrase cross mismatch: %s %s/%s\n", description,
581 "KEY_AES_256/MODE_CBC");
600 "KEY_AES_256/MODE_CBC");
619 "KEY_AES_256/MODE_CBC");
639 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
641 in,
inlen, 24,
"KEY_3DES_192/MODE_ECB");
643 inlen, 32,
"KEY_AES_256/MODE_CBC");
645 inlen, 32,
"KEY_AES_256/MODE_ECB");
647 inlen, 24,
"KEY_AES_192/MODE_CBC");
649 inlen, 24,
"KEY_AES_192/MODE_ECB");
651 inlen, 16,
"KEY_AES_128/MODE_CBC");
653 inlen, 16,
"KEY_AES_128/MODE_ECB");
673 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
677 inlen, 32,
"KEY_AES_256/MODE_CBC");
679 inlen, 32,
"KEY_AES_256/MODE_ECB");
681 inlen, 24,
"KEY_AES_192/MODE_CBC");
683 inlen, 24,
"KEY_AES_192/MODE_ECB");
685 inlen, 16,
"KEY_AES_128/MODE_CBC");
687 inlen, 16,
"KEY_AES_128/MODE_ECB");
707 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
709 in,
inlen, 24,
"KEY_3DES_192/MODE_ECB");
711 inlen, 32,
"KEY_AES_256/MODE_CBC");
713 inlen, 32,
"KEY_AES_256/MODE_ECB");
715 inlen, 24,
"KEY_AES_192/MODE_CBC");
717 inlen, 24,
"KEY_AES_192/MODE_ECB");
719 inlen, 16,
"KEY_AES_128/MODE_CBC");
721 inlen, 16,
"KEY_AES_128/MODE_ECB");
742 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
747 inlen, 32,
"KEY_AES_256/MODE_CBC");
749 inlen, 32,
"KEY_AES_256/MODE_ECB");
751 inlen, 24,
"KEY_AES_192/MODE_CBC");
753 inlen, 24,
"KEY_AES_192/MODE_ECB");
755 inlen, 16,
"KEY_AES_128/MODE_CBC");
757 inlen, 16,
"KEY_AES_128/MODE_ECB");
777 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
783 inlen, 32,
"KEY_AES_256/MODE_CBC");
785 inlen, 32,
"KEY_AES_256/MODE_ECB");
787 inlen, 24,
"KEY_AES_192/MODE_CBC");
789 inlen, 24,
"KEY_AES_192/MODE_ECB");
791 inlen, 16,
"KEY_AES_128/MODE_CBC");
793 inlen, 16,
"KEY_AES_128/MODE_ECB");
815 inlen, 24,
"KEY_3DES_192/MODE_CBC");
817 inlen, 24,
"KEY_3DES_192/MODE_ECB");
819 inlen, 32,
"KEY_AES_256/MODE_CBC");
821 inlen, 32,
"KEY_AES_256/MODE_ECB");
823 inlen, 24,
"KEY_AES_192/MODE_CBC");
825 inlen, 24,
"KEY_AES_192/MODE_ECB");
827 inlen, 16,
"KEY_AES_128/MODE_CBC");
829 inlen, 16,
"KEY_AES_128/MODE_ECB");
851 inlen, 24,
"KEY_3DES_192/MODE_CBC");
853 inlen, 24,
"KEY_3DES_192/MODE_ECB");
855 inlen, 32,
"KEY_AES_256/MODE_CBC");
857 inlen, 32,
"KEY_AES_256/MODE_ECB");
859 inlen, 24,
"KEY_AES_192/MODE_CBC");
861 inlen, 24,
"KEY_AES_192/MODE_ECB");
863 inlen, 16,
"KEY_AES_128/MODE_CBC");
865 inlen, 16,
"KEY_AES_128/MODE_ECB");
878 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
886 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
888 in,
inlen, 24,
"KEY_3DES_192/MODE_ECB");
890 inlen, 32,
"KEY_AES_256/MODE_CBC");
892 inlen, 32,
"KEY_AES_256/MODE_ECB");
894 inlen, 24,
"KEY_AES_192/MODE_CBC");
896 inlen, 24,
"KEY_AES_192/MODE_ECB");
898 inlen, 16,
"KEY_AES_128/MODE_CBC");
900 inlen, 16,
"KEY_AES_128/MODE_ECB");
915 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
923 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
928 inlen, 32,
"KEY_AES_256/MODE_CBC");
934 inlen, 24,
"KEY_AES_192/MODE_CBC");
940 inlen, 16,
"KEY_AES_128/MODE_CBC");
957 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
965 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
967 in,
inlen, 24,
"KEY_3DES_192/MODE_ECB");
969 inlen, 32,
"KEY_AES_256/MODE_CBC");
971 inlen, 32,
"KEY_AES_256/MODE_ECB");
973 inlen, 24,
"KEY_AES_192/MODE_CBC");
975 inlen, 24,
"KEY_AES_192/MODE_ECB");
977 inlen, 16,
"KEY_AES_128/MODE_CBC");
979 inlen, 16,
"KEY_AES_128/MODE_ECB");
993 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
1001 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
1007 inlen, 32,
"KEY_AES_256/MODE_CBC");
1013 inlen, 24,
"KEY_AES_192/MODE_CBC");
1020 inlen, 16,
"KEY_AES_128/MODE_CBC");
1038 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
1045 in,
inlen, 24,
"KEY_3DES_192/MODE_CBC");
1051 inlen, 32,
"KEY_AES_256/MODE_CBC");
1057 24,
"KEY_AES_192/MODE_CBC");
1064 16,
"KEY_AES_128/MODE_CBC");
1084 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
1092 inlen, 24,
"KEY_3DES_192/MODE_CBC");
1094 inlen, 24,
"KEY_3DES_192/MODE_ECB");
1096 inlen, 32,
"KEY_AES_256/MODE_CBC");
1098 inlen, 32,
"KEY_AES_256/MODE_ECB");
1100 inlen, 24,
"KEY_AES_192/MODE_CBC");
1102 inlen, 24,
"KEY_AES_192/MODE_ECB");
1104 inlen, 16,
"KEY_AES_128/MODE_CBC");
1106 inlen, 16,
"KEY_AES_128/MODE_ECB");
1122 const unsigned char *
in = (
const unsigned char *)
TEST_STRING;
1130 inlen, 24,
"KEY_3DES_192/MODE_CBC");
1132 inlen, 24,
"KEY_3DES_192/MODE_ECB");
1134 inlen, 32,
"KEY_AES_256/MODE_CBC");
1136 inlen, 32,
"KEY_AES_256/MODE_ECB");
1138 inlen, 24,
"KEY_AES_192/MODE_CBC");
1140 inlen, 24,
"KEY_AES_192/MODE_ECB");
1142 inlen, 16,
"KEY_AES_128/MODE_CBC");
1144 inlen, 16,
"KEY_AES_128/MODE_ECB");
1382 char buf[7 *
sizeof(
int)];
1388 int *ptr = (
int *)&msg;
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);
1399 for (
i = 0;
i <
sizeof(msg) /
sizeof(*ptr); ++
i) {
1400 ABTS_ASSERT(tc,
"test_crypto_memzero() optimized out", ptr[
i] == 0);
1416 char *ptr = (
char *)
buf;
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)
1426 for (
i = 1;
i < 2 *
sizeof(
buf);
i += 2) {
const char apr_size_t len
void abts_run_test(abts_suite *ts, test_func f, void *value)
#define ABTS_PTR_NOTNULL(a, b)
#define ABTS_NOT_IMPL(a, b)
#define ABTS_STR_EQUAL(a, b, c)
#define ABTS_ASSERT(a, b, c)
#define ABTS_INT_EQUAL(a, b, c)
static apr_hash_t * drivers
APR Dynamic Object Handling Routines.
apr_size_t const unsigned char unsigned int unsigned int d
const unsigned char * buf
#define APR_ENOTENOUGHENTROPY
const char const apr_dbd_driver_t ** driver
apr_dbd_transaction_t int mode
apr_pool_t const char * params
const char int apr_pool_t * pool
apr_array_header_t ** result
#define APR_HASH_KEY_STRING
apr_vformatter_buff_t * c
#define apr_pool_create(newpool, parent)
#define apr_pcalloc(p, size)
apr_int32_t apr_int32_t apr_int32_t err
static const char *const types[]
abts_suite * testcrypto(abts_suite *suite)
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray