Blame tests/profile-tests.sh

Packit aea12f
#!/bin/sh
Packit aea12f
Packit aea12f
# Copyright (C) 2019 Red Hat, Inc.
Packit aea12f
#
Packit aea12f
# Author: Nikos Mavrogiannopoulos
Packit aea12f
#
Packit aea12f
# This file is part of GnuTLS.
Packit aea12f
#
Packit aea12f
# GnuTLS is free software; you can redistribute it and/or modify it
Packit aea12f
# under the terms of the GNU General Public License as published by the
Packit aea12f
# Free Software Foundation; either version 3 of the License, or (at
Packit aea12f
# your option) any later version.
Packit aea12f
#
Packit aea12f
# GnuTLS is distributed in the hope that it will be useful, but
Packit aea12f
# WITHOUT ANY WARRANTY; without even the implied warranty of
Packit aea12f
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit aea12f
# General Public License for more details.
Packit aea12f
#
Packit aea12f
# You should have received a copy of the GNU Lesser General Public License
Packit aea12f
# along with this program.  If not, see <https://www.gnu.org/licenses/>
Packit aea12f
#
Packit aea12f
Packit aea12f
# This program tests whether the profile keywords work as expected
Packit aea12f
Packit aea12f
srcdir="${srcdir:-.}"
Packit aea12f
SERV="${SERV:-../src/gnutls-serv${EXEEXT}}"
Packit aea12f
CLI="${CLI:-../src/gnutls-cli${EXEEXT}}"
Packit aea12f
TMPFILE=config.$$.tmp
Packit aea12f
export GNUTLS_SYSTEM_PRIORITY_FAIL_ON_INVALID=1
Packit aea12f
Packit aea12f
if ! test -x "${SERV}"; then
Packit aea12f
	exit 77
Packit aea12f
fi
Packit aea12f
Packit aea12f
if ! test -x "${CLI}"; then
Packit aea12f
	exit 77
Packit aea12f
fi
Packit aea12f
Packit aea12f
if test "${WINDIR}" != ""; then
Packit aea12f
	exit 77
Packit aea12f
fi
Packit aea12f
Packit aea12f
. "${srcdir}/scripts/common.sh"
Packit aea12f
Packit aea12f
CAFILE="./profile-ca.$$.tmp"
Packit aea12f
CERT="./profile-cert.$$.tmp"
Packit aea12f
Packit aea12f
Packit aea12f
echo "Testing with a 256 bit ECDSA key"
Packit aea12f
Packit aea12f
cat >${CAFILE} <<_EOF_
Packit aea12f
-----BEGIN CERTIFICATE-----
Packit aea12f
MIIBZjCCAQugAwIBAgIUT/9x+s6cBhBHWoZH5fBi9c0aBPswCgYIKoZIzj0EAwIw
Packit aea12f
DzENMAsGA1UEAxMEQ0EtMDAgFw0xOTA1MjAxMzAxNTdaGA85OTk5MTIzMTIzNTk1
Packit aea12f
OVowDzENMAsGA1UEAxMEQ0EtMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI7d
Packit aea12f
qggkXNbYfXi5rMqdvvX26GJ02A63B5sueaS0w1LITLeMb0mhx4trpXMkJ3lr05lY
Packit aea12f
JCfr6sUTAlYLMBLZJ+ajQzBBMA8GA1UdEwEB/wQFMAMBAf8wDwYDVR0PAQH/BAUD
Packit aea12f
AwcGADAdBgNVHQ4EFgQUUkk7xPS5Uf53q8YLEhz5KGqeZH0wCgYIKoZIzj0EAwID
Packit aea12f
SQAwRgIhAKL/lPu6hOTwA/FfB+dMkkVeeZA+6CeXgbnxeA6HXy3bAiEAvO3+1VhR
Packit aea12f
RIHc3JBuIsLlrwaovXAZHgXNGV2WalixDHI=
Packit aea12f
-----END CERTIFICATE-----
Packit aea12f
_EOF_
Packit aea12f
cat >${CERT} <<_EOF_
Packit aea12f
-----BEGIN CERTIFICATE-----
Packit aea12f
MIIBnTCCAUOgAwIBAgIUUoqE4mD73XmLCryaMad6AXl6TjAwCgYIKoZIzj0EAwIw
Packit aea12f
DzENMAsGA1UEAxMEQ0EtMDAgFw0xOTA1MjAxMzAxNTdaGA85OTk5MTIzMTIzNTk1
Packit aea12f
OVowEzERMA8GA1UEAxMIc2VydmVyLTEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
Packit aea12f
AAScHgQMZCm5GLjGs64tN8hmK+KmDOTBU0fyqc9Tle6WjgFFBzPeHv8vLcrp5HTI
Packit aea12f
mNtKFNCaLN73r9h8xk3qG2pno3cwdTAMBgNVHRMBAf8EAjAAMBQGA1UdEQQNMAuC
Packit aea12f
CWxvY2FsaG9zdDAPBgNVHQ8BAf8EBQMDB4AAMB0GA1UdDgQWBBRpzYoZdeLYgscj
Packit aea12f
yokMBbda3FnghzAfBgNVHSMEGDAWgBRSSTvE9LlR/nerxgsSHPkoap5kfTAKBggq
Packit aea12f
hkjOPQQDAgNIADBFAiATJTdJ176UocB1BGDTTwJAuNKurPFZzlEaeYHS3tetXAIh
Packit aea12f
AP/RStdc8DV/AtHZOF1/FF3fB/tS3d+vb2f0QsTbcl5f
Packit aea12f
-----END CERTIFICATE-----
Packit aea12f
-----BEGIN EC PRIVATE KEY-----
Packit aea12f
MHcCAQEEIG5Gt+KTDxw5cevzwL0Sfo2AJZNeVtu3GHSnpICvsSiBoAoGCCqGSM49
Packit aea12f
AwEHoUQDQgAEnB4EDGQpuRi4xrOuLTfIZivipgzkwVNH8qnPU5Xulo4BRQcz3h7/
Packit aea12f
Ly3K6eR0yJjbShTQmize96/YfMZN6htqZw==
Packit aea12f
-----END EC PRIVATE KEY-----
Packit aea12f
_EOF_
Packit aea12f
KEY="${CERT}"
Packit aea12f
Packit aea12f
eval "${GETPORT}"
Packit aea12f
launch_server $$ --echo --priority "NORMAL" --x509keyfile ${KEY} --x509certfile ${CERT}
Packit aea12f
PID=$!
Packit aea12f
wait_server ${PID}
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_VERY_WEAK --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (1)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_LOW --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (2)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_LEGACY --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (3)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_HIGH --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (4)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_ULTRA --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null &&
Packit aea12f
	fail ${PID} "expected connection to fail (1)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_FUTURE --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null &&
