diff --git a/scripts/dtlscid.test b/scripts/dtlscid.test new file mode 100755 index 000000000..95eb1be4a --- /dev/null +++ b/scripts/dtlscid.test @@ -0,0 +1,39 @@ +#!/bin/bash + +set -e + +cleanup () { + echo "Cleaning up..." + if [ ! -z "$SERVER_PID" ];then + echo "Killing server $SERVER_PID" + kill $SERVER_PID + fi +} + +trap cleanup err exit + +CCID="AA" +SCID="BB" +HEXCID=$(printf $CCID | od -An -tx1 | tr -d ' \n') +HEXSCID=$(printf $SCID | od -An -tx1 | tr -d ' \n') +WOLFSSL_ROOT=$(pwd) +SERVER_PORT=11111 + +(killall lt-server || true) +(killall lt-client || true) + +test_cid () { + $WOLFSSL_ROOT/examples/server/server -v4 -u --cid $SCID 2>/tmp/serr 1>/tmp/sout & + SERVER_PID=$! + sleep 0.2 + now=$(date +%s.%N) + $WOLFSSL_ROOT/examples/client/client -v4 -u --cid $CCID 2>/tmp/cerr 1>/tmp/cout + elapsed=$(echo $(date +%s.%N) - $now | bc) + echo "it took ${elapsed} sec(s)" >> /tmp/udp + wait $SERVER_PID + SERVER_PID= + grep "Sending CID is ${HEXSCID}" < /tmp/cout + grep "Sending CID is ${HEXCID}" < /tmp/sout +} + +test_cid diff --git a/scripts/include.am b/scripts/include.am index 18cbe1df7..cd891ab26 100644 --- a/scripts/include.am +++ b/scripts/include.am @@ -116,4 +116,5 @@ EXTRA_DIST += scripts/cleanup_testfiles.sh if BUILD_DTLS13 EXTRA_DIST += scripts/dtls13.test +EXTRA_DIST += scripts/dtlscid.test endif diff --git a/tests/include.am b/tests/include.am index 77a4a1ca9..825367b89 100644 --- a/tests/include.am +++ b/tests/include.am @@ -45,6 +45,7 @@ EXTRA_DIST += tests/unit.h \ tests/test-dtls13.conf \ tests/test-dtls13-downgrade.conf \ tests/test-dtls13-psk.conf \ + tests/test-dtls13-cid.conf \ tests/test-sctp.conf \ tests/test-sctp-sha2.conf \ tests/test-sig.conf \ diff --git a/tests/suites.c b/tests/suites.c index 5add18ab0..56c2186bd 100644 --- a/tests/suites.c +++ b/tests/suites.c @@ -1153,6 +1153,17 @@ int SuiteTest(int argc, char** argv) } #endif /* NO_PSK */ +#ifdef WOLFSSL_DTLS_CID + XSTRLCPY(argv0[1], "tests/test-dtls13-cid.conf", sizeof(argv0[1])); + printf("starting DTLS 1.3 ConnectionID suite tests\n"); + test_harness(&args); + if (args.return_code != 0) { + printf("error from script %d\n", args.return_code); + args.return_code = EXIT_FAILURE; + goto exit; + } +#endif /* WOLFSSL_DTLS_CID */ + #endif /* WOLFSSL_DTLS13 */ #endif diff --git a/tests/test-dtls13-cid.conf b/tests/test-dtls13-cid.conf new file mode 100644 index 000000000..f1782a789 --- /dev/null +++ b/tests/test-dtls13-cid.conf @@ -0,0 +1,80 @@ +# server DTLSv1.3 empty CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid + +# client DTLSv1.3 empty CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid + +# server DTLSv1.3 A CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid AA + +# client DTLSv1.3 empty CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid + +# server DTLSv1.3 Empty CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid + +# client DTLSv1.3 B CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid BB + +# server DTLSv1.3 A CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid AA + +# client DTLSv1.3 B CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid BB + +# server DTLSv1.3 No CID support +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 + +# client DTLSv1.3 B CID +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid B + +# server DTLSv1.3 CID A +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 + +# client DTLSv1.3 No CID support +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 + +# server DTLSv1.3 CID 2 bytes +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid AA + +# client DTLSv1.3 CID 1 byte +-v 4 +-u +-l TLS_AES_128_GCM_SHA256 +--cid B diff --git a/wolfssl/test.h b/wolfssl/test.h index 20a52085a..12d34650f 100644 --- a/wolfssl/test.h +++ b/wolfssl/test.h @@ -5445,10 +5445,19 @@ static WC_INLINE int process_handshake_messages(WOLFSSL* ssl, int blocking, } #endif /* HAVE_SESSION_TICKET || WOLFSSL_DTLS13 */ +static WC_INLINE void printBuffer(const byte *buf, int size) +{ + int i; + for (i = 0; i < size; i++) + printf("%x", buf[i]); +} + #if !defined(NO_FILESYSTEM) && defined(OPENSSL_EXTRA) && \ defined(DEBUG_UNIT_TEST_CERTS) void DEBUG_WRITE_CERT_X509(WOLFSSL_X509* x509, const char* fileName); void DEBUG_WRITE_DER(const byte* der, int derSz, const char* fileName); #endif +#define DTLS_CID_BUFFER_SIZE 256 + #endif /* wolfSSL_TEST_H */