openssh-portable/regress/unittests/hostkeys/mktestdata.sh

95 lines
2.7 KiB
Bash

#!/bin/sh
# $OpenBSD: mktestdata.sh,v 1.1 2015/02/16 22:18:34 djm Exp $
set -ex
cd testdata
rm -f rsa1* rsa* dsa* ecdsa* ed25519*
rm -f known_hosts*
gen_all() {
_n=$1
_ecdsa_bits=256
test "x$_n" = "x1" && _ecdsa_bits=384
test "x$_n" = "x2" && _ecdsa_bits=521
ssh-keygen -qt rsa1 -b 1024 -C "RSA1 #$_n" -N "" -f rsa1_$_n
ssh-keygen -qt rsa -b 1024 -C "RSA #$_n" -N "" -f rsa_$_n
ssh-keygen -qt dsa -b 1024 -C "DSA #$_n" -N "" -f dsa_$_n
ssh-keygen -qt ecdsa -b $_ecdsa_bits -C "ECDSA #$_n" -N "" -f ecdsa_$_n
ssh-keygen -qt ed25519 -C "ED25519 #$_n" -N "" -f ed25519_$_n
# Don't need private keys
rm -f rsa1_$_n rsa_$_n dsa_$_n ecdsa_$_n ed25519_$_n
}
hentries() {
_preamble=$1
_kspec=$2
for k in `ls -1 $_kspec | sort` ; do
printf "$_preamble "
cat $k
done
echo
}
gen_all 1
gen_all 2
gen_all 3
gen_all 4
gen_all 5
gen_all 6
# A section of known_hosts with hashed hostnames.
(
hentries "sisyphus.example.com" "*_5.pub"
hentries "prometheus.example.com,192.0.2.1,2001:db8::1" "*_6.pub"
) > known_hosts_hash_frag
ssh-keygen -Hf known_hosts_hash_frag
rm -f known_hosts_hash_frag.old
# Populated known_hosts, including comments, hashed names and invalid lines
(
echo "# Plain host keys, plain host names"
hentries "sisyphus.example.com" "*_1.pub"
echo "# Plain host keys, hostnames + addresses"
hentries "prometheus.example.com,192.0.2.1,2001:db8::1" "*_2.pub"
echo "# Some hosts with wildcard names / IPs"
hentries "*.example.com,192.0.2.*,2001:*" "*_3.pub"
echo "# Hashed hostname and address entries"
cat known_hosts_hash_frag
rm -f known_hosts_hash_frag
echo
echo "# Revoked and CA keys"
printf "@revoked sisyphus.example.com " ; cat rsa1_4.pub
printf "@revoked sisyphus.example.com " ; cat ed25519_4.pub
printf "@cert-authority prometheus.example.com " ; cat ecdsa_4.pub
printf "@cert-authority *.example.com " ; cat dsa_4.pub
printf "\n"
echo "# Some invalid lines"
# Invalid marker
printf "@what sisyphus.example.com " ; cat rsa1_1.pub
# Key missing
echo "sisyphus.example.com "
# Key blob missing
echo "prometheus.example.com ssh-ed25519 "
# Key blob truncated
echo "sisyphus.example.com ssh-dsa AAAATgAAAAdz"
# RSA1 key truncated after key bits
echo "prometheus.example.com 1024 "
# RSA1 key truncated after exponent
echo "sisyphus.example.com 1024 65535 "
# RSA1 key incorrect key bits
printf "prometheus.example.com 1025 " ; cut -d' ' -f2- < rsa1_1.pub
# Invalid type
echo "sisyphus.example.com ssh-XXX AAAATgAAAAdzc2gtWFhYAAAAP0ZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRg=="
# Type mismatch with blob
echo "prometheus.example.com ssh-rsa AAAATgAAAAdzc2gtWFhYAAAAP0ZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRg=="
) > known_hosts
echo OK