1*b0d17251Schristos# -*- mode: perl; -*- 2*b0d17251Schristos# Copyright 2017-2020 The OpenSSL Project Authors. All Rights Reserved. 3*b0d17251Schristos# 4*b0d17251Schristos# Licensed under the Apache License 2.0 (the "License"). You may not use 5*b0d17251Schristos# this file except in compliance with the License. You can obtain a copy 6*b0d17251Schristos# in the file LICENSE in the source distribution or at 7*b0d17251Schristos# https://www.openssl.org/source/license.html 8*b0d17251Schristos 9*b0d17251Schristos 10*b0d17251Schristos## Test version negotiation 11*b0d17251Schristos 12*b0d17251Schristosuse strict; 13*b0d17251Schristosuse warnings; 14*b0d17251Schristos 15*b0d17251Schristospackage ssltests; 16*b0d17251Schristosuse OpenSSL::Test::Utils; 17*b0d17251Schristos 18*b0d17251Schristosour $fips_mode; 19*b0d17251Schristos 20*b0d17251Schristosour @tests = ( 21*b0d17251Schristos { 22*b0d17251Schristos name => "cipher-server-1", 23*b0d17251Schristos server => { 24*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 25*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256", 26*b0d17251Schristos }, 27*b0d17251Schristos client => { 28*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 29*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384" 30*b0d17251Schristos }, 31*b0d17251Schristos test => { 32*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES256-SHA384", 33*b0d17251Schristos }, 34*b0d17251Schristos }, 35*b0d17251Schristos { 36*b0d17251Schristos name => "cipher-server-2", 37*b0d17251Schristos server => { 38*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 39*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256", 40*b0d17251Schristos }, 41*b0d17251Schristos client => { 42*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 43*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES128-SHA256" 44*b0d17251Schristos }, 45*b0d17251Schristos test => { 46*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES128-SHA256", 47*b0d17251Schristos }, 48*b0d17251Schristos }, 49*b0d17251Schristos { 50*b0d17251Schristos name => "cipher-server-client-list", 51*b0d17251Schristos server => { 52*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 53*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256", 54*b0d17251Schristos }, 55*b0d17251Schristos client => { 56*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 57*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384", 58*b0d17251Schristos }, 59*b0d17251Schristos test => { 60*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES128-SHA256", 61*b0d17251Schristos }, 62*b0d17251Schristos }, 63*b0d17251Schristos { 64*b0d17251Schristos name => "cipher-server-pref-1", 65*b0d17251Schristos server => { 66*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 67*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256", 68*b0d17251Schristos "Options" => "ServerPreference", 69*b0d17251Schristos }, 70*b0d17251Schristos client => { 71*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 72*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384" 73*b0d17251Schristos }, 74*b0d17251Schristos test => { 75*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES256-SHA384", 76*b0d17251Schristos }, 77*b0d17251Schristos }, 78*b0d17251Schristos { 79*b0d17251Schristos name => "cipher-server-pref-2", 80*b0d17251Schristos server => { 81*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 82*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256", 83*b0d17251Schristos "Options" => "ServerPreference", 84*b0d17251Schristos }, 85*b0d17251Schristos client => { 86*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 87*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES128-SHA256" 88*b0d17251Schristos }, 89*b0d17251Schristos test => { 90*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES128-SHA256", 91*b0d17251Schristos }, 92*b0d17251Schristos }, 93*b0d17251Schristos { 94*b0d17251Schristos name => "cipher-server-pref-client-list", 95*b0d17251Schristos server => { 96*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 97*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256", 98*b0d17251Schristos "Options" => "ServerPreference", 99*b0d17251Schristos }, 100*b0d17251Schristos client => { 101*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 102*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384", 103*b0d17251Schristos }, 104*b0d17251Schristos test => { 105*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES256-SHA384", 106*b0d17251Schristos }, 107*b0d17251Schristos }, 108*b0d17251Schristos { 109*b0d17251Schristos name => "cipher-server-pref-not-mobile", 110*b0d17251Schristos server => { 111*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 112*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-CHACHA20-POLY1305", 113*b0d17251Schristos "Options" => "ServerPreference", 114*b0d17251Schristos }, 115*b0d17251Schristos client => { 116*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 117*b0d17251Schristos "CipherString" => "ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384", 118*b0d17251Schristos }, 119*b0d17251Schristos test => { 120*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES256-SHA384", 121*b0d17251Schristos }, 122*b0d17251Schristos }, 123*b0d17251Schristos { 124*b0d17251Schristos name => "cipher-server-pref-mobile", 125*b0d17251Schristos server => { 126*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 127*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-CHACHA20-POLY1305", 128*b0d17251Schristos "Options" => "ServerPreference,PrioritizeChaCha", 129*b0d17251Schristos }, 130*b0d17251Schristos client => { 131*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 132*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-CHACHA20-POLY1305", 133*b0d17251Schristos }, 134*b0d17251Schristos test => { 135*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-AES256-SHA384", 136*b0d17251Schristos }, 137*b0d17251Schristos }, 138*b0d17251Schristos); 139*b0d17251Schristos 140*b0d17251Schristosmy @tests_poly1305 = ( 141*b0d17251Schristos { 142*b0d17251Schristos name => "cipher-server-pref-mobile2", 143*b0d17251Schristos server => { 144*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 145*b0d17251Schristos "CipherString" => "ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-CHACHA20-POLY1305", 146*b0d17251Schristos "Options" => "ServerPreference,PrioritizeChaCha", 147*b0d17251Schristos }, 148*b0d17251Schristos client => { 149*b0d17251Schristos "MaxProtocol" => "TLSv1.2", 150*b0d17251Schristos "CipherString" => "ECDHE-RSA-CHACHA20-POLY1305:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA384", 151*b0d17251Schristos }, 152*b0d17251Schristos test => { 153*b0d17251Schristos "ExpectedCipher" => "ECDHE-RSA-CHACHA20-POLY1305", 154*b0d17251Schristos }, 155*b0d17251Schristos }, 156*b0d17251Schristos); 157*b0d17251Schristos 158*b0d17251Schristospush @tests, @tests_poly1305 159*b0d17251Schristos unless disabled("poly1305") || disabled("chacha") || $fips_mode; 160