diff options
author | tb <> | 2023-01-27 08:28:36 +0000 |
---|---|---|
committer | tb <> | 2023-01-27 08:28:36 +0000 |
commit | 6738561f9181a99b8aa084f27caeea50afddc836 (patch) | |
tree | 8c840e3c446da9e4d3e54e0fceea866197047f66 | |
parent | 5eb039b0fc4e1e87f2b77fc8150abd2c9f9f518b (diff) | |
download | openbsd-6738561f9181a99b8aa084f27caeea50afddc836.tar.gz openbsd-6738561f9181a99b8aa084f27caeea50afddc836.tar.bz2 openbsd-6738561f9181a99b8aa084f27caeea50afddc836.zip |
Add openssl 3.0 interop tests
The plan is to retire the 1.0.2 interop tests soon so as to be able to
drop the dead and dangerous OpenSSL 1.0.2 port.
The cert part is extremely slow on arm64: the whole interop test on an m1
is about 10x slower (~45 min!) than on a modern amd64 laptop, so people
running regress may want to wait a bit with adding OpenSSL 3 to their test
boxes until this is sorted out.
-rw-r--r-- | src/regress/lib/libssl/interop/Makefile | 4 | ||||
-rw-r--r-- | src/regress/lib/libssl/interop/cert/Makefile | 7 | ||||
-rw-r--r-- | src/regress/lib/libssl/interop/cipher/Makefile | 15 | ||||
-rw-r--r-- | src/regress/lib/libssl/interop/openssl30/Makefile | 43 | ||||
-rw-r--r-- | src/regress/lib/libssl/interop/version/Makefile | 13 |
5 files changed, 70 insertions, 12 deletions
diff --git a/src/regress/lib/libssl/interop/Makefile b/src/regress/lib/libssl/interop/Makefile index 789ff00e7f..2f6b165ae6 100644 --- a/src/regress/lib/libssl/interop/Makefile +++ b/src/regress/lib/libssl/interop/Makefile | |||
@@ -1,6 +1,6 @@ | |||
1 | # $OpenBSD: Makefile,v 1.15 2021/08/30 17:34:02 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.16 2023/01/27 08:28:36 tb Exp $ |
2 | 2 | ||
3 | SUBDIR = libressl openssl openssl11 | 3 | SUBDIR = libressl openssl openssl11 openssl30 |
4 | 4 | ||
5 | # the above binaries must have been built before we can continue | 5 | # the above binaries must have been built before we can continue |
6 | SUBDIR += netcat | 6 | SUBDIR += netcat |
diff --git a/src/regress/lib/libssl/interop/cert/Makefile b/src/regress/lib/libssl/interop/cert/Makefile index 6698975d7e..6156a988ae 100644 --- a/src/regress/lib/libssl/interop/cert/Makefile +++ b/src/regress/lib/libssl/interop/cert/Makefile | |||
@@ -1,7 +1,7 @@ | |||
1 | # $OpenBSD: Makefile,v 1.7 2021/09/03 11:58:24 bluhm Exp $ | 1 | # $OpenBSD: Makefile,v 1.8 2023/01/27 08:28:36 tb Exp $ |
2 | 2 | ||
3 | # Connect a client to a server. Both can be current libressl, or | 3 | # Connect a client to a server. Both can be current libressl, or |
4 | # openssl 1.0.2, or openssl 1.1. Create client and server certificates | 4 | # openssl 1.0.2, 1.1, or 3.0. Create client and server certificates |
5 | # that are signed by a CA and not signed by a fake CA. Try all | 5 | # that are signed by a CA and not signed by a fake CA. Try all |
6 | # combinations with, without, and with wrong CA for client and server | 6 | # combinations with, without, and with wrong CA for client and server |
7 | # and check the result of certificate verification. | 7 | # and check the result of certificate verification. |
@@ -13,6 +13,9 @@ LIBRARIES += openssl | |||
13 | .if exists(/usr/local/bin/eopenssl11) | 13 | .if exists(/usr/local/bin/eopenssl11) |
14 | LIBRARIES += openssl11 | 14 | LIBRARIES += openssl11 |
15 | .endif | 15 | .endif |
16 | .if exists(/usr/local/bin/eopenssl30) | ||
17 | LIBRARIES += openssl30 | ||
18 | .endif | ||
16 | 19 | ||
17 | .for cca in noca ca fakeca | 20 | .for cca in noca ca fakeca |
18 | .for sca in noca ca fakeca | 21 | .for sca in noca ca fakeca |
diff --git a/src/regress/lib/libssl/interop/cipher/Makefile b/src/regress/lib/libssl/interop/cipher/Makefile index bfe8cfea7a..46951f6782 100644 --- a/src/regress/lib/libssl/interop/cipher/Makefile +++ b/src/regress/lib/libssl/interop/cipher/Makefile | |||
@@ -1,7 +1,7 @@ | |||
1 | # $OpenBSD: Makefile,v 1.9 2022/02/05 18:34:06 tb Exp $ | 1 | # $OpenBSD: Makefile,v 1.10 2023/01/27 08:28:36 tb Exp $ |
2 | 2 | ||
3 | # Connect a client to a server. Both can be current libressl, or | 3 | # Connect a client to a server. Both can be current libressl, or |
4 | # openssl 1.0.2, or openssl 1.1. Create lists of supported ciphers | 4 | # openssl 1.0.2, 1.1, or 3.0. Create lists of supported ciphers |
5 | # and pin client and server to one of the ciphers. Use server | 5 | # and pin client and server to one of the ciphers. Use server |
6 | # certificate with compatible type. Check that client and server | 6 | # certificate with compatible type. Check that client and server |
7 | # have used correct cipher by grepping in their session print out. | 7 | # have used correct cipher by grepping in their session print out. |
@@ -24,6 +24,9 @@ LIBRARIES += openssl | |||
24 | .if exists(/usr/local/bin/eopenssl11) | 24 | .if exists(/usr/local/bin/eopenssl11) |
25 | LIBRARIES += openssl11 | 25 | LIBRARIES += openssl11 |
26 | .endif | 26 | .endif |
27 | .if exists(/usr/local/bin/eopenssl30) | ||
28 | LIBRARIES += openssl30 | ||
29 | .endif | ||
27 | 30 | ||
28 | CLEANFILES = *.tmp *.ciphers ciphers.mk | 31 | CLEANFILES = *.tmp *.ciphers ciphers.mk |
29 | 32 | ||
@@ -52,8 +55,9 @@ client-${clib}-server-${slib}.ciphers: \ | |||
52 | uniq -d <$@.tmp >$@ | 55 | uniq -d <$@.tmp >$@ |
53 | # we are only interested in ciphers supported by libressl | 56 | # we are only interested in ciphers supported by libressl |
54 | sort $@ client-libressl.ciphers >$@.tmp | 57 | sort $@ client-libressl.ciphers >$@.tmp |
55 | . if "${clib}" == "openssl11" || "${slib}" == "openssl11" | 58 | . if "${clib}" == "openssl11" || "${slib}" == "openssl11" || \ |
56 | # OpenSSL 1.1's SSL_CTX_set_cipher_list doesn't accept TLSv1.3 ciphers | 59 | "${clib}" == "openssl30" || "${slib}" == "openssl30" |
60 | # OpenSSL's SSL_CTX_set_cipher_list doesn't accept TLSv1.3 ciphers | ||
57 | sed -i '/^TLS_/d' $@.tmp | 61 | sed -i '/^TLS_/d' $@.tmp |
58 | . endif | 62 | . endif |
59 | uniq -d <$@.tmp >$@ | 63 | uniq -d <$@.tmp >$@ |
@@ -82,6 +86,7 @@ regress: ciphers.mk | |||
82 | LEVEL_libressl = | 86 | LEVEL_libressl = |
83 | LEVEL_openssl = | 87 | LEVEL_openssl = |
84 | LEVEL_openssl11 = ,@SECLEVEL=0 | 88 | LEVEL_openssl11 = ,@SECLEVEL=0 |
89 | LEVEL_openssl30 = ,@SECLEVEL=0 | ||
85 | 90 | ||
86 | .for clib in ${LIBRARIES} | 91 | .for clib in ${LIBRARIES} |
87 | .for slib in ${LIBRARIES} | 92 | .for slib in ${LIBRARIES} |
@@ -148,7 +153,7 @@ check-cipher-${cipher}-client-${clib}-server-${slib}: \ | |||
148 | . endif | 153 | . endif |
149 | . if "${clib}" == "libressl" | 154 | . if "${clib}" == "libressl" |
150 | # libressl client may prefer chacha-poly if aes-ni is not supported | 155 | # libressl client may prefer chacha-poly if aes-ni is not supported |
151 | . if "${slib}" == "openssl11" | 156 | . if "${slib}" == "openssl11" || "${slib}" == "openssl30" |
152 | egrep -q ' Cipher *: TLS_(AES_256_GCM_SHA384|CHACHA20_POLY1305_SHA256)$$' ${@:S/^check/server/}.out | 157 | egrep -q ' Cipher *: TLS_(AES_256_GCM_SHA384|CHACHA20_POLY1305_SHA256)$$' ${@:S/^check/server/}.out |
153 | . else | 158 | . else |
154 | egrep -q ' Cipher *: TLS_(AES_256_GCM_SHA384|CHACHA20_POLY1305_SHA256)$$' ${@:S/^check/server/}.out | 159 | egrep -q ' Cipher *: TLS_(AES_256_GCM_SHA384|CHACHA20_POLY1305_SHA256)$$' ${@:S/^check/server/}.out |
diff --git a/src/regress/lib/libssl/interop/openssl30/Makefile b/src/regress/lib/libssl/interop/openssl30/Makefile new file mode 100644 index 0000000000..d667d1b17e --- /dev/null +++ b/src/regress/lib/libssl/interop/openssl30/Makefile | |||
@@ -0,0 +1,43 @@ | |||
1 | # $OpenBSD: Makefile,v 1.1 2023/01/27 08:28:36 tb Exp $ | ||
2 | |||
3 | .if ! exists(/usr/local/bin/eopenssl30) | ||
4 | regress: | ||
5 | # install openssl-3.0 from ports for interop tests | ||
6 | @echo 'Run "pkg_add openssl--%3.0" to run tests against OpenSSL 3.0' | ||
7 | @echo SKIPPED | ||
8 | .else | ||
9 | |||
10 | PROGS = client server | ||
11 | CPPFLAGS = -I /usr/local/include/eopenssl30 | ||
12 | LDFLAGS = -L /usr/local/lib/eopenssl30 | ||
13 | LDADD = -lssl -lcrypto | ||
14 | DPADD = /usr/local/lib/eopenssl30/libssl.a \ | ||
15 | /usr/local/lib/eopenssl30/libcrypto.a | ||
16 | LD_LIBRARY_PATH = /usr/local/lib/eopenssl30 | ||
17 | REGRESS_TARGETS = run-self-client-server | ||
18 | .for p in ${PROGS} | ||
19 | REGRESS_TARGETS += run-ldd-$p run-version-$p run-protocol-$p | ||
20 | .endfor | ||
21 | |||
22 | .for p in ${PROGS} | ||
23 | |||
24 | run-ldd-$p: ldd-$p.out | ||
25 | # check that $p is linked with OpenSSL 3.0 | ||
26 | grep -q /usr/local/lib/eopenssl30/libcrypto.so ldd-$p.out | ||
27 | grep -q /usr/local/lib/eopenssl30/libssl.so ldd-$p.out | ||
28 | # check that $p is not linked with LibreSSL | ||
29 | ! grep -v libc.so ldd-$p.out | grep /usr/lib/ | ||
30 | |||
31 | run-version-$p: $p-self.out | ||
32 | # check that runtime version is OpenSSL 3.0 | ||
33 | grep 'SSLEAY_VERSION: OpenSSL 3.0' $p-self.out | ||
34 | |||
35 | run-protocol-$p: $p-self.out | ||
36 | # check that OpenSSL 3.0 protocol version is TLS 1.3 | ||
37 | grep 'Protocol *: TLSv1.3' $p-self.out | ||
38 | |||
39 | .endfor | ||
40 | |||
41 | .endif # exists(/usr/local/bin/eopenssl30) | ||
42 | |||
43 | .include <bsd.regress.mk> | ||
diff --git a/src/regress/lib/libssl/interop/version/Makefile b/src/regress/lib/libssl/interop/version/Makefile index 7ac86ccbeb..7b1be9a3ed 100644 --- a/src/regress/lib/libssl/interop/version/Makefile +++ b/src/regress/lib/libssl/interop/version/Makefile | |||
@@ -1,4 +1,4 @@ | |||
1 | # $OpenBSD: Makefile,v 1.3 2020/12/17 00:51:12 bluhm Exp $ | 1 | # $OpenBSD: Makefile,v 1.4 2023/01/27 08:28:36 tb Exp $ |
2 | 2 | ||
3 | # Connect a client to a server. Both can be current libressl, or | 3 | # Connect a client to a server. Both can be current libressl, or |
4 | # openssl 1.0.2, or openssl 1.1. Pin client or server to a fixed TLS | 4 | # openssl 1.0.2, or openssl 1.1. Pin client or server to a fixed TLS |
@@ -13,6 +13,9 @@ LIBRARIES += openssl | |||
13 | .if exists(/usr/local/bin/eopenssl11) | 13 | .if exists(/usr/local/bin/eopenssl11) |
14 | LIBRARIES += openssl11 | 14 | LIBRARIES += openssl11 |
15 | .endif | 15 | .endif |
16 | .if exists(/usr/local/bin/eopenssl30) | ||
17 | LIBRARIES += openssl30 | ||
18 | .endif | ||
16 | 19 | ||
17 | VERSIONS = any TLS1 TLS1_1 TLS1_2 TLS1_3 | 20 | VERSIONS = any TLS1 TLS1_1 TLS1_2 TLS1_3 |
18 | 21 | ||
@@ -28,8 +31,12 @@ FAIL_${cver}_${sver} = ! | |||
28 | .for clib in ${LIBRARIES} | 31 | .for clib in ${LIBRARIES} |
29 | .for slib in ${LIBRARIES} | 32 | .for slib in ${LIBRARIES} |
30 | 33 | ||
31 | .if ("${clib}" != openssl && "${slib}" != openssl) || \ | 34 | .if (("${clib}" != openssl && "${slib}" != openssl) || \ |
32 | ("${cver}" != TLS1_3 && "${sver}" != TLS1_3) | 35 | ("${cver}" != TLS1_3 && "${sver}" != TLS1_3)) && \ |
36 | (("${clib}" != openssl30 && "${slib}" != openssl30) || \ | ||
37 | (("${cver}" != any && "${sver}" != any) && \ | ||
38 | ("${cver}" != TLS1 && "${sver}" != TLS1) && \ | ||
39 | ("${cver}" != TLS1_1 && "${sver}" != TLS1_1))) | ||
33 | 40 | ||
34 | .if ("${clib}" == "libressl" || "${slib}" == "libressl") | 41 | .if ("${clib}" == "libressl" || "${slib}" == "libressl") |
35 | REGRESS_TARGETS += run-version-client-${clib}-${cver}-server-${slib}-${sver} | 42 | REGRESS_TARGETS += run-version-client-${clib}-${cver}-server-${slib}-${sver} |