summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog88
-rw-r--r--Makefile.in30
-rw-r--r--regress/Makefile10
-rw-r--r--regress/unittests/Makefile2
-rw-r--r--regress/unittests/sshkey/Makefile13
-rw-r--r--regress/unittests/sshkey/common.c80
-rw-r--r--regress/unittests/sshkey/common.h16
-rwxr-xr-xregress/unittests/sshkey/mktestdata.sh189
-rw-r--r--regress/unittests/sshkey/test_file.c451
-rw-r--r--regress/unittests/sshkey/test_fuzz.c396
-rw-r--r--regress/unittests/sshkey/test_sshkey.c343
-rw-r--r--regress/unittests/sshkey/testdata/dsa_112
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1-cert.fp1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1.param.g1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1.param.priv1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1.param.pub1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_1_pw15
-rw-r--r--regress/unittests/sshkey/testdata/dsa_212
-rw-r--r--regress/unittests/sshkey/testdata/dsa_2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_2.pub1
-rw-r--r--regress/unittests/sshkey/testdata/dsa_n12
-rw-r--r--regress/unittests/sshkey/testdata/dsa_n_pw21
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_15
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1-cert.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1.param.curve1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1.param.priv1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1.param.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_1_pw8
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_27
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_2.param.curve1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_2.param.priv1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_2.param.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_2.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_n5
-rw-r--r--regress/unittests/sshkey/testdata/ecdsa_n_pw9
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_17
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1-cert.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_1_pw8
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_27
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/ed25519_2.pub1
-rw-r--r--regress/unittests/sshkey/testdata/pw1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_1bin0 -> 421 bytes
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_1.param.n1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_1_pwbin0 -> 421 bytes
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_2bin0 -> 981 bytes
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_2.param.n1
-rw-r--r--regress/unittests/sshkey/testdata/rsa1_2.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_112
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1-cert.fp1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1-cert.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1.fp1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1.param.n1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1.param.p1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1.param.q1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_1_pw15
-rw-r--r--regress/unittests/sshkey/testdata/rsa_227
-rw-r--r--regress/unittests/sshkey/testdata/rsa_2.fp1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_2.fp.bb1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_2.param.n1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_2.param.p1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_2.param.q1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_2.pub1
-rw-r--r--regress/unittests/sshkey/testdata/rsa_n12
-rw-r--r--regress/unittests/sshkey/testdata/rsa_n_pw14
-rw-r--r--regress/unittests/sshkey/tests.c27
89 files changed, 1898 insertions, 11 deletions
diff --git a/ChangeLog b/ChangeLog
index 556f3691..36109a9b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -87,6 +87,94 @@
- djm@cvs.openbsd.org 2014/06/24 01:04:43
[regress/krl.sh]
regress test for broken consecutive revoked serial number ranges
+ - djm@cvs.openbsd.org 2014/06/24 01:14:17
+ [Makefile.in regress/Makefile regress/unittests/Makefile]
+ [regress/unittests/sshkey/Makefile]
+ [regress/unittests/sshkey/common.c]
+ [regress/unittests/sshkey/common.h]
+ [regress/unittests/sshkey/mktestdata.sh]
+ [regress/unittests/sshkey/test_file.c]
+ [regress/unittests/sshkey/test_fuzz.c]
+ [regress/unittests/sshkey/test_sshkey.c]
+ [regress/unittests/sshkey/tests.c]
+ [regress/unittests/sshkey/testdata/dsa_1]
+ [regress/unittests/sshkey/testdata/dsa_1-cert.fp]
+ [regress/unittests/sshkey/testdata/dsa_1-cert.pub]
+ [regress/unittests/sshkey/testdata/dsa_1.fp]
+ [regress/unittests/sshkey/testdata/dsa_1.fp.bb]
+ [regress/unittests/sshkey/testdata/dsa_1.param.g]
+ [regress/unittests/sshkey/testdata/dsa_1.param.priv]
+ [regress/unittests/sshkey/testdata/dsa_1.param.pub]
+ [regress/unittests/sshkey/testdata/dsa_1.pub]
+ [regress/unittests/sshkey/testdata/dsa_1_pw]
+ [regress/unittests/sshkey/testdata/dsa_2]
+ [regress/unittests/sshkey/testdata/dsa_2.fp]
+ [regress/unittests/sshkey/testdata/dsa_2.fp.bb]
+ [regress/unittests/sshkey/testdata/dsa_2.pub]
+ [regress/unittests/sshkey/testdata/dsa_n]
+ [regress/unittests/sshkey/testdata/dsa_n_pw]
+ [regress/unittests/sshkey/testdata/ecdsa_1]
+ [regress/unittests/sshkey/testdata/ecdsa_1-cert.fp]
+ [regress/unittests/sshkey/testdata/ecdsa_1-cert.pub]
+ [regress/unittests/sshkey/testdata/ecdsa_1.fp]
+ [regress/unittests/sshkey/testdata/ecdsa_1.fp.bb]
+ [regress/unittests/sshkey/testdata/ecdsa_1.param.curve]
+ [regress/unittests/sshkey/testdata/ecdsa_1.param.priv]
+ [regress/unittests/sshkey/testdata/ecdsa_1.param.pub]
+ [regress/unittests/sshkey/testdata/ecdsa_1.pub]
+ [regress/unittests/sshkey/testdata/ecdsa_1_pw]
+ [regress/unittests/sshkey/testdata/ecdsa_2]
+ [regress/unittests/sshkey/testdata/ecdsa_2.fp]
+ [regress/unittests/sshkey/testdata/ecdsa_2.fp.bb]
+ [regress/unittests/sshkey/testdata/ecdsa_2.param.curve]
+ [regress/unittests/sshkey/testdata/ecdsa_2.param.priv]
+ [regress/unittests/sshkey/testdata/ecdsa_2.param.pub]
+ [regress/unittests/sshkey/testdata/ecdsa_2.pub]
+ [regress/unittests/sshkey/testdata/ecdsa_n]
+ [regress/unittests/sshkey/testdata/ecdsa_n_pw]
+ [regress/unittests/sshkey/testdata/ed25519_1]
+ [regress/unittests/sshkey/testdata/ed25519_1-cert.fp]
+ [regress/unittests/sshkey/testdata/ed25519_1-cert.pub]
+ [regress/unittests/sshkey/testdata/ed25519_1.fp]
+ [regress/unittests/sshkey/testdata/ed25519_1.fp.bb]
+ [regress/unittests/sshkey/testdata/ed25519_1.pub]
+ [regress/unittests/sshkey/testdata/ed25519_1_pw]
+ [regress/unittests/sshkey/testdata/ed25519_2]
+ [regress/unittests/sshkey/testdata/ed25519_2.fp]
+ [regress/unittests/sshkey/testdata/ed25519_2.fp.bb]
+ [regress/unittests/sshkey/testdata/ed25519_2.pub]
+ [regress/unittests/sshkey/testdata/pw]
+ [regress/unittests/sshkey/testdata/rsa1_1]
+ [regress/unittests/sshkey/testdata/rsa1_1.fp]
+ [regress/unittests/sshkey/testdata/rsa1_1.fp.bb]
+ [regress/unittests/sshkey/testdata/rsa1_1.param.n]
+ [regress/unittests/sshkey/testdata/rsa1_1.pub]
+ [regress/unittests/sshkey/testdata/rsa1_1_pw]
+ [regress/unittests/sshkey/testdata/rsa1_2]
+ [regress/unittests/sshkey/testdata/rsa1_2.fp]
+ [regress/unittests/sshkey/testdata/rsa1_2.fp.bb]
+ [regress/unittests/sshkey/testdata/rsa1_2.param.n]
+ [regress/unittests/sshkey/testdata/rsa1_2.pub]
+ [regress/unittests/sshkey/testdata/rsa_1]
+ [regress/unittests/sshkey/testdata/rsa_1-cert.fp]
+ [regress/unittests/sshkey/testdata/rsa_1-cert.pub]
+ [regress/unittests/sshkey/testdata/rsa_1.fp]
+ [regress/unittests/sshkey/testdata/rsa_1.fp.bb]
+ [regress/unittests/sshkey/testdata/rsa_1.param.n]
+ [regress/unittests/sshkey/testdata/rsa_1.param.p]
+ [regress/unittests/sshkey/testdata/rsa_1.param.q]
+ [regress/unittests/sshkey/testdata/rsa_1.pub]
+ [regress/unittests/sshkey/testdata/rsa_1_pw]
+ [regress/unittests/sshkey/testdata/rsa_2]
+ [regress/unittests/sshkey/testdata/rsa_2.fp]
+ [regress/unittests/sshkey/testdata/rsa_2.fp.bb]
+ [regress/unittests/sshkey/testdata/rsa_2.param.n]
+ [regress/unittests/sshkey/testdata/rsa_2.param.p]
+ [regress/unittests/sshkey/testdata/rsa_2.param.q]
+ [regress/unittests/sshkey/testdata/rsa_2.pub]
+ [regress/unittests/sshkey/testdata/rsa_n]
+ [regress/unittests/sshkey/testdata/rsa_n_pw]
+ unit and fuzz tests for new key API
20140618
- (tim) [openssh/session.c] Work around to get chroot sftp working on UnixWare
diff --git a/Makefile.in b/Makefile.in
index 16659c0b..9adc0daa 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# $Id: Makefile.in,v 1.360 2014/07/02 05:28:03 djm Exp $
+# $Id: Makefile.in,v 1.361 2014/07/02 07:38:32 djm Exp $
# uncomment if you run a non bourne compatable shell. Ie. csh
#SHELL = @SH@
@@ -66,10 +66,10 @@ TARGETS=ssh$(EXEEXT) sshd$(EXEEXT) ssh-add$(EXEEXT) ssh-keygen$(EXEEXT) ssh-keys
LIBOPENSSH_OBJS=\
ssherr.o \
sshbuf.o \
+ sshkey.o \
sshbuf-getput-basic.o \
sshbuf-misc.o \
- sshbuf-getput-crypto.o \
- sshkey.o
+ sshbuf-getput-crypto.o
LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
authfd.o authfile.o bufaux.o bufbn.o buffer.o \
@@ -227,6 +227,8 @@ clean: regressclean
rm -f regress/unittests/test_helper/*.o
rm -f regress/unittests/sshbuf/*.o
rm -f regress/unittests/sshbuf/test_sshbuf
+ rm -f regress/unittests/sshkey/*.o
+ rm -f regress/unittests/sshkey/test_sshkey
(cd openbsd-compat && $(MAKE) clean)
distclean: regressclean
@@ -239,6 +241,8 @@ distclean: regressclean
rm -f regress/unittests/test_helper/*.o
rm -f regress/unittests/sshbuf/*.o
rm -f regress/unittests/sshbuf/test_sshbuf
+ rm -f regress/unittests/sshkey/*.o
+ rm -f regress/unittests/sshkey/test_sshkey
(cd openbsd-compat && $(MAKE) distclean)
if test -d pkg ; then \
rm -fr pkg ; \
@@ -418,6 +422,8 @@ regress-prep:
mkdir -p `pwd`/regress/unittests/test_helper
[ -d `pwd`/regress/unittests/sshbuf ] || \
mkdir -p `pwd`/regress/unittests/sshbuf
+ [ -d `pwd`/regress/unittests/sshkey ] || \
+ mkdir -p `pwd`/regress/unittests/sshkey
[ -f `pwd`/regress/Makefile ] || \
ln -s `cd $(srcdir) && pwd`/regress/Makefile `pwd`/regress/Makefile
@@ -448,15 +454,29 @@ UNITTESTS_TEST_SSHBUF_OBJS=\
regress/unittests/sshbuf/test_sshbuf_fixed.o
regress/unittests/sshbuf/test_sshbuf$(EXEEXT): ${UNITTESTS_TEST_SSHBUF_OBJS} \
- regress/unittests/test_helper/libtest_helper.a
+ regress/unittests/test_helper/libtest_helper.a libssh.a
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHBUF_OBJS) \
-L regress/unittests/test_helper -ltest_helper \
-lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+UNITTESTS_TEST_SSHKEY_OBJS=\
+ regress/unittests/sshkey/test_fuzz.o \
+ regress/unittests/sshkey/tests.o \
+ regress/unittests/sshkey/common.o \
+ regress/unittests/sshkey/test_file.o \
+ regress/unittests/sshkey/test_sshkey.o
+
+regress/unittests/sshkey/test_sshkey$(EXEEXT): ${UNITTESTS_TEST_SSHKEY_OBJS} \
+ regress/unittests/test_helper/libtest_helper.a libssh.a
+ $(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_SSHKEY_OBJS) \
+ -L regress/unittests/test_helper -ltest_helper \
+ -lssh -lopenbsd-compat -lssh -lopenbsd-compat $(LIBS)
+
REGRESS_BINARIES=\
regress/modpipe$(EXEEXT) \
regress/setuid-allowed$(EXEEXT) \
- regress/unittests/sshbuf/test_sshbuf$(EXEEXT)
+ regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \
+ regress/unittests/sshkey/test_sshkey$(EXEEXT)
tests interop-tests: regress-prep $(TARGETS) $(REGRESS_BINARIES)
BUILDDIR=`pwd`; \
diff --git a/regress/Makefile b/regress/Makefile
index 370f28a9..09ceee73 100644
--- a/regress/Makefile
+++ b/regress/Makefile
@@ -1,4 +1,4 @@
-# $OpenBSD: Makefile,v 1.69 2014/04/30 05:32:00 djm Exp $
+# $OpenBSD: Makefile,v 1.70 2014/06/24 01:14:17 djm Exp $
REGRESS_TARGETS= unit t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t-exec
tests: $(REGRESS_TARGETS)
@@ -102,9 +102,6 @@ TEST_SSH_SSHKEYGEN?=ssh-keygen
CPPFLAGS=-I..
-unit:
- (set -e ; cd ${.CURDIR}/unittests ; make)
-
t1:
${TEST_SSH_SSHKEYGEN} -if ${.CURDIR}/rsa_ssh2.prv | diff - ${.CURDIR}/rsa_openssh.prv
tr '\n' '\r' <${.CURDIR}/rsa_ssh2.prv > ${.OBJDIR}/rsa_ssh2_cr.prv
@@ -186,4 +183,7 @@ interop: ${INTEROP_TARGETS}
# Unit tests, built by top-level Makefile
unit:
- ${.OBJDIR}/unittests/sshbuf/test_sshbuf
+ set -e ; if test -z "${SKIP_UNIT}" ; then \
+ ${.OBJDIR}/unittests/sshbuf/test_sshbuf ; \
+ ${.OBJDIR}/unittests/sshkey/test_sshkey ; \
+ fi
diff --git a/regress/unittests/Makefile b/regress/unittests/Makefile
index 2581a585..bdb4574e 100644
--- a/regress/unittests/Makefile
+++ b/regress/unittests/Makefile
@@ -1,5 +1,5 @@
# $OpenBSD: Makefile,v 1.1 2014/04/30 05:32:00 djm Exp $
-SUBDIR= test_helper sshbuf
+SUBDIR= test_helper sshbuf sshkey
.include <bsd.subdir.mk>
diff --git a/regress/unittests/sshkey/Makefile b/regress/unittests/sshkey/Makefile
new file mode 100644
index 00000000..1bcd2667
--- /dev/null
+++ b/regress/unittests/sshkey/Makefile
@@ -0,0 +1,13 @@
+# $OpenBSD: Makefile,v 1.1 2014/06/24 01:14:18 djm Exp $
+
+TEST_ENV= "MALLOC_OPTIONS=AFGJPRX"
+
+PROG=test_sshkey
+SRCS=tests.c test_sshkey.c test_file.c test_fuzz.c common.c
+REGRESS_TARGETS=run-regress-${PROG}
+
+run-regress-${PROG}: ${PROG}
+ env ${TEST_ENV} ./${PROG} -d ${.CURDIR}/testdata
+
+.include <bsd.regress.mk>
+
diff --git a/regress/unittests/sshkey/common.c b/regress/unittests/sshkey/common.c
new file mode 100644
index 00000000..b73a788d
--- /dev/null
+++ b/regress/unittests/sshkey/common.c
@@ -0,0 +1,80 @@
+/* $OpenBSD: common.c,v 1.1 2014/06/24 01:14:18 djm Exp $ */
+/*
+ * Helpers for key API tests
+ *
+ * Placed in the public domain
+ */
+
+#include "includes.h"
+
+#include <sys/types.h>
+#include <sys/param.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <openssl/bn.h>
+#include <openssl/ec.h>
+#include <openssl/rsa.h>
+#include <openssl/dsa.h>
+#include <openssl/objects.h>
+
+#include "../test_helper/test_helper.h"
+
+#include "ssherr.h"
+#include "authfile.h"
+#include "sshkey.h"
+#include "sshbuf.h"
+
+#include "common.h"
+
+struct sshbuf *
+load_file(const char *name)
+{
+ int fd;
+ struct sshbuf *ret;
+
+ ASSERT_PTR_NE(ret = sshbuf_new(), NULL);
+ ASSERT_INT_NE(fd = open(test_data_file(name), O_RDONLY), -1);