test-basic.c

The following example shows some basic usage of the library.

00001 #include <stdio.h>
00002 #include <stdlib.h>
00003 #include "../../config.h"
00004 #include <pkcs11-helper-1.0/pkcs11h-core.h>
00005 
00006 static
00007 void
00008 fatal (const char * const m, CK_RV rv) {
00009         fprintf (stderr, "%s - %08lu - %s\n", m, rv, pkcs11h_getMessage (rv));
00010         exit (1);
00011 }
00012 
00013 static
00014 void
00015 _pkcs11h_hooks_log (
00016         IN void * const global_data,
00017         IN unsigned flags,
00018         IN const char * const format,
00019         IN va_list args
00020 ) {
00021         vfprintf (stdout, format, args);
00022         fprintf (stdout, "\n");
00023         fflush (stdout);
00024 }
00025 
00026 int main () {
00027         CK_RV rv;
00028 
00029         printf ("Version: %08x\n", pkcs11h_getVersion ());
00030         printf ("Features: %08x\n", pkcs11h_getFeatures ());
00031 
00032         printf ("Initializing pkcs11-helper\n");
00033 
00034         if ((rv = pkcs11h_initialize ()) != CKR_OK) {
00035                 fatal ("pkcs11h_initialize failed", rv);
00036         }
00037 
00038         printf ("Registering pkcs11-helper hooks\n");
00039 
00040         if ((rv = pkcs11h_setLogHook (_pkcs11h_hooks_log, NULL)) != CKR_OK) {
00041                 fatal ("pkcs11h_setLogHook failed", rv);
00042         }
00043 
00044         pkcs11h_setLogLevel (TEST_LOG_LEVEL);
00045 
00046         printf ("Adding provider '%s'\n", TEST_PROVIDER);
00047 
00048         if (
00049                 (rv = pkcs11h_addProvider (
00050                         TEST_PROVIDER,
00051                         TEST_PROVIDER,
00052                         FALSE,
00053                         PKCS11H_PRIVATEMODE_MASK_AUTO,
00054                         PKCS11H_SLOTEVENT_METHOD_AUTO,
00055                         0,
00056                         FALSE
00057                 )) != CKR_OK
00058         ) {
00059                 fatal ("pkcs11h_addProvider failed", rv);
00060         }
00061 
00062         printf ("Terminating pkcs11-helper\n");
00063 
00064         if ((rv = pkcs11h_terminate ()) != CKR_OK) {
00065                 fatal ("pkcs11h_terminate failed", rv);
00066         }
00067 
00068         exit (0);
00069         return 0;
00070 }

pkcs11-helper, Copyright (C) Alon Bar-Lev <alon.barlev@gmail.com>OpenSC-Project.org Logo