summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2017-09-23 08:29:17 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2017-09-23 10:47:21 +0200
commit9f65afce65d30d9a03593107a5ed6c72ad033aa1 (patch)
treea34e64a627a65a40d57c597741119953bccc6345
parent8288ed0acee095894f411412664f4e2eb4f59159 (diff)
downloadgnutls-tmp-sni-fixes.tar.gz
tests: enhanced resumption checks with same and different SNItmp-sni-fixes
Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--tests/resume.c36
1 files changed, 35 insertions, 1 deletions
diff --git a/tests/resume.c b/tests/resume.c
index 1bcd3b8d04..bcd48aa792 100644
--- a/tests/resume.c
+++ b/tests/resume.c
@@ -41,6 +41,9 @@ int main(int argc, char **argv)
#else
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
@@ -73,6 +76,8 @@ struct params_res {
int second_no_ext_master;
int try_alpn;
int try_resumed_data;
+ int try_diff_sni;
+ int try_sni;
};
pid_t child;
@@ -149,6 +154,26 @@ struct params_res resume_tests[] = {
.enable_session_ticket_server = 1,
.enable_session_ticket_client = 1,
.expect_resume = 1},
+ {.desc = "try to resume from db and different SNI",
+ .enable_db = 1,
+ .try_sni = 1,
+ .try_diff_sni = 1,
+ .expect_resume = 0},
+ {.desc = "try to resume with ticket and different SNI",
+ .enable_session_ticket_server = 1,
+ .enable_session_ticket_client = 1,
+ .try_sni = 1,
+ .try_diff_sni = 1,
+ .expect_resume = 0},
+ {.desc = "try to resume from db and same SNI",
+ .enable_db = 1,
+ .try_sni = 1,
+ .expect_resume = 1},
+ {.desc = "try to resume with ticket and same SNI",
+ .enable_session_ticket_server = 1,
+ .enable_session_ticket_client = 1,
+ .try_sni = 1,
+ .expect_resume = 1},
{NULL, -1}
};
@@ -171,7 +196,7 @@ static int hsk_hook_cb(gnutls_session_t session, unsigned int htype, unsigned po
unsigned int incoming, const gnutls_datum_t *_msg)
{
unsigned size;
- gnutls_datum msg = {_msg->data, _msg->size};
+ gnutls_datum_t msg = {_msg->data, _msg->size};
/* skip up to session ID */
if (msg.size <= HANDSHAKE_SESSION_ID_POS+6) {
@@ -252,6 +277,8 @@ static void client(int sds[], struct params_res *params)
char buffer[MAX_BUF + 1];
unsigned int ext_master_secret_check = 0;
char prio_str[256];
+ const char *dns_name1 = "example.com";
+ const char *dns_name2 = "www.example.com";
#ifdef USE_PSK
# define PRIO_STR "NONE:+VERS-TLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+PSK:+CURVE-ALL"
const gnutls_datum_t pskkey = { (void *) "DEADBEEF", 8 };
@@ -332,6 +359,13 @@ static void client(int sds[], struct params_res *params)
/* if this is not the first time we connect */
gnutls_session_set_data(session, session_data.data,
session_data.size);
+ if (params->try_diff_sni)
+ gnutls_server_name_set(session, GNUTLS_NAME_DNS, dns_name1, strlen(dns_name1));
+ else if (params->try_sni)
+ gnutls_server_name_set(session, GNUTLS_NAME_DNS, dns_name2, strlen(dns_name2));
+ } else {
+ if (params->try_sni)
+ gnutls_server_name_set(session, GNUTLS_NAME_DNS, dns_name2, strlen(dns_name2));
}
if (ext_master_secret_check)