| # Test that SSL sample programs can interoperate with each other | |
| # and with OpenSSL and GnuTLS. | |
| # Copyright The Mbed TLS Contributors | |
| # SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later | |
| : ${PROGRAMS_DIR:=../programs/ssl} | |
| run_test "Sample: ssl_client1, ssl_server2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server2" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_client1, openssl server, TLS 1.2" \ | |
| -P 4433 \ | |
| "$O_SRV -tls1_2" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -c "Protocol.*TLSv1.2" \ | |
| -S "ERROR" \ | |
| -C "error" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_client1, gnutls server, TLS 1.2" \ | |
| -P 4433 \ | |
| "$G_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -s "Version: TLS1.2" \ | |
| -c "<TD>Protocol version:</TD><TD>TLS1.2</TD>" \ | |
| -S "Error" \ | |
| -C "error" | |
| requires_protocol_version tls13 | |
| requires_openssl_tls1_3 | |
| run_test "Sample: ssl_client1, openssl server, TLS 1.3" \ | |
| -P 4433 \ | |
| "$O_NEXT_SRV -tls1_3" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -c "New, TLSv1.3, Cipher is" \ | |
| -S "ERROR" \ | |
| -C "error" | |
| requires_protocol_version tls13 | |
| requires_gnutls_tls1_3 | |
| run_test "Sample: ssl_client1, gnutls server, TLS 1.3" \ | |
| -P 4433 \ | |
| "$G_NEXT_SRV --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -s "Version: TLS1.3" \ | |
| -c "<TD>Protocol version:</TD><TD>TLS1.3</TD>" \ | |
| -S "Error" \ | |
| -C "error" | |
| # The server complains of extra data after it closes the connection | |
| # because the client keeps sending data, so the server receives | |
| # more application data when it expects a new handshake. We consider | |
| # the test a success if both sides have sent and received application | |
| # data, no matter what happens afterwards. | |
| run_test "Sample: dtls_client, ssl_server2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server2 dtls=1 server_addr=localhost" \ | |
| "$PROGRAMS_DIR/dtls_client" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -C "error" | |
| # The dtls_client program connects to localhost. This test case fails on | |
| # systems where the name "localhost" resolves to an IPv6 address, but | |
| # the IPv6 connection is not possible. Possible reasons include: | |
| # * OpenSSL is too old (IPv6 support was added in 1.1.0). | |
| # * OpenSSL was built without IPv6 support. | |
| # * A firewall blocks IPv6. | |
| # | |
| # To facilitate working with this test case, have it run with $OPENSSL_NEXT | |
| # which is at least 1.1.1a. At the time it was introduced, this test case | |
| # passed with OpenSSL 1.0.2g on an environment where IPv6 is disabled. | |
| requires_protocol_version dtls12 | |
| run_test "Sample: dtls_client, openssl server, DTLS 1.2" \ | |
| -P 4433 \ | |
| "$O_NEXT_SRV -dtls1_2" \ | |
| "$PROGRAMS_DIR/dtls_client" \ | |
| 0 \ | |
| -s "Echo this" \ | |
| -c "Echo this" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -S "ERROR" \ | |
| -C "error" | |
| requires_protocol_version dtls12 | |
| run_test "Sample: dtls_client, gnutls server, DTLS 1.2" \ | |
| -P 4433 \ | |
| "$G_SRV -u --echo --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2" \ | |
| "$PROGRAMS_DIR/dtls_client" \ | |
| 0 \ | |
| -s "Server listening" \ | |
| -s "[1-9][0-9]* bytes command:" \ | |
| -c "Echo this" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -S "Error" \ | |
| -C "error" | |
| run_test "Sample: ssl_server, ssl_client2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server" \ | |
| "$PROGRAMS_DIR/ssl_client2" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| run_test "Sample: ssl_client1 with ssl_server" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_server, openssl client, TLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server" \ | |
| "$O_CLI -tls1_2" \ | |
| 0 \ | |
| -s "Successful connection using: TLS-" \ | |
| -c "Protocol.*TLSv1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_server, gnutls client, TLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server" \ | |
| "$G_CLI --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 localhost" \ | |
| 0 \ | |
| -s "Successful connection using: TLS-" \ | |
| -c "Description:.*TLS1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls13 | |
| requires_openssl_tls1_3 | |
| run_test "Sample: ssl_server, openssl client, TLS 1.3" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server" \ | |
| "$O_NEXT_CLI -tls1_3" \ | |
| 0 \ | |
| -s "Successful connection using: TLS1-3-" \ | |
| -c "New, TLSv1.3, Cipher is" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls13 | |
| requires_gnutls_tls1_3 | |
| run_test "Sample: ssl_server, gnutls client, TLS 1.3" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_server" \ | |
| "$G_NEXT_CLI --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3 localhost" \ | |
| 0 \ | |
| -s "Successful connection using: TLS1-3-" \ | |
| -c "Description:.*TLS1.3" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| run_test "Sample: ssl_fork_server, ssl_client2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_fork_server" \ | |
| "$PROGRAMS_DIR/ssl_client2" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| run_test "Sample: ssl_client1 with ssl_fork_server" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_fork_server" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_fork_server, openssl client, TLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_fork_server" \ | |
| "$O_CLI -tls1_2" \ | |
| 0 \ | |
| -s "Successful connection using: TLS-" \ | |
| -c "Protocol.*TLSv1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_fork_server, gnutls client, TLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_fork_server" \ | |
| "$G_CLI --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 localhost" \ | |
| 0 \ | |
| -s "Successful connection using: TLS-" \ | |
| -c "Description:.*TLS1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls13 | |
| requires_openssl_tls1_3 | |
| run_test "Sample: ssl_fork_server, openssl client, TLS 1.3" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_fork_server" \ | |
| "$O_NEXT_CLI -tls1_3" \ | |
| 0 \ | |
| -s "Successful connection using: TLS1-3-" \ | |
| -c "New, TLSv1.3, Cipher is" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls13 | |
| requires_gnutls_tls1_3 | |
| run_test "Sample: ssl_fork_server, gnutls client, TLS 1.3" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_fork_server" \ | |
| "$G_NEXT_CLI --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3 localhost" \ | |
| 0 \ | |
| -s "Successful connection using: TLS1-3-" \ | |
| -c "Description:.*TLS1.3" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| run_test "Sample: ssl_pthread_server, ssl_client2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_pthread_server" \ | |
| "$PROGRAMS_DIR/ssl_client2" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| run_test "Sample: ssl_client1 with ssl_pthread_server" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_pthread_server" \ | |
| "$PROGRAMS_DIR/ssl_client1" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_pthread_server, openssl client, TLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_pthread_server" \ | |
| "$O_CLI -tls1_2" \ | |
| 0 \ | |
| -s "Successful connection using: TLS-" \ | |
| -c "Protocol.*TLSv1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls12 | |
| run_test "Sample: ssl_pthread_server, gnutls client, TLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_pthread_server" \ | |
| "$G_CLI --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 localhost" \ | |
| 0 \ | |
| -s "Successful connection using: TLS-" \ | |
| -c "Description:.*TLS1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls13 | |
| requires_openssl_tls1_3 | |
| run_test "Sample: ssl_pthread_server, openssl client, TLS 1.3" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_pthread_server" \ | |
| "$O_NEXT_CLI -tls1_3" \ | |
| 0 \ | |
| -s "Successful connection using: TLS1-3-" \ | |
| -c "New, TLSv1.3, Cipher is" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version tls13 | |
| requires_gnutls_tls1_3 | |
| run_test "Sample: ssl_pthread_server, gnutls client, TLS 1.3" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/ssl_pthread_server" \ | |
| "$G_NEXT_CLI --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.3 localhost" \ | |
| 0 \ | |
| -s "Successful connection using: TLS1-3-" \ | |
| -c "Description:.*TLS1.3" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| run_test "Sample: dtls_client with dtls_server" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/dtls_server" \ | |
| "$PROGRAMS_DIR/dtls_client" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| run_test "Sample: ssl_client2, dtls_server" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/dtls_server" \ | |
| "$PROGRAMS_DIR/ssl_client2 dtls=1" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "[1-9][0-9]* bytes read" \ | |
| -c "[1-9][0-9]* bytes written" \ | |
| -S "error" \ | |
| -C "error" | |
| requires_protocol_version dtls12 | |
| run_test "Sample: dtls_server, openssl client, DTLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/dtls_server" \ | |
| "$O_CLI -dtls1_2" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "Protocol.*TLSv1.2" \ | |
| -S "error" \ | |
| -C "ERROR" | |
| requires_protocol_version dtls12 | |
| run_test "Sample: dtls_server, gnutls client, DTLS 1.2" \ | |
| -P 4433 \ | |
| "$PROGRAMS_DIR/dtls_server" \ | |
| "$G_CLI -u --priority=NORMAL:-VERS-TLS-ALL:+VERS-TLS1.2 localhost" \ | |
| 0 \ | |
| -s "[1-9][0-9]* bytes read" \ | |
| -s "[1-9][0-9]* bytes written" \ | |
| -c "Description:.*DTLS1.2" \ | |
| -S "error" \ | |
| -C "ERROR" |