tags 686155 patch
thanks
Looks like an oversight in the exports. The attached patch should fix
it. I'm not sure this is release critical though.
* Pere Nubiola i Radigales (p...@nubiola.cat) wrote:
Package: libpkcs11-helper1-dev
Version: 1.09-1
Severity: important
Dear Maintainer,
When compiling a program calling pkcs11h_token logout:
gcc -o provacardlogin provacardlogin.c -lpkcs11-helper
-DENABLE_PKCS11H_ENGINE_OPENSSL -DENABLE_PKCS11H_CERTIFICATE -Wall
the compiler return eror like:
rovacardlogin.c:(.text+0x371): undefined reference to `pkcs11h_token_logout'
pkcs11_toke_logout is documented in
http://www.opensc-
project.org/files/pkcs11-helper/doc/api/group__pkcs11h__token.html#g1e1c4fef0571b30f7351561afea7ad2f
-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Kernel: Linux 3.4-trunk-rt-amd64 (SMP w/4 CPU cores; PREEMPT)
Locale: LANG=ca_ES.UTF-8, LC_CTYPE=ca_ES.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Versions of packages libpkcs11-helper1-dev depends on:
ii libpkcs11-helper1 1.09-1
ii libssl-dev 1.0.1c-4
libpkcs11-helper1-dev recommends no packages.
libpkcs11-helper1-dev suggests no packages.
-- no debconf information
#include stdio.h
#include stdlib.h
#include string.h
#include stdbool.h
#include pkcs11-helper-1.0/pkcs11h-certificate.h
#include pkcs11-helper-1.0/pkcs11h-token.h
#include unistd.h
#define TEST_PROVIDER /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so
#define TEST_LOG_LEVEL PKCS11H_LOG_ERROR
static void fatal (const char * const m, CK_RV rv) {
fprintf (stderr, %s - %lu - %s\n, m, rv, pkcs11h_getMessage (rv));
exit (1);
}
static
PKCS11H_BOOL _pkcs11h_hooks_pin_prompt (void * const global_data,void * const
user_data,
const pkcs11h_token_id_t token,const
unsigned retry,
char * const pin, const size_t pin_max)
{
char prompt[1024];
char *p = NULL;
snprintf (prompt, sizeof (prompt), Please enter '%s' PIN or 'cancel': ,
token-display);
p = getpass (prompt);
strncpy (pin, p, pin_max);
pin[pin_max-1] = '\0';
return strcmp (pin, cancel) != 0;
}
int main(int argv ,char ** argc){
pkcs11h_certificate_id_list_t issuers, certs, temp;
pkcs11h_token_id_list_t tokens,tmptok;
CK_RV rv;
if ((rv = pkcs11h_initialize ()) != CKR_OK) {
fatal (pkcs11h_initialize failed, rv);
}
if ((rv = pkcs11h_setPINPromptHook (_pkcs11h_hooks_pin_prompt, NULL)) !=
CKR_OK) {
fatal (pkcs11h_setPINPromptHook failed, rv);
}
if ((rv = pkcs11h_addProvider ( TEST_PROVIDER, TEST_PROVIDER, FALSE,
PKCS11H_PRIVATEMODE_MASK_AUTO,PKCS11H_SLOTEVENT_METHOD_AUTO,
0, false )) != CKR_OK) {
fatal (pkcs11h_terminate failed, rv);
}
if ( (rv = pkcs11h_token_enumTokenIds(PKCS11H_ENUM_METHOD_RELOAD, tokens))
!= CKR_OK){
fatal(pkcs11h_token_enumTokenIds failes,rv);
}
for(tmptok = tokens; tmptok!= NULL; tmptok = tmptok-next){
printf(Token Display: %s, ManufacturerId: %s, model: %s, serialNumber:%s
, Label: %s.\n,
tmptok-token_id-display , tmptok-token_id-manufacturerID ,
tmptok-token_id-model , tmptok-token_id-serialNumber ,
tmptok-token_id-label);
}
tmptok = tokens;
pkcs11h_token_login(tmptok-token_id ,false , ***);
if ((rv = pkcs11h_certificate_enumCertificateIds
(PKCS11H_ENUM_METHOD_CACHE,NULL,
PKCS11H_PROMPT_MASK_ALLOW_PIN_PROMPT,issuers,certs)) != CKR_OK) {
fatal (pkcs11h_certificate_enumCertificateIds failed, rv);
}
for (temp = issuers;temp != NULL;temp = temp-next) {
printf (Issuer: %s\n, temp-certificate_id-displayName);
}
for (temp = certs;temp != NULL;temp = temp-next) {
printf (Certificate: %s\n, temp-certificate_id-displayName);
}
if (certs == NULL) {
fatal (No certificates found, rv);
}
pkcs11h_certificate_freeCertificateIdList (issuers);
pkcs11h_certificate_freeCertificateIdList (certs);
/*!Call pkcs11_token_logout*/
pkcs11h_token_logout(tmptok-token_id);
return 0;
}
--
Eric Dorland e...@kuroneko.ca
ICQ: #61138586, Jabber: ho...@jabber.com
diff --git a/lib/token.exports b/lib/token.exports
index 9ac673b..42fa27c 100644
--- a/lib/token.exports
+++ b/lib/token.exports
@@ -5,5 +5,6 @@ pkcs11h_token_enumTokenIds
pkcs11h_token_freeTokenId
pkcs11h_token_freeTokenIdList
pkcs11h_token_login
+pkcs11h_token_logout
pkcs11h_token_sameTokenId
pkcs11h_token_serializeTokenId
signature.asc
Description: Digital signature