summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--regress/lib/libssl/tlsext/tlsexttest.c84
1 files changed, 82 insertions, 2 deletions
diff --git a/regress/lib/libssl/tlsext/tlsexttest.c b/regress/lib/libssl/tlsext/tlsexttest.c
index 1b2820d78be..63c64e94116 100644
--- a/regress/lib/libssl/tlsext/tlsexttest.c
+++ b/regress/lib/libssl/tlsext/tlsexttest.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: tlsexttest.c,v 1.15 2017/08/27 02:58:04 doug Exp $ */
+/* $OpenBSD: tlsexttest.c,v 1.16 2017/08/29 17:24:59 jsing Exp $ */
/*
* Copyright (c) 2017 Joel Sing <jsing@openbsd.org>
* Copyright (c) 2017 Doug Hogan <doug@openbsd.org>
@@ -198,6 +198,10 @@ test_tlsext_alpn_clienthello(void)
FAIL("failed to parse ALPN");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (ssl->internal->alpn_client_proto_list_len !=
sizeof(tlsext_alpn_single_proto_val)) {
@@ -261,6 +265,10 @@ test_tlsext_alpn_clienthello(void)
FAIL("failed to parse ALPN");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (ssl->internal->alpn_client_proto_list_len !=
sizeof(tlsext_alpn_multiple_protos_val)) {
@@ -398,6 +406,10 @@ test_tlsext_alpn_serverhello(void)
FAIL("Should be able to parse serverhello when we request it");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (S3I(ssl)->alpn_selected_len !=
sizeof(tlsext_alpn_single_proto_name)) {
@@ -597,6 +609,10 @@ test_tlsext_ec_clienthello(void)
FAIL("failed to parse clienthello Ellipticcurves\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (SSI(ssl)->tlsext_supportedgroups_length !=
sizeof(tlsext_ec_clienthello_secp384r1_val) / sizeof(uint16_t)) {
@@ -693,6 +709,10 @@ test_tlsext_ec_clienthello(void)
FAIL("failed to parse clienthello Ellipticcurves\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (SSI(ssl)->tlsext_supportedgroups_length !=
sizeof(tlsext_ec_clienthello_nistp192and224_val) / sizeof(uint16_t)) {
@@ -895,6 +915,10 @@ test_tlsext_ecpf_clienthello(void)
FAIL("failed to parse clienthello ECPointFormats\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (SSI(ssl)->tlsext_ecpointformatlist_length !=
sizeof(tlsext_ecpf_hello_uncompressed_val)) {
@@ -984,6 +1008,10 @@ test_tlsext_ecpf_clienthello(void)
FAIL("failed to parse clienthello ECPointFormats\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (SSI(ssl)->tlsext_ecpointformatlist_length !=
sizeof(tlsext_ecpf_hello_prefer_order_val)) {
@@ -1100,6 +1128,10 @@ test_tlsext_ecpf_serverhello(void)
FAIL("must include uncompressed in serverhello ECPointFormats\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
/*
* Test with a custom order that replaces the default uncompressed.
@@ -1184,6 +1216,10 @@ test_tlsext_ecpf_serverhello(void)
FAIL("failed to parse serverhello ECPointFormats\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (SSI(ssl)->tlsext_ecpointformatlist_length !=
sizeof(tlsext_ecpf_hello_prefer_order_val)) {
@@ -1308,6 +1344,10 @@ test_tlsext_ri_clienthello(void)
FAIL("failed to parse clienthello RI\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (S3I(ssl)->renegotiate_seen != 1) {
FAIL("renegotiate seen not set\n");
@@ -1417,6 +1457,10 @@ test_tlsext_ri_serverhello(void)
FAIL("failed to parse serverhello RI\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (S3I(ssl)->renegotiate_seen != 1) {
FAIL("renegotiate seen not set\n");
@@ -1534,6 +1578,10 @@ test_tlsext_sigalgs_clienthello(void)
failure = 1;
goto done;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto done;
+ }
if (ssl->cert->pkeys[SSL_PKEY_RSA_SIGN].digest != EVP_sha512()) {
fprintf(stderr, "FAIL: RSA sign digest mismatch\n");
@@ -1601,7 +1649,7 @@ test_tlsext_sigalgs_serverhello(void)
CBS_init(&cbs, tlsext_sigalgs_clienthello, sizeof(tlsext_sigalgs_clienthello));
if (tlsext_sigalgs_serverhello_parse(ssl, &cbs, &alert)) {
- fprintf(stderr, "FAIL: failed to parse serverhello sigalgs\n");
+ fprintf(stderr, "FAIL: serverhello should not parse sigalgs\n");
failure = 1;
goto done;
}
@@ -1699,6 +1747,10 @@ test_tlsext_sni_clienthello(void)
FAIL("failed to parse clienthello SNI\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (ssl->session->tlsext_hostname == NULL) {
FAIL("no tlsext_hostname from clienthello SNI\n");
@@ -1810,6 +1862,10 @@ test_tlsext_sni_serverhello(void)
FAIL("failed to parse serverhello SNI\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if (ssl->session->tlsext_hostname == NULL) {
FAIL("no tlsext_hostname after serverhello SNI\n");
@@ -1898,6 +1954,10 @@ test_tlsext_ocsp_clienthello(void)
FAIL("failed to parse ocsp clienthello\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
failure = 0;
@@ -2385,6 +2445,10 @@ test_tlsext_srtp_clienthello(void)
FAIL("failed to parse SRTP\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if ((prof = SSL_get_selected_srtp_profile(ssl)) == NULL) {
FAIL("SRTP profile should be set now\n");
@@ -2448,6 +2512,10 @@ test_tlsext_srtp_clienthello(void)
FAIL("failed to parse SRTP\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if ((prof = SSL_get_selected_srtp_profile(ssl)) == NULL) {
FAIL("SRTP profile should be set now\n");
@@ -2475,6 +2543,10 @@ test_tlsext_srtp_clienthello(void)
FAIL("failed to parse SRTP\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if ((prof = SSL_get_selected_srtp_profile(ssl)) == NULL) {
FAIL("SRTP profile should be set now\n");
@@ -2500,6 +2572,10 @@ test_tlsext_srtp_clienthello(void)
FAIL("should be able to fall back to negotiated\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
/* If we fallback, the server should NOT send the extension. */
if (SSL_get_selected_srtp_profile(ssl) != NULL) {
@@ -2609,6 +2685,10 @@ test_tlsext_srtp_serverhello(void)
FAIL("failed to parse SRTP\n");
goto err;
}
+ if (CBS_len(&cbs) != 0) {
+ FAIL("extension data remaining");
+ goto err;
+ }
if ((prof = SSL_get_selected_srtp_profile(ssl)) == NULL) {
FAIL("SRTP profile should be set now\n");