diff options
| author | Kenjiro Nakayama <nakayamakenjiro@gmail.com> | 2026-07-19 18:08:07 +0900 |
|---|---|---|
| committer | Kenjiro Nakayama <nakayamakenjiro@gmail.com> | 2026-07-30 07:28:14 +0900 |
| commit | df1ed6bb4ec3e72c20a7082cc168a45ae67704ba (patch) | |
| tree | 85a6a4a9c041c5be5c28172f62e04d2440576e40 | |
| parent | 3d686a7cbd84221fde5d7e03fa47896f6abf1d6c (diff) | |
| download | portable-df1ed6bb4ec3e72c20a7082cc168a45ae67704ba.tar.gz portable-df1ed6bb4ec3e72c20a7082cc168a45ae67704ba.tar.bz2 portable-df1ed6bb4ec3e72c20a7082cc168a45ae67704ba.zip | |
add libssl verify test
Copy regress/lib/libssl/verify/verify.c as ssl_verify.c to avoid
basename collisions when regress tests are flattened into tests.
Copy create-libressl-test-certs.pl and add a wrapper that generates
the test certificates before running ssl_verify. Detect the required
IO::Socket::SSL::Utils Perl module and register the test with both
autotools and CMake when it is available.
Also document x509/bettertls is not included.
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | CMakeLists.txt | 9 | ||||
| -rw-r--r-- | configure.ac | 11 | ||||
| -rw-r--r-- | tests/CMakeLists.txt | 11 | ||||
| -rw-r--r-- | tests/Makefile.am | 10 | ||||
| -rwxr-xr-x | tests/ssl_verify.sh | 60 | ||||
| -rwxr-xr-x | update.sh | 6 |
7 files changed, 109 insertions, 0 deletions
| @@ -141,10 +141,12 @@ tests/*test.c | |||
| 141 | tests/pbkdf2* | 141 | tests/pbkdf2* |
| 142 | tests/*.pem | 142 | tests/*.pem |
| 143 | tests/certs/ | 143 | tests/certs/ |
| 144 | tests/create-libressl-test-certs.pl | ||
| 144 | tests/make-dir-roots.pl | 145 | tests/make-dir-roots.pl |
| 145 | tests/testssl | 146 | tests/testssl |
| 146 | tests/*.txt | 147 | tests/*.txt |
| 147 | tests/compat/*.c | 148 | tests/compat/*.c |
| 149 | tests/ssl_verify.c | ||
| 148 | tests/verify* | 150 | tests/verify* |
| 149 | tests/x509_verify* | 151 | tests/x509_verify* |
| 150 | !tests/x509_verify.sh | 152 | !tests/x509_verify.sh |
diff --git a/CMakeLists.txt b/CMakeLists.txt index 699603b..4ffe67b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt | |||
| @@ -33,6 +33,15 @@ include(GNUInstallDirs) | |||
| 33 | 33 | ||
| 34 | enable_testing() | 34 | enable_testing() |
| 35 | find_program(PERL_EXECUTABLE perl perl5) | 35 | find_program(PERL_EXECUTABLE perl perl5) |
| 36 | set(HAVE_PERL_IO_SOCKET_SSL_UTILS FALSE) | ||
| 37 | if(PERL_EXECUTABLE) | ||
| 38 | execute_process(COMMAND ${PERL_EXECUTABLE} -MIO::Socket::SSL::Utils -e 1 | ||
| 39 | RESULT_VARIABLE PERL_IO_SOCKET_SSL_UTILS_RESULT | ||
| 40 | OUTPUT_QUIET ERROR_QUIET) | ||
| 41 | if(PERL_IO_SOCKET_SSL_UTILS_RESULT EQUAL 0) | ||
| 42 | set(HAVE_PERL_IO_SOCKET_SSL_UTILS TRUE) | ||
| 43 | endif() | ||
| 44 | endif() | ||
| 36 | 45 | ||
| 37 | file(READ ${CMAKE_CURRENT_SOURCE_DIR}/ssl/VERSION SSL_VERSION) | 46 | file(READ ${CMAKE_CURRENT_SOURCE_DIR}/ssl/VERSION SSL_VERSION) |
| 38 | string(STRIP ${SSL_VERSION} SSL_VERSION) | 47 | string(STRIP ${SSL_VERSION} SSL_VERSION) |
diff --git a/configure.ac b/configure.ac index 9012535..23f0c38 100644 --- a/configure.ac +++ b/configure.ac | |||
| @@ -34,6 +34,17 @@ LT_INIT([pic-only]) | |||
| 34 | 34 | ||
| 35 | AC_CHECK_PROGS([PERL], [perl perl5]) | 35 | AC_CHECK_PROGS([PERL], [perl perl5]) |
| 36 | AM_CONDITIONAL([HAVE_PERL], [test "x$PERL" != x]) | 36 | AM_CONDITIONAL([HAVE_PERL], [test "x$PERL" != x]) |
| 37 | AC_CACHE_CHECK([for IO::Socket::SSL::Utils], | ||
| 38 | [ac_cv_perl_io_socket_ssl_utils], | ||
| 39 | [if test "x$PERL" = x; then | ||
| 40 | ac_cv_perl_io_socket_ssl_utils=no | ||
| 41 | elif "$PERL" -MIO::Socket::SSL::Utils -e 1 >/dev/null 2>&1; then | ||
| 42 | ac_cv_perl_io_socket_ssl_utils=yes | ||
| 43 | else | ||
| 44 | ac_cv_perl_io_socket_ssl_utils=no | ||
| 45 | fi]) | ||
| 46 | AM_CONDITIONAL([HAVE_PERL_IO_SOCKET_SSL_UTILS], | ||
| 47 | [test "x$ac_cv_perl_io_socket_ssl_utils" = xyes]) | ||
| 37 | 48 | ||
| 38 | CHECK_OS_OPTIONS | 49 | CHECK_OS_OPTIONS |
| 39 | 50 | ||
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ede7463..45681a1 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt | |||
| @@ -844,6 +844,17 @@ add_executable(ssl_verify_param ssl_verify_param.c) | |||
| 844 | target_link_libraries(ssl_verify_param ${OPENSSL_TEST_LIBS}) | 844 | target_link_libraries(ssl_verify_param ${OPENSSL_TEST_LIBS}) |
| 845 | add_platform_test(ssl_verify_param ssl_verify_param) | 845 | add_platform_test(ssl_verify_param ssl_verify_param) |
| 846 | 846 | ||
| 847 | # ssl_verify | ||
| 848 | add_executable(ssl_verify ssl_verify.c) | ||
| 849 | target_link_libraries(ssl_verify ${OPENSSL_TEST_LIBS}) | ||
| 850 | if(NOT WIN32 AND NOT EMSCRIPTEN AND HAVE_PERL_IO_SOCKET_SSL_UTILS) | ||
| 851 | add_test(NAME ssl_verify COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/ssl_verify.sh | ||
| 852 | $<TARGET_FILE:ssl_verify>) | ||
| 853 | set_tests_properties(ssl_verify PROPERTIES | ||
| 854 | ENVIRONMENT "srcdir=${TEST_SOURCE_DIR};PERL=${PERL_EXECUTABLE}" | ||
| 855 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
| 856 | endif() | ||
| 857 | |||
| 847 | # ssl_versions | 858 | # ssl_versions |
| 848 | add_executable(ssl_versions ssl_versions.c) | 859 | add_executable(ssl_versions ssl_versions.c) |
| 849 | target_link_libraries(ssl_versions ${OPENSSL_TEST_LIBS}) | 860 | target_link_libraries(ssl_versions ${OPENSSL_TEST_LIBS}) |
diff --git a/tests/Makefile.am b/tests/Makefile.am index 9b58724..7d581c8 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am | |||
| @@ -104,6 +104,7 @@ EXTRA_DIST = CMakeLists.txt | |||
| 104 | DISTCLEANFILES = pidwraptest.txt | 104 | DISTCLEANFILES = pidwraptest.txt |
| 105 | 105 | ||
| 106 | distclean-local: | 106 | distclean-local: |
| 107 | rm -rf ssl_verify-certs | ||
| 107 | rm -rf x509_verify-certs | 108 | rm -rf x509_verify-certs |
| 108 | 109 | ||
| 109 | # XXX - should probably be in their own static lib | 110 | # XXX - should probably be in their own static lib |
| @@ -855,6 +856,15 @@ TESTS += ssl_verify_param | |||
| 855 | check_PROGRAMS += ssl_verify_param | 856 | check_PROGRAMS += ssl_verify_param |
| 856 | ssl_verify_param_SOURCES = ssl_verify_param.c | 857 | ssl_verify_param_SOURCES = ssl_verify_param.c |
| 857 | 858 | ||
| 859 | # ssl_verify | ||
| 860 | if HAVE_PERL_IO_SOCKET_SSL_UTILS | ||
| 861 | TESTS += ssl_verify.sh | ||
| 862 | check_PROGRAMS += ssl_verify | ||
| 863 | endif | ||
| 864 | ssl_verify_SOURCES = ssl_verify.c | ||
| 865 | EXTRA_DIST += ssl_verify.sh | ||
| 866 | EXTRA_DIST += create-libressl-test-certs.pl | ||
| 867 | |||
| 858 | # ssl_versions | 868 | # ssl_versions |
| 859 | TESTS += ssl_versions | 869 | TESTS += ssl_versions |
| 860 | check_PROGRAMS += ssl_versions | 870 | check_PROGRAMS += ssl_versions |
diff --git a/tests/ssl_verify.sh b/tests/ssl_verify.sh new file mode 100755 index 0000000..ed32911 --- /dev/null +++ b/tests/ssl_verify.sh | |||
| @@ -0,0 +1,60 @@ | |||
| 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 | "$verify_bin" | ||
| 60 | ) | ||
| @@ -336,6 +336,8 @@ for i in `find $libcrypto_regress -name '*.[ch]'`; do | |||
| 336 | done | 336 | done |
| 337 | # x509/verify.c collides with x509/bettertls/verify.c when flattened. | 337 | # x509/verify.c collides with x509/bettertls/verify.c when flattened. |
| 338 | $CP $libcrypto_regress/x509/verify.c tests/x509_verify.c | 338 | $CP $libcrypto_regress/x509/verify.c tests/x509_verify.c |
| 339 | # Do not copy x509/bettertls/verify.c: it requires the large bettertls | ||
| 340 | # certificate corpus, which is not worth bundling in release tarballs. | ||
| 339 | $CP $libcrypto_regress/evp/evptests.txt tests | 341 | $CP $libcrypto_regress/evp/evptests.txt tests |
| 340 | $CP $libcrypto_regress/aead/*.txt tests | 342 | $CP $libcrypto_regress/aead/*.txt tests |
| 341 | $CP $libcrypto_regress/ct/ctlog.conf tests | 343 | $CP $libcrypto_regress/ct/ctlog.conf tests |
| @@ -371,6 +373,10 @@ for i in `find $libssl_regress -name '*.c'`; do | |||
| 371 | done | 373 | done |
| 372 | # tls/tlstest.c collides with libtls/tls/tlstest.c when flattened. | 374 | # tls/tlstest.c collides with libtls/tls/tlstest.c when flattened. |
| 373 | $CP $libssl_regress/tls/tlstest.c tests/ssl_tlstest.c | 375 | $CP $libssl_regress/tls/tlstest.c tests/ssl_tlstest.c |
| 376 | # verify/verify.c collides with other verify tests when flattened. | ||
| 377 | rm -f tests/verify.c | ||
| 378 | $CP $libssl_regress/verify/verify.c tests/ssl_verify.c | ||
| 379 | $CP $libssl_regress/verify/create-libressl-test-certs.pl tests | ||
| 374 | $CP $libssl_regress/unit/tests.h tests | 380 | $CP $libssl_regress/unit/tests.h tests |
| 375 | $CP $libssl_regress/certs/*.pem tests | 381 | $CP $libssl_regress/certs/*.pem tests |
| 376 | $CP $libssl_regress/certs/*.crl tests | 382 | $CP $libssl_regress/certs/*.crl tests |
