1276707Sdes#!/bin/sh
2295367Sdes# $OpenBSD: mktestdata.sh,v 1.5 2015/07/07 14:53:30 markus Exp $
3276707Sdes
4276707SdesPW=mekmitasdigoat
5276707Sdes
6276707Sdesrsa1_params() {
7276707Sdes	_in="$1"
8276707Sdes	_outbase="$2"
9276707Sdes	set -e
10276707Sdes	ssh-keygen -f $_in -e -m pkcs8 | \
11276707Sdes	    openssl rsa -noout -text -pubin | \
12276707Sdes	    awk '/^Modulus:$/,/^Exponent:/' | \
13276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.n
14276707Sdes	# XXX need conversion support in ssh-keygen for the other params
15276707Sdes	for x in n ; do
16276707Sdes		echo "" >> ${_outbase}.$x
17276707Sdes		echo ============ ${_outbase}.$x
18276707Sdes		cat ${_outbase}.$x
19276707Sdes		echo ============
20276707Sdes	done
21276707Sdes}
22276707Sdes
23276707Sdesrsa_params() {
24276707Sdes	_in="$1"
25276707Sdes	_outbase="$2"
26276707Sdes	set -e
27276707Sdes	openssl rsa -noout -text -in $_in | \
28276707Sdes	    awk '/^modulus:$/,/^publicExponent:/' | \
29276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.n
30276707Sdes	openssl rsa -noout -text -in $_in | \
31276707Sdes	    awk '/^prime1:$/,/^prime2:/' | \
32276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.p
33276707Sdes	openssl rsa -noout -text -in $_in | \
34276707Sdes	    awk '/^prime2:$/,/^exponent1:/' | \
35276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.q
36276707Sdes	for x in n p q ; do
37276707Sdes		echo "" >> ${_outbase}.$x
38276707Sdes		echo ============ ${_outbase}.$x
39276707Sdes		cat ${_outbase}.$x
40276707Sdes		echo ============
41276707Sdes	done
42276707Sdes}
43276707Sdes
44276707Sdesdsa_params() {
45276707Sdes	_in="$1"
46276707Sdes	_outbase="$2"
47276707Sdes	set -e
48276707Sdes	openssl dsa -noout -text -in $_in | \
49276707Sdes	    awk '/^priv:$/,/^pub:/' | \
50276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.priv
51276707Sdes	openssl dsa -noout -text -in $_in | \
52276707Sdes	    awk '/^pub:/,/^P:/' | #\
53276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.pub
54276707Sdes	openssl dsa -noout -text -in $_in | \
55276707Sdes	    awk '/^G:/,0' | \
56276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.g
57276707Sdes	for x in priv pub g ; do
58276707Sdes		echo "" >> ${_outbase}.$x
59276707Sdes		echo ============ ${_outbase}.$x
60276707Sdes		cat ${_outbase}.$x
61276707Sdes		echo ============
62276707Sdes	done
63276707Sdes}
64276707Sdes
65276707Sdesecdsa_params() {
66276707Sdes	_in="$1"
67276707Sdes	_outbase="$2"
68276707Sdes	set -e
69276707Sdes	openssl ec -noout -text -in $_in | \
70276707Sdes	    awk '/^priv:$/,/^pub:/' | \
71276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.priv
72276707Sdes	openssl ec -noout -text -in $_in | \
73276707Sdes	    awk '/^pub:/,/^ASN1 OID:/' | #\
74276707Sdes	    grep -v '^[a-zA-Z]' | tr -d ' \n:' > ${_outbase}.pub
75276707Sdes	openssl ec -noout -text -in $_in | \
76276707Sdes	    grep "ASN1 OID:" | tr -d '\n' | \
77276707Sdes	    sed 's/.*: //;s/ *$//' > ${_outbase}.curve
78276707Sdes	for x in priv pub curve ; do
79276707Sdes		echo "" >> ${_outbase}.$x
80276707Sdes		echo ============ ${_outbase}.$x
81276707Sdes		cat ${_outbase}.$x
82276707Sdes		echo ============
83276707Sdes	done
84276707Sdes}
85276707Sdes
86276707Sdesset -ex
87276707Sdes
88276707Sdescd testdata
89276707Sdes
90276707Sdesrm -f rsa1_1 rsa_1 dsa_1 ecdsa_1 ed25519_1
91276707Sdesrm -f rsa1_2 rsa_2 dsa_2 ecdsa_2 ed25519_2
92276707Sdesrm -f rsa_n dsa_n ecdsa_n # new-format keys
93276707Sdesrm -f rsa1_1_pw rsa_1_pw dsa_1_pw ecdsa_1_pw ed25519_1_pw
94276707Sdesrm -f rsa_n_pw dsa_n_pw ecdsa_n_pw
95276707Sdesrm -f pw *.pub *.bn.* *.param.* *.fp *.fp.bb
96276707Sdes
97295367Sdesssh-keygen -t rsa1 -b 1024 -C "RSA1 test key #1" -N "" -f rsa1_1
98295367Sdesssh-keygen -t rsa -b 1024 -C "RSA test key #1" -N "" -f rsa_1
99276707Sdesssh-keygen -t dsa -b 1024 -C "DSA test key #1" -N "" -f dsa_1
100276707Sdesssh-keygen -t ecdsa -b 256 -C "ECDSA test key #1" -N "" -f ecdsa_1
101276707Sdesssh-keygen -t ed25519 -C "ED25519 test key #1" -N "" -f ed25519_1
102276707Sdes
103276707Sdesssh-keygen -t rsa1 -b 2048 -C "RSA1 test key #2" -N "" -f rsa1_2
104276707Sdesssh-keygen -t rsa -b 2048 -C "RSA test key #2" -N "" -f rsa_2
105276707Sdesssh-keygen -t dsa -b 1024 -C "DSA test key #2" -N "" -f dsa_2
106276707Sdesssh-keygen -t ecdsa -b 521 -C "ECDSA test key #2" -N "" -f ecdsa_2
107276707Sdesssh-keygen -t ed25519 -C "ED25519 test key #1" -N "" -f ed25519_2
108276707Sdes
109276707Sdescp rsa_1 rsa_n
110276707Sdescp dsa_1 dsa_n
111276707Sdescp ecdsa_1 ecdsa_n
112276707Sdes
113276707Sdescp rsa1_1 rsa1_1_pw
114276707Sdescp rsa_1 rsa_1_pw
115276707Sdescp dsa_1 dsa_1_pw
116276707Sdescp ecdsa_1 ecdsa_1_pw
117276707Sdescp ed25519_1 ed25519_1_pw
118276707Sdescp rsa_1 rsa_n_pw
119276707Sdescp dsa_1 dsa_n_pw
120276707Sdescp ecdsa_1 ecdsa_n_pw
121276707Sdes
122276707Sdesssh-keygen -pf rsa1_1_pw -N "$PW"
123276707Sdesssh-keygen -pf rsa_1_pw -N "$PW"
124276707Sdesssh-keygen -pf dsa_1_pw -N "$PW"
125276707Sdesssh-keygen -pf ecdsa_1_pw -N "$PW"
126276707Sdesssh-keygen -pf ed25519_1_pw -N "$PW"
127276707Sdesssh-keygen -opf rsa_n_pw -N "$PW"
128276707Sdesssh-keygen -opf dsa_n_pw -N "$PW"
129276707Sdesssh-keygen -opf ecdsa_n_pw -N "$PW"
130276707Sdes
131276707Sdesrsa1_params rsa1_1 rsa1_1.param
132276707Sdesrsa1_params rsa1_2 rsa1_2.param
133276707Sdesrsa_params rsa_1 rsa_1.param
134276707Sdesrsa_params rsa_2 rsa_2.param
135276707Sdesdsa_params dsa_1 dsa_1.param
136276707Sdesdsa_params dsa_1 dsa_1.param
137276707Sdesecdsa_params ecdsa_1 ecdsa_1.param
138276707Sdesecdsa_params ecdsa_2 ecdsa_2.param
139276707Sdes# XXX ed25519 params
140276707Sdes
141276707Sdesssh-keygen -s rsa_2 -I hugo -n user1,user2 \
142276707Sdes    -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
143276707Sdes    -V 19990101:20110101 -z 1 rsa_1.pub
144276707Sdesssh-keygen -s rsa_2 -I hugo -n user1,user2 \
145276707Sdes    -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
146276707Sdes    -V 19990101:20110101 -z 2 dsa_1.pub
147276707Sdesssh-keygen -s rsa_2 -I hugo -n user1,user2 \
148276707Sdes    -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
149276707Sdes    -V 19990101:20110101 -z 3 ecdsa_1.pub
150276707Sdesssh-keygen -s rsa_2 -I hugo -n user1,user2 \
151276707Sdes    -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
152276707Sdes    -V 19990101:20110101 -z 4 ed25519_1.pub
153276707Sdes
154276707Sdesssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
155276707Sdes    -V 19990101:20110101 -z 5 rsa_1.pub
156276707Sdesssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
157276707Sdes    -V 19990101:20110101 -z 6 dsa_1.pub
158276707Sdesssh-keygen -s ecdsa_1 -I julius -n host1,host2 -h \
159276707Sdes    -V 19990101:20110101 -z 7 ecdsa_1.pub
160276707Sdesssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
161276707Sdes    -V 19990101:20110101 -z 8 ed25519_1.pub
162276707Sdes
163276707Sdesssh-keygen -lf rsa1_1 | awk '{print $2}' > rsa1_1.fp
164276707Sdesssh-keygen -lf rsa_1 | awk '{print $2}' > rsa_1.fp
165276707Sdesssh-keygen -lf dsa_1 | awk '{print $2}' > dsa_1.fp
166276707Sdesssh-keygen -lf ecdsa_1 | awk '{print $2}' > ecdsa_1.fp
167276707Sdesssh-keygen -lf ed25519_1 | awk '{print $2}' > ed25519_1.fp
168276707Sdesssh-keygen -lf rsa1_2 | awk '{print $2}' > rsa1_2.fp
169276707Sdesssh-keygen -lf rsa_2 | awk '{print $2}' > rsa_2.fp
170276707Sdesssh-keygen -lf dsa_2 | awk '{print $2}' > dsa_2.fp
171276707Sdesssh-keygen -lf ecdsa_2 | awk '{print $2}' > ecdsa_2.fp
172276707Sdesssh-keygen -lf ed25519_2 | awk '{print $2}' > ed25519_2.fp
173276707Sdes
174276707Sdesssh-keygen -lf dsa_1-cert.pub  | awk '{print $2}' > dsa_1-cert.fp
175276707Sdesssh-keygen -lf ecdsa_1-cert.pub  | awk '{print $2}' > ecdsa_1-cert.fp
176276707Sdesssh-keygen -lf ed25519_1-cert.pub  | awk '{print $2}' > ed25519_1-cert.fp
177276707Sdesssh-keygen -lf rsa_1-cert.pub  | awk '{print $2}' > rsa_1-cert.fp
178276707Sdes
179276707Sdesssh-keygen -Bf rsa1_1 | awk '{print $2}' > rsa1_1.fp.bb
180276707Sdesssh-keygen -Bf rsa_1 | awk '{print $2}' > rsa_1.fp.bb
181276707Sdesssh-keygen -Bf dsa_1 | awk '{print $2}' > dsa_1.fp.bb
182276707Sdesssh-keygen -Bf ecdsa_1 | awk '{print $2}' > ecdsa_1.fp.bb
183276707Sdesssh-keygen -Bf ed25519_1 | awk '{print $2}' > ed25519_1.fp.bb
184276707Sdesssh-keygen -Bf rsa1_2 | awk '{print $2}' > rsa1_2.fp.bb
185276707Sdesssh-keygen -Bf rsa_2 | awk '{print $2}' > rsa_2.fp.bb
186276707Sdesssh-keygen -Bf dsa_2 | awk '{print $2}' > dsa_2.fp.bb
187276707Sdesssh-keygen -Bf ecdsa_2 | awk '{print $2}' > ecdsa_2.fp.bb
188276707Sdesssh-keygen -Bf ed25519_2 | awk '{print $2}' > ed25519_2.fp.bb
189276707Sdes
190295367Sdes# XXX Extend ssh-keygen to do detached signatures (better to test/fuzz against)
191295367Sdes
192276707Sdesecho "$PW" > pw
193