]> CyberLeo.Net >> Repos - FreeBSD/releng/10.3.git/blob - crypto/openssh/regress/unittests/hostkeys/mktestdata.sh
- Copy stable/10@296371 to releng/10.3 in preparation for 10.3-RC1
[FreeBSD/releng/10.3.git] / crypto / openssh / regress / unittests / hostkeys / mktestdata.sh
1 #!/bin/sh
2 # $OpenBSD: mktestdata.sh,v 1.1 2015/02/16 22:18:34 djm Exp $
3
4 set -ex
5
6 cd testdata
7
8 rm -f rsa1* rsa* dsa* ecdsa* ed25519*
9 rm -f known_hosts*
10
11 gen_all() {
12         _n=$1
13         _ecdsa_bits=256
14         test "x$_n" = "x1" && _ecdsa_bits=384
15         test "x$_n" = "x2" && _ecdsa_bits=521
16         ssh-keygen -qt rsa1 -b 1024 -C "RSA1 #$_n" -N "" -f rsa1_$_n
17         ssh-keygen -qt rsa -b 1024 -C "RSA #$_n" -N "" -f rsa_$_n
18         ssh-keygen -qt dsa -b 1024 -C "DSA #$_n" -N "" -f dsa_$_n
19         ssh-keygen -qt ecdsa -b $_ecdsa_bits -C "ECDSA #$_n" -N "" -f ecdsa_$_n
20         ssh-keygen -qt ed25519 -C "ED25519 #$_n" -N "" -f ed25519_$_n
21         # Don't need private keys
22         rm -f rsa1_$_n  rsa_$_n dsa_$_n ecdsa_$_n ed25519_$_n
23 }
24
25 hentries() {
26         _preamble=$1
27         _kspec=$2
28         for k in `ls -1 $_kspec | sort` ; do
29                 printf "$_preamble "
30                 cat $k
31         done
32         echo
33 }
34
35 gen_all 1
36 gen_all 2
37 gen_all 3
38 gen_all 4
39 gen_all 5
40 gen_all 6
41
42 # A section of known_hosts with hashed hostnames.
43 (
44         hentries "sisyphus.example.com" "*_5.pub"
45         hentries "prometheus.example.com,192.0.2.1,2001:db8::1" "*_6.pub"
46 ) > known_hosts_hash_frag
47 ssh-keygen -Hf known_hosts_hash_frag
48 rm -f known_hosts_hash_frag.old
49
50 # Populated known_hosts, including comments, hashed names and invalid lines
51 (
52         echo "# Plain host keys, plain host names"
53         hentries "sisyphus.example.com" "*_1.pub"
54
55         echo "# Plain host keys, hostnames + addresses"
56         hentries "prometheus.example.com,192.0.2.1,2001:db8::1" "*_2.pub"
57
58         echo "# Some hosts with wildcard names / IPs"
59         hentries "*.example.com,192.0.2.*,2001:*" "*_3.pub"
60
61         echo "# Hashed hostname and address entries"
62         cat known_hosts_hash_frag
63         rm -f known_hosts_hash_frag
64         echo
65
66         echo "# Revoked and CA keys"
67         printf "@revoked sisyphus.example.com " ; cat rsa1_4.pub
68         printf "@revoked sisyphus.example.com " ; cat ed25519_4.pub
69         printf "@cert-authority prometheus.example.com " ; cat ecdsa_4.pub
70         printf "@cert-authority *.example.com " ; cat dsa_4.pub
71
72         printf "\n"
73         echo "# Some invalid lines"
74         # Invalid marker
75         printf "@what sisyphus.example.com " ; cat rsa1_1.pub
76         # Key missing
77         echo "sisyphus.example.com      "
78         # Key blob missing
79         echo "prometheus.example.com ssh-ed25519 "
80         # Key blob truncated
81         echo "sisyphus.example.com ssh-dsa AAAATgAAAAdz"
82         # RSA1 key truncated after key bits
83         echo "prometheus.example.com 1024   "
84         # RSA1 key truncated after exponent
85         echo "sisyphus.example.com 1024 65535   "
86         # RSA1 key incorrect key bits
87         printf "prometheus.example.com 1025 " ; cut -d' ' -f2- < rsa1_1.pub
88         # Invalid type
89         echo "sisyphus.example.com ssh-XXX AAAATgAAAAdzc2gtWFhYAAAAP0ZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRg=="
90         # Type mismatch with blob
91         echo "prometheus.example.com ssh-rsa AAAATgAAAAdzc2gtWFhYAAAAP0ZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRkZVQ0tPRkZGVUNLT0ZGRlVDS09GRg=="
92 ) > known_hosts
93
94 echo OK