diff options
| author | Kenjiro Nakayama <nakayamakenjiro@gmail.com> | 2026-07-10 22:01:53 +0900 |
|---|---|---|
| committer | Kenjiro Nakayama <nakayamakenjiro@gmail.com> | 2026-07-10 23:22:00 +0900 |
| commit | b46676e30dd135dfa886d4ed8098a939b2e5e1de (patch) | |
| tree | 8cbe125730c103aaabba46c70bb3c0bf07c2a0b1 /tests | |
| parent | 62858a6ba717bcadbcbf9135ba5873f017162c7d (diff) | |
| download | portable-b46676e30dd135dfa886d4ed8098a939b2e5e1de.tar.gz portable-b46676e30dd135dfa886d4ed8098a939b2e5e1de.tar.bz2 portable-b46676e30dd135dfa886d4ed8098a939b2e5e1de.zip | |
hook up x509/verify regress test
Copy regress/lib/libcrypto/x509/verify.c as x509_verify.c
to avoid the basename collision with x509/bettertls/verify.c
when regress tests are flattened into tests.
Also copy the libcrypto cert test data and make-dir-roots.pl,
add a wrapper to prepare the CApath roots directory, and
register the test for both autotools and CMake.
Refs #1273
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/CMakeLists.txt | 17 | ||||
| -rw-r--r-- | tests/Makefile.am | 16 | ||||
| -rwxr-xr-x | tests/x509_verify.sh | 77 |
3 files changed, 110 insertions, 0 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index f125849..c1f32a4 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt | |||
| @@ -931,6 +931,23 @@ add_executable(valid_handshakes_terminate valid_handshakes_terminate.c) | |||
| 931 | target_link_libraries(valid_handshakes_terminate ${OPENSSL_TEST_LIBS}) | 931 | target_link_libraries(valid_handshakes_terminate ${OPENSSL_TEST_LIBS}) |
| 932 | add_platform_test(valid_handshakes_terminate valid_handshakes_terminate) | 932 | add_platform_test(valid_handshakes_terminate valid_handshakes_terminate) |
| 933 | 933 | ||
| 934 | # x509_verify | ||
| 935 | add_executable(x509_verify x509_verify.c) | ||
| 936 | target_link_libraries(x509_verify ${OPENSSL_TEST_LIBS}) | ||
| 937 | add_dependencies(x509_verify openssl) | ||
| 938 | if(NOT WIN32 AND NOT EMSCRIPTEN) | ||
| 939 | add_test(NAME x509_verify COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/x509_verify.sh | ||
| 940 | $<TARGET_FILE:x509_verify> $<TARGET_FILE:openssl>) | ||
| 941 | set_tests_properties(x509_verify PROPERTIES | ||
| 942 | ENVIRONMENT "srcdir=${TEST_SOURCE_DIR}" | ||
| 943 | WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) | ||
| 944 | # This test depends on certificate times that can exceed 32-bit time_t | ||
| 945 | # range, so match the existing time tests and expect failure there. | ||
| 946 | if(SMALL_TIME_T) | ||
| 947 | set_property(TEST x509_verify PROPERTY WILL_FAIL TRUE) | ||
| 948 | endif() | ||
| 949 | endif() | ||
| 950 | |||
| 934 | # verifytest | 951 | # verifytest |
| 935 | add_executable(verifytest verifytest.c) | 952 | add_executable(verifytest verifytest.c) |
| 936 | target_link_libraries(verifytest ${LIBTLS_TEST_LIBS}) | 953 | target_link_libraries(verifytest ${LIBTLS_TEST_LIBS}) |
diff --git a/tests/Makefile.am b/tests/Makefile.am index 5cd41c1..6373934 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am | |||
| @@ -102,6 +102,9 @@ check_PROGRAMS = | |||
| 102 | EXTRA_DIST = CMakeLists.txt | 102 | EXTRA_DIST = CMakeLists.txt |
| 103 | DISTCLEANFILES = pidwraptest.txt | 103 | DISTCLEANFILES = pidwraptest.txt |
| 104 | 104 | ||
| 105 | distclean-local: | ||
| 106 | rm -rf x509_verify-certs | ||
| 107 | |||
| 105 | # XXX - should probably be in their own static lib | 108 | # XXX - should probably be in their own static lib |
| 106 | TEST_HELPER_SRC = test.c test_util.c | 109 | TEST_HELPER_SRC = test.c test_util.c |
| 107 | noinst_HEADERS = test.h | 110 | noinst_HEADERS = test.h |
| @@ -915,6 +918,19 @@ TESTS += valid_handshakes_terminate | |||
| 915 | check_PROGRAMS += valid_handshakes_terminate | 918 | check_PROGRAMS += valid_handshakes_terminate |
| 916 | valid_handshakes_terminate_SOURCES = valid_handshakes_terminate.c | 919 | valid_handshakes_terminate_SOURCES = valid_handshakes_terminate.c |
| 917 | 920 | ||
| 921 | # x509_verify | ||
| 922 | # This test depends on certificate times that can exceed 32-bit time_t | ||
| 923 | # range, so match the existing time tests and expect failure there. | ||
| 924 | if SMALL_TIME_T | ||
| 925 | XFAIL_TESTS += x509_verify.sh | ||
| 926 | endif | ||
| 927 | TESTS += x509_verify.sh | ||
| 928 | check_PROGRAMS += x509_verify | ||
| 929 | x509_verify_SOURCES = x509_verify.c | ||
| 930 | EXTRA_DIST += x509_verify.sh | ||
| 931 | EXTRA_DIST += make-dir-roots.pl | ||
| 932 | EXTRA_DIST += certs | ||
| 933 | |||
| 918 | # verifytest | 934 | # verifytest |
| 919 | TESTS += verifytest | 935 | TESTS += verifytest |
| 920 | check_PROGRAMS += verifytest | 936 | check_PROGRAMS += verifytest |
diff --git a/tests/x509_verify.sh b/tests/x509_verify.sh new file mode 100755 index 0000000..cc5446c --- /dev/null +++ b/tests/x509_verify.sh | |||
| @@ -0,0 +1,77 @@ | |||
| 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 | case "$srcdir" in | ||
| 24 | /*) | ||
| 25 | certs_path="$srcdir/certs" | ||
| 26 | make_dir_roots="$srcdir/make-dir-roots.pl" | ||
| 27 | openssl_conf="$srcdir/openssl.cnf" | ||
| 28 | ;; | ||
| 29 | *) | ||
| 30 | certs_path="`pwd`/$srcdir/certs" | ||
| 31 | make_dir_roots="`pwd`/$srcdir/make-dir-roots.pl" | ||
| 32 | openssl_conf="`pwd`/$srcdir/openssl.cnf" | ||
| 33 | ;; | ||
| 34 | esac | ||
| 35 | |||
| 36 | if [ $# -ge 1 ]; then | ||
| 37 | verify_bin=$1 | ||
| 38 | else | ||
| 39 | verify_bin="`pwd`/x509_verify" | ||
| 40 | if [ -e ./x509_verify.exe ]; then | ||
| 41 | verify_bin="`pwd`/x509_verify.exe" | ||
| 42 | fi | ||
| 43 | fi | ||
| 44 | |||
| 45 | if [ $# -ge 2 ]; then | ||
| 46 | openssl_dir=`dirname "$2"` | ||
| 47 | elif [ -d ../apps/openssl ]; then | ||
| 48 | openssl_dir="`pwd`/../apps/openssl" | ||
| 49 | else | ||
| 50 | openssl_dir="`pwd`/../apps" | ||
| 51 | fi | ||
| 52 | |||
| 53 | PATH="$openssl_dir:$PATH" | ||
| 54 | export PATH | ||
| 55 | |||
| 56 | if [ -f "$openssl_conf" ]; then | ||
| 57 | OPENSSL_CONF="$openssl_conf" | ||
| 58 | export OPENSSL_CONF | ||
| 59 | fi | ||
| 60 | |||
| 61 | workdir=x509_verify-certs | ||
| 62 | |||
| 63 | cleanup() | ||
| 64 | { | ||
| 65 | rm -rf "$workdir" | ||
| 66 | } | ||
| 67 | trap cleanup EXIT | ||
| 68 | |||
| 69 | rm -rf "$workdir" | ||
| 70 | mkdir "$workdir" | ||
| 71 | |||
| 72 | perl "$make_dir_roots" "$certs_path" "$workdir" | ||
| 73 | |||
| 74 | ( | ||
| 75 | cd "$workdir" | ||
| 76 | "$verify_bin" "$certs_path" | ||
| 77 | ) | ||
