summaryrefslogtreecommitdiff
path: root/regress/usr.bin/ssh/ssh-com-keygen.sh
blob: 29b02d94617f7956e357c28c5979597dec3c6828 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#	$OpenBSD: ssh-com-keygen.sh,v 1.4 2004/02/24 17:06:52 markus Exp $
#	Placed in the Public Domain.

tid="ssh.com key import"

#TEST_COMBASE=/path/to/ssh/com/binaries
if [ "X${TEST_COMBASE}" = "X" ]; then
	fatal '$TEST_COMBASE is not set'
fi

VERSIONS="
	2.0.10
	2.0.12
	2.0.13
	2.1.0
	2.2.0
	2.3.0
	2.3.1
	2.4.0
	3.0.0
	3.1.0
	3.2.0
	3.2.2
	3.2.3
	3.2.5
	3.2.9
	3.2.9.1
	3.3.0"

COMPRV=${OBJ}/comkey
COMPUB=${COMPRV}.pub
OPENSSHPRV=${OBJ}/opensshkey
OPENSSHPUB=${OPENSSHPRV}.pub

# go for it
for v in ${VERSIONS}; do
	keygen=${TEST_COMBASE}/${v}/ssh-keygen2
	if [ ! -x ${keygen} ]; then
		continue
	fi
	types="dss"
        case $v in
        2.3.1|3.*)
                types="$types rsa"
                ;;
        esac
	for t in $types; do
		verbose "ssh-keygen $v/$t"
		rm -f $COMPRV $COMPUB $OPENSSHPRV $OPENSSHPUB
		${keygen} -q -P -t $t ${COMPRV} > /dev/null 2>&1
		if [ $? -ne 0 ]; then
			fail "${keygen} -t $t failed"
			continue
		fi
		${SSHKEYGEN} -if ${COMPUB} > ${OPENSSHPUB}
		if [ $? -ne 0 ]; then
			fail "import public key ($v/$t) failed"
			continue
		fi
		${SSHKEYGEN} -if ${COMPRV} > ${OPENSSHPRV}
		if [ $? -ne 0 ]; then
			fail "import private key ($v/$t) failed"
			continue
		fi
		chmod 600 ${OPENSSHPRV}
		${SSHKEYGEN} -yf ${OPENSSHPRV} |\
			diff - ${OPENSSHPUB}
		if [ $? -ne 0 ]; then
			fail "public keys ($v/$t) differ"
		fi
	done
done

rm -f $COMPRV $COMPUB $OPENSSHPRV $OPENSSHPUB