summaryrefslogtreecommitdiff
path: root/regress
diff options
context:
space:
mode:
Diffstat (limited to 'regress')
-rw-r--r--regress/README.regress23
-rw-r--r--regress/krl.sh49
-rw-r--r--regress/misc/fuzz-harness/Makefile7
-rw-r--r--regress/misc/fuzz-harness/authopt_fuzz.cc33
-rw-r--r--regress/unittests/sshkey/common.c81
-rw-r--r--regress/unittests/sshkey/common.h11
-rwxr-xr-xregress/unittests/sshkey/mktestdata.sh14
-rw-r--r--regress/unittests/sshkey/test_file.c32
-rw-r--r--regress/unittests/sshkey/test_sshkey.c58
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_sha115
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_sha1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_sha1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_sha51215
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_sha512-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_sha512.pub1
-rw-r--r--regress/unittests/test_helper/fuzz.c8
-rw-r--r--regress/unittests/test_helper/test_helper.c3
17 files changed, 270 insertions, 83 deletions
diff --git a/regress/README.regress b/regress/README.regress
index 867855017..315fe149a 100644
--- a/regress/README.regress
+++ b/regress/README.regress
@@ -20,19 +20,26 @@ suite is based on OpenBSD's with modifications.
20 20
21Environment variables. 21Environment variables.
22 22
23SUDO: path to sudo command, if desired. Note that some systems (notably 23SKIP_UNIT: Skip unit tests.
24 systems using PAM) require sudo to execute some tests. 24SUDO: path to sudo/doas command, if desired. Note that some systems
25TEST_SSH_TRACE: set to "yes" for verbose output from tests 25 (notably systems using PAM) require sudo to execute some tests.
26TEST_SSH_QUIET: set to "yes" to suppress non-fatal output. 26LTESTS: Whitespace separated list of tests (filenames without the .sh
27TEST_SSH_x: path to "ssh" command under test, where x=SSH,SSHD,SSHAGENT,SSHADD 27 extension) to run.
28 SSHKEYGEN,SSHKEYSCAN,SFTP,SFTPSERVER
29OBJ: used by test scripts to access build dir. 28OBJ: used by test scripts to access build dir.
30TEST_SHELL: shell used for running the test scripts. 29TEST_SHELL: shell used for running the test scripts.
30TEST_SSH_FAIL_FATAL: set to "yes" to make any failure abort the test
31 currently in progress.
31TEST_SSH_PORT: TCP port to be used for the listening tests. 32TEST_SSH_PORT: TCP port to be used for the listening tests.
32TEST_SSH_SSH_CONFOPTS: Configuration directives to be added to ssh_config 33TEST_SSH_QUIET: set to "yes" to suppress non-fatal output.
33 before running each test.
34TEST_SSH_SSHD_CONFOPTS: Configuration directives to be added to sshd_config 34TEST_SSH_SSHD_CONFOPTS: Configuration directives to be added to sshd_config
35 before running each test. 35 before running each test.
36TEST_SSH_SSH_CONFOPTS: Configuration directives to be added to
37 ssh_config before running each test.
38TEST_SSH_TRACE: set to "yes" for verbose output from tests
39TEST_SSH_x: path to "ssh" command under test, where x is one of
40 SSH, SSHD, SSHAGENT, SSHADD, SSHKEYGEN, SSHKEYSCAN, SFTP or
41 SFTPSERVER
42USE_VALGRIND: Run the tests under valgrind memory checker.
36 43
37 44
38Individual tests. 45Individual tests.
diff --git a/regress/krl.sh b/regress/krl.sh
index 1077358ff..a70c79c66 100644
--- a/regress/krl.sh
+++ b/regress/krl.sh
@@ -1,4 +1,4 @@
1# $OpenBSD: krl.sh,v 1.6 2015/01/30 01:11:39 djm Exp $ 1# $OpenBSD: krl.sh,v 1.7 2018/09/12 01:23:48 djm Exp $
2# Placed in the Public Domain. 2# Placed in the Public Domain.
3 3
4tid="key revocation lists" 4tid="key revocation lists"
@@ -85,6 +85,15 @@ for n in $UNREVOKED_SERIALS ; do
85 UCERTS="$UCERTS ${f}-cert.pub" 85 UCERTS="$UCERTS ${f}-cert.pub"
86done 86done
87 87
88# Specifications that revoke keys by hash.
89touch $OBJ/revoked-sha1 $OBJ/revoked-sha256 $OBJ/revoked-hash
90for rkey in $RKEYS; do
91 (printf "sha1: "; cat $rkey) >> $OBJ/revoked-sha1
92 (printf "sha256: "; cat $rkey) >> $OBJ/revoked-sha256
93 (printf "hash: "; $SSHKEYGEN -lf $rkey | \
94 awk '{ print $2 }') >> $OBJ/revoked-hash
95done
96
88genkrls() { 97genkrls() {
89 OPTS=$1 98 OPTS=$1
90$SSHKEYGEN $OPTS -kf $OBJ/krl-empty - </dev/null \ 99$SSHKEYGEN $OPTS -kf $OBJ/krl-empty - </dev/null \
@@ -97,6 +106,12 @@ $SSHKEYGEN $OPTS -kf $OBJ/krl-all $RKEYS $RCERTS \
97 >/dev/null || fatal "$SSHKEYGEN KRL failed" 106 >/dev/null || fatal "$SSHKEYGEN KRL failed"
98$SSHKEYGEN $OPTS -kf $OBJ/krl-ca $OBJ/revoked-ca.pub \ 107$SSHKEYGEN $OPTS -kf $OBJ/krl-ca $OBJ/revoked-ca.pub \
99 >/dev/null || fatal "$SSHKEYGEN KRL failed" 108 >/dev/null || fatal "$SSHKEYGEN KRL failed"
109$SSHKEYGEN $OPTS -kf $OBJ/krl-sha1 $OBJ/revoked-sha1 \
110 >/dev/null 2>&1 || fatal "$SSHKEYGEN KRL failed"
111$SSHKEYGEN $OPTS -kf $OBJ/krl-sha256 $OBJ/revoked-sha256 \
112 >/dev/null 2>&1 || fatal "$SSHKEYGEN KRL failed"
113$SSHKEYGEN $OPTS -kf $OBJ/krl-hash $OBJ/revoked-hash \
114 >/dev/null 2>&1 || fatal "$SSHKEYGEN KRL failed"
100# This should fail as KRLs from serial/key-id spec need the CA specified. 115# This should fail as KRLs from serial/key-id spec need the CA specified.
101$SSHKEYGEN $OPTS -kf $OBJ/krl-serial $OBJ/revoked-serials \ 116$SSHKEYGEN $OPTS -kf $OBJ/krl-serial $OBJ/revoked-serials \
102 >/dev/null 2>&1 && fatal "$SSHKEYGEN KRL succeeded unexpectedly" 117 >/dev/null 2>&1 && fatal "$SSHKEYGEN KRL succeeded unexpectedly"
@@ -131,9 +146,9 @@ check_krl() {
131 TAG=$4 146 TAG=$4
132 $SSHKEYGEN -Qf $KRL $KEY >/dev/null 147 $SSHKEYGEN -Qf $KRL $KEY >/dev/null
133 result=$? 148 result=$?
134 if test "x$EXPECT_REVOKED" = "xyes" -a $result -eq 0 ; then 149 if test "x$EXPECT_REVOKED" = "xy" -a $result -eq 0 ; then
135 fatal "key $KEY not revoked by KRL $KRL: $TAG" 150 fatal "key $KEY not revoked by KRL $KRL: $TAG"
136 elif test "x$EXPECT_REVOKED" = "xno" -a $result -ne 0 ; then 151 elif test "x$EXPECT_REVOKED" = "xn" -a $result -ne 0 ; then
137 fatal "key $KEY unexpectedly revoked by KRL $KRL: $TAG" 152 fatal "key $KEY unexpectedly revoked by KRL $KRL: $TAG"
138 fi 153 fi
139} 154}
@@ -142,17 +157,21 @@ test_rev() {
142 TAG=$2 157 TAG=$2
143 KEYS_RESULT=$3 158 KEYS_RESULT=$3
144 ALL_RESULT=$4 159 ALL_RESULT=$4
145 SERIAL_RESULT=$5 160 HASH_RESULT=$5
146 KEYID_RESULT=$6 161 SERIAL_RESULT=$6
147 CERTS_RESULT=$7 162 KEYID_RESULT=$7
148 CA_RESULT=$8 163 CERTS_RESULT=$8
149 SERIAL_WRESULT=$9 164 CA_RESULT=$9
150 KEYID_WRESULT=$10 165 SERIAL_WRESULT=$10
166 KEYID_WRESULT=$11
151 verbose "$tid: checking revocations for $TAG" 167 verbose "$tid: checking revocations for $TAG"
152 for f in $FILES ; do 168 for f in $FILES ; do
153 check_krl $f $OBJ/krl-empty no "$TAG" 169 check_krl $f $OBJ/krl-empty no "$TAG"
154 check_krl $f $OBJ/krl-keys $KEYS_RESULT "$TAG" 170 check_krl $f $OBJ/krl-keys $KEYS_RESULT "$TAG"
155 check_krl $f $OBJ/krl-all $ALL_RESULT "$TAG" 171 check_krl $f $OBJ/krl-all $ALL_RESULT "$TAG"
172 check_krl $f $OBJ/krl-sha1 $HASH_RESULT "$TAG"
173 check_krl $f $OBJ/krl-sha256 $HASH_RESULT "$TAG"
174 check_krl $f $OBJ/krl-hash $HASH_RESULT "$TAG"
156 check_krl $f $OBJ/krl-serial $SERIAL_RESULT "$TAG" 175 check_krl $f $OBJ/krl-serial $SERIAL_RESULT "$TAG"
157 check_krl $f $OBJ/krl-keyid $KEYID_RESULT "$TAG" 176 check_krl $f $OBJ/krl-keyid $KEYID_RESULT "$TAG"
158 check_krl $f $OBJ/krl-cert $CERTS_RESULT "$TAG" 177 check_krl $f $OBJ/krl-cert $CERTS_RESULT "$TAG"
@@ -163,12 +182,12 @@ test_rev() {
163} 182}
164 183
165test_all() { 184test_all() {
166 # wildcard 185 # wildcard
167 # keys all sr# k.ID cert CA sr.# k.ID 186 # keys all hash sr# ID cert CA srl ID
168 test_rev "$RKEYS" "revoked keys" yes yes no no no no no no 187 test_rev "$RKEYS" "revoked keys" y y y n n n n n n
169 test_rev "$UKEYS" "unrevoked keys" no no no no no no no no 188 test_rev "$UKEYS" "unrevoked keys" n n n n n n n n n
170 test_rev "$RCERTS" "revoked certs" yes yes yes yes yes yes yes yes 189 test_rev "$RCERTS" "revoked certs" y y y y y y y y y
171 test_rev "$UCERTS" "unrevoked certs" no no no no no yes no no 190 test_rev "$UCERTS" "unrevoked certs" n n n n n n y n n
172} 191}
173 192
174test_all 193test_all
diff --git a/regress/misc/fuzz-harness/Makefile b/regress/misc/fuzz-harness/Makefile
index 8fbfc20c6..a2aa4441f 100644
--- a/regress/misc/fuzz-harness/Makefile
+++ b/regress/misc/fuzz-harness/Makefile
@@ -7,7 +7,7 @@ CXXFLAGS=-O2 -g -Wall -Wextra -I ../../.. $(FUZZ_FLAGS)
7LDFLAGS=-L ../../.. -L ../../../openbsd-compat -g $(FUZZ_FLAGS) 7LDFLAGS=-L ../../.. -L ../../../openbsd-compat -g $(FUZZ_FLAGS)
8LIBS=-lssh -lopenbsd-compat -lcrypto $(FUZZ_LIBS) 8LIBS=-lssh -lopenbsd-compat -lcrypto $(FUZZ_LIBS)
9 9
10all: pubkey_fuzz sig_fuzz 10all: pubkey_fuzz sig_fuzz authopt_fuzz
11 11
12.cc.o: 12.cc.o:
13 $(CXX) $(CXXFLAGS) -c $< -o $@ 13 $(CXX) $(CXXFLAGS) -c $< -o $@
@@ -18,5 +18,8 @@ pubkey_fuzz: pubkey_fuzz.o
18sig_fuzz: sig_fuzz.o 18sig_fuzz: sig_fuzz.o
19 $(CXX) -o $@ sig_fuzz.o $(LDFLAGS) $(LIBS) 19 $(CXX) -o $@ sig_fuzz.o $(LDFLAGS) $(LIBS)
20 20
21authopt_fuzz: authopt_fuzz.o
22 $(CXX) -o $@ authopt_fuzz.o ../../../auth-options.o $(LDFLAGS) $(LIBS)
23
21clean: 24clean:
22 -rm -f *.o pubkey_fuzz sig_fuzz 25 -rm -f *.o pubkey_fuzz sig_fuzz authopt_fuzz
diff --git a/regress/misc/fuzz-harness/authopt_fuzz.cc b/regress/misc/fuzz-harness/authopt_fuzz.cc
new file mode 100644
index 000000000..a76d5a3f1
--- /dev/null
+++ b/regress/misc/fuzz-harness/authopt_fuzz.cc
@@ -0,0 +1,33 @@
1#include <stddef.h>
2#include <stdio.h>
3#include <stdint.h>
4#include <string.h>
5#include <stdlib.h>
6
7extern "C" {
8
9#include "auth-options.h"
10
11int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
12{
13 char *cp = (char *)malloc(size + 1);
14 struct sshauthopt *opts = NULL, *merge = NULL, *add = sshauthopt_new();
15
16 if (cp == NULL || add == NULL)
17 goto out;
18 memcpy(cp, data, size);
19 cp[size] = '\0';
20 if ((opts = sshauthopt_parse(cp, NULL)) == NULL)
21 goto out;
22 if ((merge = sshauthopt_merge(opts, add, NULL)) == NULL)
23 goto out;
24
25 out:
26 free(cp);
27 sshauthopt_free(add);
28 sshauthopt_free(opts);
29 sshauthopt_free(merge);
30 return 0;
31}
32
33} // extern "C"
diff --git a/regress/unittests/sshkey/common.c b/regress/unittests/sshkey/common.c
index b598f05cb..e63465c47 100644
--- a/regress/unittests/sshkey/common.c
+++ b/regress/unittests/sshkey/common.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: common.c,v 1.2 2015/01/08 13:10:58 djm Exp $ */ 1/* $OpenBSD: common.c,v 1.3 2018/09/13 09:03:20 djm Exp $ */
2/* 2/*
3 * Helpers for key API tests 3 * Helpers for key API tests
4 * 4 *
@@ -27,6 +27,8 @@
27# include <openssl/ec.h> 27# include <openssl/ec.h>
28#endif 28#endif
29 29
30#include "openbsd-compat/openssl-compat.h"
31
30#include "../test_helper/test_helper.h" 32#include "../test_helper/test_helper.h"
31 33
32#include "ssherr.h" 34#include "ssherr.h"
@@ -82,3 +84,80 @@ load_bignum(const char *name)
82 return ret; 84 return ret;
83} 85}
84 86
87const BIGNUM *
88rsa_n(struct sshkey *k)
89{
90 const BIGNUM *n = NULL;
91
92 ASSERT_PTR_NE(k, NULL);
93 ASSERT_PTR_NE(k->rsa, NULL);
94 RSA_get0_key(k->rsa, &n, NULL, NULL);
95 return n;
96}
97
98const BIGNUM *
99rsa_e(struct sshkey *k)
100{
101 const BIGNUM *e = NULL;
102
103 ASSERT_PTR_NE(k, NULL);
104 ASSERT_PTR_NE(k->rsa, NULL);
105 RSA_get0_key(k->rsa, NULL, &e, NULL);
106 return e;
107}
108
109const BIGNUM *
110rsa_p(struct sshkey *k)
111{
112 const BIGNUM *p = NULL;
113
114 ASSERT_PTR_NE(k, NULL);
115 ASSERT_PTR_NE(k->rsa, NULL);
116 RSA_get0_factors(k->rsa, &p, NULL);
117 return p;
118}
119
120const BIGNUM *
121rsa_q(struct sshkey *k)
122{
123 const BIGNUM *q = NULL;
124
125 ASSERT_PTR_NE(k, NULL);
126 ASSERT_PTR_NE(k->rsa, NULL);
127 RSA_get0_factors(k->rsa, NULL, &q);
128 return q;
129}
130
131const BIGNUM *
132dsa_g(struct sshkey *k)
133{
134 const BIGNUM *g = NULL;
135
136 ASSERT_PTR_NE(k, NULL);
137 ASSERT_PTR_NE(k->dsa, NULL);
138 DSA_get0_pqg(k->dsa, NULL, NULL, &g);
139 return g;
140}
141
142const BIGNUM *
143dsa_pub_key(struct sshkey *k)
144{
145 const BIGNUM *pub_key = NULL;
146
147 ASSERT_PTR_NE(k, NULL);
148 ASSERT_PTR_NE(k->dsa, NULL);
149 DSA_get0_key(k->dsa, &pub_key, NULL);
150 return pub_key;
151}
152
153const BIGNUM *
154dsa_priv_key(struct sshkey *k)
155{
156 const BIGNUM *priv_key = NULL;
157
158 ASSERT_PTR_NE(k, NULL);
159 ASSERT_PTR_NE(k->dsa, NULL);
160 DSA_get0_key(k->dsa, NULL, &priv_key);
161 return priv_key;
162}
163
diff --git a/regress/unittests/sshkey/common.h b/regress/unittests/sshkey/common.h
index bf7d19dce..7a514fdc8 100644
--- a/regress/unittests/sshkey/common.h
+++ b/regress/unittests/sshkey/common.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: common.h,v 1.1 2014/06/24 01:14:18 djm Exp $ */ 1/* $OpenBSD: common.h,v 1.2 2018/09/13 09:03:20 djm Exp $ */
2/* 2/*
3 * Helpers for key API tests 3 * Helpers for key API tests
4 * 4 *
@@ -14,3 +14,12 @@ struct sshbuf *load_text_file(const char *name);
14/* Load a bignum from a file */ 14/* Load a bignum from a file */
15BIGNUM *load_bignum(const char *name); 15BIGNUM *load_bignum(const char *name);
16 16
17/* Accessors for key components */
18const BIGNUM *rsa_n(struct sshkey *k);
19const BIGNUM *rsa_e(struct sshkey *k);
20const BIGNUM *rsa_p(struct sshkey *k);
21const BIGNUM *rsa_q(struct sshkey *k);
22const BIGNUM *dsa_g(struct sshkey *k);
23const BIGNUM *dsa_pub_key(struct sshkey *k);
24const BIGNUM *dsa_priv_key(struct sshkey *k);
25
diff --git a/regress/unittests/sshkey/mktestdata.sh b/regress/unittests/sshkey/mktestdata.sh
index 8047bc62f..93da34c64 100755
--- a/regress/unittests/sshkey/mktestdata.sh
+++ b/regress/unittests/sshkey/mktestdata.sh
@@ -1,5 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2# $OpenBSD: mktestdata.sh,v 1.6 2017/04/30 23:33:48 djm Exp $ 2# $OpenBSD: mktestdata.sh,v 1.7 2018/09/12 01:36:45 djm Exp $
3 3
4PW=mekmitasdigoat 4PW=mekmitasdigoat
5 5
@@ -128,6 +128,18 @@ ssh-keygen -s rsa_2 -I hugo -n user1,user2 \
128 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \ 128 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
129 -V 19990101:20110101 -z 4 ed25519_1.pub 129 -V 19990101:20110101 -z 4 ed25519_1.pub
130 130
131# Make a few RSA variant signature too.
132cp rsa_1 rsa_1_sha1
133cp rsa_1 rsa_1_sha512
134cp rsa_1.pub rsa_1_sha1.pub
135cp rsa_1.pub rsa_1_sha512.pub
136ssh-keygen -s rsa_2 -I hugo -n user1,user2 -t ssh-rsa \
137 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
138 -V 19990101:20110101 -z 1 rsa_1_sha1.pub
139ssh-keygen -s rsa_2 -I hugo -n user1,user2 -t rsa-sha2-512 \
140 -Oforce-command=/bin/ls -Ono-port-forwarding -Osource-address=10.0.0.0/8 \
141 -V 19990101:20110101 -z 1 rsa_1_sha512.pub
142
131ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \ 143ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
132 -V 19990101:20110101 -z 5 rsa_1.pub 144 -V 19990101:20110101 -z 5 rsa_1.pub
133ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \ 145ssh-keygen -s ed25519_1 -I julius -n host1,host2 -h \
diff --git a/regress/unittests/sshkey/test_file.c b/regress/unittests/sshkey/test_file.c
index 99b7e21c0..65610dacc 100644
--- a/regress/unittests/sshkey/test_file.c
+++ b/regress/unittests/sshkey/test_file.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_file.c,v 1.6 2017/04/30 23:33:48 djm Exp $ */ 1/* $OpenBSD: test_file.c,v 1.8 2018/09/13 09:03:20 djm Exp $ */
2/* 2/*
3 * Regress test for sshkey.h key management API 3 * Regress test for sshkey.h key management API
4 * 4 *
@@ -60,9 +60,9 @@ sshkey_file_tests(void)
60 a = load_bignum("rsa_1.param.n"); 60 a = load_bignum("rsa_1.param.n");
61 b = load_bignum("rsa_1.param.p"); 61 b = load_bignum("rsa_1.param.p");
62 c = load_bignum("rsa_1.param.q"); 62 c = load_bignum("rsa_1.param.q");
63 ASSERT_BIGNUM_EQ(k1->rsa->n, a); 63 ASSERT_BIGNUM_EQ(rsa_n(k1), a);
64 ASSERT_BIGNUM_EQ(k1->rsa->p, b); 64 ASSERT_BIGNUM_EQ(rsa_p(k1), b);
65 ASSERT_BIGNUM_EQ(k1->rsa->q, c); 65 ASSERT_BIGNUM_EQ(rsa_q(k1), c);
66 BN_free(a); 66 BN_free(a);
67 BN_free(b); 67 BN_free(b);
68 BN_free(c); 68 BN_free(c);
@@ -105,6 +105,24 @@ sshkey_file_tests(void)
105 sshkey_free(k2); 105 sshkey_free(k2);
106 TEST_DONE(); 106 TEST_DONE();
107 107
108 TEST_START("load RSA cert with SHA1 signature");
109 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1_sha1"), &k2), 0);
110 ASSERT_PTR_NE(k2, NULL);
111 ASSERT_INT_EQ(k2->type, KEY_RSA_CERT);
112 ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1);
113 ASSERT_STRING_EQ(k2->cert->signature_type, "ssh-rsa");
114 sshkey_free(k2);
115 TEST_DONE();
116
117 TEST_START("load RSA cert with SHA512 signature");
118 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1_sha512"), &k2), 0);
119 ASSERT_PTR_NE(k2, NULL);
120 ASSERT_INT_EQ(k2->type, KEY_RSA_CERT);
121 ASSERT_INT_EQ(sshkey_equal_public(k1, k2), 1);
122 ASSERT_STRING_EQ(k2->cert->signature_type, "rsa-sha2-512");
123 sshkey_free(k2);
124 TEST_DONE();
125
108 TEST_START("load RSA cert"); 126 TEST_START("load RSA cert");
109 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k2), 0); 127 ASSERT_INT_EQ(sshkey_load_cert(test_data_file("rsa_1"), &k2), 0);
110 ASSERT_PTR_NE(k2, NULL); 128 ASSERT_PTR_NE(k2, NULL);
@@ -151,9 +169,9 @@ sshkey_file_tests(void)
151 a = load_bignum("dsa_1.param.g"); 169 a = load_bignum("dsa_1.param.g");
152 b = load_bignum("dsa_1.param.priv"); 170 b = load_bignum("dsa_1.param.priv");
153 c = load_bignum("dsa_1.param.pub"); 171 c = load_bignum("dsa_1.param.pub");
154 ASSERT_BIGNUM_EQ(k1->dsa->g, a); 172 ASSERT_BIGNUM_EQ(dsa_g(k1), a);
155 ASSERT_BIGNUM_EQ(k1->dsa->priv_key, b); 173 ASSERT_BIGNUM_EQ(dsa_priv_key(k1), b);
156 ASSERT_BIGNUM_EQ(k1->dsa->pub_key, c); 174 ASSERT_BIGNUM_EQ(dsa_pub_key(k1), c);
157 BN_free(a); 175 BN_free(a);
158 BN_free(b); 176 BN_free(b);
159 BN_free(c); 177 BN_free(c);
diff --git a/regress/unittests/sshkey/test_sshkey.c b/regress/unittests/sshkey/test_sshkey.c
index 72367bde7..47a03fad4 100644
--- a/regress/unittests/sshkey/test_sshkey.c
+++ b/regress/unittests/sshkey/test_sshkey.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: test_sshkey.c,v 1.14 2018/07/13 02:13:19 djm Exp $ */ 1/* $OpenBSD: test_sshkey.c,v 1.17 2018/09/13 09:03:20 djm Exp $ */
2/* 2/*
3 * Regress test for sshkey.h key management API 3 * Regress test for sshkey.h key management API
4 * 4 *
@@ -197,9 +197,6 @@ sshkey_tests(void)
197 k1 = sshkey_new(KEY_RSA); 197 k1 = sshkey_new(KEY_RSA);
198 ASSERT_PTR_NE(k1, NULL); 198 ASSERT_PTR_NE(k1, NULL);
199 ASSERT_PTR_NE(k1->rsa, NULL); 199 ASSERT_PTR_NE(k1->rsa, NULL);
200 ASSERT_PTR_NE(k1->rsa->n, NULL);
201 ASSERT_PTR_NE(k1->rsa->e, NULL);
202 ASSERT_PTR_EQ(k1->rsa->p, NULL);
203 sshkey_free(k1); 200 sshkey_free(k1);
204 TEST_DONE(); 201 TEST_DONE();
205 202
@@ -207,8 +204,6 @@ sshkey_tests(void)
207 k1 = sshkey_new(KEY_DSA); 204 k1 = sshkey_new(KEY_DSA);
208 ASSERT_PTR_NE(k1, NULL); 205 ASSERT_PTR_NE(k1, NULL);
209 ASSERT_PTR_NE(k1->dsa, NULL); 206 ASSERT_PTR_NE(k1->dsa, NULL);
210 ASSERT_PTR_NE(k1->dsa->g, NULL);
211 ASSERT_PTR_EQ(k1->dsa->priv_key, NULL);
212 sshkey_free(k1); 207 sshkey_free(k1);
213 TEST_DONE(); 208 TEST_DONE();
214 209
@@ -230,27 +225,6 @@ sshkey_tests(void)
230 sshkey_free(k1); 225 sshkey_free(k1);
231 TEST_DONE(); 226 TEST_DONE();
232 227
233 TEST_START("new_private KEY_RSA");
234 k1 = sshkey_new_private(KEY_RSA);
235 ASSERT_PTR_NE(k1, NULL);
236 ASSERT_PTR_NE(k1->rsa, NULL);
237 ASSERT_PTR_NE(k1->rsa->n, NULL);
238 ASSERT_PTR_NE(k1->rsa->e, NULL);
239 ASSERT_PTR_NE(k1->rsa->p, NULL);
240 ASSERT_INT_EQ(sshkey_add_private(k1), 0);
241 sshkey_free(k1);
242 TEST_DONE();
243
244 TEST_START("new_private KEY_DSA");
245 k1 = sshkey_new_private(KEY_DSA);
246 ASSERT_PTR_NE(k1, NULL);
247 ASSERT_PTR_NE(k1->dsa, NULL);
248 ASSERT_PTR_NE(k1->dsa->g, NULL);
249 ASSERT_PTR_NE(k1->dsa->priv_key, NULL);
250 ASSERT_INT_EQ(sshkey_add_private(k1), 0);
251 sshkey_free(k1);
252 TEST_DONE();
253
254 TEST_START("generate KEY_RSA too small modulus"); 228 TEST_START("generate KEY_RSA too small modulus");
255 ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 128, &k1), 229 ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 128, &k1),
256 SSH_ERR_KEY_LENGTH); 230 SSH_ERR_KEY_LENGTH);
@@ -285,18 +259,18 @@ sshkey_tests(void)
285 ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &kr), 0); 259 ASSERT_INT_EQ(sshkey_generate(KEY_RSA, 1024, &kr), 0);
286 ASSERT_PTR_NE(kr, NULL); 260 ASSERT_PTR_NE(kr, NULL);
287 ASSERT_PTR_NE(kr->rsa, NULL); 261 ASSERT_PTR_NE(kr->rsa, NULL);
288 ASSERT_PTR_NE(kr->rsa->n, NULL); 262 ASSERT_PTR_NE(rsa_n(kr), NULL);
289 ASSERT_PTR_NE(kr->rsa->e, NULL); 263 ASSERT_PTR_NE(rsa_e(kr), NULL);
290 ASSERT_PTR_NE(kr->rsa->p, NULL); 264 ASSERT_PTR_NE(rsa_p(kr), NULL);
291 ASSERT_INT_EQ(BN_num_bits(kr->rsa->n), 1024); 265 ASSERT_INT_EQ(BN_num_bits(rsa_n(kr)), 1024);
292 TEST_DONE(); 266 TEST_DONE();
293 267
294 TEST_START("generate KEY_DSA"); 268 TEST_START("generate KEY_DSA");
295 ASSERT_INT_EQ(sshkey_generate(KEY_DSA, 1024, &kd), 0); 269 ASSERT_INT_EQ(sshkey_generate(KEY_DSA, 1024, &kd), 0);
296 ASSERT_PTR_NE(kd, NULL); 270 ASSERT_PTR_NE(kd, NULL);
297 ASSERT_PTR_NE(kd->dsa, NULL); 271 ASSERT_PTR_NE(kd->dsa, NULL);
298 ASSERT_PTR_NE(kd->dsa->g, NULL); 272 ASSERT_PTR_NE(dsa_g(kd), NULL);
299 ASSERT_PTR_NE(kd->dsa->priv_key, NULL); 273 ASSERT_PTR_NE(dsa_priv_key(kd), NULL);
300 TEST_DONE(); 274 TEST_DONE();
301 275
302#ifdef OPENSSL_HAS_ECC 276#ifdef OPENSSL_HAS_ECC
@@ -318,14 +292,14 @@ sshkey_tests(void)
318 TEST_DONE(); 292 TEST_DONE();
319 293
320 TEST_START("demote KEY_RSA"); 294 TEST_START("demote KEY_RSA");
321 ASSERT_INT_EQ(sshkey_demote(kr, &k1), 0); 295 ASSERT_INT_EQ(sshkey_from_private(kr, &k1), 0);
322 ASSERT_PTR_NE(k1, NULL); 296 ASSERT_PTR_NE(k1, NULL);
323 ASSERT_PTR_NE(kr, k1); 297 ASSERT_PTR_NE(kr, k1);
324 ASSERT_INT_EQ(k1->type, KEY_RSA); 298 ASSERT_INT_EQ(k1->type, KEY_RSA);
325 ASSERT_PTR_NE(k1->rsa, NULL); 299 ASSERT_PTR_NE(k1->rsa, NULL);
326 ASSERT_PTR_NE(k1->rsa->n, NULL); 300 ASSERT_PTR_NE(rsa_n(k1), NULL);
327 ASSERT_PTR_NE(k1->rsa->e, NULL); 301 ASSERT_PTR_NE(rsa_e(k1), NULL);
328 ASSERT_PTR_EQ(k1->rsa->p, NULL); 302 ASSERT_PTR_EQ(rsa_p(k1), NULL);
329 TEST_DONE(); 303 TEST_DONE();
330 304
331 TEST_START("equal KEY_RSA/demoted KEY_RSA"); 305 TEST_START("equal KEY_RSA/demoted KEY_RSA");
@@ -334,13 +308,13 @@ sshkey_tests(void)
334 TEST_DONE(); 308 TEST_DONE();
335 309
336 TEST_START("demote KEY_DSA"); 310 TEST_START("demote KEY_DSA");
337 ASSERT_INT_EQ(sshkey_demote(kd, &k1), 0); 311 ASSERT_INT_EQ(sshkey_from_private(kd, &k1), 0);
338 ASSERT_PTR_NE(k1, NULL); 312 ASSERT_PTR_NE(k1, NULL);
339 ASSERT_PTR_NE(kd, k1); 313 ASSERT_PTR_NE(kd, k1);
340 ASSERT_INT_EQ(k1->type, KEY_DSA); 314 ASSERT_INT_EQ(k1->type, KEY_DSA);
341 ASSERT_PTR_NE(k1->dsa, NULL); 315 ASSERT_PTR_NE(k1->dsa, NULL);
342 ASSERT_PTR_NE(k1->dsa->g, NULL); 316 ASSERT_PTR_NE(dsa_g(k1), NULL);
343 ASSERT_PTR_EQ(k1->dsa->priv_key, NULL); 317 ASSERT_PTR_EQ(dsa_priv_key(k1), NULL);
344 TEST_DONE(); 318 TEST_DONE();
345 319
346 TEST_START("equal KEY_DSA/demoted KEY_DSA"); 320 TEST_START("equal KEY_DSA/demoted KEY_DSA");
@@ -350,7 +324,7 @@ sshkey_tests(void)
350 324
351#ifdef OPENSSL_HAS_ECC 325#ifdef OPENSSL_HAS_ECC
352 TEST_START("demote KEY_ECDSA"); 326 TEST_START("demote KEY_ECDSA");
353 ASSERT_INT_EQ(sshkey_demote(ke, &k1), 0); 327 ASSERT_INT_EQ(sshkey_from_private(ke, &k1), 0);
354 ASSERT_PTR_NE(k1, NULL); 328 ASSERT_PTR_NE(k1, NULL);
355 ASSERT_PTR_NE(ke, k1); 329 ASSERT_PTR_NE(ke, k1);
356 ASSERT_INT_EQ(k1->type, KEY_ECDSA); 330 ASSERT_INT_EQ(k1->type, KEY_ECDSA);
@@ -367,7 +341,7 @@ sshkey_tests(void)
367#endif 341#endif
368 342
369 TEST_START("demote KEY_ED25519"); 343 TEST_START("demote KEY_ED25519");
370 ASSERT_INT_EQ(sshkey_demote(kf, &k1), 0); 344 ASSERT_INT_EQ(sshkey_from_private(kf, &k1), 0);
371 ASSERT_PTR_NE(k1, NULL); 345 ASSERT_PTR_NE(k1, NULL);
372 ASSERT_PTR_NE(kf, k1); 346 ASSERT_PTR_NE(kf, k1);
373 ASSERT_INT_EQ(k1->type, KEY_ED25519); 347 ASSERT_INT_EQ(k1->type, KEY_ED25519);
diff --git a/regress/unittests/sshkey/testdata/rsa_1_sha1 b/regress/unittests/sshkey/testdata/rsa_1_sha1
new file mode 100644
index 000000000..5de3f8422
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/rsa_1_sha1
@@ -0,0 +1,15 @@
1-----BEGIN RSA PRIVATE KEY-----
2MIICXAIBAAKBgQDLV5lUTt7FrADseB/CGhEZzpoojjEW5y8+ePvLppmK3MmMI18u
3d6vxzpK3bwZLYkVSyfJYI0HmIuGhdu7yMrW6wb84gbq8C31Xoe9EORcIUuGSvDKd
4NSM1SjlhDquRblDFB8kToqXyx1lqrXecXylxIUOL0jE+u0rU1967pDJx+wIDAQAB
5AoGAXyj5mpjmbD+YlxGIWz/zrM4hGsWgd4VteKEJxT6MMI4uzCRpkMd0ck8oHiwZ
6GAI/SwUzIsgtONQuH3AXVsUgghW4Ynn+8ksEv0IZ918WDMDwqvqkyrVzsOsZzqYj
7Pf8DUDKCpwFjnlknJ04yvWBZvVhWtY4OiZ8GV0Ttsu3k+GECQQD1YHfvBb5FdJBv
8Uhde2Il+jaFia8mwVVNNaiD2ECxXx6CzGz54ZLEB9NPVfDUZK8lJ4UJDqelWNh3i
9PF3RefWDAkEA1CVBzAFL4mNwpleVPzrfy69xP3gWOa26MxM/GE6zx9jC7HgQ3KPa
10WKdG/FuHs085aTRDaDLmGcZ8IvMuu7NgKQJAcIOKmxR0Gd8IN7NZugjqixggb0Pj
11mLKXXwESGiJyYtHL0zTj4Uqyi6Ya2GJ66o7UXscmnmYz828fJtTtZBdbRwJBALfi
12C2QvA32Zv/0PEXibKXy996WSC4G3ShwXZKtHHKHvCxY5BDSbehk59VesZrVPyG2e
13NYdOBxD0cIlCzJE56/ECQAndVkxvO8hwyEFGGwF3faHIAe/OxVb+MjaU25//Pe1/
14h/e6tlCk4w9CODpyV685gV394eYwMcGDcIkipTNUDZs=
15-----END RSA PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/rsa_1_sha1-cert.pub b/regress/unittests/sshkey/testdata/rsa_1_sha1-cert.pub
new file mode 100644
index 000000000..ff49d7598
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/rsa_1_sha1-cert.pub
@@ -0,0 +1 @@
ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAgy5PGFfSaEuSuXsjvKlMZGXYD0xlnqdZftuW9tMkUYz4AAAADAQABAAAAgQDLV5lUTt7FrADseB/CGhEZzpoojjEW5y8+ePvLppmK3MmMI18ud6vxzpK3bwZLYkVSyfJYI0HmIuGhdu7yMrW6wb84gbq8C31Xoe9EORcIUuGSvDKdNSM1SjlhDquRblDFB8kToqXyx1lqrXecXylxIUOL0jE+u0rU1967pDJx+wAAAAAAAAABAAAAAQAAAARodWdvAAAAEgAAAAV1c2VyMQAAAAV1c2VyMgAAAAA2i4NgAAAAAE0d4eAAAABEAAAADWZvcmNlLWNvbW1hbmQAAAALAAAABy9iaW4vbHMAAAAOc291cmNlLWFkZHJlc3MAAAAOAAAACjEwLjAuMC4wLzgAAABkAAAAFXBlcm1pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQD00RRenvxICSYvj54CPiYHM86OT5xwI9XORNH6Zkl3JPCQkAEdQ3hyfhraROaHsSv43wJcKyKrEg5XUZ8fZ/BoKIGU4Rd5AmL9wyPGv2RVY7gWELqXVSpu89R2tQJRmMVMD38CH0wqCTuoZirlKMTen6yfgYuFEpuqar0uOIeAyaQG6/9rVKWK36tcfM7YXx8fmGSN4eK/JhWDDjlo28YJ7ZFF9umh5baZG2Ai/vL3BJ7C3pqaEQNdKj8XqaSoDvFWKfOujk1620Rcuj3W0D0dvp/rH8xz8YkM1dMqGlYIZ4nrF5acB58Nk5FYBjtj1hu4DGEQlWL1Avk1agU4DQLrAAABDwAAAAdzc2gtcnNhAAABAF5BtPY8FbmIekK/zNq6/Lp5agKT5zEVxqAyZKhp75bLRP+kOMZBVB9ZWrekZk6IAVAOCZGQzTsD4mxIQsxBLl8k5hvEWb90/+w9/BzW9ScOGQe+y0COa0QWWR7L3k1S8WX2oAGvtDWOj7Md85nij4ZSU9/QQQFVDF8VilWPSMxUf/3I1fqyDq7AWcZkGk/bFUN6K6RsCSxIPlGmKt0IauyvSMI2IT0XeRT242RngeeUW8vFrn9TXy9YxJRW+cSeLKCuu8agBYyQMXWQ+q39eZZqVYSoo7nFEEhtaLs8d6jzgGkcE9wGJ9KLgfY/mG2vX3gI4IzncKkVJRoeiDzXFIk= RSA test key #1
diff --git a/regress/unittests/sshkey/testdata/rsa_1_sha1.pub b/regress/unittests/sshkey/testdata/rsa_1_sha1.pub
new file mode 100644
index 000000000..23ef872e0
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/rsa_1_sha1.pub
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDLV5lUTt7FrADseB/CGhEZzpoojjEW5y8+ePvLppmK3MmMI18ud6vxzpK3bwZLYkVSyfJYI0HmIuGhdu7yMrW6wb84gbq8C31Xoe9EORcIUuGSvDKdNSM1SjlhDquRblDFB8kToqXyx1lqrXecXylxIUOL0jE+u0rU1967pDJx+w== RSA test key #1
diff --git a/regress/unittests/sshkey/testdata/rsa_1_sha512 b/regress/unittests/sshkey/testdata/rsa_1_sha512
new file mode 100644
index 000000000..5de3f8422
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/rsa_1_sha512
@@ -0,0 +1,15 @@
1-----BEGIN RSA PRIVATE KEY-----
2MIICXAIBAAKBgQDLV5lUTt7FrADseB/CGhEZzpoojjEW5y8+ePvLppmK3MmMI18u
3d6vxzpK3bwZLYkVSyfJYI0HmIuGhdu7yMrW6wb84gbq8C31Xoe9EORcIUuGSvDKd
4NSM1SjlhDquRblDFB8kToqXyx1lqrXecXylxIUOL0jE+u0rU1967pDJx+wIDAQAB
5AoGAXyj5mpjmbD+YlxGIWz/zrM4hGsWgd4VteKEJxT6MMI4uzCRpkMd0ck8oHiwZ
6GAI/SwUzIsgtONQuH3AXVsUgghW4Ynn+8ksEv0IZ918WDMDwqvqkyrVzsOsZzqYj
7Pf8DUDKCpwFjnlknJ04yvWBZvVhWtY4OiZ8GV0Ttsu3k+GECQQD1YHfvBb5FdJBv
8Uhde2Il+jaFia8mwVVNNaiD2ECxXx6CzGz54ZLEB9NPVfDUZK8lJ4UJDqelWNh3i
9PF3RefWDAkEA1CVBzAFL4mNwpleVPzrfy69xP3gWOa26MxM/GE6zx9jC7HgQ3KPa
10WKdG/FuHs085aTRDaDLmGcZ8IvMuu7NgKQJAcIOKmxR0Gd8IN7NZugjqixggb0Pj
11mLKXXwESGiJyYtHL0zTj4Uqyi6Ya2GJ66o7UXscmnmYz828fJtTtZBdbRwJBALfi
12C2QvA32Zv/0PEXibKXy996WSC4G3ShwXZKtHHKHvCxY5BDSbehk59VesZrVPyG2e
13NYdOBxD0cIlCzJE56/ECQAndVkxvO8hwyEFGGwF3faHIAe/OxVb+MjaU25//Pe1/
14h/e6tlCk4w9CODpyV685gV394eYwMcGDcIkipTNUDZs=
15-----END RSA PRIVATE KEY-----
diff --git a/regress/unittests/sshkey/testdata/rsa_1_sha512-cert.pub b/regress/unittests/sshkey/testdata/rsa_1_sha512-cert.pub
new file mode 100644
index 000000000..47451968f
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/rsa_1_sha512-cert.pub
@@ -0,0 +1 @@
ssh-rsa-cert-v01@openssh.com AAAAHHNzaC1yc2EtY2VydC12MDFAb3BlbnNzaC5jb20AAAAg/bUEmnMYHxlv1N7iXvnYPYdzDjlTRKoaIGEPkaQQQDwAAAADAQABAAAAgQDLV5lUTt7FrADseB/CGhEZzpoojjEW5y8+ePvLppmK3MmMI18ud6vxzpK3bwZLYkVSyfJYI0HmIuGhdu7yMrW6wb84gbq8C31Xoe9EORcIUuGSvDKdNSM1SjlhDquRblDFB8kToqXyx1lqrXecXylxIUOL0jE+u0rU1967pDJx+wAAAAAAAAABAAAAAQAAAARodWdvAAAAEgAAAAV1c2VyMQAAAAV1c2VyMgAAAAA2i4NgAAAAAE0d4eAAAABEAAAADWZvcmNlLWNvbW1hbmQAAAALAAAABy9iaW4vbHMAAAAOc291cmNlLWFkZHJlc3MAAAAOAAAACjEwLjAuMC4wLzgAAABkAAAAFXBlcm1pdC1YMTEtZm9yd2FyZGluZwAAAAAAAAAXcGVybWl0LWFnZW50LWZvcndhcmRpbmcAAAAAAAAACnBlcm1pdC1wdHkAAAAAAAAADnBlcm1pdC11c2VyLXJjAAAAAAAAAAAAAAEXAAAAB3NzaC1yc2EAAAADAQABAAABAQD00RRenvxICSYvj54CPiYHM86OT5xwI9XORNH6Zkl3JPCQkAEdQ3hyfhraROaHsSv43wJcKyKrEg5XUZ8fZ/BoKIGU4Rd5AmL9wyPGv2RVY7gWELqXVSpu89R2tQJRmMVMD38CH0wqCTuoZirlKMTen6yfgYuFEpuqar0uOIeAyaQG6/9rVKWK36tcfM7YXx8fmGSN4eK/JhWDDjlo28YJ7ZFF9umh5baZG2Ai/vL3BJ7C3pqaEQNdKj8XqaSoDvFWKfOujk1620Rcuj3W0D0dvp/rH8xz8YkM1dMqGlYIZ4nrF5acB58Nk5FYBjtj1hu4DGEQlWL1Avk1agU4DQLrAAABFAAAAAxyc2Etc2hhMi01MTIAAAEA7/GoZsJqrq4xYotsRbpM8arZDjCzT6kohXeD/GVy26s5E/YWXRYCrOMIzSZxjuN5rAaNRW8ffxq14JyI94566Kg2OeoxQ6rK/dTqkk7I1RyypSXunT3I4++RPs1Q+hu9eS/WBzur0/D3dMejhuc3IBg6iB0481I4pGBGcD8/KjQFfhlCuGVXwB1ALk2zfXFT1HYYrs6bYZuQqjgvArnjYJ0do3fTSDC20/ydV4BHnI3fVAY2THVjX45V2ppPadl/rpczaJqW1ZtpnpJkV8Un316stQSD0xLHUDjp89O6d9Yq5S0kDdfwTRJIPm9f2cGNakJwN5qzmmmdDroRKODYcg== RSA test key #1
diff --git a/regress/unittests/sshkey/testdata/rsa_1_sha512.pub b/regress/unittests/sshkey/testdata/rsa_1_sha512.pub
new file mode 100644
index 000000000..23ef872e0
--- /dev/null
+++ b/regress/unittests/sshkey/testdata/rsa_1_sha512.pub
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDLV5lUTt7FrADseB/CGhEZzpoojjEW5y8+ePvLppmK3MmMI18ud6vxzpK3bwZLYkVSyfJYI0HmIuGhdu7yMrW6wb84gbq8C31Xoe9EORcIUuGSvDKdNSM1SjlhDquRblDFB8kToqXyx1lqrXecXylxIUOL0jE+u0rU1967pDJx+w== RSA test key #1
diff --git a/regress/unittests/test_helper/fuzz.c b/regress/unittests/test_helper/fuzz.c
index 99f1d036c..78b36654d 100644
--- a/regress/unittests/test_helper/fuzz.c
+++ b/regress/unittests/test_helper/fuzz.c
@@ -196,7 +196,6 @@ fuzz_dump(struct fuzz *fuzz)
196 dump(fuzz_ptr(fuzz), fuzz_len(fuzz)); 196 dump(fuzz_ptr(fuzz), fuzz_len(fuzz));
197} 197}
198 198
199#ifdef SIGINFO
200static struct fuzz *last_fuzz; 199static struct fuzz *last_fuzz;
201 200
202static void 201static void
@@ -211,7 +210,6 @@ siginfo(int unused __attribute__((__unused__)))
211 atomicio(vwrite, STDERR_FILENO, buf, strlen(buf)); 210 atomicio(vwrite, STDERR_FILENO, buf, strlen(buf));
212 } 211 }
213} 212}
214#endif
215 213
216struct fuzz * 214struct fuzz *
217fuzz_begin(u_int strategies, const void *p, size_t l) 215fuzz_begin(u_int strategies, const void *p, size_t l)
@@ -233,10 +231,11 @@ fuzz_begin(u_int strategies, const void *p, size_t l)
233 231
234 fuzz_next(ret); 232 fuzz_next(ret);
235 233
236#ifdef SIGINFO
237 last_fuzz = ret; 234 last_fuzz = ret;
235#ifdef SIGINFO
238 signal(SIGINFO, siginfo); 236 signal(SIGINFO, siginfo);
239#endif 237#endif
238 signal(SIGUSR1, siginfo);
240 239
241 return ret; 240 return ret;
242} 241}
@@ -245,10 +244,11 @@ void
245fuzz_cleanup(struct fuzz *fuzz) 244fuzz_cleanup(struct fuzz *fuzz)
246{ 245{
247 FUZZ_DBG(("cleanup, fuzz = %p", fuzz)); 246 FUZZ_DBG(("cleanup, fuzz = %p", fuzz));
248#ifdef SIGINFO
249 last_fuzz = NULL; 247 last_fuzz = NULL;
248#ifdef SIGINFO
250 signal(SIGINFO, SIG_DFL); 249 signal(SIGINFO, SIG_DFL);
251#endif 250#endif
251 signal(SIGUSR1, SIG_DFL);
252 assert(fuzz != NULL); 252 assert(fuzz != NULL);
253 assert(fuzz->seed != NULL); 253 assert(fuzz->seed != NULL);
254 assert(fuzz->fuzzed != NULL); 254 assert(fuzz->fuzzed != NULL);
diff --git a/regress/unittests/test_helper/test_helper.c b/regress/unittests/test_helper/test_helper.c
index 866f3495d..4cc70852c 100644
--- a/regress/unittests/test_helper/test_helper.c
+++ b/regress/unittests/test_helper/test_helper.c
@@ -203,7 +203,6 @@ test_info(char *s, size_t len)
203 *subtest_info != '\0' ? " - " : "", subtest_info); 203 *subtest_info != '\0' ? " - " : "", subtest_info);
204} 204}
205 205
206#ifdef SIGINFO
207static void 206static void
208siginfo(int unused __attribute__((__unused__))) 207siginfo(int unused __attribute__((__unused__)))
209{ 208{
@@ -212,7 +211,6 @@ siginfo(int unused __attribute__((__unused__)))
212 test_info(buf, sizeof(buf)); 211 test_info(buf, sizeof(buf));
213 atomicio(vwrite, STDERR_FILENO, buf, strlen(buf)); 212 atomicio(vwrite, STDERR_FILENO, buf, strlen(buf));
214} 213}
215#endif
216 214
217void 215void
218test_start(const char *n) 216test_start(const char *n)
@@ -226,6 +224,7 @@ test_start(const char *n)
226#ifdef SIGINFO 224#ifdef SIGINFO
227 signal(SIGINFO, siginfo); 225 signal(SIGINFO, siginfo);
228#endif 226#endif
227 signal(SIGUSR1, siginfo);
229} 228}
230 229
231void 230void