Skip to content

Commit eca864b

Browse files
committed
openssh-8.0p1-pkcs11-uri
1 parent 0ba0429 commit eca864b

16 files changed

Lines changed: 2025 additions & 247 deletions

Makefile.in

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
110110
monitor_fdpass.o rijndael.o ssh-dss.o ssh-ecdsa.o ssh-ecdsa-sk.o \
111111
ssh-ed25519-sk.o ssh-rsa.o dh.o \
112112
msg.o progressmeter.o dns.o entropy.o gss-genr.o umac.o umac128.o \
113-
ssh-pkcs11.o smult_curve25519_ref.o \
113+
ssh-pkcs11.o ssh-pkcs11-uri.o smult_curve25519_ref.o \
114114
poly1305.o chacha.o cipher-chachapoly.o cipher-chachapoly-libcrypto.o \
115115
ssh-ed25519.o digest-openssl.o digest-libc.o \
116116
hmac.o ed25519.o hash.o \
@@ -339,6 +339,8 @@ clean: regressclean
339339
rm -f regress/unittests/sshsig/test_sshsig$(EXEEXT)
340340
rm -f regress/unittests/utf8/*.o
341341
rm -f regress/unittests/utf8/test_utf8$(EXEEXT)
342+
rm -f regress/unittests/pkcs11/*.o
343+
rm -f regress/unittests/pkcs11/test_pkcs11$(EXEEXT)
342344
rm -f regress/misc/sk-dummy/*.o
343345
rm -f regress/misc/sk-dummy/*.lo
344346
rm -f regress/misc/ssh-verify-attestation/ssh-verify-attestation$(EXEEXT)
@@ -377,6 +379,8 @@ distclean: regressclean
377379
rm -f regress/unittests/sshsig/test_sshsig
378380
rm -f regress/unittests/utf8/*.o
379381
rm -f regress/unittests/utf8/test_utf8
382+
rm -f regress/unittests/pkcs11/*.o
383+
rm -f regress/unittests/pkcs11/test_pkcs11
380384
rm -f regress/misc/sk-dummy/*.o
381385
rm -f regress/misc/sk-dummy/*.lo
382386
rm -f regress/misc/sk-dummy/sk-dummy.so
@@ -558,6 +562,7 @@ regress-prep:
558562
$(MKDIR_P) `pwd`/regress/unittests/sshkey
559563
$(MKDIR_P) `pwd`/regress/unittests/sshsig
560564
$(MKDIR_P) `pwd`/regress/unittests/utf8
565+
$(MKDIR_P) `pwd`/regress/unittests/pkcs11
561566
$(MKDIR_P) `pwd`/regress/misc/sk-dummy
562567
$(MKDIR_P) `pwd`/regress/misc/ssh-verify-attestation
563568
[ -f `pwd`/regress/Makefile ] || \
@@ -731,6 +736,16 @@ regress/unittests/utf8/test_utf8$(EXEEXT): \
731736
regress/unittests/test_helper/libtest_helper.a \
732737
-lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
733738

739+
UNITTESTS_TEST_PKCS11_OBJS=\
740+
regress/unittests/pkcs11/tests.o
741+
742+
regress/unittests/pkcs11/test_pkcs11$(EXEEXT): \
743+
${UNITTESTS_TEST_PKCS11_OBJS} \
744+
regress/unittests/test_helper/libtest_helper.a libssh.a
745+
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_PKCS11_OBJS) \
746+
regress/unittests/test_helper/libtest_helper.a \
747+
-lssh -lopenbsd-compat -lcrypto $(LIBS)
748+
734749
# These all need to be compiled -fPIC, so they are treated differently.
735750
SK_DUMMY_OBJS=\
736751
regress/misc/sk-dummy/sk-dummy.lo \
@@ -776,7 +791,8 @@ regress-unit-binaries: regress-prep $(REGRESSLIBS) \
776791
regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \
777792
regress/unittests/sshkey/test_sshkey$(EXEEXT) \
778793
regress/unittests/sshsig/test_sshsig$(EXEEXT) \
779-
regress/unittests/utf8/test_utf8$(EXEEXT)
794+
regress/unittests/utf8/test_utf8$(EXEEXT) \
795+
regress/unittests/pkcs11/test_pkcs11$(EXEEXT) \
780796

781797
tests: file-tests t-exec interop-tests extra-tests unit
782798
echo all tests passed

configure.ac

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2172,12 +2172,14 @@ AC_LINK_IFELSE(
21722172
[AC_DEFINE([HAVE_ISBLANK], [1], [Define if you have isblank(3C).])
21732173
])
21742174

2175+
SCARD_MSG="yes"
21752176
disable_pkcs11=
21762177
AC_ARG_ENABLE([pkcs11],
21772178
[ --disable-pkcs11 disable PKCS#11 support code [no]],
21782179
[
21792180
if test "x$enableval" = "xno" ; then
21802181
disable_pkcs11=1
2182+
SCARD_MSG="no"
21812183
fi
21822184
]
21832185
)
@@ -2207,6 +2209,40 @@ AC_SEARCH_LIBS([dlopen], [dl])
22072209
AC_CHECK_FUNCS([dlopen])
22082210
AC_CHECK_DECL([RTLD_NOW], [], [], [#include <dlfcn.h>])
22092211

2212+
# Check whether we have a p11-kit, we got default provider on command line
2213+
DEFAULT_PKCS11_PROVIDER_MSG="no"
2214+
AC_ARG_WITH([default-pkcs11-provider],
2215+
[ --with-default-pkcs11-provider[[=PATH]] Use default pkcs11 provider (p11-kit detected by default)],
2216+
[ if test "x$withval" != "xno" && test "x$disable_pkcs11" = "x"; then
2217+
if test "x$withval" = "xyes" ; then
2218+
AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
2219+
if test "x$PKGCONFIG" != "xno"; then
2220+
AC_MSG_CHECKING([if $PKGCONFIG knows about p11-kit])
2221+
if "$PKGCONFIG" "p11-kit-1"; then
2222+
AC_MSG_RESULT([yes])
2223+
use_pkgconfig_for_p11kit=yes
2224+
else
2225+
AC_MSG_RESULT([no])
2226+
fi
2227+
fi
2228+
else
2229+
PKCS11_PATH="${withval}"
2230+
fi
2231+
if test "x$use_pkgconfig_for_p11kit" = "xyes"; then
2232+
PKCS11_PATH=`$PKGCONFIG --variable=proxy_module p11-kit-1`
2233+
fi
2234+
AC_CHECK_FILE("$PKCS11_PATH",
2235+
[ AC_DEFINE_UNQUOTED([PKCS11_DEFAULT_PROVIDER], ["$PKCS11_PATH"], [Path to default PKCS#11 provider (p11-kit proxy)])
2236+
DEFAULT_PKCS11_PROVIDER_MSG="$PKCS11_PATH"
2237+
],
2238+
[ AC_MSG_ERROR([Requested PKCS11 provided not found]) ]
2239+
)
2240+
else
2241+
AC_MSG_WARN([Needs PKCS11 support to enable default pkcs11 provider])
2242+
fi ]
2243+
)
2244+
2245+
22102246
# IRIX has a const char return value for gai_strerror()
22112247
AC_CHECK_FUNCS([gai_strerror], [
22122248
AC_DEFINE([HAVE_GAI_STRERROR])
@@ -5822,6 +5858,7 @@ echo " BSD Auth support: $BSD_AUTH_MSG"
58225858
echo " Random number source: $RAND_MSG"
58235859
echo " Privsep sandbox style: $SANDBOX_STYLE"
58245860
echo " PKCS#11 support: $enable_pkcs11"
5861+
echo " Default PKCS#11 provider: $DEFAULT_PKCS11_PROVIDER_MSG"
58255862
echo " U2F/FIDO support: $enable_sk"
58265863

58275864
echo ""

regress/Makefile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \
137137
known_hosts known_hosts-cert known_hosts.* krl-* ls.copy \
138138
modpipe netcat no_identity_config \
139139
pidfile putty.rsa2 ready regress.log remote_pid \
140-
revoked-* rsa rsa-agent rsa-agent.pub rsa.pub rsa_ssh2_cr.prv \
140+
revoked-* rsa rsa-agent rsa-agent.pub rsa-agent-cert.pub \
141+
rsa.pub rsa_ssh2_cr.prv pkcs11*.crt pkcs11*.key pkcs11.info \
141142
rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \
142143
scp-ssh-wrapper.scp setuid-allowed sftp-server.log \
143144
sftp-server.sh sftp.log ssh-log-wrapper.sh ssh.log \
@@ -297,8 +298,9 @@ unit:
297298
V="" ; \
298299
test "x${USE_VALGRIND}" = "x" || \
299300
V=${.CURDIR}/valgrind-unit.sh ; \
300-
$$V ${.OBJDIR}/unittests/sshbuf/test_sshbuf ; \
301-
$$V ${.OBJDIR}/unittests/sshkey/test_sshkey \
301+
$$V ${.OBJDIR}/unittests/pkcs11/test_pkcs11 ; \
302+
$$V ${.OBJDIR}/unittests/sshbuf/test_sshbuf ; \
303+
$$V ${.OBJDIR}/unittests/sshkey/test_sshkey \
302304
-d ${.CURDIR}/unittests/sshkey/testdata ; \
303305
$$V ${.OBJDIR}/unittests/sshsig/test_sshsig \
304306
-d ${.CURDIR}/unittests/sshsig/testdata ; \

0 commit comments

Comments
 (0)