Skip to content

Commit 8fdd4e4

Browse files
committed
openssh-10.2p1-pkcs11-uri
1 parent d187afc commit 8fdd4e4

17 files changed

Lines changed: 2060 additions & 271 deletions

Makefile.in

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,12 +112,12 @@ LIBSSH_OBJS=${LIBOPENSSH_OBJS} \
112112
sftp-realpath.o platform-pledge.o platform-tracing.o platform-misc.o \
113113
sshbuf-io.o misc-agent.o ssherr-libcrypto.o auditstub.o
114114

115-
P11OBJS= ssh-pkcs11-client.o
115+
P11OBJS= ssh-pkcs11-client.o ssh-pkcs11-uri.o
116116

117117
SKOBJS= ssh-sk-client.o
118118

119119
SSHOBJS= ssh.o readconf.o clientloop.o sshtty.o \
120-
sshconnect.o sshconnect2.o mux.o ssh-pkcs11.o $(SKOBJS)
120+
sshconnect.o sshconnect2.o mux.o ssh-pkcs11.o ssh-pkcs11-uri.o $(SKOBJS)
121121

122122
SSHDOBJS=sshd.o \
123123
platform-listen.o \
@@ -161,11 +161,11 @@ SSHADD_OBJS= ssh-add.o $(P11OBJS) $(SKOBJS)
161161

162162
SSHAGENT_OBJS= ssh-agent.o $(P11OBJS) $(SKOBJS)
163163

164-
SSHKEYGEN_OBJS= ssh-keygen.o sshsig.o ssh-pkcs11.o $(SKOBJS)
164+
SSHKEYGEN_OBJS= ssh-keygen.o sshsig.o ssh-pkcs11.o ssh-pkcs11-uri.o $(SKOBJS)
165165

166166
SSHKEYSIGN_OBJS=ssh-keysign.o readconf.o uidswap.o $(P11OBJS) $(SKOBJS)
167167

168-
P11HELPER_OBJS= ssh-pkcs11-helper.o ssh-pkcs11.o $(SKOBJS)
168+
P11HELPER_OBJS= ssh-pkcs11-helper.o ssh-pkcs11.o ssh-pkcs11-uri.o $(SKOBJS)
169169

170170
SKHELPER_OBJS= ssh-sk-helper.o ssh-sk.o sk-usbhid.o ssherr-nolibcrypto.o
171171

