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