diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/Makefile.in | 4 | ||||
-rw-r--r-- | test/Makefile.win | 4 | ||||
-rw-r--r-- | test/NWGNUaputest | 25 | ||||
-rw-r--r-- | test/NWGNUmakefile | 10 | ||||
-rw-r--r-- | test/nw_misc.c | 3 | ||||
-rw-r--r-- | test/testbuckets.c | 2 | ||||
-rw-r--r-- | test/testcrypto.c | 496 | ||||
-rw-r--r-- | test/testldap.c | 2 | ||||
-rw-r--r-- | test/testmemcache.c | 20 | ||||
-rw-r--r-- | test/testpass.c | 12 | ||||
-rw-r--r-- | test/testreslist.c | 3 | ||||
-rw-r--r-- | test/testxml.c | 41 |
12 files changed, 425 insertions, 197 deletions
diff --git a/test/Makefile.in b/test/Makefile.in index a2a3c6de..cf89a548 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -12,7 +12,7 @@ VPATH = @srcdir@ INCLUDES = @APRUTIL_PRIV_INCLUDES@ @APR_INCLUDES@ @APRUTIL_INCLUDES@ -STDTEST_PORTABLE = testall dbd +STDTEST_PORTABLE = dbd testall TESTS = teststrmatch.lo testuri.lo testuuid.lo testbuckets.lo testpass.lo \ testmd4.lo testmd5.lo testldap.lo testdate.lo testdbm.lo testdbd.lo \ @@ -59,7 +59,7 @@ dbd: $(OBJECTS_dbd) check: $(TESTALL_COMPONENTS) $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE) teststatus=0; \ progfailed=""; \ - for prog in $(STDTEST_PORTABLE) $(STDTEST_NONPORTABLE); do \ + for prog in $(STDTEST_NONPORTABLE) $(STDTEST_PORTABLE); do \ if test "$$prog" = 'dbd'; then \ for driver in none @apu_dbd_tests@; do \ if test "$$driver" != 'none'; then \ diff --git a/test/Makefile.win b/test/Makefile.win index c1c85336..9f5ca842 100644 --- a/test/Makefile.win +++ b/test/Makefile.win @@ -157,11 +157,11 @@ PATH=$(OUTDIR);..\$(OUTDIR);..\ldap\$(OUTDIR);..\dbd\$(OUTDIR);$(API_PATH)\$(OUT APR_ICONV1_PATH=$(API_PATH)\$(OUTDIR)\iconv check: $(PROGRAMS) $(OTHER_PROGRAMS) + echo Testing dbd sqlite2 && $(OUTDIR)\dbd.exe sqlite2 || echo Failed + echo Testing dbd sqlite3 && $(OUTDIR)\dbd.exe sqlite3 || echo Failed @for %p in ($(PROGRAMS)) do @( \ echo Testing %p && %p -v || echo %p failed \ ) - echo Testing dbd sqlite2 && $(OUTDIR)\dbd.exe sqlite2 || echo Failed - echo Testing dbd sqlite3 && $(OUTDIR)\dbd.exe sqlite3 || echo Failed checkall: check diff --git a/test/NWGNUaputest b/test/NWGNUaputest index f41b8f7d..6b710ad8 100644 --- a/test/NWGNUaputest +++ b/test/NWGNUaputest @@ -8,7 +8,7 @@ # ifndef EnvironmentDefined -include $(APR_WORK)\build\NWGNUhead.inc +include $(APR_WORK)/build/NWGNUhead.inc endif # @@ -18,7 +18,7 @@ endif XINCDIRS += \ $(APR)/include \ $(APR)/include/arch/NetWare \ - $(APRUTIL)/include \ + $(APU)/include \ $(LDAPSDK)/inc \ $(EOLIST) @@ -112,7 +112,7 @@ NLM_SCREEN_NAME = aputest # # If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc +# $(APR_WORK)/build/NWGNUenvironment.inc # NLM_VERSION = @@ -124,12 +124,12 @@ NLM_STACK_SIZE = 524288 # # If this is specified it will be used by the link '-entry' directive # -NLM_ENTRY_SYM = _LibCPrelude +NLM_ENTRY_SYM = # # If this is specified it will be used by the link '-exit' directive # -NLM_EXIT_SYM = _LibCPostlude +NLM_EXIT_SYM = # # If this is specified it will be used by the link '-check' directive @@ -139,7 +139,7 @@ NLM_CHECK_SYM = # # If this is specified it will be used by the link '-flags' directive # -NLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION +NLM_FLAGS = # # If this is specified it will be linked in with the XDCData option in the def @@ -201,7 +201,7 @@ FILES_nlm_objs = \ # These will be added as a library command in the link.opt file. # FILES_nlm_libs = \ - libcpre.o \ + $(PRELUDE) \ $(EOLIST) # @@ -213,7 +213,6 @@ FILES_nlm_modules = \ APRLIB \ lldapsdk \ lldapssl \ - lldapx \ $(EOLIST) # @@ -236,9 +235,9 @@ FILE_nlm_copyright = # FILES_nlm_Ximports = \ @libc.imp \ - @$(APR)/aprlib.imp \ - @$(LDAPSDK)/imports/lldapsdk.imp \ - @$(LDAPSDK)/imports/lldapssl.imp \ + @aprlib.imp \ + @lldapsdk.imp \ + @lldapssl.imp \ $(EOLIST) # @@ -264,7 +263,7 @@ nlms :: libs $(TARGET_nlm) # # Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) +# correct place. (See $(APR_WORK)/build/NWGNUhead.inc for examples) # install :: nlms FORCE @@ -278,5 +277,5 @@ install :: nlms FORCE # in this makefile # -include $(APR_WORK)\build\NWGNUtail.inc +include $(APRBUILD)/NWGNUtail.inc diff --git a/test/NWGNUmakefile b/test/NWGNUmakefile index c28e3e2e..a36d1784 100644 --- a/test/NWGNUmakefile +++ b/test/NWGNUmakefile @@ -10,7 +10,7 @@ SUBDIRS = \ # paths to tools # -include $(APR_WORK)\build\NWGNUhead.inc +include $(APR_WORK)/build/NWGNUhead.inc # # build this level's files @@ -120,7 +120,7 @@ NLM_SCREEN_NAME = # # If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc +# $(APR_WORK)/build/NWGNUenvironment.inc # NLM_VERSION = @@ -239,10 +239,10 @@ nlms :: libs $(TARGET_nlm) # # Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) +# correct place. (See $(APR_WORK)/build/NWGNUhead.inc for examples) # install :: nlms FORCE - copy $(OBJDIR)\*.nlm $(INSTALLBASE) + $(call COPY,$(OBJDIR)/*.nlm,$(INSTALLBASE)) # # Any specialized rules here @@ -253,5 +253,5 @@ install :: nlms FORCE # in this makefile # -include $(APR_WORK)\build\NWGNUtail.inc +include $(APRBUILD)/NWGNUtail.inc diff --git a/test/nw_misc.c b/test/nw_misc.c index 2c1e5e2b..b45f9516 100644 --- a/test/nw_misc.c +++ b/test/nw_misc.c @@ -1,4 +1,6 @@ +#include <stdio.h> #include <stdlib.h> +#include <screen.h> /* #include "testutil.h" */ @@ -6,6 +8,7 @@ /* function to keep the screen open if not launched from bash */ void _NonAppStop( void ) { + if (getenv("_IN_NETWARE_BASH_") == NULL) { printf("\r\n<Press any key to close screen> "); getcharacter(); } diff --git a/test/testbuckets.c b/test/testbuckets.c index 6c3653ff..807b2a59 100644 --- a/test/testbuckets.c +++ b/test/testbuckets.c @@ -368,7 +368,7 @@ static apr_file_t *make_test_file(abts_case *tc, const char *fname, ABTS_ASSERT(tc, "create test file", apr_file_open(&f, fname, - APR_READ|APR_WRITE|APR_TRUNCATE|APR_CREATE, + APR_FOPEN_READ|APR_FOPEN_WRITE|APR_FOPEN_TRUNCATE|APR_FOPEN_CREATE, APR_OS_DEFAULT, p) == APR_SUCCESS); ABTS_ASSERT(tc, "write test file contents", diff --git a/test/testcrypto.c b/test/testcrypto.c index cc81b733..335c3ae6 100644 --- a/test/testcrypto.c +++ b/test/testcrypto.c @@ -29,16 +29,17 @@ #define ALIGNED_STRING "123456789012345" static const apr_crypto_driver_t *get_driver(abts_case *tc, apr_pool_t *pool, - const char *name, const apr_array_header_t *params) { + const char *name, const char *params) +{ const apr_crypto_driver_t *driver = NULL; const apu_err_t *err = NULL; apr_status_t rv; - rv = apr_crypto_init(pool, params); + rv = apr_crypto_init(pool); ABTS_ASSERT(tc, "failed to init apr_crypto", rv == APR_SUCCESS); - rv = apr_crypto_get_driver(pool, name, &driver, params, &err); + rv = apr_crypto_get_driver(&driver, name, params, &err, pool); if (APR_SUCCESS != rv && err) { ABTS_NOT_IMPL(tc, err->msg); return NULL; @@ -58,29 +59,25 @@ static const apr_crypto_driver_t *get_driver(abts_case *tc, apr_pool_t *pool, } static const apr_crypto_driver_t *get_nss_driver(abts_case *tc, - apr_pool_t *pool) { - - apr_array_header_t *params; - apr_crypto_param_t *param; + apr_pool_t *pool) +{ /* initialise NSS */ - params = apr_array_make(pool, 10, sizeof(apr_crypto_param_t)); - param = apr_array_push(params); - param->type = APR_CRYPTO_CA_TYPE_DIR; - param->path = "data"; - return get_driver(tc, pool, "nss", params); + return get_driver(tc, pool, "nss", "dir=data"); } static const apr_crypto_driver_t *get_openssl_driver(abts_case *tc, - apr_pool_t *pool) { + apr_pool_t *pool) +{ return get_driver(tc, pool, "openssl", NULL); } -static apr_crypto_t *factory(abts_case *tc, apr_pool_t *pool, - const apr_crypto_driver_t *driver) { +static apr_crypto_t *make(abts_case *tc, apr_pool_t *pool, + const apr_crypto_driver_t *driver) +{ apr_crypto_t *f = NULL; @@ -88,9 +85,9 @@ static apr_crypto_t *factory(abts_case *tc, apr_pool_t *pool, return NULL; } - /* get the factory */ - apr_crypto_factory(driver, pool, NULL, &f); - ABTS_ASSERT(tc, "apr_crypto_factory returned NULL", f != NULL); + /* get the context */ + apr_crypto_make(&f, driver, "engine=openssl", pool); + ABTS_ASSERT(tc, "apr_crypto_make returned NULL", f != NULL); return f; @@ -99,30 +96,38 @@ static apr_crypto_t *factory(abts_case *tc, apr_pool_t *pool, static const apr_crypto_key_t *passphrase(abts_case *tc, apr_pool_t *pool, const apr_crypto_driver_t *driver, const apr_crypto_t *f, apr_crypto_block_key_type_e type, apr_crypto_block_key_mode_e mode, - int doPad, const char *description) { + int doPad, const char *description) +{ apr_crypto_key_t *key = NULL; + const apu_err_t *result = NULL; const char *pass = "secret"; const char *salt = "salt"; apr_status_t rv; - if (!driver || !f) { + if (!f) { return NULL; } /* init the passphrase */ - rv = apr_crypto_passphrase(driver, pool, f, pass, strlen(pass), - (unsigned char *) salt, strlen(salt), type, mode, doPad, 4096, - &key, NULL); + rv = apr_crypto_passphrase(&key, NULL, pass, strlen(pass), + (unsigned char *) salt, strlen(salt), type, mode, doPad, 4096, f, + pool); if (APR_ENOCIPHER == rv) { - ABTS_NOT_IMPL(tc, apr_psprintf(pool, "skipped: %s %s passphrase return APR_ENOCIPHER: error %d: %s (%s)\n", description, apr_crypto_driver_name(driver), f->result->rc, f->result->reason ? f->result->reason : "", f->result->msg ? f->result->msg : "")); + apr_crypto_error(&result, f); + ABTS_NOT_IMPL(tc, apr_psprintf(pool, + "skipped: %s %s passphrase return APR_ENOCIPHER: error %d: %s (%s)\n", + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", result->msg ? result->msg : "")); return NULL; - } else { + } + else { if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "passphrase: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", + result->msg ? result->msg : ""); } ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_ENOKEY", rv != APR_ENOKEY); ABTS_ASSERT(tc, "apr_crypto_passphrase returned APR_EPADDING", rv != APR_EPADDING); @@ -142,9 +147,11 @@ static unsigned char *encrypt_block(abts_case *tc, apr_pool_t *pool, const apr_crypto_key_t *key, const unsigned char *in, const apr_size_t inlen, unsigned char **cipherText, apr_size_t *cipherTextLen, const unsigned char **iv, - apr_size_t *blockSize, const char *description) { + apr_size_t *blockSize, const char *description) +{ apr_crypto_block_t *block = NULL; + const apu_err_t *result = NULL; apr_size_t len = 0; apr_status_t rv; @@ -153,16 +160,17 @@ static unsigned char *encrypt_block(abts_case *tc, apr_pool_t *pool, } /* init the encryption */ - rv = apr_crypto_block_encrypt_init(driver, pool, f, key, iv, &block, - blockSize); + rv = apr_crypto_block_encrypt_init(&block, iv, key, blockSize, pool); if (APR_ENOTIMPL == rv) { ABTS_NOT_IMPL(tc, "apr_crypto_block_encrypt_init returned APR_ENOTIMPL"); - } else { + } + else { if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "encrypt_init: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", + result->msg ? result->msg : ""); } ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_ENOKEY", rv != APR_ENOKEY); ABTS_ASSERT(tc, "apr_crypto_block_encrypt_init returned APR_ENOIV", rv != APR_ENOIV); @@ -176,13 +184,13 @@ static unsigned char *encrypt_block(abts_case *tc, apr_pool_t *pool, } /* encrypt the block */ - rv = apr_crypto_block_encrypt(driver, block, cipherText, - cipherTextLen, in, inlen); + rv = apr_crypto_block_encrypt(cipherText, cipherTextLen, in, inlen, block); if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "encrypt: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", result->msg ? result->msg + : ""); } ABTS_ASSERT(tc, "apr_crypto_block_encrypt returned APR_ECRYPT", rv != APR_ECRYPT); ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt", rv == APR_SUCCESS); @@ -192,19 +200,20 @@ static unsigned char *encrypt_block(abts_case *tc, apr_pool_t *pool, } /* finalise the encryption */ - rv = apr_crypto_block_encrypt_finish(driver, block, *cipherText - + *cipherTextLen, &len); + rv = apr_crypto_block_encrypt_finish(*cipherText + *cipherTextLen, &len, + block); if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "encrypt_finish: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", result->msg ? result->msg + : ""); } ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_ECRYPT", rv != APR_ECRYPT); ABTS_ASSERT(tc, "apr_crypto_block_encrypt_finish returned APR_EPADDING", rv != APR_EPADDING); ABTS_ASSERT(tc, "failed to apr_crypto_block_encrypt_finish", rv == APR_SUCCESS); *cipherTextLen += len; - apr_crypto_block_cleanup(driver, block); + apr_crypto_block_cleanup(block); if (rv) { return NULL; } @@ -218,9 +227,11 @@ static unsigned char *decrypt_block(abts_case *tc, apr_pool_t *pool, const apr_crypto_key_t *key, unsigned char *cipherText, apr_size_t cipherTextLen, unsigned char **plainText, apr_size_t *plainTextLen, const unsigned char *iv, - apr_size_t *blockSize, const char *description) { + apr_size_t *blockSize, const char *description) +{ apr_crypto_block_t *block = NULL; + const apu_err_t *result = NULL; apr_size_t len = 0; apr_status_t rv; @@ -229,16 +240,17 @@ static unsigned char *decrypt_block(abts_case *tc, apr_pool_t *pool, } /* init the decryption */ - rv = apr_crypto_block_decrypt_init(driver, pool, f, key, iv, &block, - blockSize); + rv = apr_crypto_block_decrypt_init(&block, blockSize, iv, key, pool); if (APR_ENOTIMPL == rv) { ABTS_NOT_IMPL(tc, "apr_crypto_block_decrypt_init returned APR_ENOTIMPL"); - } else { + } + else { if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "decrypt_init: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", + result->msg ? result->msg : ""); } ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_ENOKEY", rv != APR_ENOKEY); ABTS_ASSERT(tc, "apr_crypto_block_decrypt_init returned APR_ENOIV", rv != APR_ENOIV); @@ -252,13 +264,14 @@ static unsigned char *decrypt_block(abts_case *tc, apr_pool_t *pool, } /* decrypt the block */ - rv = apr_crypto_block_decrypt(driver, block, plainText, plainTextLen, - cipherText, cipherTextLen); + rv = apr_crypto_block_decrypt(plainText, plainTextLen, cipherText, + cipherTextLen, block); if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "decrypt: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", result->msg ? result->msg + : ""); } ABTS_ASSERT(tc, "apr_crypto_block_decrypt returned APR_ECRYPT", rv != APR_ECRYPT); ABTS_ASSERT(tc, "failed to apr_crypto_block_decrypt", rv == APR_SUCCESS); @@ -268,13 +281,14 @@ static unsigned char *decrypt_block(abts_case *tc, apr_pool_t *pool, } /* finalise the decryption */ - rv = apr_crypto_block_decrypt_finish(driver, block, *plainText - + *plainTextLen, &len); + rv = apr_crypto_block_decrypt_finish(*plainText + *plainTextLen, &len, + block); if (APR_SUCCESS != rv) { + apr_crypto_error(&result, f); fprintf(stderr, "decrypt_finish: %s %s native error %d: %s (%s)\n", - description, apr_crypto_driver_name(driver), f->result->rc, - f->result->reason ? f->result->reason : "", - f->result->msg ? f->result->msg : ""); + description, apr_crypto_driver_name(driver), result->rc, + result->reason ? result->reason : "", result->msg ? result->msg + : ""); } ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_ECRYPT", rv != APR_ECRYPT); ABTS_ASSERT(tc, "apr_crypto_block_decrypt_finish returned APR_EPADDING", rv != APR_EPADDING); @@ -284,7 +298,7 @@ static unsigned char *decrypt_block(abts_case *tc, apr_pool_t *pool, } *plainTextLen += len; - apr_crypto_block_cleanup(driver, block); + apr_crypto_block_cleanup(block); return *plainText; @@ -302,7 +316,8 @@ static void crypto_block_cross(abts_case *tc, apr_pool_t *pool, const apr_crypto_driver_t **drivers, const apr_crypto_block_key_type_e type, const apr_crypto_block_key_mode_e mode, int doPad, - const unsigned char *in, apr_size_t inlen, const char *description) { + const unsigned char *in, apr_size_t inlen, const char *description) +{ const apr_crypto_driver_t *driver1 = drivers[0]; const apr_crypto_driver_t *driver2 = drivers[1]; apr_crypto_t *f1 = NULL; @@ -317,8 +332,8 @@ static void crypto_block_cross(abts_case *tc, apr_pool_t *pool, const unsigned char *iv = NULL; apr_size_t blockSize = 0; - f1 = factory(tc, pool, driver1); - f2 = factory(tc, pool, driver2); + f1 = make(tc, pool, driver1); + f2 = make(tc, pool, driver2); key1 = passphrase(tc, pool, driver1, f1, type, mode, doPad, description); key2 = passphrase(tc, pool, driver2, f2, type, mode, doPad, description); @@ -342,13 +357,14 @@ static void crypto_block_cross(abts_case *tc, apr_pool_t *pool, /** * Test initialisation. */ -static void test_crypto_init(abts_case *tc, void *data) { +static void test_crypto_init(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; apr_status_t rv; apr_pool_create(&pool, NULL); - rv = apr_crypto_init(pool, NULL); + rv = apr_crypto_init(pool); ABTS_ASSERT(tc, "failed to init apr_crypto", rv == APR_SUCCESS); apr_pool_destroy(pool); @@ -358,7 +374,8 @@ static void test_crypto_init(abts_case *tc, void *data) { /** * Simple test of OpenSSL block crypt. */ -static void test_crypto_block_openssl(abts_case *tc, void *data) { +static void test_crypto_block_openssl(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -368,22 +385,22 @@ static void test_crypto_block_openssl(abts_case *tc, void *data) { apr_pool_create(&pool, NULL); drivers[0] = get_openssl_driver(tc, pool); drivers[1] = get_openssl_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 0, in, inlen, - "KEY_3DES_192/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, - "KEY_3DES_192/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 0, in, inlen, - "KEY_AES_256/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 0, in, inlen, - "KEY_AES_256/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 0, in, inlen, - "KEY_AES_192/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 0, in, inlen, - "KEY_AES_192/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 0, in, inlen, - "KEY_AES_128/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 0, in, inlen, - "KEY_AES_128/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0, + in, inlen, "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 0, + in, inlen, "KEY_3DES_192/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_256/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_192/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_128/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_128/MODE_ECB"); apr_pool_destroy(pool); } @@ -391,7 +408,8 @@ static void test_crypto_block_openssl(abts_case *tc, void *data) { /** * Simple test of NSS block crypt. */ -static void test_crypto_block_nss(abts_case *tc, void *data) { +static void test_crypto_block_nss(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -401,22 +419,22 @@ static void test_crypto_block_nss(abts_case *tc, void *data) { apr_pool_create(&pool, NULL); drivers[0] = get_nss_driver(tc, pool); drivers[1] = get_nss_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 0, in, inlen, - "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0, + in, inlen, "KEY_3DES_192/MODE_CBC"); /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */ /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */ - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 0, in, inlen, - "KEY_AES_256/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 0, in, inlen, - "KEY_AES_256/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 0, in, inlen, - "KEY_AES_192/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 0, in, inlen, - "KEY_AES_192/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 0, in, inlen, - "KEY_AES_128/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 0, in, inlen, - "KEY_AES_128/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_256/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_192/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_128/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_128/MODE_ECB"); apr_pool_destroy(pool); } @@ -424,7 +442,8 @@ static void test_crypto_block_nss(abts_case *tc, void *data) { /** * Encrypt NSS, decrypt OpenSSL. */ -static void test_crypto_block_nss_openssl(abts_case *tc, void *data) { +static void test_crypto_block_nss_openssl(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -435,15 +454,15 @@ static void test_crypto_block_nss_openssl(abts_case *tc, void *data) { drivers[0] = get_nss_driver(tc, pool); drivers[1] = get_openssl_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 0, in, inlen, - "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0, + in, inlen, "KEY_3DES_192/MODE_CBC"); /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */ /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */ - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 0, in, inlen, - "KEY_AES_256/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 0, in, inlen, - "KEY_AES_256/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_256/MODE_ECB"); /* all 4 of these tests fail to interoperate - a clue from the xml-security code is that * NSS cannot distinguish between the 128 and 192 bit versions of AES. Will need to be @@ -462,7 +481,8 @@ static void test_crypto_block_nss_openssl(abts_case *tc, void *data) { /** * Encrypt OpenSSL, decrypt NSS. */ -static void test_crypto_block_openssl_nss(abts_case *tc, void *data) { +static void test_crypto_block_openssl_nss(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -472,16 +492,16 @@ static void test_crypto_block_openssl_nss(abts_case *tc, void *data) { apr_pool_create(&pool, NULL); drivers[0] = get_openssl_driver(tc, pool); drivers[1] = get_nss_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 0, in, inlen, - "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 0, + in, inlen, "KEY_3DES_192/MODE_CBC"); /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */ /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 0, in, inlen, "KEY_3DES_192/MODE_ECB"); */ - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 0, in, inlen, - "KEY_AES_256/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 0, in, inlen, - "KEY_AES_256/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 0, in, + inlen, "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 0, in, + inlen, "KEY_AES_256/MODE_ECB"); /* all 4 of these tests fail to interoperate - a clue from the xml-security code is that * NSS cannot distinguish between the 128 and 192 bit versions of AES. Will need to be @@ -500,7 +520,8 @@ static void test_crypto_block_openssl_nss(abts_case *tc, void *data) { /** * Simple test of OpenSSL block crypt. */ -static void test_crypto_block_openssl_pad(abts_case *tc, void *data) { +static void test_crypto_block_openssl_pad(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -511,22 +532,22 @@ static void test_crypto_block_openssl_pad(abts_case *tc, void *data) { drivers[0] = get_openssl_driver(tc, pool); drivers[1] = get_openssl_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 1, in, inlen, - "KEY_3DES_192/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, - "KEY_3DES_192/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 1, in, inlen, - "KEY_AES_256/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, - "KEY_AES_256/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 1, in, inlen, - "KEY_AES_192/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 1, in, inlen, - "KEY_AES_192/MODE_ECB"); - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 1, in, inlen, - "KEY_AES_128/MODE_CBC"); - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 1, in, inlen, - "KEY_AES_128/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1, + in, inlen, "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_ECB, 1, + in, inlen, "KEY_3DES_192/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_ECB, 1, in, + inlen, "KEY_AES_256/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_ECB, 1, in, + inlen, "KEY_AES_192/MODE_ECB"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_128/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_ECB, 1, in, + inlen, "KEY_AES_128/MODE_ECB"); apr_pool_destroy(pool); @@ -535,9 +556,11 @@ static void test_crypto_block_openssl_pad(abts_case *tc, void *data) { /** * Simple test of NSS block crypt. */ -static void test_crypto_block_nss_pad(abts_case *tc, void *data) { +static void test_crypto_block_nss_pad(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; - const apr_crypto_driver_t *drivers[] = { NULL, NULL }; + const apr_crypto_driver_t *drivers[] = + { NULL, NULL }; const unsigned char *in = (const unsigned char *) TEST_STRING; apr_size_t inlen = sizeof(TEST_STRING); @@ -546,25 +569,25 @@ static void test_crypto_block_nss_pad(abts_case *tc, void *data) { drivers[0] = get_nss_driver(tc, pool); drivers[1] = get_nss_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 1, in, inlen, - "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1, + in, inlen, "KEY_3DES_192/MODE_CBC"); /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */ /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, "KEY_3DES_192/MODE_ECB"); */ - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 1, in, inlen, - "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_256/MODE_CBC"); /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */ /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, "KEY_AES_256/MODE_ECB");*/ - crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_CBC, 1, in, inlen, - "KEY_AES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_192, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_192/MODE_CBC"); /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */ /*crypto_block_cross(tc, pool, drivers, KEY_AES_192, MODE_ECB, 1, in, inlen, "KEY_AES_192/MODE_ECB");*/ - crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_CBC, 1, in, inlen, - "KEY_AES_128/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_128, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_128/MODE_CBC"); /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */ /*crypto_block_cross(tc, pool, drivers, KEY_AES_128, MODE_ECB, 1, in, inlen, "KEY_AES_128/MODE_ECB");*/ @@ -576,7 +599,8 @@ static void test_crypto_block_nss_pad(abts_case *tc, void *data) { /** * Encrypt NSS, decrypt OpenSSL. */ -static void test_crypto_block_nss_openssl_pad(abts_case *tc, void *data) { +static void test_crypto_block_nss_openssl_pad(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -587,14 +611,14 @@ static void test_crypto_block_nss_openssl_pad(abts_case *tc, void *data) { drivers[0] = get_nss_driver(tc, pool); drivers[1] = get_openssl_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 1, in, inlen, - "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1, + in, inlen, "KEY_3DES_192/MODE_CBC"); /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */ /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, "KEY_3DES_192/MODE_ECB"); */ - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 1, in, inlen, - "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_256/MODE_CBC"); /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */ /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, "KEY_AES_256/MODE_ECB");*/ @@ -616,7 +640,8 @@ static void test_crypto_block_nss_openssl_pad(abts_case *tc, void *data) { /** * Encrypt OpenSSL, decrypt NSS. */ -static void test_crypto_block_openssl_nss_pad(abts_case *tc, void *data) { +static void test_crypto_block_openssl_nss_pad(abts_case *tc, void *data) +{ apr_pool_t *pool = NULL; const apr_crypto_driver_t *drivers[] = { NULL, NULL }; @@ -626,14 +651,14 @@ static void test_crypto_block_openssl_nss_pad(abts_case *tc, void *data) { apr_pool_create(&pool, NULL); drivers[0] = get_openssl_driver(tc, pool); drivers[1] = get_nss_driver(tc, pool); - crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_CBC, 1, in, inlen, - "KEY_3DES_192/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_3DES_192, APR_MODE_CBC, 1, + in, inlen, "KEY_3DES_192/MODE_CBC"); /* KEY_3DES_192 / MODE_ECB doesn't work on NSS */ /* crypto_block_cross(tc, pool, drivers, KEY_3DES_192, MODE_ECB, 1, in, inlen, "KEY_3DES_192/MODE_ECB"); */ - crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_CBC, 1, in, inlen, - "KEY_AES_256/MODE_CBC"); + crypto_block_cross(tc, pool, drivers, APR_KEY_AES_256, APR_MODE_CBC, 1, in, + inlen, "KEY_AES_256/MODE_CBC"); /* KEY_AES_256 / MODE_ECB doesn't support padding on NSS */ /*crypto_block_cross(tc, pool, drivers, KEY_AES_256, MODE_ECB, 1, in, inlen, "KEY_AES_256/MODE_ECB");*/ @@ -652,7 +677,160 @@ static void test_crypto_block_openssl_nss_pad(abts_case *tc, void *data) { } -abts_suite *testcrypto(abts_suite *suite) { +/** + * Get Types, OpenSSL. + */ +static void test_crypto_get_block_key_types_openssl(abts_case *tc, void *data) +{ + apr_pool_t *pool = NULL; + const apr_crypto_driver_t *driver; + apr_crypto_t *f; + apr_hash_t *types; + int *key_3des_192; + int *key_aes_128; + int *key_aes_192; + int *key_aes_256; + + apr_pool_create(&pool, NULL); + driver = get_openssl_driver(tc, pool); + if (driver) { + + f = make(tc, pool, driver); + apr_crypto_get_block_key_types(&types, f); + + key_3des_192 = apr_hash_get(types, "3des192", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_3des_192); + ABTS_INT_EQUAL(tc, *key_3des_192, APR_KEY_3DES_192); + + key_aes_128 = apr_hash_get(types, "aes128", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_aes_128); + ABTS_INT_EQUAL(tc, *key_aes_128, APR_KEY_AES_128); + + key_aes_192 = apr_hash_get(types, "aes192", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_aes_192); + ABTS_INT_EQUAL(tc, *key_aes_192, APR_KEY_AES_192); + + key_aes_256 = apr_hash_get(types, "aes256", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_aes_256); + ABTS_INT_EQUAL(tc, *key_aes_256, APR_KEY_AES_256); + + } + + apr_pool_destroy(pool); + +} + +/** + * Get Types, NSS. + */ +static void test_crypto_get_block_key_types_nss(abts_case *tc, void *data) +{ + apr_pool_t *pool = NULL; + const apr_crypto_driver_t *driver; + apr_crypto_t *f; + apr_hash_t *types; + int *key_3des_192; + int *key_aes_128; + int *key_aes_192; + int *key_aes_256; + + apr_pool_create(&pool, NULL); + driver = get_nss_driver(tc, pool); + if (driver) { + + f = make(tc, pool, driver); + apr_crypto_get_block_key_types(&types, f); + + key_3des_192 = apr_hash_get(types, "3des192", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_3des_192); + ABTS_INT_EQUAL(tc, *key_3des_192, APR_KEY_3DES_192); + + key_aes_128 = apr_hash_get(types, "aes128", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_aes_128); + ABTS_INT_EQUAL(tc, *key_aes_128, APR_KEY_AES_128); + + key_aes_192 = apr_hash_get(types, "aes192", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_aes_192); + ABTS_INT_EQUAL(tc, *key_aes_192, APR_KEY_AES_192); + + key_aes_256 = apr_hash_get(types, "aes256", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, key_aes_256); + ABTS_INT_EQUAL(tc, *key_aes_256, APR_KEY_AES_256); + + } + + apr_pool_destroy(pool); + +} + +/** + * Get Modes, OpenSSL. + */ +static void test_crypto_get_block_key_modes_openssl(abts_case *tc, void *data) +{ + apr_pool_t *pool = NULL; + const apr_crypto_driver_t *driver; + apr_crypto_t *f; + apr_hash_t *modes; + int *mode_ecb; + int *mode_cbc; + + apr_pool_create(&pool, NULL); + driver = get_openssl_driver(tc, pool); + if (driver) { + + f = make(tc, pool, driver); + apr_crypto_get_block_key_modes(&modes, f); + + mode_ecb = apr_hash_get(modes, "ecb", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, mode_ecb); + ABTS_INT_EQUAL(tc, *mode_ecb, APR_MODE_ECB); + + mode_cbc = apr_hash_get(modes, "cbc", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, mode_cbc); + ABTS_INT_EQUAL(tc, *mode_cbc, APR_MODE_CBC); + + } + + apr_pool_destroy(pool); + +} + +/** + * Get Modes, NSS. + */ +static void test_crypto_get_block_key_modes_nss(abts_case *tc, void *data) +{ + apr_pool_t *pool = NULL; + const apr_crypto_driver_t *driver; + apr_crypto_t *f; + apr_hash_t *modes; + int *mode_ecb; + int *mode_cbc; + + apr_pool_create(&pool, NULL); + driver = get_nss_driver(tc, pool); + if (driver) { + + f = make(tc, pool, driver); + apr_crypto_get_block_key_modes(&modes, f); + + mode_ecb = apr_hash_get(modes, "ecb", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, mode_ecb); + ABTS_INT_EQUAL(tc, *mode_ecb, APR_MODE_ECB); + + mode_cbc = apr_hash_get(modes, "cbc", APR_HASH_KEY_STRING); + ABTS_PTR_NOTNULL(tc, mode_cbc); + ABTS_INT_EQUAL(tc, *mode_cbc, APR_MODE_CBC); + + } + + apr_pool_destroy(pool); + +} + +abts_suite *testcrypto(abts_suite *suite) +{ suite = ADD_SUITE(suite); /* test simple init and shutdown */ @@ -682,6 +860,18 @@ abts_suite *testcrypto(abts_suite *suite) { /* test padded encrypt openssl / decrypt nss */ abts_run_test(suite, test_crypto_block_openssl_nss_pad, NULL); + /* test block key types openssl */ + abts_run_test(suite, test_crypto_get_block_key_types_openssl, NULL); + + /* test block key types nss */ + abts_run_test(suite, test_crypto_get_block_key_types_nss, NULL); + + /* test block key modes openssl */ + abts_run_test(suite, test_crypto_get_block_key_modes_openssl, NULL); + + /* test block key modes nss */ + abts_run_test(suite, test_crypto_get_block_key_modes_nss, NULL); + return suite; } diff --git a/test/testldap.c b/test/testldap.c index 7595a55f..4f4fef90 100644 --- a/test/testldap.c +++ b/test/testldap.c @@ -80,7 +80,7 @@ static int get_ldap_host(void) ldap_host[0] = '\0'; rv = apr_file_open(&thefile, FILENAME, - APR_READ, + APR_FOPEN_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); if (rv != APR_SUCCESS) { return 0; diff --git a/test/testmemcache.c b/test/testmemcache.c index bcdf02e8..49476210 100644 --- a/test/testmemcache.c +++ b/test/testmemcache.c @@ -72,8 +72,8 @@ typedef struct { * if you wanted to use some external hashing library or functions for * consistent hashing, for example, this would be a good place to do it. */ -apr_uint32_t my_hash_func(void *baton, const char *data, - apr_size_t data_len) +static apr_uint32_t my_hash_func(void *baton, const char *data, + apr_size_t data_len) { return HASH_FUNC_RESULT; @@ -85,9 +85,9 @@ apr_uint32_t my_hash_func(void *baton, const char *data, * and pulls some number from the *baton, which is a struct that has some * kind of meaningful stuff in it. */ -apr_memcache_server_t *my_server_func(void *baton, - apr_memcache_t *mc, - const apr_uint32_t hash) +static apr_memcache_server_t *my_server_func(void *baton, + apr_memcache_t *mc, + const apr_uint32_t hash) { apr_memcache_server_t *ms = NULL; my_hash_server_baton *mhsb = (my_hash_server_baton *)baton; @@ -106,7 +106,7 @@ apr_memcache_server_t *my_server_func(void *baton, } apr_uint16_t firsttime = 0; -int randval(apr_uint32_t high) +static int randval(apr_uint32_t high) { apr_uint32_t i = 0; double d = 0; @@ -177,7 +177,7 @@ static void test_memcache_create(abts_case * tc, void *data) /* install our own custom hashing and server selection routines. */ -int create_test_hash(apr_pool_t *p, apr_hash_t *h) +static int create_test_hash(apr_pool_t *p, apr_hash_t *h) { int i; @@ -433,7 +433,6 @@ static void test_memcache_multiget(abts_case * tc, void *data) rv = apr_memcache_add_server(memcache, server); ABTS_ASSERT(tc, "server add failed", rv == APR_SUCCESS); - values = apr_hash_make(p); tdata = apr_hash_make(p); create_test_hash(pool, tdata); @@ -487,7 +486,7 @@ static void test_memcache_setget(abts_case * tc, void *data) apr_status_t rv; apr_memcache_t *memcache; apr_memcache_server_t *server; - apr_hash_t *tdata, *values; + apr_hash_t *tdata; apr_hash_index_t *hi; char *result; apr_size_t len; @@ -502,7 +501,6 @@ static void test_memcache_setget(abts_case * tc, void *data) ABTS_ASSERT(tc, "server add failed", rv == APR_SUCCESS); tdata = apr_hash_make(pool); - values = apr_hash_make(pool); create_test_hash(pool, tdata); @@ -539,7 +537,7 @@ static void test_memcache_setget(abts_case * tc, void *data) /* use apr_socket stuff to see if there is in fact a memcached server * running on PORT. */ -apr_status_t check_mc(void) +static apr_status_t check_mc(void) { apr_pool_t *pool = p; apr_status_t rv; diff --git a/test/testpass.c b/test/testpass.c index 789f17cc..0ec128bd 100644 --- a/test/testpass.c +++ b/test/testpass.c @@ -28,6 +28,14 @@ #include "abts.h" #include "testutil.h" +#if defined(WIN32) || defined(BEOS) || defined(NETWARE) +#define CRYPT_ALGO_SUPPORTED 0 +#else +#define CRYPT_ALGO_SUPPORTED 1 +#endif + +#if CRYPT_ALGO_SUPPORTED + static struct { const char *password; const char *hash; @@ -104,6 +112,8 @@ static void test_threadsafe(abts_case *tc, void *data) } #endif +#endif /* CRYPT_ALGO_SUPPORTED */ + static void test_shapass(abts_case *tc, void *data) { const char *pass = "hellojed"; @@ -130,10 +140,12 @@ abts_suite *testpass(abts_suite *suite) { suite = ADD_SUITE(suite); +#if CRYPT_ALGO_SUPPORTED abts_run_test(suite, test_crypt, NULL); #if APR_HAS_THREADS abts_run_test(suite, test_threadsafe, NULL); #endif +#endif /* CRYPT_ALGO_SUPPORTED */ abts_run_test(suite, test_shapass, NULL); abts_run_test(suite, test_md5pass, NULL); diff --git a/test/testreslist.c b/test/testreslist.c index aa248152..36333a15 100644 --- a/test/testreslist.c +++ b/test/testreslist.c @@ -142,7 +142,6 @@ static void test_timeout(abts_case *tc, apr_reslist_t *rl) { apr_status_t rv; my_resource_t *resources[RESLIST_HMAX]; - my_resource_t *res; void *vp; int i; @@ -163,8 +162,6 @@ static void test_timeout(abts_case *tc, apr_reslist_t *rl) rv = apr_reslist_acquire(rl, &vp); ABTS_TRUE(tc, APR_STATUS_IS_TIMEUP(rv)); - res = vp; - /* release the resources; otherwise the destroy operation * will blow */ diff --git a/test/testxml.c b/test/testxml.c index 9a09644d..eed10672 100644 --- a/test/testxml.c +++ b/test/testxml.c @@ -28,8 +28,8 @@ static apr_status_t create_dummy_file_error(abts_case *tc, apr_pool_t *p, apr_off_t off = 0L; char template[] = "data/testxmldummyerrorXXXXXX"; - rv = apr_file_mktemp(fd, template, APR_CREATE | APR_TRUNCATE | APR_DELONCLOSE | - APR_READ | APR_WRITE | APR_EXCL, p); + rv = apr_file_mktemp(fd, template, APR_FOPEN_CREATE | APR_FOPEN_TRUNCATE | APR_FOPEN_DELONCLOSE | + APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_EXCL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); if (rv != APR_SUCCESS) @@ -62,8 +62,8 @@ static apr_status_t create_dummy_file(abts_case *tc, apr_pool_t *p, apr_off_t off = 0L; char template[] = "data/testxmldummyXXXXXX"; - rv = apr_file_mktemp(fd, template, APR_CREATE | APR_TRUNCATE | APR_DELONCLOSE | - APR_READ | APR_WRITE | APR_EXCL, p); + rv = apr_file_mktemp(fd, template, APR_FOPEN_CREATE | APR_FOPEN_TRUNCATE | APR_FOPEN_DELONCLOSE | + APR_FOPEN_READ | APR_FOPEN_WRITE | APR_FOPEN_EXCL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); if (rv != APR_SUCCESS) @@ -159,18 +159,47 @@ static void test_billion_laughs(abts_case *tc, void *data) APR_FOPEN_READ, 0, p); apr_assert_success(tc, "open billion-laughs.xml", rv); - rv = apr_xml_parse_file(p, &parser, &doc, fd, 2000); - ABTS_TRUE(tc, rv != APR_SUCCESS); + /* Don't test for return value; if it returns, chances are the bug + * is fixed or the machine has insane amounts of RAM. */ + apr_xml_parse_file(p, &parser, &doc, fd, 2000); apr_file_close(fd); } +static void test_CVE_2009_3720_alpha(abts_case *tc, void *data) +{ + apr_xml_parser *xp; + apr_xml_doc *doc; + apr_status_t rv; + + xp = apr_xml_parser_create(p); + + rv = apr_xml_parser_feed(xp, "\0\r\n", 3); + if (rv == APR_SUCCESS) + apr_xml_parser_done(xp, &doc); +} + +static void test_CVE_2009_3720_beta(abts_case *tc, void *data) +{ + apr_xml_parser *xp; + apr_xml_doc *doc; + apr_status_t rv; + + xp = apr_xml_parser_create(p); + + rv = apr_xml_parser_feed(xp, "<?xml version\xc2\x85='1.0'?>\r\n", 25); + if (rv == APR_SUCCESS) + apr_xml_parser_done(xp, &doc); +} + abts_suite *testxml(abts_suite *suite) { suite = ADD_SUITE(suite); abts_run_test(suite, test_xml_parser, NULL); abts_run_test(suite, test_billion_laughs, NULL); + abts_run_test(suite, test_CVE_2009_3720_alpha, NULL); + abts_run_test(suite, test_CVE_2009_3720_beta, NULL); return suite; } |