[pkg-opensc-commit] [pam-p11] 07/66: bring source in sync with latest libp11.

Eric Dorland eric at moszumanska.debian.org
Tue Jun 13 04:06:48 UTC 2017


This is an automated email from the git hooks/post-receive script.

eric pushed a commit to branch master
in repository pam-p11.

commit f3d57af66e33c795ed7a7b7e9e48774ef1168262
Author: Andreas Jellinghaus <andreas at ionisiert.de>
Date:   Thu Sep 1 15:52:41 2005 +0000

    bring source in sync with latest libp11.
---
 src/pam_p11.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

diff --git a/src/pam_p11.c b/src/pam_p11.c
index 43450bf..6f97f16 100644
--- a/src/pam_p11.c
+++ b/src/pam_p11.c
@@ -74,9 +74,9 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t * pamh, int flags, int argc,
 	struct pam_message *(msgp[1]);
 
 	PKCS11_CTX *ctx;
-	PKCS11_SLOT *slot;
+	PKCS11_SLOT *slot, *slots;
 	PKCS11_CERT *certs;
-	unsigned int ncerts;
+	unsigned int nslots, ncerts;
 	PKCS11_KEY *authkey;
 	PKCS11_CERT *authcert;
 
@@ -90,6 +90,13 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t * pamh, int flags, int argc,
 	/* open log */
 	openlog(LOGNAME, LOG_CONS | LOG_PID, LOG_AUTHPRIV);
 
+	/* check parameters */
+	if (argc != 2) {
+		syslog(LOG_ERR, "%s failed: need pkcs11 module as argument",
+				argv[0]);
+		return PAM_ABORT;
+	}
+
 	/* init openssl */
 	OpenSSL_add_all_algorithms();
 	ERR_load_crypto_strings();
@@ -106,14 +113,20 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t * pamh, int flags, int argc,
 
 	/* load pkcs #11 module */
 	rv = PKCS11_CTX_load(ctx, argv[0]);
-
 	if (rv) {
 		syslog(LOG_ERR, "loading pkcs11 engine failed");
 		return PAM_AUTHINFO_UNAVAIL;
 	}
 
-	/* get first slot with a token */
-	slot = PKCS11_find_token(ctx);
+	/* get all slots */ 
+	rv = PKCS11_enumerate_slots(ctx, &slots, &nslots);
+	if (rv) {
+		syslog(LOG_ERR, "listing slots failed");
+		return PAM_AUTHINFO_UNAVAIL;
+	}
+
+	/* search for the first slot with a token */
+	slot = PKCS11_find_token(ctx, slots, nslots);
 	if (!slot || !slot->token) {
 		syslog(LOG_ERR, "no token available");
 		rv = PAM_AUTHINFO_UNAVAIL;
@@ -283,6 +296,7 @@ PAM_EXTERN int pam_sm_authenticate(pam_handle_t * pamh, int flags, int argc,
 	rv = PAM_SUCCESS;
 
       out:
+	PKCS11_release_all_slots(ctx, slots, nslots);
 	PKCS11_CTX_unload(ctx);
 	PKCS11_CTX_free(ctx);
 	return rv;

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-opensc/pam-p11.git



More information about the pkg-opensc-commit mailing list