@@ -331,6 +331,8 @@ clean: regressclean
331331
rm -f regress/unittests/sshsig/test_sshsig$(EXEEXT)
332332
rm -f regress/unittests/utf8/*.o
333333
rm -f regress/unittests/utf8/test_utf8$(EXEEXT)
334+
rm -f regress/unittests/pkcs11/*.o
335+
rm -f regress/unittests/pkcs11/test_pkcs11$(EXEEXT)
334336
rm -f regress/misc/sk-dummy/*.o
335337
rm -f regress/misc/sk-dummy/*.lo
336338
rm -f regress/misc/ssh-verify-attestation/ssh-verify-attestation$(EXEEXT)
@@ -370,6 +372,8 @@ distclean: regressclean
370372
rm -f regress/unittests/sshsig/test_sshsig
371373
rm -f regress/unittests/utf8/*.o
372374
rm -f regress/unittests/utf8/test_utf8
375+
rm -f regress/unittests/pkcs11/*.o
376+
rm -f regress/unittests/pkcs11/test_pkcs11
373377
rm -f regress/misc/sk-dummy/*.o
374378
rm -f regress/misc/sk-dummy/*.lo
375379
rm -f regress/misc/sk-dummy/sk-dummy.so
@@ -550,6 +554,7 @@ regress-prep:
550554
$(MKDIR_P) `pwd`/regress/unittests/sshkey
551555
$(MKDIR_P) `pwd`/regress/unittests/sshsig
552556
$(MKDIR_P) `pwd`/regress/unittests/utf8
557+
$(MKDIR_P) `pwd`/regress/unittests/pkcs11
553558
$(MKDIR_P) `pwd`/regress/misc/sk-dummy
554559
$(MKDIR_P) `pwd`/regress/misc/ssh-verify-attestation
555560
[ -f `pwd`/regress/Makefile ] || \
@@ -725,6 +730,16 @@ regress/unittests/utf8/test_utf8$(EXEEXT): \
725730
regress/unittests/test_helper/libtest_helper.a \
726731
-lssh -lopenbsd-compat -lssh -lopenbsd-compat $(TESTLIBS)
727732

733+
UNITTESTS_TEST_PKCS11_OBJS=\
734+
regress/unittests/pkcs11/tests.o
735+
736+
regress/unittests/pkcs11/test_pkcs11$(EXEEXT): \
737+
${UNITTESTS_TEST_PKCS11_OBJS} ssh-pkcs11-uri.o \
738+
regress/unittests/test_helper/libtest_helper.a libssh.a
739+
$(LD) -o $@ $(LDFLAGS) $(UNITTESTS_TEST_PKCS11_OBJS) \
740+
regress/unittests/test_helper/libtest_helper.a \
741+
ssh-pkcs11-uri.o -lssh -lopenbsd-compat -lcrypto $(LIBS) -lm
742+
728743
# These all need to be compiled -fPIC, so they are treated differently.
729744
SK_DUMMY_OBJS=\
730745
regress/misc/sk-dummy/sk-dummy.lo \
@@ -770,7 +785,8 @@ regress-unit-binaries: regress-prep $(REGRESSLIBS) \
770785
regress/unittests/sshbuf/test_sshbuf$(EXEEXT) \
771786
regress/unittests/sshkey/test_sshkey$(EXEEXT) \
772787
regress/unittests/sshsig/test_sshsig$(EXEEXT) \
773-
regress/unittests/utf8/test_utf8$(EXEEXT)
788+
regress/unittests/utf8/test_utf8$(EXEEXT) \
789+
regress/unittests/pkcs11/test_pkcs11$(EXEEXT) \
774790

775791
tests: file-tests t-exec interop-tests extra-tests unit
776792
echo all tests passed

configure.ac

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

2308+
SCARD_MSG="yes"
23082309
disable_pkcs11=
23092310
AC_ARG_ENABLE([pkcs11],
23102311
[ --disable-pkcs11 disable PKCS#11 support code [no]],
23112312
[
23122313
if test "x$enableval" = "xno" ; then
23132314
disable_pkcs11=1
2315+
SCARD_MSG="no"
23142316
fi
23152317
]
23162318
)
@@ -2340,6 +2342,40 @@ AC_SEARCH_LIBS([dlopen], [dl])
23402342
AC_CHECK_FUNCS([dlopen])
23412343
AC_CHECK_DECL([RTLD_NOW], [], [], [#include <dlfcn.h>])
23422344

2345+
# Check whether we have a p11-kit, we got default provider on command line
2346+
DEFAULT_PKCS11_PROVIDER_MSG="no"
2347+
AC_ARG_WITH([default-pkcs11-provider],
2348+
[ --with-default-pkcs11-provider[[=PATH]] Use default pkcs11 provider (p11-kit detected by default)],
2349+
[ if test "x$withval" != "xno" && test "x$disable_pkcs11" = "x"; then
2350+
if test "x$withval" = "xyes" ; then
2351+
AC_PATH_TOOL([PKGCONFIG], [pkg-config], [no])
2352+
if test "x$PKGCONFIG" != "xno"; then
2353+
AC_MSG_CHECKING([if $PKGCONFIG knows about p11-kit])
2354+
if "$PKGCONFIG" "p11-kit-1"; then
2355+
AC_MSG_RESULT([yes])
2356+
use_pkgconfig_for_p11kit=yes
2357+
else
2358+
AC_MSG_RESULT([no])
2359+
fi
2360+
fi
2361+
else
2362+
PKCS11_PATH="${withval}"
2363+
fi
2364+
if test "x$use_pkgconfig_for_p11kit" = "xyes"; then
2365+
PKCS11_PATH=`$PKGCONFIG --variable=proxy_module p11-kit-1`
2366+
fi
2367+
AC_CHECK_FILE("$PKCS11_PATH",
2368+
[ AC_DEFINE_UNQUOTED([PKCS11_DEFAULT_PROVIDER], ["$PKCS11_PATH"], [Path to default PKCS#11 provider (p11-kit proxy)])
2369+
DEFAULT_PKCS11_PROVIDER_MSG="$PKCS11_PATH"
2370+
],
2371+
[ AC_MSG_ERROR([Requested PKCS11 provided not found]) ]
2372+
)
2373+
else
2374+
AC_MSG_WARN([Needs PKCS11 support to enable default pkcs11 provider])
2375+
fi ]
2376+
)
2377+
2378+
23432379
# IRIX has a const char return value for gai_strerror()
23442380
AC_CHECK_FUNCS([gai_strerror], [
23452381
AC_DEFINE([HAVE_GAI_STRERROR])
@@ -5991,6 +6027,7 @@ echo " BSD Auth support: $BSD_AUTH_MSG"
59916027
echo " Random number source: $RAND_MSG"
59926028
echo " Privsep sandbox style: $SANDBOX_STYLE"
59936029
echo " PKCS#11 support: $enable_pkcs11"
6030+
echo " Default PKCS#11 provider: $DEFAULT_PKCS11_PROVIDER_MSG"
59946031
echo " U2F/FIDO support: $enable_sk"
59956032

59966033
echo ""

regress/Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,8 @@ CLEANFILES= *.core actual agent-key.* authorized_keys_${USERNAME} \
144144
known_hosts known_hosts-cert known_hosts.* krl-* ls.copy \
145145
modpipe netcat no_identity_config \
146146
pidfile putty.rsa2 ready regress.log remote_pid \
147-
revoked-* rsa rsa-agent rsa-agent.pub rsa.pub rsa_ssh2_cr.prv \
147+
revoked-* rsa rsa-agent rsa-agent.pub rsa-agent-cert.pub \
148+
rsa.pub rsa_ssh2_cr.prv pkcs11*.crt pkcs11*.key pkcs11.info \
148149
rsa_ssh2_crnl.prv scp-ssh-wrapper.exe \
149150
scp-ssh-wrapper.scp setuid-allowed sftp-server.log \
150151
sftp-server.sh sftp.log ssh-log-wrapper.sh ssh.log \
@@ -294,6 +295,7 @@ unit unit-bench:
294295
test "x${UNITTEST_VERBOSE}" = "x" || ARGS="$$ARGS -v"; \
295296
test "x${UNITTEST_BENCH_DETAIL}" = "x" || ARGS="$$ARGS -B"; \
296297
test "x${UNITTEST_BENCH_ONLY}" = "x" || ARGS="$$ARGS -O ${UNITTEST_BENCH_ONLY}"; \
298+
$$V ${.OBJDIR}/unittests/pkcs11/test_pkcs11 ; \
297299
$$V ${.OBJDIR}/unittests/sshbuf/test_sshbuf $${ARGS}; \
298300
$$V ${.OBJDIR}/unittests/sshkey/test_sshkey \
299301
-d ${.CURDIR}/unittests/sshkey/testdata $${ARGS}; \

0 commit comments

Comments
 (0)