diff options
author | Daiki Ueno <dueno@redhat.com> | 2018-10-12 13:33:13 +0200 |
---|---|---|
committer | Daiki Ueno <dueno@redhat.com> | 2018-11-12 13:26:43 +0100 |
commit | 5c8d543e9554292f22200b91a0595d3dfa26cecf (patch) | |
tree | 7b90d4c485342e00173001ac76ec73c332473039 /src/cli.c | |
parent | 0676e51e8c621add86b1a9ba90b142dd1c3c7060 (diff) | |
download | gnutls-5c8d543e9554292f22200b91a0595d3dfa26cecf.tar.gz |
cli: add --earlydata option
Signed-off-by: Daiki Ueno <dueno@redhat.com>
Diffstat (limited to 'src/cli.c')
-rw-r--r-- | src/cli.c | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -838,6 +838,7 @@ static int try_resume(socket_st * hd) { int ret, socket_flags = SOCKET_FLAG_DONT_PRINT_ERRORS; gnutls_datum_t rdata = {NULL, 0}; + gnutls_datum_t edata = {NULL, 0}; if (gnutls_session_is_resumed(hd->session) == 0) { /* not resumed - obtain the session data */ @@ -867,8 +868,22 @@ static int try_resume(socket_st * hd) if (udp) socket_flags |= SOCKET_FLAG_UDP; - socket_open(hd, hostname, service, OPT_ARG(STARTTLS_PROTO), - socket_flags, CONNECT_MSG, &rdata); + if (HAVE_OPT(EARLYDATA)) { + FILE *fp; + size_t size; + + fp = fopen(OPT_ARG(EARLYDATA), "r"); + if (fp == NULL) { + fprintf(stderr, "could not open %s\n", OPT_ARG(EARLYDATA)); + exit(1); + } + edata.data = (void *) fread_file(fp, &size); + edata.size = size; + fclose(fp); + } + + socket_open3(hd, hostname, service, OPT_ARG(STARTTLS_PROTO), + socket_flags, CONNECT_MSG, &rdata, &edata); printf("- Resume Handshake was completed\n"); if (gnutls_session_is_resumed(hd->session) != 0) @@ -1154,7 +1169,7 @@ int main(int argc, char **argv) } socket_open2(&hd, hostname, service, OPT_ARG(STARTTLS_PROTO), - socket_flags, CONNECT_MSG, NULL, + socket_flags, CONNECT_MSG, NULL, NULL, server_fp, client_fp); hd.verbose = verbose; |