From d0bb004712e67124c361cdf0be2c273f45a44421 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Mon, 11 Apr 2011 00:02:33 +0200 Subject: Combined the safe renegotiation tests with the again-common lib. --- tests/eagain-common.h | 13 +- tests/safe-renegotiation/Makefile.am | 3 +- tests/safe-renegotiation/srn0.c | 181 ++---------------------- tests/safe-renegotiation/srn1.c | 132 ++---------------- tests/safe-renegotiation/srn2.c | 261 +++-------------------------------- tests/safe-renegotiation/srn3.c | 132 ++---------------- tests/safe-renegotiation/srn4.c | 182 ++---------------------- tests/safe-renegotiation/srn5.c | 184 +++--------------------- 8 files changed, 95 insertions(+), 993 deletions(-) (limited to 'tests') diff --git a/tests/eagain-common.h b/tests/eagain-common.h index 473e236c21..d75e78782f 100644 --- a/tests/eagain-common.h +++ b/tests/eagain-common.h @@ -1,7 +1,7 @@ #define min(x,y) ((x)<(y)?(x):(y)) //#define EAGAIN_DEBUG -#define HANDSHAKE(c, s) \ +#define HANDSHAKE_EXPECT(c, s, clierr, serverr) \ sret = cret = GNUTLS_E_AGAIN; \ do \ { \ @@ -14,8 +14,8 @@ sret = gnutls_handshake (s); \ } \ } \ - while (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN); \ - if (cret < 0 || sret < 0) \ + while ((cret == GNUTLS_E_AGAIN || (cret == 0 && sret == GNUTLS_E_AGAIN)) && (sret == GNUTLS_E_AGAIN || (sret == 0 && cret == GNUTLS_E_AGAIN))); \ + if (cret != clierr || sret != serverr) \ { \ fprintf(stderr, "client: %s\n", gnutls_strerror(cret)); \ fprintf(stderr, "server: %s\n", gnutls_strerror(sret)); \ @@ -23,6 +23,9 @@ exit(1); \ } +#define HANDSHAKE(c, s) \ + HANDSHAKE_EXPECT(c,s,0,0) + #define TRANSFER(c, s, msg, msglen, buf, buflen) \ do \ { \ @@ -131,7 +134,7 @@ client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) #ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: Not enough data by server (asked for: %d, have: %d)\n", (int)len, (int)to_client_len); #endif - gnutls_transport_set_global_errno (EAGAIN); + gnutls_transport_set_errno ((gnutls_session_t)tr, EAGAIN); return -1; } @@ -158,7 +161,7 @@ server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) #ifdef EAGAIN_DEBUG fprintf(stderr, "eagain: Not enough data by client (asked for: %d, have: %d)\n", (int)len, (int)to_server_len); #endif - gnutls_transport_set_global_errno (EAGAIN); + gnutls_transport_set_errno ((gnutls_session_t)tr, EAGAIN); return -1; } diff --git a/tests/safe-renegotiation/Makefile.am b/tests/safe-renegotiation/Makefile.am index d6a5593ca6..8b0c65833a 100644 --- a/tests/safe-renegotiation/Makefile.am +++ b/tests/safe-renegotiation/Makefile.am @@ -23,7 +23,8 @@ AM_CPPFLAGS = \ -I$(top_builddir)/lib/includes AM_LDFLAGS = -no-install -LDADD = ../../lib/libgnutls.la $(LTLIBGCRYPT) $(LIBSOCKET) +LDADD = ../libutils.la \ + ../../lib/libgnutls.la $(LTLIBGCRYPT) $(LIBSOCKET) ctests = srn0 srn1 srn2 srn3 srn4 srn5 diff --git a/tests/safe-renegotiation/srn0.c b/tests/safe-renegotiation/srn0.c index 629fd7664b..71839f738d 100644 --- a/tests/safe-renegotiation/srn0.c +++ b/tests/safe-renegotiation/srn0.c @@ -37,6 +37,8 @@ #include #include #include +#include "../eagain-common.h" +#include "../utils.h" static void tls_log_func (int level, const char *str) @@ -44,80 +46,6 @@ tls_log_func (int level, const char *str) fprintf (stderr, "|<%d>| %s", level, str); } -static char *to_server; -static size_t to_server_len; - -static char *to_client; -static size_t to_client_len; - -static ssize_t -client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_client_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_client, len); - - memmove (to_client, to_client + len, to_client_len - len); - to_client_len -= len; - - return len; -} - -static ssize_t -client_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_server_len + len; - char *tmp; - - tmp = realloc (to_server, newlen); - if (!tmp) - abort (); - to_server = tmp; - - memcpy (to_server + to_server_len, data, len); - to_server_len = newlen; - - return len; -} - -static ssize_t -server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_server_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_server, len); - - memmove (to_server, to_server + len, to_server_len - len); - to_server_len -= len; - - return len; -} - -static ssize_t -server_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_client_len + len; - char *tmp; - - tmp = realloc (to_client, newlen); - if (!tmp) - abort (); - to_client = tmp; - - memcpy (to_client + to_client_len, data, len); - to_client_len = newlen; - - return len; -} - static unsigned char server_cert_pem[] = "-----BEGIN CERTIFICATE-----\n" "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" @@ -159,11 +87,8 @@ const gnutls_datum_t server_key = { server_key_pem, sizeof (server_key_pem) }; -int -main (int argc, char *argv[]) +void doit(void) { - int debug_level = argc - 1; - int exit_code = EXIT_SUCCESS; /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; gnutls_session_t server; @@ -176,7 +101,7 @@ main (int argc, char *argv[]) /* General init. */ gnutls_global_init (); gnutls_global_set_log_function (tls_log_func); - gnutls_global_set_log_level (debug_level); + if (debug) gnutls_global_set_log_level (2); /* Init server */ gnutls_certificate_allocate_credentials (&serverx509cred); @@ -188,6 +113,7 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (server, "NORMAL", NULL); gnutls_transport_set_push_function (server, server_push); gnutls_transport_set_pull_function (server, server_pull); + gnutls_transport_set_ptr (server, (gnutls_transport_ptr_t)server); /* Init client */ gnutls_certificate_allocate_credentials (&clientx509cred); @@ -196,53 +122,19 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (client, "NORMAL", NULL); gnutls_transport_set_push_function (client, client_push); gnutls_transport_set_pull_function (client, client_pull); + gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t)client); - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = EXIT_FAILURE; + HANDSHAKE(client, server); if (!gnutls_safe_renegotiation_status (client) || !gnutls_safe_renegotiation_status (server)) { tls_log_func (0, "Session not using safe renegotiation!\n"); - exit_code = EXIT_FAILURE; + exit(1); } sret = gnutls_rehandshake (server); - if (debug_level > 0) + if (debug) { tls_log_func (0, "gnutls_rehandshake (server)...\n"); tls_log_func (0, gnutls_strerror (sret)); @@ -257,52 +149,14 @@ main (int argc, char *argv[]) abort (); } - cret = GNUTLS_E_AGAIN; - sret = GNUTLS_E_AGAIN; - - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = 1; + HANDSHAKE(client, server); if (!gnutls_safe_renegotiation_status (client) || !gnutls_safe_renegotiation_status (server)) { tls_log_func (0, "Rehandshaked session not using safe renegotiation!\n"); - exit_code = EXIT_FAILURE; + exit(1); } gnutls_bye (client, GNUTLS_SHUT_RDWR); @@ -311,20 +165,15 @@ main (int argc, char *argv[]) gnutls_deinit (client); gnutls_deinit (server); - free (to_server); - free (to_client); - gnutls_certificate_free_credentials (serverx509cred); + gnutls_certificate_free_credentials (clientx509cred); gnutls_global_deinit (); - if (debug_level > 0) + if (debug) { - if (exit_code == 0) - puts ("Self-test successful"); - else - puts ("Self-test failed"); + puts ("Self-test successful"); } - return exit_code; + return; } diff --git a/tests/safe-renegotiation/srn1.c b/tests/safe-renegotiation/srn1.c index 2b996b0c94..6907d85164 100644 --- a/tests/safe-renegotiation/srn1.c +++ b/tests/safe-renegotiation/srn1.c @@ -36,6 +36,8 @@ #include #include #include +#include "../eagain-common.h" +#include "../utils.h" static void tls_log_func (int level, const char *str) @@ -43,80 +45,6 @@ tls_log_func (int level, const char *str) fprintf (stderr, "|<%d>| %s", level, str); } -static char *to_server; -static size_t to_server_len; - -static char *to_client; -static size_t to_client_len; - -static ssize_t -client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_client_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_client, len); - - memmove (to_client, to_client + len, to_client_len - len); - to_client_len -= len; - - return len; -} - -static ssize_t -client_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_server_len + len; - char *tmp; - - tmp = realloc (to_server, newlen); - if (!tmp) - abort (); - to_server = tmp; - - memcpy (to_server + to_server_len, data, len); - to_server_len = newlen; - - return len; -} - -static ssize_t -server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_server_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_server, len); - - memmove (to_server, to_server + len, to_server_len - len); - to_server_len -= len; - - return len; -} - -static ssize_t -server_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_client_len + len; - char *tmp; - - tmp = realloc (to_client, newlen); - if (!tmp) - abort (); - to_client = tmp; - - memcpy (to_client + to_client_len, data, len); - to_client_len = newlen; - - return len; -} - static unsigned char server_cert_pem[] = "-----BEGIN CERTIFICATE-----\n" "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" @@ -158,11 +86,8 @@ const gnutls_datum_t server_key = { server_key_pem, sizeof (server_key_pem) }; -int -main (int argc, char *argv[]) +void doit(void) { - int debug_level = argc - 1; - int exit_code = EXIT_SUCCESS; /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; gnutls_session_t server; @@ -175,7 +100,7 @@ main (int argc, char *argv[]) /* General init. */ gnutls_global_init (); gnutls_global_set_log_function (tls_log_func); - gnutls_global_set_log_level (debug_level); + if (debug) gnutls_global_set_log_level (5); /* Init server */ gnutls_certificate_allocate_credentials (&serverx509cred); @@ -187,6 +112,7 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (server, "NORMAL:%SAFE_RENEGOTIATION", NULL); gnutls_transport_set_push_function (server, server_push); gnutls_transport_set_pull_function (server, server_pull); + gnutls_transport_set_ptr (server, (gnutls_transport_ptr_t)server); /* Init client */ gnutls_certificate_allocate_credentials (&clientx509cred); @@ -196,6 +122,7 @@ main (int argc, char *argv[]) NULL); gnutls_transport_set_push_function (client, client_push); gnutls_transport_set_pull_function (client, client_pull); + gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t)client); /* Check that initially no session use the extension. */ if (gnutls_safe_renegotiation_status (server) @@ -205,39 +132,7 @@ main (int argc, char *argv[]) abort (); } - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ((cret == GNUTLS_E_AGAIN || cret == GNUTLS_E_SUCCESS) - && (sret == GNUTLS_E_AGAIN || sret == GNUTLS_E_SUCCESS)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SAFE_RENEGOTIATION_FAILED) - exit_code = EXIT_FAILURE; + HANDSHAKE_EXPECT(client, server, GNUTLS_E_AGAIN, GNUTLS_E_SAFE_RENEGOTIATION_FAILED); gnutls_bye (client, GNUTLS_SHUT_RDWR); gnutls_bye (server, GNUTLS_SHUT_RDWR); @@ -245,20 +140,15 @@ main (int argc, char *argv[]) gnutls_deinit (client); gnutls_deinit (server); - free (to_server); - free (to_client); - gnutls_certificate_free_credentials (serverx509cred); + gnutls_certificate_free_credentials (clientx509cred); gnutls_global_deinit (); - if (debug_level > 0) + if (debug) { - if (exit_code == 0) - puts ("Self-test successful"); - else - puts ("Self-test failed"); + puts ("Self-test successful"); } - return exit_code; + return; } diff --git a/tests/safe-renegotiation/srn2.c b/tests/safe-renegotiation/srn2.c index 8c9d444c6b..d006aaa90a 100644 --- a/tests/safe-renegotiation/srn2.c +++ b/tests/safe-renegotiation/srn2.c @@ -34,6 +34,8 @@ #include #include #include +#include "../eagain-common.h" +#include "../utils.h" static void tls_log_func (int level, const char *str) @@ -41,80 +43,6 @@ tls_log_func (int level, const char *str) fprintf (stderr, "|<%d>| %s", level, str); } -static char *to_server; -static size_t to_server_len; - -static char *to_client; -static size_t to_client_len; - -static ssize_t -client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_client_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_client, len); - - memmove (to_client, to_client + len, to_client_len - len); - to_client_len -= len; - - return len; -} - -static ssize_t -client_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_server_len + len; - char *tmp; - - tmp = realloc (to_server, newlen); - if (!tmp) - abort (); - to_server = tmp; - - memcpy (to_server + to_server_len, data, len); - to_server_len = newlen; - - return len; -} - -static ssize_t -server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_server_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_server, len); - - memmove (to_server, to_server + len, to_server_len - len); - to_server_len -= len; - - return len; -} - -static ssize_t -server_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_client_len + len; - char *tmp; - - tmp = realloc (to_client, newlen); - if (!tmp) - abort (); - to_client = tmp; - - memcpy (to_client + to_client_len, data, len); - to_client_len = newlen; - - return len; -} - static unsigned char server_cert_pem[] = "-----BEGIN CERTIFICATE-----\n" "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" @@ -156,11 +84,8 @@ const gnutls_datum_t server_key = { server_key_pem, sizeof (server_key_pem) }; -int -main (int argc, char *argv[]) +void doit(void) { - int debug_level = argc - 1; - int exit_code = EXIT_SUCCESS; /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; gnutls_session_t server; @@ -173,7 +98,7 @@ main (int argc, char *argv[]) /* General init. */ gnutls_global_init (); gnutls_global_set_log_function (tls_log_func); - gnutls_global_set_log_level (debug_level); + if (debug) gnutls_global_set_log_level (2); /* Init server */ gnutls_certificate_allocate_credentials (&serverx509cred); @@ -185,6 +110,7 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (server, "NORMAL", NULL); gnutls_transport_set_push_function (server, server_push); gnutls_transport_set_pull_function (server, server_pull); + gnutls_transport_set_ptr (server, (gnutls_transport_ptr_t)server); /* Init client */ gnutls_certificate_allocate_credentials (&clientx509cred); @@ -193,6 +119,7 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (client, "NORMAL", NULL); gnutls_transport_set_push_function (client, client_push); gnutls_transport_set_pull_function (client, client_pull); + gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t)client); /* Check that initially no session use the extension. */ if (gnutls_safe_renegotiation_status (server) @@ -202,42 +129,7 @@ main (int argc, char *argv[]) abort (); } - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = EXIT_FAILURE; + HANDSHAKE(client, server); /* Check that both sessions use the extension. */ if (!gnutls_safe_renegotiation_status (server) @@ -248,7 +140,7 @@ main (int argc, char *argv[]) } sret = gnutls_rehandshake (server); - if (debug_level > 0) + if (debug) { tls_log_func (0, "gnutls_rehandshake (server)...\n"); tls_log_func (0, gnutls_strerror (sret)); @@ -263,45 +155,7 @@ main (int argc, char *argv[]) abort (); } - cret = GNUTLS_E_AGAIN; - sret = GNUTLS_E_AGAIN; - - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = 1; + HANDSHAKE(client, server); /* Check that session still use the extension. */ if (!gnutls_safe_renegotiation_status (server) @@ -316,7 +170,7 @@ main (int argc, char *argv[]) gnutls_safe_negotiation_set_initial (server, 0); */ sret = gnutls_rehandshake (server); - if (debug_level > 0) + if (debug) { tls_log_func (0, "gnutls_rehandshake (server)...\n"); tls_log_func (0, gnutls_strerror (sret)); @@ -331,51 +185,13 @@ main (int argc, char *argv[]) abort (); } - cret = GNUTLS_E_AGAIN; - sret = GNUTLS_E_AGAIN; - - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = 1; + HANDSHAKE(client, server); /* Check that disabling the extension will break rehandshakes. gnutls_safe_renegotiation_set (client, 0); */ sret = gnutls_rehandshake (server); - if (debug_level > 0) + if (debug) { tls_log_func (0, "gnutls_rehandshake (server)...\n"); tls_log_func (0, gnutls_strerror (sret)); @@ -390,45 +206,7 @@ main (int argc, char *argv[]) abort (); } - cret = GNUTLS_E_AGAIN; - sret = GNUTLS_E_AGAIN; - - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = 1; + HANDSHAKE(client, server); gnutls_bye (client, GNUTLS_SHUT_RDWR); gnutls_bye (server, GNUTLS_SHUT_RDWR); @@ -436,20 +214,15 @@ main (int argc, char *argv[]) gnutls_deinit (client); gnutls_deinit (server); - free (to_server); - free (to_client); - gnutls_certificate_free_credentials (serverx509cred); + gnutls_certificate_free_credentials (clientx509cred); gnutls_global_deinit (); - if (debug_level > 0) + if (debug) { - if (exit_code == 0) - puts ("Self-test successful"); - else - puts ("Self-test failed"); + puts ("Self-test successful"); } - return exit_code; + return; } diff --git a/tests/safe-renegotiation/srn3.c b/tests/safe-renegotiation/srn3.c index 71f0ac31ca..45a89802fa 100644 --- a/tests/safe-renegotiation/srn3.c +++ b/tests/safe-renegotiation/srn3.c @@ -36,6 +36,8 @@ #include #include #include +#include "../eagain-common.h" +#include "../utils.h" static void tls_log_func (int level, const char *str) @@ -43,80 +45,6 @@ tls_log_func (int level, const char *str) fprintf (stderr, "|<%d>| %s", level, str); } -static char *to_server; -static size_t to_server_len; - -static char *to_client; -static size_t to_client_len; - -static ssize_t -client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_client_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_client, len); - - memmove (to_client, to_client + len, to_client_len - len); - to_client_len -= len; - - return len; -} - -static ssize_t -client_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_server_len + len; - char *tmp; - - tmp = realloc (to_server, newlen); - if (!tmp) - abort (); - to_server = tmp; - - memcpy (to_server + to_server_len, data, len); - to_server_len = newlen; - - return len; -} - -static ssize_t -server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_server_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_server, len); - - memmove (to_server, to_server + len, to_server_len - len); - to_server_len -= len; - - return len; -} - -static ssize_t -server_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_client_len + len; - char *tmp; - - tmp = realloc (to_client, newlen); - if (!tmp) - abort (); - to_client = tmp; - - memcpy (to_client + to_client_len, data, len); - to_client_len = newlen; - - return len; -} - static unsigned char server_cert_pem[] = "-----BEGIN CERTIFICATE-----\n" "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" @@ -158,11 +86,8 @@ const gnutls_datum_t server_key = { server_key_pem, sizeof (server_key_pem) }; -int -main (int argc, char *argv[]) +void doit(void) { - int debug_level = argc - 1; - int exit_code = EXIT_SUCCESS; /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; gnutls_session_t server; @@ -175,7 +100,7 @@ main (int argc, char *argv[]) /* General init. */ gnutls_global_init (); gnutls_global_set_log_function (tls_log_func); - gnutls_global_set_log_level (debug_level); + if (debug) gnutls_global_set_log_level (2); /* Init server */ gnutls_certificate_allocate_credentials (&serverx509cred); @@ -188,6 +113,7 @@ main (int argc, char *argv[]) NULL); gnutls_transport_set_push_function (server, server_push); gnutls_transport_set_pull_function (server, server_pull); + gnutls_transport_set_ptr (server, (gnutls_transport_ptr_t)server); /* Init client */ gnutls_certificate_allocate_credentials (&clientx509cred); @@ -196,6 +122,7 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (client, "NORMAL:%SAFE_RENEGOTIATION", NULL); gnutls_transport_set_push_function (client, client_push); gnutls_transport_set_pull_function (client, client_pull); + gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t)client); /* Check that initially no session use the extension. */ if (gnutls_safe_renegotiation_status (server) @@ -205,39 +132,7 @@ main (int argc, char *argv[]) abort (); } - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ((cret == GNUTLS_E_AGAIN || cret == GNUTLS_E_SUCCESS) - && (sret == GNUTLS_E_AGAIN || sret == GNUTLS_E_SUCCESS)); - - if (cret != GNUTLS_E_SAFE_RENEGOTIATION_FAILED && sret != GNUTLS_E_SUCCESS) - exit_code = EXIT_FAILURE; + HANDSHAKE_EXPECT(client, server, GNUTLS_E_SAFE_RENEGOTIATION_FAILED, GNUTLS_E_AGAIN); gnutls_bye (client, GNUTLS_SHUT_RDWR); gnutls_bye (server, GNUTLS_SHUT_RDWR); @@ -245,20 +140,15 @@ main (int argc, char *argv[]) gnutls_deinit (client); gnutls_deinit (server); - free (to_server); - free (to_client); - gnutls_certificate_free_credentials (serverx509cred); + gnutls_certificate_free_credentials (clientx509cred); gnutls_global_deinit (); - if (debug_level > 0) + if (debug) { - if (exit_code == 0) - puts ("Self-test successful"); - else - puts ("Self-test failed"); + puts ("Self-test successful"); } - return exit_code; + return; } diff --git a/tests/safe-renegotiation/srn4.c b/tests/safe-renegotiation/srn4.c index 8ab1bb2ea6..aa8ede4313 100644 --- a/tests/safe-renegotiation/srn4.c +++ b/tests/safe-renegotiation/srn4.c @@ -36,6 +36,8 @@ #include #include #include +#include "../eagain-common.h" +#include "../utils.h" static void tls_log_func (int level, const char *str) @@ -43,80 +45,6 @@ tls_log_func (int level, const char *str) fprintf (stderr, "|<%d>| %s", level, str); } -static char *to_server; -static size_t to_server_len; - -static char *to_client; -static size_t to_client_len; - -static ssize_t -client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_client_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_client, len); - - memmove (to_client, to_client + len, to_client_len - len); - to_client_len -= len; - - return len; -} - -static ssize_t -client_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_server_len + len; - char *tmp; - - tmp = realloc (to_server, newlen); - if (!tmp) - abort (); - to_server = tmp; - - memcpy (to_server + to_server_len, data, len); - to_server_len = newlen; - - return len; -} - -static ssize_t -server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_server_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_server, len); - - memmove (to_server, to_server + len, to_server_len - len); - to_server_len -= len; - - return len; -} - -static ssize_t -server_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_client_len + len; - char *tmp; - - tmp = realloc (to_client, newlen); - if (!tmp) - abort (); - to_client = tmp; - - memcpy (to_client + to_client_len, data, len); - to_client_len = newlen; - - return len; -} - static unsigned char server_cert_pem[] = "-----BEGIN CERTIFICATE-----\n" "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" @@ -158,11 +86,8 @@ const gnutls_datum_t server_key = { server_key_pem, sizeof (server_key_pem) }; -int -main (int argc, char *argv[]) +void doit(void) { - int debug_level = argc - 1; - int exit_code = EXIT_SUCCESS; /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; gnutls_session_t server; @@ -175,7 +100,7 @@ main (int argc, char *argv[]) /* General init. */ gnutls_global_init (); gnutls_global_set_log_function (tls_log_func); - gnutls_global_set_log_level (debug_level); + if (debug) gnutls_global_set_log_level (2); /* Init server */ gnutls_certificate_allocate_credentials (&serverx509cred); @@ -187,6 +112,7 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (server, "NORMAL", NULL); gnutls_transport_set_push_function (server, server_push); gnutls_transport_set_pull_function (server, server_pull); + gnutls_transport_set_ptr (server, (gnutls_transport_ptr_t)server); /* Init client */ gnutls_certificate_allocate_credentials (&clientx509cred); @@ -196,53 +122,19 @@ main (int argc, char *argv[]) NULL); gnutls_transport_set_push_function (client, client_push); gnutls_transport_set_pull_function (client, client_pull); + gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t)client); - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = EXIT_FAILURE; + HANDSHAKE(client, server); if (gnutls_safe_renegotiation_status (client) || gnutls_safe_renegotiation_status (server)) { tls_log_func (0, "Session using safe renegotiation but shouldn't!\n"); - exit_code = EXIT_FAILURE; + exit(1); } sret = gnutls_rehandshake (server); - if (debug_level > 0) + if (debug) { tls_log_func (0, "gnutls_rehandshake (server)...\n"); tls_log_func (0, gnutls_strerror (sret)); @@ -257,53 +149,14 @@ main (int argc, char *argv[]) abort (); } - cret = GNUTLS_E_AGAIN; - sret = GNUTLS_E_AGAIN; - - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_AGAIN - && sret == GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_AGAIN && sret != GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED) - exit_code = 1; + HANDSHAKE_EXPECT(client, server, GNUTLS_E_AGAIN, GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED); if (gnutls_safe_renegotiation_status (client) || gnutls_safe_renegotiation_status (server)) { tls_log_func (0, "Rehandshaked session not using safe renegotiation!\n"); - exit_code = EXIT_FAILURE; + exit(1); } gnutls_bye (client, GNUTLS_SHUT_RDWR); @@ -312,20 +165,15 @@ main (int argc, char *argv[]) gnutls_deinit (client); gnutls_deinit (server); - free (to_server); - free (to_client); - gnutls_certificate_free_credentials (serverx509cred); + gnutls_certificate_free_credentials (clientx509cred); gnutls_global_deinit (); - if (debug_level > 0) + if (debug) { - if (exit_code == 0) - puts ("Self-test successful"); - else - puts ("Self-test failed"); + puts ("Self-test successful"); } - return exit_code; + return; } diff --git a/tests/safe-renegotiation/srn5.c b/tests/safe-renegotiation/srn5.c index 2eb1975143..569d34cc7a 100644 --- a/tests/safe-renegotiation/srn5.c +++ b/tests/safe-renegotiation/srn5.c @@ -37,6 +37,8 @@ #include #include #include +#include "../eagain-common.h" +#include "../utils.h" static void tls_log_func (int level, const char *str) @@ -44,80 +46,6 @@ tls_log_func (int level, const char *str) fprintf (stderr, "|<%d>| %s", level, str); } -static char *to_server; -static size_t to_server_len; - -static char *to_client; -static size_t to_client_len; - -static ssize_t -client_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_client_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_client, len); - - memmove (to_client, to_client + len, to_client_len - len); - to_client_len -= len; - - return len; -} - -static ssize_t -client_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_server_len + len; - char *tmp; - - tmp = realloc (to_server, newlen); - if (!tmp) - abort (); - to_server = tmp; - - memcpy (to_server + to_server_len, data, len); - to_server_len = newlen; - - return len; -} - -static ssize_t -server_pull (gnutls_transport_ptr_t tr, void *data, size_t len) -{ - if (to_server_len < len) - { - gnutls_transport_set_global_errno (EAGAIN); - return -1; - } - - memcpy (data, to_server, len); - - memmove (to_server, to_server + len, to_server_len - len); - to_server_len -= len; - - return len; -} - -static ssize_t -server_push (gnutls_transport_ptr_t tr, const void *data, size_t len) -{ - size_t newlen = to_client_len + len; - char *tmp; - - tmp = realloc (to_client, newlen); - if (!tmp) - abort (); - to_client = tmp; - - memcpy (to_client + to_client_len, data, len); - to_client_len = newlen; - - return len; -} - static unsigned char server_cert_pem[] = "-----BEGIN CERTIFICATE-----\n" "MIICVjCCAcGgAwIBAgIERiYdMTALBgkqhkiG9w0BAQUwGTEXMBUGA1UEAxMOR251\n" @@ -159,11 +87,8 @@ const gnutls_datum_t server_key = { server_key_pem, sizeof (server_key_pem) }; -int -main (int argc, char *argv[]) +void doit(void) { - int debug_level = argc - 1; - int exit_code = EXIT_SUCCESS; /* Server stuff. */ gnutls_certificate_credentials_t serverx509cred; gnutls_session_t server; @@ -176,7 +101,7 @@ main (int argc, char *argv[]) /* General init. */ gnutls_global_init (); gnutls_global_set_log_function (tls_log_func); - gnutls_global_set_log_level (debug_level); + if (debug) gnutls_global_set_log_level (2); /* Init server */ gnutls_certificate_allocate_credentials (&serverx509cred); @@ -189,6 +114,7 @@ main (int argc, char *argv[]) NULL); gnutls_transport_set_push_function (server, server_push); gnutls_transport_set_pull_function (server, server_pull); + gnutls_transport_set_ptr (server, (gnutls_transport_ptr_t)server); /* Init client */ gnutls_certificate_allocate_credentials (&clientx509cred); @@ -197,58 +123,24 @@ main (int argc, char *argv[]) gnutls_priority_set_direct (client, "NORMAL", NULL); gnutls_transport_set_push_function (client, client_push); gnutls_transport_set_pull_function (client, client_pull); + gnutls_transport_set_ptr (client, (gnutls_transport_ptr_t)client); - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(cret == GNUTLS_E_SUCCESS && sret == GNUTLS_E_SUCCESS) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (cret != GNUTLS_E_SUCCESS && sret != GNUTLS_E_SUCCESS) - exit_code = EXIT_FAILURE; + HANDSHAKE(client, server); if (gnutls_safe_renegotiation_status (client)) { tls_log_func (0, "Client thinks it is using safe renegotiation!\n"); - exit_code = EXIT_FAILURE; + exit(1); } if (gnutls_safe_renegotiation_status (server)) { tls_log_func (0, "Server thinks it is using safe renegotiation!\n"); - exit_code = EXIT_FAILURE; + exit(1); } sret = gnutls_rehandshake (server); - if (debug_level > 0) + if (debug) { tls_log_func (0, "gnutls_rehandshake (server)...\n"); tls_log_func (0, gnutls_strerror (sret)); @@ -263,53 +155,14 @@ main (int argc, char *argv[]) abort (); } - cret = GNUTLS_E_AGAIN; - sret = GNUTLS_E_AGAIN; - - do - { - static int max_iter = 0; - if (max_iter++ > 10) - abort (); - - if (cret == GNUTLS_E_AGAIN) - { - cret = gnutls_handshake (client); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (client)...\n"); - tls_log_func (0, gnutls_strerror (cret)); - tls_log_func (0, "\n"); - } - } - - if (sret == GNUTLS_E_AGAIN) - { - sret = gnutls_handshake (server); - if (debug_level > 0) - { - tls_log_func (0, "second gnutls_handshake (server)...\n"); - tls_log_func (0, gnutls_strerror (sret)); - tls_log_func (0, "\n"); - } - } - } - while ( - /* Not done: */ - !(sret == GNUTLS_E_AGAIN - && cret == GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED) - /* No error: */ - && (cret == GNUTLS_E_AGAIN || sret == GNUTLS_E_AGAIN)); - - if (sret != GNUTLS_E_AGAIN && cret != GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED) - exit_code = 1; + HANDSHAKE_EXPECT(client, server, GNUTLS_E_UNSAFE_RENEGOTIATION_DENIED, GNUTLS_E_AGAIN); if (gnutls_safe_renegotiation_status (client) || gnutls_safe_renegotiation_status (server)) { tls_log_func (0, "Rehandshaked session not using safe renegotiation!\n"); - exit_code = EXIT_FAILURE; + exit(1); } gnutls_bye (client, GNUTLS_SHUT_RDWR); @@ -318,20 +171,15 @@ main (int argc, char *argv[]) gnutls_deinit (client); gnutls_deinit (server); - free (to_server); - free (to_client); - gnutls_certificate_free_credentials (serverx509cred); + gnutls_certificate_free_credentials (clientx509cred); gnutls_global_deinit (); - if (debug_level > 0) + if (debug) { - if (exit_code == 0) - puts ("Self-test successful"); - else - puts ("Self-test failed"); + puts ("Self-test successful"); } - return exit_code; + return; } -- cgit v1.2.1