| # -*- mode: perl; -*- |
| # Copyright 2016-2016 The OpenSSL Project Authors. All Rights Reserved. |
| # |
| # Licensed under the OpenSSL license (the "License"). You may not use |
| # this file except in compliance with the License. You can obtain a copy |
| # in the file LICENSE in the source distribution or at |
| # https://www.openssl.org/source/license.html |
| |
| |
| ## Test version negotiation |
| |
| use strict; |
| use warnings; |
| |
| package ssltests; |
| |
| |
| our @tests = ( |
| # Default fragment size is 512. |
| { |
| name => "one-fragment-minus-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 511, |
| } |
| }, |
| { |
| name => "one-fragment-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 512, |
| } |
| }, |
| { |
| name => "one-fragment-plus-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 513, |
| } |
| }, |
| { |
| name => "small-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 4 * 1024 + 1, |
| } |
| }, |
| { |
| name => "small-app-data-large-fragment-size", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 4 * 1024 + 1, |
| MaxFragmentSize => 16384, |
| } |
| }, |
| { |
| name => "medium-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 32 * 1024 + 7, |
| } |
| }, |
| # Exceeds the 64kB write buffer size. |
| { |
| name => "medium-plus-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 128 * 1024 - 3, |
| } |
| }, |
| { |
| name => "large-app-data", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 1024 * 1024, |
| } |
| }, |
| { |
| name => "large-app-data-large-fragment-size", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 1024 * 1024, |
| MaxFragmentSize => 16384, |
| } |
| }, |
| { |
| name => "large-app-data-odd-fragment-size", |
| server => { }, |
| client => { }, |
| test => { |
| ApplicationData => 1024 * 1024, |
| MaxFragmentSize => 5 * 1024 - 5, |
| } |
| }, |
| # When the buffer / fragment size ratio is sufficiently large, |
| # multi-buffer code kicks in on some platforms for AES-SHA. The |
| # exact minimum ratio depends on the platform, and is usually |
| # around 4. Since the the test buffer is 64kB, a 4kB fragment is |
| # easily sufficient. |
| # |
| # (We run this test on all platforms though it's only true multibuffer |
| # on some of them.) |
| { |
| name => "large-app-data-aes-sha1-multibuffer", |
| server => { }, |
| client => { |
| CipherString => "AES128-SHA", |
| MaxProtocol => "TLSv1.2" |
| }, |
| test => { |
| ApplicationData => 1024 * 1024, |
| MaxFragmentSize => 4 * 1024, |
| } |
| }, |
| { |
| name => "large-app-data-aes-sha2-multibuffer", |
| server => { }, |
| client => { |
| CipherString => "AES128-SHA256", |
| MaxProtocol => "TLSv1.2" |
| }, |
| test => { |
| ApplicationData => 1024 * 1024, |
| MaxFragmentSize => 4 * 1024, |
| } |
| }, |
| { |
| name => "large-app-data-aes-sha1-multibuffer-odd-fragment", |
| server => { }, |
| client => { |
| CipherString => "AES128-SHA", |
| MaxProtocol => "TLSv1.2" |
| }, |
| test => { |
| ApplicationData => 1024 * 1024 + 3, |
| MaxFragmentSize => 5 * 1024 - 5, |
| } |
| }, |
| { |
| name => "large-app-data-aes-sha2-multibuffer-odd-fragment", |
| server => { }, |
| client => { |
| CipherString => "AES128-SHA256", |
| MaxProtocol => "TLSv1.2" |
| }, |
| test => { |
| ApplicationData => 1024 * 1024 - 3, |
| MaxFragmentSize => 5 * 1024 + 5, |
| } |
| }, |
| # Test that multibuffer-capable code also handles small data correctly. |
| # Here fragment size == app data size < buffer size, |
| # so no multibuffering should happen. |
| { |
| name => "small-app-data-aes-sha1-multibuffer", |
| server => { }, |
| client => { |
| CipherString => "AES128-SHA", |
| MaxProtocol => "TLSv1.2" |
| }, |
| test => { |
| ApplicationData => 4 * 1024, |
| MaxFragmentSize => 4 * 1024, |
| } |
| }, |
| { |
| name => "small-app-data-aes-sha2-multibuffer", |
| server => { }, |
| client => { |
| CipherString => "AES128-SHA256", |
| MaxProtocol => "TLSv1.2" |
| }, |
| test => { |
| ApplicationData => 4 * 1024, |
| MaxFragmentSize => 4 * 1024, |
| } |
| }, |
| ); |