# -*- mode: perl; -*-
# Copyright 2017 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


## SSL test configurations

package ssltests;

our @tests = (
    {
        name => "default",
        server => { "RecordPadding" => 64,
	            "MaxProtocol" => "TLSv1.3",
                    "MinProtocol" => "TLSv1.3" },
        client => { "RecordPadding" => 11,
	            "MaxProtocol" => "TLSv1.3",
                    "MinProtocol" => "TLSv1.3" },
        test   => { "ExpectedResult" => "Success" },
    },
);
