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