summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2013-07-28 09:22:00 +0200
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2013-07-28 09:23:11 +0200
commitc5ce9f782ba597ddbafd84648d4befaf14745146 (patch)
treec8b1093bc54131c8101db73c8fcc26c6b8fe7d12
parente21b0e082103084d25034f38b4e5aa66c8c2627f (diff)
downloadgnutls-c5ce9f782ba597ddbafd84648d4befaf14745146.tar.gz
test sending and receiving the maximum allowed TLS buffer size.
-rw-r--r--tests/record-sizes.c48
1 files changed, 43 insertions, 5 deletions
diff --git a/tests/record-sizes.c b/tests/record-sizes.c
index 08c8d2b0d0..7c84c5f5fb 100644
--- a/tests/record-sizes.c
+++ b/tests/record-sizes.c
@@ -44,7 +44,9 @@ tls_log_func (int level, const char *str)
/* This test attempts to transfer various sizes using AES-128-CBC.
*/
-#define MAX_BUF 1024
+#define MAX_BUF 16384
+static char b1[MAX_BUF + 1];
+static char buffer[MAX_BUF + 1];
void
doit (void)
@@ -60,8 +62,6 @@ doit (void)
gnutls_session_t client;
int cret = GNUTLS_E_AGAIN, i;
/* Need to enable anonymous KX specifically. */
- char b1[MAX_BUF + 1];
- char buffer[MAX_BUF + 1];
ssize_t ns;
int ret, transferred = 0;
@@ -77,7 +77,7 @@ doit (void)
gnutls_dh_params_import_pkcs3 (dh_params, &p3, GNUTLS_X509_FMT_PEM);
gnutls_anon_set_server_dh_params (s_anoncred, dh_params);
gnutls_init (&server, GNUTLS_SERVER);
- gnutls_priority_set_direct (server, "NONE:+VERS-TLS-ALL:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", NULL);
+ gnutls_priority_set_direct (server, "NONE:+VERS-TLS-ALL:+AES-128-CBC:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", NULL);
gnutls_credentials_set (server, GNUTLS_CRD_ANON, s_anoncred);
gnutls_dh_set_prime_bits (server, 1024);
gnutls_transport_set_push_function (server, server_push);
@@ -87,7 +87,7 @@ doit (void)
/* Init client */
gnutls_anon_allocate_client_credentials (&c_anoncred);
gnutls_init (&client, GNUTLS_CLIENT);
- gnutls_priority_set_direct (client, "NONE:+VERS-TLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-ALL:+ANON-DH", NULL);
+ gnutls_priority_set_direct (client, "NONE:+VERS-TLS-ALL:+CIPHER-ALL:+MAC-ALL:+SIGN-ALL:+COMP-NULL:+ANON-DH", NULL);
gnutls_credentials_set (client, GNUTLS_CRD_ANON, c_anoncred);
gnutls_transport_set_push_function (client, client_push);
gnutls_transport_set_pull_function (client, client_pull);
@@ -98,7 +98,43 @@ doit (void)
if (debug)
success ("Handshake established\n");
+
+ memset(b1, 1, MAX_BUF);
+ /* try the maximum allowed */
+ ret = gnutls_record_send(client, b1, MAX_BUF);
+ if (ret < 0)
+ {
+ fprintf(stderr, "Error sending %d bytes: %s\n", (int)MAX_BUF, gnutls_strerror(ret));
+ exit(1);
+ }
+
+ if (ret != MAX_BUF)
+ {
+ fprintf(stderr, "Couldn't send %d bytes\n", (int)MAX_BUF);
+ exit(1);
+ }
+
+ ret = gnutls_record_recv(server, buffer, MAX_BUF);
+ if (ret < 0)
+ {
+ fprintf(stderr, "Error receiving %d bytes: %s\n", (int)MAX_BUF, gnutls_strerror(ret));
+ exit(1);
+ }
+
+ if (ret != MAX_BUF)
+ {
+ fprintf(stderr, "Couldn't receive %d bytes, received %d\n", (int)MAX_BUF, ret);
+ exit(1);
+ }
+
+ if (memcmp(b1, buffer, MAX_BUF) != 0)
+ {
+ fprintf(stderr, "Buffers do not match!\n");
+ exit(1);
+ }
+
+ /* Try sending various other sizes */
for (i=1;i<128;i++)
{
TRANSFER(client, server, b1, i, buffer, MAX_BUF);
@@ -106,6 +142,8 @@ doit (void)
if (debug)
fputs ("\n", stdout);
+
+
gnutls_bye (client, GNUTLS_SHUT_RDWR);
gnutls_bye (server, GNUTLS_SHUT_RDWR);