diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 104 | ||||
| -rw-r--r-- | tests/Makefile.am | 87 | ||||
| -rw-r--r-- | tests/compat/pipe2.c | 46 | ||||
| -rwxr-xr-x | tests/ssl_tlstest.sh | 43 | ||||
| -rw-r--r-- | tests/ssl_verify.bat | 42 | ||||
| -rwxr-xr-x | tests/ssl_verify.sh | 67 | ||||
| -rwxr-xr-x | tests/x509_callbacks.sh | 94 | ||||
| -rwxr-xr-x | tests/x509_verify.sh | 81 |
8 files changed, 549 insertions, 15 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index eaf4ed1..e155ab7 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt | |||
| @@ -68,7 +68,7 @@ file(TO_NATIVE_PATH ${CMAKE_CURRENT_SOURCE_DIR} TEST_SOURCE_DIR) | |||
| 68 | function(prepare_emscripten_test_target TARGET_NAME) | 68 | function(prepare_emscripten_test_target TARGET_NAME) |
| 69 | if(EMSCRIPTEN) | 69 | if(EMSCRIPTEN) |
| 70 | set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS | 70 | set_target_properties(${TARGET_NAME} PROPERTIES LINK_FLAGS |
| 71 | "-sALLOW_MEMORY_GROWTH --preload-file ${TEST_SOURCE_DIR} ") | 71 | "-sALLOW_MEMORY_GROWTH -sNODERAWFS=1") |
| 72 | endif() | 72 | endif() |
| 73 | endfunction() | 73 | endfunction() |
| 74 | 74 | ||
| @@ -283,6 +283,15 @@ add_executable(bn_mont bn_mont.c) | |||
| 283 | target_link_libraries(bn_mont ${OPENSSL_TEST_LIBS}) | 283 | target_link_libraries(bn_mont ${OPENSSL_TEST_LIBS}) |
| 284 | add_platform_test(bn_mont bn_mont) | 284 | add_platform_test(bn_mont bn_mont) |
| 285 | 285 | ||
| 286 | # bn_mul_div is mostly benchmark code with non-standard timing dependencies, | ||
| 287 | # while the non-benchmark test coverage is not worth the cross-platform fallout. | ||
| 288 | # # bn_mul_div | ||
| 289 | # if(NOT (WIN32 OR EMSCRIPTEN OR SOLARIS)) | ||
| 290 | # add_executable(bn_mul_div bn_mul_div.c) | ||
| 291 | # target_link_libraries(bn_mul_div ${OPENSSL_TEST_LIBS}) | ||
| 292 | # add_platform_test(bn_mul_div bn_mul_div) | ||
| 293 | # endif() | ||
| 294 | |||
| 286 | # bn_primes | 295 | # bn_primes |
| 287 | add_executable(bn_primes bn_primes.c) | 296 | add_executable(bn_primes bn_primes.c) |
| 288 | target_link_libraries(bn_primes ${OPENSSL_TEST_LIBS}) | 297 | target_link_libraries(bn_primes ${OPENSSL_TEST_LIBS}) |
| @@ -333,8 +342,30 @@ add_executable(bytestringtest bytestringtest.c) | |||
| 333 | target_link_libraries(bytestringtest ${OPENSSL_TEST_LIBS}) | 342 | target_link_libraries(bytestringtest ${OPENSSL_TEST_LIBS}) |
| 334 | add_platform_test(bytestringtest bytestringtest) | 343 | add_platform_test(bytestringtest bytestringtest) |
| 335 | 344 | ||
| 336 | # callback | 345 | # x509_callbacks |
| 337 | # callbackfailures | 346 | add_executable(callback callback.c) |
| 347 | target_link_libraries(callback ${OPENSSL_TEST_LIBS}) | ||
| 348 | add_executable(callbackfailures callbackfailures.c) | ||
| 349 | target_link_libraries(callbackfailures ${OPENSSL_TEST_LIBS}) | ||
| 350 | add_executable(expirecallback expirecallback.c) | ||
| 351 | target_link_libraries(expirecallback ${OPENSSL_TEST_LIBS}) | ||
| 352 | add_dependencies(callback openssl) | ||
| 353 | if(NOT WIN32 AND NOT EMSCRIPTEN AND PERL_EXECUTABLE) | ||
| 354 | add_test(NAME x509_callbacks COMMAND | ||
| 355 | ${CMAKE_CURRENT_SOURCE_DIR}/x509_callbacks.sh | ||
| 356 | $<TARGET_FILE:callback> | ||
| 357 | $<TARGET_FILE:callbackfailures> | ||
| 358 | $<TARGET_FILE:expirecallback> | ||
| 359 | $<TARGET_FILE:openssl>) | ||
| 360 | set_tests_properties(x509_callbacks PROPERTIES | ||
| 361 | ENVIRONMENT "srcdir=${TEST_SOURCE_DIR};PERL=${PERL_EXECUTABLE}" | ||
| 362 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
| 363 | # These tests use the same certificate corpus as x509_verify and can | ||
| 364 | # exceed the range of a 32-bit time_t. | ||
| 365 | if(SMALL_TIME_T) | ||
| 366 | set_property(TEST x509_callbacks PROPERTY WILL_FAIL TRUE) | ||
| 367 | endif() | ||
| 368 | endif() | ||
| 338 | 369 | ||
| 339 | # casttest | 370 | # casttest |
| 340 | add_executable(casttest casttest.c) | 371 | add_executable(casttest casttest.c) |
| @@ -415,6 +446,16 @@ add_platform_test(dsatest dsatest) | |||
| 415 | # set_tests_properties(dtlstest PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}") | 446 | # set_tests_properties(dtlstest PROPERTIES ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}") |
| 416 | # endif() | 447 | # endif() |
| 417 | 448 | ||
| 449 | # dtls_handshake_msg_test | ||
| 450 | add_executable(dtls_handshake_msg_test dtls_handshake_msg_test.c) | ||
| 451 | target_link_libraries(dtls_handshake_msg_test ${OPENSSL_TEST_LIBS}) | ||
| 452 | add_platform_test(dtls_handshake_msg_test dtls_handshake_msg_test) | ||
| 453 | |||
| 454 | # dtls_wire_test | ||
| 455 | add_executable(dtls_wire_test dtls_wire_test.c) | ||
| 456 | target_link_libraries(dtls_wire_test ${OPENSSL_TEST_LIBS}) | ||
| 457 | add_platform_test(dtls_wire_test dtls_wire_test) | ||
| 458 | |||
| 418 | # ecc_cdh | 459 | # ecc_cdh |
| 419 | add_executable(ecc_cdh ecc_cdh.c) | 460 | add_executable(ecc_cdh ecc_cdh.c) |
| 420 | target_link_libraries(ecc_cdh ${OPENSSL_TEST_LIBS}) | 461 | target_link_libraries(ecc_cdh ${OPENSSL_TEST_LIBS}) |
| @@ -484,8 +525,6 @@ add_executable(exdata_test exdata_test.c) | |||
| 484 | target_link_libraries(exdata_test ${OPENSSL_TEST_LIBS}) | 525 | target_link_libraries(exdata_test ${OPENSSL_TEST_LIBS}) |
| 485 | add_platform_test(exdata_test exdata_test) | 526 | add_platform_test(exdata_test exdata_test) |
| 486 | 527 | ||
| 487 | # expirecallback.c | ||
| 488 | |||
| 489 | # explicit_bzero | 528 | # explicit_bzero |
| 490 | # SA_ONSTACK is unavailable on Windows, sigsuspend is unavailable on Emscripten | 529 | # SA_ONSTACK is unavailable on Windows, sigsuspend is unavailable on Emscripten |
| 491 | if(NOT (WIN32 OR EMSCRIPTEN)) | 530 | if(NOT (WIN32 OR EMSCRIPTEN)) |
| @@ -805,6 +844,11 @@ target_link_libraries(ssl_get_shared_ciphers ${OPENSSL_TEST_LIBS}) | |||
| 805 | prepare_emscripten_test_target(ssl_get_shared_ciphers) | 844 | prepare_emscripten_test_target(ssl_get_shared_ciphers) |
| 806 | add_platform_test(ssl_get_shared_ciphers ssl_get_shared_ciphers) | 845 | add_platform_test(ssl_get_shared_ciphers ssl_get_shared_ciphers) |
| 807 | 846 | ||
| 847 | # ssl_kex | ||
| 848 | add_executable(ssl_kex ssl_kex.c) | ||
| 849 | target_link_libraries(ssl_kex ${OPENSSL_TEST_LIBS}) | ||
| 850 | add_platform_test(ssl_kex ssl_kex) | ||
| 851 | |||
| 808 | # ssl_methods | 852 | # ssl_methods |
| 809 | add_executable(ssl_methods ssl_methods.c) | 853 | add_executable(ssl_methods ssl_methods.c) |
| 810 | target_link_libraries(ssl_methods ${OPENSSL_TEST_LIBS}) | 854 | target_link_libraries(ssl_methods ${OPENSSL_TEST_LIBS}) |
| @@ -820,11 +864,39 @@ add_executable(ssl_verify_param ssl_verify_param.c) | |||
| 820 | target_link_libraries(ssl_verify_param ${OPENSSL_TEST_LIBS}) | 864 | target_link_libraries(ssl_verify_param ${OPENSSL_TEST_LIBS}) |
| 821 | add_platform_test(ssl_verify_param ssl_verify_param) | 865 | add_platform_test(ssl_verify_param ssl_verify_param) |
| 822 | 866 | ||
| 867 | # ssl_verify | ||
| 868 | add_executable(ssl_verify ssl_verify.c) | ||
| 869 | target_link_libraries(ssl_verify ${OPENSSL_TEST_LIBS}) | ||
| 870 | prepare_emscripten_test_target(ssl_verify) | ||
| 871 | if(HAVE_PERL_IO_SOCKET_SSL_UTILS) | ||
| 872 | if(WIN32) | ||
| 873 | add_test(NAME ssl_verify COMMAND | ||
| 874 | ${CMAKE_CURRENT_SOURCE_DIR}/ssl_verify.bat | ||
| 875 | $<TARGET_FILE:ssl_verify>) | ||
| 876 | else() | ||
| 877 | add_test(NAME ssl_verify COMMAND | ||
| 878 | ${CMAKE_CURRENT_SOURCE_DIR}/ssl_verify.sh | ||
| 879 | $<TARGET_FILE:ssl_verify>) | ||
| 880 | endif() | ||
| 881 | set_tests_properties(ssl_verify PROPERTIES | ||
| 882 | ENVIRONMENT "srcdir=${TEST_SOURCE_DIR};PERL=${PERL_EXECUTABLE}" | ||
| 883 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
| 884 | endif() | ||
| 885 | |||
| 823 | # ssl_versions | 886 | # ssl_versions |
| 824 | add_executable(ssl_versions ssl_versions.c) | 887 | add_executable(ssl_versions ssl_versions.c) |
| 825 | target_link_libraries(ssl_versions ${OPENSSL_TEST_LIBS}) | 888 | target_link_libraries(ssl_versions ${OPENSSL_TEST_LIBS}) |
| 826 | add_platform_test(ssl_versions ssl_versions) | 889 | add_platform_test(ssl_versions ssl_versions) |
| 827 | 890 | ||
| 891 | # ssl_tlstest | ||
| 892 | add_executable(ssl_tlstest ssl_tlstest.c) | ||
| 893 | target_link_libraries(ssl_tlstest ${OPENSSL_TEST_LIBS}) | ||
| 894 | prepare_emscripten_test_target(ssl_tlstest) | ||
| 895 | add_platform_test(ssl_tlstest $<TARGET_FILE:ssl_tlstest> | ||
| 896 | ${CMAKE_CURRENT_SOURCE_DIR}/server1-rsa.pem | ||
| 897 | ${CMAKE_CURRENT_SOURCE_DIR}/server1-rsa-chain.pem | ||
| 898 | ${CMAKE_CURRENT_SOURCE_DIR}/ca-root-rsa.pem) | ||
| 899 | |||
| 828 | # ssltest | 900 | # ssltest |
| 829 | add_executable(ssltest ssltest.c) | 901 | add_executable(ssltest ssltest.c) |
| 830 | target_link_libraries(ssltest ${OPENSSL_TEST_LIBS}) | 902 | target_link_libraries(ssltest ${OPENSSL_TEST_LIBS}) |
| @@ -921,6 +993,23 @@ add_executable(valid_handshakes_terminate valid_handshakes_terminate.c) | |||
| 921 | target_link_libraries(valid_handshakes_terminate ${OPENSSL_TEST_LIBS}) | 993 | target_link_libraries(valid_handshakes_terminate ${OPENSSL_TEST_LIBS}) |
| 922 | add_platform_test(valid_handshakes_terminate valid_handshakes_terminate) | 994 | add_platform_test(valid_handshakes_terminate valid_handshakes_terminate) |
| 923 | 995 | ||
| 996 | # x509_verify | ||
| 997 | add_executable(x509_verify x509_verify.c) | ||
| 998 | target_link_libraries(x509_verify ${OPENSSL_TEST_LIBS}) | ||
| 999 | add_dependencies(x509_verify openssl) | ||
| 1000 | if(NOT WIN32 AND NOT EMSCRIPTEN AND PERL_EXECUTABLE) | ||
| 1001 | add_test(NAME x509_verify COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/x509_verify.sh | ||
| 1002 | $<TARGET_FILE:x509_verify> $<TARGET_FILE:openssl>) | ||
| 1003 | set_tests_properties(x509_verify PROPERTIES | ||
| 1004 | ENVIRONMENT "srcdir=${TEST_SOURCE_DIR};PERL=${PERL_EXECUTABLE}" | ||
| 1005 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
| 1006 | # This test depends on certificate times that can exceed 32-bit time_t | ||
| 1007 | # range, so match the existing time tests and expect failure there. | ||
| 1008 | if(SMALL_TIME_T) | ||
| 1009 | set_property(TEST x509_verify PROPERTY WILL_FAIL TRUE) | ||
| 1010 | endif() | ||
| 1011 | endif() | ||
| 1012 | |||
| 924 | # verifytest | 1013 | # verifytest |
| 925 | add_executable(verifytest verifytest.c) | 1014 | add_executable(verifytest verifytest.c) |
| 926 | target_link_libraries(verifytest ${LIBTLS_TEST_LIBS}) | 1015 | target_link_libraries(verifytest ${LIBTLS_TEST_LIBS}) |
| @@ -947,6 +1036,11 @@ target_link_libraries(x509_asn1 ${OPENSSL_TEST_LIBS}) | |||
| 947 | prepare_emscripten_test_target(x509_asn1) | 1036 | prepare_emscripten_test_target(x509_asn1) |
| 948 | add_platform_test(x509_asn1 x509_asn1) | 1037 | add_platform_test(x509_asn1 x509_asn1) |
| 949 | 1038 | ||
| 1039 | # x509_crl | ||
| 1040 | add_executable(x509_crl x509_crl.c) | ||
| 1041 | target_link_libraries(x509_crl ${OPENSSL_TEST_LIBS}) | ||
| 1042 | add_platform_test(x509_crl x509_crl) | ||
| 1043 | |||
| 950 | # x509_extensions_test | 1044 | # x509_extensions_test |
| 951 | add_executable(x509_extensions_test x509_extensions_test.c) | 1045 | add_executable(x509_extensions_test x509_extensions_test.c) |
| 952 | target_link_libraries(x509_extensions_test ${OPENSSL_TEST_LIBS}) | 1046 | target_link_libraries(x509_extensions_test ${OPENSSL_TEST_LIBS}) |
diff --git a/tests/Makefile.am b/tests/Makefile.am index 22e3dee..aec438b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am | |||
| @@ -94,6 +94,7 @@ libtest_la_SOURCES = empty.c | |||
| 94 | 94 | ||
| 95 | LDADD = libtest.la $(PLATFORM_LDADD) $(PROG_LDADD) | 95 | LDADD = libtest.la $(PLATFORM_LDADD) $(PROG_LDADD) |
| 96 | 96 | ||
| 97 | TESTS_ENVIRONMENT = PERL='$(PERL)' | ||
| 97 | TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh | 98 | TEST_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh |
| 98 | 99 | ||
| 99 | TESTS = | 100 | TESTS = |
| @@ -102,6 +103,11 @@ check_PROGRAMS = | |||
| 102 | EXTRA_DIST = CMakeLists.txt | 103 | EXTRA_DIST = CMakeLists.txt |
| 103 | DISTCLEANFILES = pidwraptest.txt | 104 | DISTCLEANFILES = pidwraptest.txt |
| 104 | 105 | ||
| 106 | distclean-local: | ||
| 107 | rm -rf ssl_verify-certs | ||
| 108 | rm -rf x509_callback-certs | ||
| 109 | rm -rf x509_verify-certs | ||
| 110 | |||
| 105 | # XXX - should probably be in their own static lib | 111 | # XXX - should probably be in their own static lib |
| 106 | TEST_HELPER_SRC = test.c test_util.c | 112 | TEST_HELPER_SRC = test.c test_util.c |
| 107 | noinst_HEADERS = test.h | 113 | noinst_HEADERS = test.h |
| @@ -303,6 +309,17 @@ TESTS += bn_mont | |||
| 303 | check_PROGRAMS += bn_mont | 309 | check_PROGRAMS += bn_mont |
| 304 | bn_mont_SOURCES = bn_mont.c | 310 | bn_mont_SOURCES = bn_mont.c |
| 305 | 311 | ||
| 312 | # bn_mul_div is mostly benchmark code with non-standard timing dependencies, | ||
| 313 | # while the non-benchmark test coverage is not worth the cross-platform fallout. | ||
| 314 | ## bn_mul_div | ||
| 315 | #if !HOST_WIN | ||
| 316 | #if !HOST_SOLARIS | ||
| 317 | #TESTS += bn_mul_div | ||
| 318 | #check_PROGRAMS += bn_mul_div | ||
| 319 | #bn_mul_div_SOURCES = bn_mul_div.c | ||
| 320 | #endif | ||
| 321 | #endif | ||
| 322 | |||
| 306 | # bn_primes | 323 | # bn_primes |
| 307 | TESTS += bn_primes | 324 | TESTS += bn_primes |
| 308 | check_PROGRAMS += bn_primes | 325 | check_PROGRAMS += bn_primes |
| @@ -349,8 +366,21 @@ TESTS += bytestringtest | |||
| 349 | check_PROGRAMS += bytestringtest | 366 | check_PROGRAMS += bytestringtest |
| 350 | bytestringtest_SOURCES = bytestringtest.c | 367 | bytestringtest_SOURCES = bytestringtest.c |
| 351 | 368 | ||
| 352 | # callback | 369 | # x509_callbacks |
| 353 | # callbackfailures | 370 | if HAVE_PERL |
| 371 | # These tests use the same certificate corpus as x509_verify and can exceed | ||
| 372 | # the range of a 32-bit time_t. | ||
| 373 | if SMALL_TIME_T | ||
| 374 | XFAIL_TESTS += x509_callbacks.sh | ||
| 375 | endif | ||
| 376 | TESTS += x509_callbacks.sh | ||
| 377 | check_PROGRAMS += callback callbackfailures expirecallback | ||
| 378 | endif | ||
| 379 | callback_SOURCES = callback.c | ||
| 380 | callbackfailures_SOURCES = callbackfailures.c | ||
| 381 | expirecallback_SOURCES = expirecallback.c | ||
| 382 | EXTRA_DIST += x509_callbacks.sh | ||
| 383 | EXTRA_DIST += callback.pl | ||
| 354 | 384 | ||
| 355 | # casttest | 385 | # casttest |
| 356 | TESTS += casttest | 386 | TESTS += casttest |
| @@ -431,6 +461,16 @@ dsatest_SOURCES = dsatest.c | |||
| 431 | #endif | 461 | #endif |
| 432 | #EXTRA_DIST += dtlstest.sh | 462 | #EXTRA_DIST += dtlstest.sh |
| 433 | 463 | ||
| 464 | # dtls_handshake_msg_test | ||
| 465 | TESTS += dtls_handshake_msg_test | ||
| 466 | check_PROGRAMS += dtls_handshake_msg_test | ||
| 467 | dtls_handshake_msg_test_SOURCES = dtls_handshake_msg_test.c | ||
| 468 | |||
| 469 | # dtls_wire_test | ||
| 470 | TESTS += dtls_wire_test | ||
| 471 | check_PROGRAMS += dtls_wire_test | ||
| 472 | dtls_wire_test_SOURCES = dtls_wire_test.c | ||
| 473 | |||
| 434 | # ecc_cdh | 474 | # ecc_cdh |
| 435 | TESTS += ecc_cdh | 475 | TESTS += ecc_cdh |
| 436 | check_PROGRAMS += ecc_cdh | 476 | check_PROGRAMS += ecc_cdh |
| @@ -498,8 +538,6 @@ TESTS += exdata_test | |||
| 498 | check_PROGRAMS += exdata_test | 538 | check_PROGRAMS += exdata_test |
| 499 | exdata_test_SOURCES = exdata_test.c | 539 | exdata_test_SOURCES = exdata_test.c |
| 500 | 540 | ||
| 501 | # expirecallback.c | ||
| 502 | |||
| 503 | # explicit_bzero | 541 | # explicit_bzero |
| 504 | # explicit_bzero relies on SA_ONSTACK, which is unavailable on Windows | 542 | # explicit_bzero relies on SA_ONSTACK, which is unavailable on Windows |
| 505 | if !HOST_WIN | 543 | if !HOST_WIN |
| @@ -810,6 +848,11 @@ ssl_get_shared_ciphers_CPPFLAGS = $(AM_CPPFLAGS) -DCERTSDIR=\"$(srcdir)\" | |||
| 810 | check_PROGRAMS += ssl_get_shared_ciphers | 848 | check_PROGRAMS += ssl_get_shared_ciphers |
| 811 | ssl_get_shared_ciphers_SOURCES = ssl_get_shared_ciphers.c | 849 | ssl_get_shared_ciphers_SOURCES = ssl_get_shared_ciphers.c |
| 812 | 850 | ||
| 851 | # ssl_kex | ||
| 852 | TESTS += ssl_kex | ||
| 853 | check_PROGRAMS += ssl_kex | ||
| 854 | ssl_kex_SOURCES = ssl_kex.c | ||
| 855 | |||
| 813 | # ssl_methods | 856 | # ssl_methods |
| 814 | TESTS += ssl_methods | 857 | TESTS += ssl_methods |
| 815 | check_PROGRAMS += ssl_methods | 858 | check_PROGRAMS += ssl_methods |
| @@ -825,11 +868,27 @@ TESTS += ssl_verify_param | |||
| 825 | check_PROGRAMS += ssl_verify_param | 868 | check_PROGRAMS += ssl_verify_param |
| 826 | ssl_verify_param_SOURCES = ssl_verify_param.c | 869 | ssl_verify_param_SOURCES = ssl_verify_param.c |
| 827 | 870 | ||
| 871 | # ssl_verify | ||
| 872 | if HAVE_PERL_IO_SOCKET_SSL_UTILS | ||
| 873 | TESTS += ssl_verify.sh | ||
| 874 | check_PROGRAMS += ssl_verify | ||
| 875 | endif | ||
| 876 | ssl_verify_SOURCES = ssl_verify.c | ||
| 877 | EXTRA_DIST += ssl_verify.sh | ||
| 878 | EXTRA_DIST += ssl_verify.bat | ||
| 879 | EXTRA_DIST += create-libressl-test-certs.pl | ||
| 880 | |||
| 828 | # ssl_versions | 881 | # ssl_versions |
| 829 | TESTS += ssl_versions | 882 | TESTS += ssl_versions |
| 830 | check_PROGRAMS += ssl_versions | 883 | check_PROGRAMS += ssl_versions |
| 831 | ssl_versions_SOURCES = ssl_versions.c | 884 | ssl_versions_SOURCES = ssl_versions.c |
| 832 | 885 | ||
| 886 | # ssl_tlstest | ||
| 887 | TESTS += ssl_tlstest.sh | ||
| 888 | check_PROGRAMS += ssl_tlstest | ||
| 889 | ssl_tlstest_SOURCES = ssl_tlstest.c | ||
| 890 | EXTRA_DIST += ssl_tlstest.sh | ||
| 891 | |||
| 833 | # ssltest | 892 | # ssltest |
| 834 | TESTS += ssltest.sh | 893 | TESTS += ssltest.sh |
| 835 | check_PROGRAMS += ssltest | 894 | check_PROGRAMS += ssltest |
| @@ -905,6 +964,21 @@ TESTS += valid_handshakes_terminate | |||
| 905 | check_PROGRAMS += valid_handshakes_terminate | 964 | check_PROGRAMS += valid_handshakes_terminate |
| 906 | valid_handshakes_terminate_SOURCES = valid_handshakes_terminate.c | 965 | valid_handshakes_terminate_SOURCES = valid_handshakes_terminate.c |
| 907 | 966 | ||
| 967 | # x509_verify | ||
| 968 | if HAVE_PERL | ||
| 969 | # This test depends on certificate times that can exceed 32-bit time_t | ||
| 970 | # range, so match the existing time tests and expect failure there. | ||
| 971 | if SMALL_TIME_T | ||
| 972 | XFAIL_TESTS += x509_verify.sh | ||
| 973 | endif | ||
| 974 | TESTS += x509_verify.sh | ||
| 975 | check_PROGRAMS += x509_verify | ||
| 976 | endif | ||
| 977 | x509_verify_SOURCES = x509_verify.c | ||
| 978 | EXTRA_DIST += x509_verify.sh | ||
| 979 | EXTRA_DIST += make-dir-roots.pl | ||
| 980 | EXTRA_DIST += certs | ||
| 981 | |||
| 908 | # verifytest | 982 | # verifytest |
| 909 | TESTS += verifytest | 983 | TESTS += verifytest |
| 910 | check_PROGRAMS += verifytest | 984 | check_PROGRAMS += verifytest |
| @@ -930,6 +1004,11 @@ TESTS += x509_asn1 | |||
| 930 | check_PROGRAMS += x509_asn1 | 1004 | check_PROGRAMS += x509_asn1 |
| 931 | x509_asn1_SOURCES = x509_asn1.c | 1005 | x509_asn1_SOURCES = x509_asn1.c |
| 932 | 1006 | ||
| 1007 | # x509_crl | ||
| 1008 | TESTS += x509_crl | ||
| 1009 | check_PROGRAMS += x509_crl | ||
| 1010 | x509_crl_SOURCES = x509_crl.c | ||
| 1011 | |||
| 933 | # x509_extensions_test | 1012 | # x509_extensions_test |
| 934 | TESTS += x509_extensions_test | 1013 | TESTS += x509_extensions_test |
| 935 | check_PROGRAMS += x509_extensions_test | 1014 | check_PROGRAMS += x509_extensions_test |
diff --git a/tests/compat/pipe2.c b/tests/compat/pipe2.c index d7b4062..3e79575 100644 --- a/tests/compat/pipe2.c +++ b/tests/compat/pipe2.c | |||
| @@ -18,9 +18,10 @@ static int setfd(int fd, int flag) | |||
| 18 | { | 18 | { |
| 19 | int rc = -1; | 19 | int rc = -1; |
| 20 | if (flag & FD_CLOEXEC) { | 20 | if (flag & FD_CLOEXEC) { |
| 21 | HANDLE h = (HANDLE)_get_osfhandle(fd); | 21 | /* fd is a Winsock SOCKET, not a CRT descriptor: use it as a |
| 22 | if (h != NULL) | 22 | * handle directly rather than translating with _get_osfhandle. */ |
| 23 | rc = SetHandleInformation(h, HANDLE_FLAG_INHERIT, 0) == 0 ? -1 : 0; | 23 | HANDLE h = (HANDLE)(LONG_PTR)fd; |
| 24 | rc = SetHandleInformation(h, HANDLE_FLAG_INHERIT, 0) == 0 ? -1 : 0; | ||
| 24 | } | 25 | } |
| 25 | return rc; | 26 | return rc; |
| 26 | } | 27 | } |
| @@ -38,16 +39,20 @@ static int setfl(int fd, int flag) | |||
| 38 | /* | 39 | /* |
| 39 | * Have open() temporarily use up file descriptors until reaching beyond the | 40 | * Have open() temporarily use up file descriptors until reaching beyond the |
| 40 | * allocated sockets, then leak the ones conflicting with any of the latter. | 41 | * allocated sockets, then leak the ones conflicting with any of the latter. |
| 42 | * | ||
| 43 | * open()/close() are redefined to posix_open()/posix_close() in this file, | ||
| 44 | * which tag descriptors with the 0x80000000 bit. Use the raw CRT _open/_close | ||
| 45 | * so the values compare against the socket handles in the same namespace. | ||
| 41 | */ | 46 | */ |
| 42 | static void create_issue_1069_sentinels(int socket_vector[2]) | 47 | static void create_issue_1069_sentinels(int socket_vector[2]) |
| 43 | { | 48 | { |
| 44 | int fd = open("CONIN$", O_RDONLY); | 49 | int fd = _open("CONIN$", O_RDONLY); |
| 45 | if (fd == -1 || (fd > socket_vector[0] && fd > socket_vector[1])) { | 50 | if (fd == -1 || (fd > socket_vector[0] && fd > socket_vector[1])) { |
| 46 | return; | 51 | return; |
| 47 | } | 52 | } |
| 48 | create_issue_1069_sentinels(socket_vector); | 53 | create_issue_1069_sentinels(socket_vector); |
| 49 | if (fd != socket_vector[0] && fd != socket_vector[1]) { | 54 | if (fd != socket_vector[0] && fd != socket_vector[1]) { |
| 50 | close(fd); | 55 | _close(fd); |
| 51 | } | 56 | } |
| 52 | } | 57 | } |
| 53 | 58 | ||
| @@ -70,8 +75,15 @@ int socketpair(int domain, int type, int protocol, int socket_vector[2]) | |||
| 70 | .sin_port = 0, | 75 | .sin_port = 0, |
| 71 | }; | 76 | }; |
| 72 | 77 | ||
| 78 | struct sockaddr_in self, peer; | ||
| 73 | int yes = 1, e; | 79 | int yes = 1, e; |
| 74 | if (setsockopt(listener, SOL_SOCKET, SO_REUSEADDR, | 80 | |
| 81 | /* | ||
| 82 | * SO_REUSEADDR does not mean here what it means on unix: it lets any | ||
| 83 | * other process bind the same address and port and take over the | ||
| 84 | * rendezvous. SO_EXCLUSIVEADDRUSE is the flag that keeps the port ours. | ||
| 85 | */ | ||
| 86 | if (setsockopt(listener, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, | ||
| 75 | (void *)&yes, sizeof yes) == -1) | 87 | (void *)&yes, sizeof yes) == -1) |
| 76 | goto err; | 88 | goto err; |
| 77 | 89 | ||
| @@ -100,6 +112,28 @@ int socketpair(int domain, int type, int protocol, int socket_vector[2]) | |||
| 100 | if (socket_vector[1] == -1) | 112 | if (socket_vector[1] == -1) |
| 101 | goto err; | 113 | goto err; |
| 102 | 114 | ||
| 115 | /* | ||
| 116 | * The listening port is enumerable by anything running as the user, so | ||
| 117 | * the connection we just accepted is not necessarily the one we made. | ||
| 118 | * Pair the two halves only if they are each other's peer. | ||
| 119 | */ | ||
| 120 | memset(&self, 0, sizeof self); | ||
| 121 | addrlen = sizeof self; | ||
| 122 | if (getsockname(socket_vector[0], (struct sockaddr *)&self, &addrlen) != 0) | ||
| 123 | goto err; | ||
| 124 | |||
| 125 | memset(&peer, 0, sizeof peer); | ||
| 126 | addrlen = sizeof peer; | ||
| 127 | if (getpeername(socket_vector[1], (struct sockaddr *)&peer, &addrlen) != 0) | ||
| 128 | goto err; | ||
| 129 | |||
| 130 | if (self.sin_family != peer.sin_family || | ||
| 131 | self.sin_addr.s_addr != peer.sin_addr.s_addr || | ||
| 132 | self.sin_port != peer.sin_port) { | ||
| 133 | WSASetLastError(WSAECONNREFUSED); | ||
| 134 | goto err; | ||
| 135 | } | ||
| 136 | |||
| 103 | closesocket(listener); | 137 | closesocket(listener); |
| 104 | 138 | ||
| 105 | create_issue_1069_sentinels(socket_vector); | 139 | create_issue_1069_sentinels(socket_vector); |
diff --git a/tests/ssl_tlstest.sh b/tests/ssl_tlstest.sh new file mode 100755 index 0000000..cde8a4f --- /dev/null +++ b/tests/ssl_tlstest.sh | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # Copyright (c) 2026 Kenjiro Nakayama | ||
| 4 | # | ||
| 5 | # Permission to use, copy, modify, and distribute this software for any | ||
| 6 | # purpose with or without fee is hereby granted, provided that the above | ||
| 7 | # copyright notice and this permission notice appear in all copies. | ||
| 8 | # | ||
| 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 16 | |||
| 17 | set -e | ||
| 18 | |||
| 19 | if [ $# -ge 1 ]; then | ||
| 20 | ssl_tlstest_bin=$1 | ||
| 21 | else | ||
| 22 | ssl_tlstest_bin=./ssl_tlstest | ||
| 23 | if [ -e ./ssl_tlstest.exe ]; then | ||
| 24 | ssl_tlstest_bin=./ssl_tlstest.exe | ||
| 25 | elif [ -e ./ssl_tlstest.js ]; then | ||
| 26 | ssl_tlstest_bin=./ssl_tlstest.js | ||
| 27 | fi | ||
| 28 | fi | ||
| 29 | |||
| 30 | if [ -z "$srcdir" ]; then | ||
| 31 | srcdir=. | ||
| 32 | fi | ||
| 33 | |||
| 34 | case "$ssl_tlstest_bin" in | ||
| 35 | *.js) | ||
| 36 | node "$ssl_tlstest_bin" "$srcdir/server1-rsa.pem" \ | ||
| 37 | "$srcdir/server1-rsa-chain.pem" "$srcdir/ca-root-rsa.pem" | ||
| 38 | ;; | ||
| 39 | *) | ||
| 40 | "$ssl_tlstest_bin" "$srcdir/server1-rsa.pem" \ | ||
| 41 | "$srcdir/server1-rsa-chain.pem" "$srcdir/ca-root-rsa.pem" | ||
| 42 | ;; | ||
| 43 | esac | ||
diff --git a/tests/ssl_verify.bat b/tests/ssl_verify.bat new file mode 100644 index 0000000..1b8c1dc --- /dev/null +++ b/tests/ssl_verify.bat | |||
| @@ -0,0 +1,42 @@ | |||
| 1 | @echo off | ||
| 2 | setlocal | ||
| 3 | |||
| 4 | :: Copyright (c) 2026 Kenjiro Nakayama | ||
| 5 | :: | ||
| 6 | :: Permission to use, copy, modify, and distribute this software for any | ||
| 7 | :: purpose with or without fee is hereby granted, provided that the above | ||
| 8 | :: copyright notice and this permission notice appear in all copies. | ||
| 9 | :: | ||
| 10 | :: THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 11 | :: WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 12 | :: MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 13 | :: ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 14 | :: WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 15 | :: ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 16 | :: OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 17 | |||
| 18 | if "%~1" == "" exit /b 1 | ||
| 19 | |||
| 20 | set "ssl_verify_bin=%~1" | ||
| 21 | set "ssl_verify_bin=%ssl_verify_bin:/=\%" | ||
| 22 | if not exist "%ssl_verify_bin%" exit /b 1 | ||
| 23 | |||
| 24 | if not defined srcdir set "srcdir=." | ||
| 25 | if not defined PERL set "PERL=perl" | ||
| 26 | |||
| 27 | set "workdir=ssl_verify-certs" | ||
| 28 | if exist "%workdir%" rmdir /s /q "%workdir%" | ||
| 29 | mkdir "%workdir%" || exit /b 1 | ||
| 30 | pushd "%workdir%" || exit /b 1 | ||
| 31 | |||
| 32 | set "status=1" | ||
| 33 | "%PERL%" "%srcdir%/create-libressl-test-certs.pl" | ||
| 34 | if errorlevel 1 goto cleanup | ||
| 35 | |||
| 36 | "%ssl_verify_bin%" | ||
| 37 | set "status=%errorlevel%" | ||
| 38 | |||
| 39 | :cleanup | ||
| 40 | popd | ||
| 41 | rmdir /s /q "%workdir%" | ||
| 42 | exit /b %status% | ||
diff --git a/tests/ssl_verify.sh b/tests/ssl_verify.sh new file mode 100755 index 0000000..bb090db --- /dev/null +++ b/tests/ssl_verify.sh | |||
| @@ -0,0 +1,67 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # Copyright (c) 2026 Kenjiro Nakayama | ||
| 4 | # | ||
| 5 | # Permission to use, copy, modify, and distribute this software for any | ||
| 6 | # purpose with or without fee is hereby granted, provided that the above | ||
| 7 | # copyright notice and this permission notice appear in all copies. | ||
| 8 | # | ||
| 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 16 | |||
| 17 | set -e | ||
| 18 | |||
| 19 | if [ -z "$srcdir" ]; then | ||
| 20 | srcdir=. | ||
| 21 | fi | ||
| 22 | |||
| 23 | if [ -z "$PERL" ]; then | ||
| 24 | PERL=perl | ||
| 25 | fi | ||
| 26 | |||
| 27 | case "$srcdir" in | ||
| 28 | /*) | ||
| 29 | create_certs="$srcdir/create-libressl-test-certs.pl" | ||
| 30 | ;; | ||
| 31 | *) | ||
| 32 | create_certs="`pwd`/$srcdir/create-libressl-test-certs.pl" | ||
| 33 | ;; | ||
| 34 | esac | ||
| 35 | |||
| 36 | if [ $# -ge 1 ]; then | ||
| 37 | verify_bin=$1 | ||
| 38 | else | ||
| 39 | verify_bin="`pwd`/ssl_verify" | ||
| 40 | if [ -e ./ssl_verify.exe ]; then | ||
| 41 | verify_bin="`pwd`/ssl_verify.exe" | ||
| 42 | fi | ||
| 43 | fi | ||
| 44 | |||
| 45 | workdir=ssl_verify-certs | ||
| 46 | |||
| 47 | cleanup() | ||
| 48 | { | ||
| 49 | rm -rf "$workdir" | ||
| 50 | } | ||
| 51 | trap cleanup EXIT | ||
| 52 | |||
| 53 | rm -rf "$workdir" | ||
| 54 | mkdir "$workdir" | ||
| 55 | |||
| 56 | ( | ||
| 57 | cd "$workdir" | ||
| 58 | "$PERL" "$create_certs" | ||
| 59 | case "$verify_bin" in | ||
| 60 | *.js) | ||
| 61 | node "$verify_bin" | ||
| 62 | ;; | ||
| 63 | *) | ||
| 64 | "$verify_bin" | ||
| 65 | ;; | ||
| 66 | esac | ||
| 67 | ) | ||
diff --git a/tests/x509_callbacks.sh b/tests/x509_callbacks.sh new file mode 100755 index 0000000..a48e638 --- /dev/null +++ b/tests/x509_callbacks.sh | |||
| @@ -0,0 +1,94 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # Copyright (c) 2026 Kenjiro Nakayama | ||
| 4 | # | ||
| 5 | # Permission to use, copy, modify, and distribute this software for any | ||
| 6 | # purpose with or without fee is hereby granted, provided that the above | ||
| 7 | # copyright notice and this permission notice appear in all copies. | ||
| 8 | # | ||
| 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 16 | |||
| 17 | set -e | ||
| 18 | |||
| 19 | if [ -z "$srcdir" ]; then | ||
| 20 | srcdir=. | ||
| 21 | fi | ||
| 22 | |||
| 23 | if [ -z "$PERL" ]; then | ||
| 24 | PERL=perl | ||
| 25 | fi | ||
| 26 | |||
| 27 | case "$srcdir" in | ||
| 28 | /*) | ||
| 29 | certs_path="$srcdir/certs" | ||
| 30 | ca_file="$srcdir/../cert.pem" | ||
| 31 | callback_check="$srcdir/callback.pl" | ||
| 32 | make_dir_roots="$srcdir/make-dir-roots.pl" | ||
| 33 | openssl_conf="$srcdir/openssl.cnf" | ||
| 34 | ;; | ||
| 35 | *) | ||
| 36 | certs_path="`pwd`/$srcdir/certs" | ||
| 37 | ca_file="`pwd`/$srcdir/../cert.pem" | ||
| 38 | callback_check="`pwd`/$srcdir/callback.pl" | ||
| 39 | make_dir_roots="`pwd`/$srcdir/make-dir-roots.pl" | ||
| 40 | openssl_conf="`pwd`/$srcdir/openssl.cnf" | ||
| 41 | ;; | ||
| 42 | esac | ||
| 43 | |||
| 44 | if [ $# -ge 3 ]; then | ||
| 45 | callback_bin=$1 | ||
| 46 | callbackfailures_bin=$2 | ||
| 47 | expirecallback_bin=$3 | ||
| 48 | else | ||
| 49 | callback_bin="`pwd`/callback" | ||
| 50 | callbackfailures_bin="`pwd`/callbackfailures" | ||
| 51 | expirecallback_bin="`pwd`/expirecallback" | ||
| 52 | if [ -e ./callback.exe ]; then | ||
| 53 | callback_bin="`pwd`/callback.exe" | ||
| 54 | callbackfailures_bin="`pwd`/callbackfailures.exe" | ||
| 55 | expirecallback_bin="`pwd`/expirecallback.exe" | ||
| 56 | fi | ||
| 57 | fi | ||
| 58 | |||
| 59 | if [ $# -ge 4 ]; then | ||
| 60 | openssl_dir=`dirname "$4"` | ||
| 61 | elif [ -d ../apps/openssl ]; then | ||
| 62 | openssl_dir="`pwd`/../apps/openssl" | ||
| 63 | else | ||
| 64 | openssl_dir="`pwd`/../apps" | ||
| 65 | fi | ||
| 66 | |||
| 67 | PATH="$openssl_dir:$PATH" | ||
| 68 | export PATH | ||
| 69 | |||
| 70 | if [ -f "$openssl_conf" ]; then | ||
| 71 | OPENSSL_CONF="$openssl_conf" | ||
| 72 | export OPENSSL_CONF | ||
| 73 | fi | ||
| 74 | |||
| 75 | workdir=x509_callback-certs | ||
| 76 | |||
| 77 | cleanup() | ||
| 78 | { | ||
| 79 | rm -rf "$workdir" | ||
| 80 | } | ||
| 81 | trap cleanup EXIT | ||
| 82 | |||
| 83 | rm -rf "$workdir" | ||
| 84 | mkdir "$workdir" | ||
| 85 | |||
| 86 | "$PERL" "$make_dir_roots" "$certs_path" "$workdir" | ||
| 87 | |||
| 88 | ( | ||
| 89 | cd "$workdir" | ||
| 90 | "$callback_bin" "$certs_path" | ||
| 91 | "$PERL" "$callback_check" callback.out | ||
| 92 | "$callbackfailures_bin" "$certs_path" "$ca_file" | ||
| 93 | "$expirecallback_bin" "$certs_path" | ||
| 94 | ) | ||
diff --git a/tests/x509_verify.sh b/tests/x509_verify.sh new file mode 100755 index 0000000..b43063f --- /dev/null +++ b/tests/x509_verify.sh | |||
| @@ -0,0 +1,81 @@ | |||
| 1 | #!/bin/sh | ||
| 2 | # | ||
| 3 | # Copyright (c) 2026 Kenjiro Nakayama | ||
| 4 | # | ||
| 5 | # Permission to use, copy, modify, and distribute this software for any | ||
| 6 | # purpose with or without fee is hereby granted, provided that the above | ||
| 7 | # copyright notice and this permission notice appear in all copies. | ||
| 8 | # | ||
| 9 | # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||
| 10 | # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||
| 11 | # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||
| 12 | # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||
| 13 | # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
| 14 | # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
| 15 | # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
| 16 | |||
| 17 | set -e | ||
| 18 | |||
| 19 | if [ -z "$srcdir" ]; then | ||
| 20 | srcdir=. | ||
| 21 | fi | ||
| 22 | |||
| 23 | if [ -z "$PERL" ]; then | ||
| 24 | PERL=perl | ||
| 25 | fi | ||
| 26 | |||
| 27 | case "$srcdir" in | ||
| 28 | /*) | ||
| 29 | certs_path="$srcdir/certs" | ||
| 30 | make_dir_roots="$srcdir/make-dir-roots.pl" | ||
| 31 | openssl_conf="$srcdir/openssl.cnf" | ||
| 32 | ;; | ||
| 33 | *) | ||
| 34 | certs_path="`pwd`/$srcdir/certs" | ||
| 35 | make_dir_roots="`pwd`/$srcdir/make-dir-roots.pl" | ||
| 36 | openssl_conf="`pwd`/$srcdir/openssl.cnf" | ||
| 37 | ;; | ||
| 38 | esac | ||
| 39 | |||
| 40 | if [ $# -ge 1 ]; then | ||
| 41 | verify_bin=$1 | ||
| 42 | else | ||
| 43 | verify_bin="`pwd`/x509_verify" | ||
| 44 | if [ -e ./x509_verify.exe ]; then | ||
| 45 | verify_bin="`pwd`/x509_verify.exe" | ||
| 46 | fi | ||
| 47 | fi | ||
| 48 | |||
| 49 | if [ $# -ge 2 ]; then | ||
| 50 | openssl_dir=`dirname "$2"` | ||
| 51 | elif [ -d ../apps/openssl ]; then | ||
| 52 | openssl_dir="`pwd`/../apps/openssl" | ||
| 53 | else | ||
| 54 | openssl_dir="`pwd`/../apps" | ||
| 55 | fi | ||
| 56 | |||
| 57 | PATH="$openssl_dir:$PATH" | ||
| 58 | export PATH | ||
| 59 | |||
| 60 | if [ -f "$openssl_conf" ]; then | ||
| 61 | OPENSSL_CONF="$openssl_conf" | ||
| 62 | export OPENSSL_CONF | ||
| 63 | fi | ||
| 64 | |||
| 65 | workdir=x509_verify-certs | ||
| 66 | |||
| 67 | cleanup() | ||
| 68 | { | ||
| 69 | rm -rf "$workdir" | ||
| 70 | } | ||
| 71 | trap cleanup EXIT | ||
| 72 | |||
| 73 | rm -rf "$workdir" | ||
| 74 | mkdir "$workdir" | ||
| 75 | |||
| 76 | "$PERL" "$make_dir_roots" "$certs_path" "$workdir" | ||
| 77 | |||
| 78 | ( | ||
| 79 | cd "$workdir" | ||
| 80 | "$verify_bin" "$certs_path" | ||
| 81 | ) | ||
