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