Packit aea12f
	fail ${PID} "expected connection to fail (2)"
Packit aea12f
Packit aea12f
kill ${PID}
Packit aea12f
wait
Packit aea12f
Packit aea12f
Packit aea12f
echo "Testing with a 384 bit ECDSA key"
Packit aea12f
Packit aea12f
cat >${CAFILE} <<_EOF_
Packit aea12f
-----BEGIN CERTIFICATE-----
Packit aea12f
MIIBojCCASigAwIBAgIUFMelLI8WwXyoyKjZGXXXcLb4N1EwCgYIKoZIzj0EAwMw
Packit aea12f
DzENMAsGA1UEAxMEQ0EtMDAgFw0xOTA1MjAxMzA2MDNaGA85OTk5MTIzMTIzNTk1
Packit aea12f
OVowDzENMAsGA1UEAxMEQ0EtMDB2MBAGByqGSM49AgEGBSuBBAAiA2IABNxXKt1I
Packit aea12f
dpBTxQ5oefACUoUgdEwLNkbrjMeEYbB1Wz9d5Uk9nJPjQOGx85ct3FysauMxzBGy
Packit aea12f
BKnBEYViamZiffXu3zzNlIZY+tCbc3MUqs6q60CuNIw4UjakKhgD6II2MKNDMEEw
Packit aea12f
DwYDVR0TAQH/BAUwAwEB/zAPBgNVHQ8BAf8EBQMDBwYAMB0GA1UdDgQWBBQJ9QXM
Packit aea12f
rPF8/z2VviCfhSp2ezf1AjAKBggqhkjOPQQDAwNoADBlAjEA5nmuJqRQFLgHYnN5
Packit aea12f
MRmMfT+TvkLL+MPBo9lK8cbFzweV/PdySLRKNylOH4y70UyzAjBk3kFH7KC1AGMz
Packit aea12f
+A87+Rx+7BHOIdKIp91wx8LhMIdbeX9yi3w6YRsjHoLxKtJ8FYE=
Packit aea12f
-----END CERTIFICATE-----
Packit aea12f
_EOF_
Packit aea12f
cat >${CERT} <<_EOF_
Packit aea12f
-----BEGIN CERTIFICATE-----
Packit aea12f
MIIB2DCCAWCgAwIBAgIUJiHZy9J/MQzCJPjaP3Zy+JTXHgowCgYIKoZIzj0EAwMw
Packit aea12f
DzENMAsGA1UEAxMEQ0EtMDAgFw0xOTA1MjAxMzA2MDNaGA85OTk5MTIzMTIzNTk1
Packit aea12f
OVowEzERMA8GA1UEAxMIc2VydmVyLTEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAATP
Packit aea12f
agsLKT6MLGFsxWyBjDmyrfcAreBZtGDe9tS8jYItbM8y/ulvjCnwW/dwmVBe6UKX
Packit aea12f
n7WIJ7nxvp/j0k59TwpMxfpSn51NhiaViMQ4ZxA34qm+H3gUl8r1GC9I/EPTYe2j
Packit aea12f
dzB1MAwGA1UdEwEB/wQCMAAwFAYDVR0RBA0wC4IJbG9jYWxob3N0MA8GA1UdDwEB
Packit aea12f
/wQFAwMHgAAwHQYDVR0OBBYEFO2V2sn+n3Kj0sA2leiLp/RQDmt/MB8GA1UdIwQY
Packit aea12f
MBaAFAn1Bcys8Xz/PZW+IJ+FKnZ7N/UCMAoGCCqGSM49BAMDA2YAMGMCL37ZZOM0
Packit aea12f
fKI8jzlZRF64IOB/hVbvMD5WOMqFN/M8BjbPSywuRy9/JIq0KiFw3IKUAjAJZSsJ
Packit aea12f
fd8/9po81LJwyfUF/fTwPa7CNExb4BoDRtDDc7s/ciXI/13rxwkJnlAytwI=
Packit aea12f
-----END CERTIFICATE-----
Packit aea12f
-----BEGIN EC PRIVATE KEY-----
Packit aea12f
MIGlAgEBBDEAtrbWqGFyxd+qLlU0VHGvS5CpuAg0fPvODXzu8qHGREvxMYJL5d0I
Packit aea12f
YfU7emquAuq/oAcGBSuBBAAioWQDYgAEz2oLCyk+jCxhbMVsgYw5sq33AK3gWbRg
Packit aea12f
3vbUvI2CLWzPMv7pb4wp8Fv3cJlQXulCl5+1iCe58b6f49JOfU8KTMX6Up+dTYYm
Packit aea12f
lYjEOGcQN+Kpvh94FJfK9RgvSPxD02Ht
Packit aea12f
-----END EC PRIVATE KEY-----
Packit aea12f
_EOF_
Packit aea12f
KEY="${CERT}"
Packit aea12f
Packit aea12f
eval "${GETPORT}"
Packit aea12f
launch_server $$ --echo --priority "NORMAL" --x509keyfile ${KEY} --x509certfile ${CERT}
Packit aea12f
PID=$!
Packit aea12f
wait_server ${PID}
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_VERY_WEAK --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (1)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_LOW --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (2)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_LEGACY --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (3)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_HIGH --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (4)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_ULTRA --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (5)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_FUTURE --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null &&
Packit aea12f
	fail ${PID} "expected connection to fail (1)"
