Changeset 7

Show
Ignore:
Timestamp:
09/01/05 17:52:41 (3 years ago)
Author:
aj
Message:

bring source in sync with latest libp11.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/pam_p11.c

    r2 r7  
    7575 
    7676        PKCS11_CTX *ctx; 
    77         PKCS11_SLOT *slot; 
     77        PKCS11_SLOT *slot, *slots; 
    7878        PKCS11_CERT *certs; 
    79         unsigned int ncerts; 
     79        unsigned int nslots, ncerts; 
    8080        PKCS11_KEY *authkey; 
    8181        PKCS11_CERT *authcert; 
     
    9090        /* open log */ 
    9191        openlog(LOGNAME, LOG_CONS | LOG_PID, LOG_AUTHPRIV); 
     92 
     93        /* check parameters */ 
     94        if (argc != 2) { 
     95                syslog(LOG_ERR, "%s failed: need pkcs11 module as argument", 
     96                                argv[0]); 
     97                return PAM_ABORT; 
     98        } 
    9299 
    93100        /* init openssl */ 
     
    107114        /* load pkcs #11 module */ 
    108115        rv = PKCS11_CTX_load(ctx, argv[0]); 
    109  
    110116        if (rv) { 
    111117                syslog(LOG_ERR, "loading pkcs11 engine failed"); 
     
    113119        } 
    114120 
    115         /* get first slot with a token */ 
    116         slot = PKCS11_find_token(ctx); 
     121        /* get all slots */  
     122        rv = PKCS11_enumerate_slots(ctx, &slots, &nslots); 
     123        if (rv) { 
     124                syslog(LOG_ERR, "listing slots failed"); 
     125                return PAM_AUTHINFO_UNAVAIL; 
     126        } 
     127 
     128        /* search for the first slot with a token */ 
     129        slot = PKCS11_find_token(ctx, slots, nslots); 
    117130        if (!slot || !slot->token) { 
    118131                syslog(LOG_ERR, "no token available"); 
     
    284297 
    285298      out: 
     299        PKCS11_release_all_slots(ctx, slots, nslots); 
    286300        PKCS11_CTX_unload(ctx); 
    287301        PKCS11_CTX_free(ctx);