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