Packit aea12f
Packit aea12f
kill ${PID}
Packit aea12f
wait
Packit aea12f
Packit aea12f
echo "Testing with a 521 bit ECDSA key"
Packit aea12f
Packit aea12f
cat >${CAFILE} <<_EOF_
Packit aea12f
-----BEGIN CERTIFICATE-----
Packit aea12f
MIIB7TCCAU6gAwIBAgIUW9MXlkeIARoHEeP+DmgMfSOh9xkwCgYIKoZIzj0EAwQw
Packit aea12f
DzENMAsGA1UEAxMEQ0EtMDAgFw0xOTA1MjAxMzE4MDVaGA85OTk5MTIzMTIzNTk1
Packit aea12f
OVowDzENMAsGA1UEAxMEQ0EtMDCBmzAQBgcqhkjOPQIBBgUrgQQAIwOBhgAEASRD
Packit aea12f
p6ArQF3bkC7rMzUo6RGle3LCDVkrVrcS0vMRKz6D436g/yO0+om5Xbny/z3Weo4x
Packit aea12f
E8dat+dQp2sHurso6ByhAbm08MqxKUqaU4G69xvTYTOSMljDtx/3upsF955J5/CT
Packit aea12f
/F8czPBR9jebQZOCXWI0clpFSTGTYFnqHVlyTTwCgd87o0MwQTAPBgNVHRMBAf8E
Packit aea12f
BTADAQH/MA8GA1UdDwEB/wQFAwMHBgAwHQYDVR0OBBYEFI2SeRAmyVkAAEabKWfy
Packit aea12f
SREfJqJfMAoGCCqGSM49BAMEA4GMADCBiAJCAc8sUwRR5Q5u52YSdaEiHgnWlNTJ
Packit aea12f
nP7ckTAiSCEmhp2L8wdvG2274oTjvw3gbUHLc310AAoIvUcZfaXB6zooIpl9AkIB
Packit aea12f
NK1JHzm60+USUDxJoQngtl8KdM9jR9UmjZ5hVhd/k5FeNYbb6Z+kuIasE4SlnJnd
Packit aea12f
VIEgdnjXtlI3n052VLjDKg4=
Packit aea12f
-----END CERTIFICATE-----
Packit aea12f
_EOF_
Packit aea12f
cat >${CERT} <<_EOF_
Packit aea12f
-----BEGIN CERTIFICATE-----
Packit aea12f
MIICJDCCAYagAwIBAgIUTNrzhsX4+TV92p8tYrrUclDsYsUwCgYIKoZIzj0EAwQw
Packit aea12f
DzENMAsGA1UEAxMEQ0EtMDAgFw0xOTA1MjAxMzE4MDVaGA85OTk5MTIzMTIzNTk1
Packit aea12f
OVowEzERMA8GA1UEAxMIc2VydmVyLTEwgZswEAYHKoZIzj0CAQYFK4EEACMDgYYA
Packit aea12f
BAGAb9ToCqbQ8wImyiIN3Zf3T8WrwB/R28f0w8wq0W5a71FGayY0VU5exSBV7nnj
Packit aea12f
X8xFwUb+BpIVRQ4ZsryQCDDANACxXE3hwae59mqO9JhrTUQL7KyDaZ8W6KbACn8h
Packit aea12f
fYsOay/3ub0wdNdG8aJIcZzmrX1DNM0Jt/rW1d2nzuv6lZqCfqN3MHUwDAYDVR0T
Packit aea12f
AQH/BAIwADAUBgNVHREEDTALgglsb2NhbGhvc3QwDwYDVR0PAQH/BAUDAweAADAd
Packit aea12f
BgNVHQ4EFgQUv46ZnyF9oFn6yVCPl8WJ2InprhowHwYDVR0jBBgwFoAUjZJ5ECbJ
Packit aea12f
WQAARpspZ/JJER8mol8wCgYIKoZIzj0EAwQDgYsAMIGHAkIAh0/UdYPTSWmtTRNZ
Packit aea12f
d1VGCBW+Pw9aMkSTd8byWgle8+z1aQdZYQF46MHDuRC3zkooAYXPjbYCbLba5W/x
Packit aea12f
K1MVvfoCQThH3TCLj/Qci1788SNJ2bvN4bGe9m71cRhJWOXx5GRUHjvRJ5dttllq
Packit aea12f
dPzh992Fym1fGoyKne2xm172IG2LvTI0
Packit aea12f
-----END CERTIFICATE-----
Packit aea12f
-----BEGIN EC PRIVATE KEY-----
Packit aea12f
MIHcAgEBBEIBZEu+h1ouDy17i0vGtm39PIrwWCGmjiQkCp1HnPSGod6SM2O3j4Mf
Packit aea12f
PH5pp8dPYx0LmHXTe+/P/oiIf128sSlsIGCgBwYFK4EEACOhgYkDgYYABAGAb9To
Packit aea12f
CqbQ8wImyiIN3Zf3T8WrwB/R28f0w8wq0W5a71FGayY0VU5exSBV7nnjX8xFwUb+
Packit aea12f
BpIVRQ4ZsryQCDDANACxXE3hwae59mqO9JhrTUQL7KyDaZ8W6KbACn8hfYsOay/3
Packit aea12f
ub0wdNdG8aJIcZzmrX1DNM0Jt/rW1d2nzuv6lZqCfg==
Packit aea12f
-----END EC PRIVATE KEY-----
Packit aea12f
_EOF_
Packit aea12f
KEY="${CERT}"
Packit aea12f
Packit aea12f
eval "${GETPORT}"
Packit aea12f
launch_server $$ --echo --priority "NORMAL" --x509keyfile ${KEY} --x509certfile ${CERT}
Packit aea12f
PID=$!
Packit aea12f
wait_server ${PID}
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_VERY_WEAK --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (1)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_LOW --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (2)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_LEGACY --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (3)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_HIGH --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (4)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_ULTRA --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (5)"
Packit aea12f
Packit aea12f
"${CLI}" -p "${PORT}" 127.0.0.1 --priority NORMAL:%PROFILE_FUTURE --verify-hostname localhost --x509cafile "${CAFILE}" </dev/null >/dev/null ||
Packit aea12f
	fail ${PID} "expected connection to succeed (6)"
Packit aea12f
Packit aea12f
kill ${PID}
Packit aea12f
wait
Packit aea12f
Packit aea12f
rm -f ${TMPFILE} ${CAFILE} ${CERT}
Packit aea12f
Packit aea12f
exit 0