[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