# -*- 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, } }, );