pk11_api.c revision ba751492fcc4f161a18b983d4f018a1a52938cb9
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt/*
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * Copyright (C) 2012 Internet Systems Consortium, Inc. ("ISC")
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt *
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * Permission to use, copy, modify, and/or distribute this software for any
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * purpose with or without fee is hereby granted, provided that the above
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * copyright notice and this permission notice appear in all copies.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt *
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * PERFORMANCE OF THIS SOFTWARE.
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt */
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt/* $Id$ */
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt/*! \file */
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <config.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#ifdef USE_PKCS11
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <string.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <dlfcn.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <isc/log.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <isc/mem.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <isc/once.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <isc/stdio.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <isc/thread.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <isc/util.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <dst/result.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <pkcs11/cryptoki.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <pkcs11/pkcs11.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#define KEEP_PKCS11_NAMES
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <iscpk11/pk11.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#include <iscpk11/internal.h>
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntstatic void *hPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_Initialize(CK_VOID_PTR pReserved) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_C_Initialize sym;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 != NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_ALREADY_INITIALIZED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt hPK11 = dlopen(pk11_get_lib_name(), RTLD_NOW);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_Initialize)dlsym(hPK11, "C_Initialize");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(pReserved);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_Finalize(CK_VOID_PTR pReserved) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_C_Finalize sym;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_RV rv;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_Finalize)dlsym(hPK11, "C_Finalize");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt rv = (*sym)(pReserved);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((rv == CKR_OK) && (dlclose(hPK11) != 0))
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt hPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (rv);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GetSlotList(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG_PTR pulCount)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GetSlotList sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GetSlotList)dlsym(hPK11, "C_GetSlotList");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(tokenPresent, pSlotList, pulCount);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GetTokenInfo(CK_SLOT_ID slotID, CK_TOKEN_INFO_PTR pInfo) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GetTokenInfo sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GetTokenInfo)dlsym(hPK11, "C_GetTokenInfo");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(slotID, pInfo);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GetMechanismInfo(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_MECHANISM_INFO_PTR pInfo)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GetMechanismInfo sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GetMechanismInfo)dlsym(hPK11,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "C_GetMechanismInfo");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(slotID, type, pInfo);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_OpenSession(CK_SLOT_ID slotID, CK_FLAGS flags,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_VOID_PTR pApplication,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_RV (*Notify) (CK_SESSION_HANDLE hSession,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_NOTIFICATION event,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_VOID_PTR pApplication),
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_SESSION_HANDLE_PTR phSession)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_OpenSession sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt hPK11 = dlopen(pk11_get_lib_name(), RTLD_NOW);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_OpenSession)dlsym(hPK11, "C_OpenSession");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(slotID, flags, pApplication, Notify, phSession);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_CloseSession(CK_SESSION_HANDLE hSession) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_CloseSession sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_CloseSession)dlsym(hPK11, "C_CloseSession");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_Login(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_CHAR_PTR pPin, CK_ULONG usPinLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_Login sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_Login)dlsym(hPK11, "C_Login");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, userType, pPin, usPinLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_Logout(CK_SESSION_HANDLE hSession) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_Logout sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_Logout)dlsym(hPK11, "C_Logout");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_CreateObject(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG usCount, CK_OBJECT_HANDLE_PTR phObject)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_CreateObject sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_CreateObject)dlsym(hPK11, "C_CreateObject");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pTemplate, usCount, phObject);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_DestroyObject(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_DestroyObject sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_DestroyObject)dlsym(hPK11, "C_DestroyObject");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, hObject);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GetAttributeValue(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GetAttributeValue sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GetAttributeValue)dlsym(hPK11,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "C_GetAttributeValue");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, hObject, pTemplate, usCount);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_SetAttributeValue(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ATTRIBUTE_PTR pTemplate, CK_ULONG usCount)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_SetAttributeValue sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_SetAttributeValue)dlsym(hPK11,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "C_SetAttributeValue");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, hObject, pTemplate, usCount);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_FindObjectsInit(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG usCount)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_FindObjectsInit sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_FindObjectsInit)dlsym(hPK11, "C_FindObjectsInit");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pTemplate, usCount);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_FindObjects(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG usMaxObjectCount, CK_ULONG_PTR pusObjectCount)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_FindObjects sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_FindObjects)dlsym(hPK11, "C_FindObjects");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, phObject, usMaxObjectCount, pusObjectCount);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_FindObjectsFinal(CK_SESSION_HANDLE hSession)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_FindObjectsFinal sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_FindObjectsFinal)dlsym(hPK11,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt "C_FindObjectsFinal");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_DigestInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_DigestInit sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_DigestInit)dlsym(hPK11, "C_DigestInit");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pMechanism);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_DigestUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulPartLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_DigestUpdate sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_DigestUpdate)dlsym(hPK11, "C_DigestUpdate");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pPart, ulPartLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_DigestFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG_PTR pulDigestLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_DigestFinal sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_DigestFinal)dlsym(hPK11, "C_DigestFinal");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pDigest, pulDigestLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_SignInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_OBJECT_HANDLE hKey)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_SignInit sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_SignInit)dlsym(hPK11, "C_SignInit");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pMechanism, hKey);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_Sign(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulDataLen, CK_BYTE_PTR pSignature,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG_PTR pulSignatureLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_Sign sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_Sign)dlsym(hPK11, "C_Sign");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pData, ulDataLen, pSignature, pulSignatureLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_SignUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulPartLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_SignUpdate sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_SignUpdate)dlsym(hPK11, "C_SignUpdate");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pPart, ulPartLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_SignFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG_PTR pulSignatureLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_SignFinal sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_SignFinal)dlsym(hPK11, "C_SignFinal");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pSignature, pulSignatureLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_VerifyInit(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_OBJECT_HANDLE hKey)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_VerifyInit sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_VerifyInit)dlsym(hPK11, "C_VerifyInit");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pMechanism, hKey);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_Verify(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulDataLen, CK_BYTE_PTR pSignature,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulSignatureLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_Verify sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_Verify)dlsym(hPK11, "C_Verify");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pData, ulDataLen, pSignature, ulSignatureLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_VerifyUpdate(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulPartLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_VerifyUpdate sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_VerifyUpdate)dlsym(hPK11, "C_VerifyUpdate");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pPart, ulPartLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_VerifyFinal(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulSignatureLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_VerifyFinal sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_VerifyFinal)dlsym(hPK11, "C_VerifyFinal");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pSignature, ulSignatureLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GenerateKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_OBJECT_HANDLE_PTR phKey)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GenerateKey sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GenerateKey)dlsym(hPK11, "C_GenerateKey");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pMechanism, pTemplate, ulCount, phKey);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GenerateKeyPair(CK_SESSION_HANDLE hSession,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_MECHANISM_PTR pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ATTRIBUTE_PTR pPublicKeyTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG usPublicKeyAttributeCount,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ATTRIBUTE_PTR pPrivateKeyTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG usPrivateKeyAttributeCount,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_OBJECT_HANDLE_PTR phPrivateKey,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_OBJECT_HANDLE_PTR phPublicKey)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GenerateKeyPair sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GenerateKeyPair)dlsym(hPK11, "C_GenerateKeyPair");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPublicKeyTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt usPublicKeyAttributeCount,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPrivateKeyTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt usPrivateKeyAttributeCount,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt phPrivateKey,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt phPublicKey);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_DeriveKey(CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_OBJECT_HANDLE hBaseKey, CK_ATTRIBUTE_PTR pTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_DeriveKey sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_DeriveKey)dlsym(hPK11, "C_DeriveKey");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pMechanism,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt hBaseKey,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pTemplate,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt ulAttributeCount,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt phKey);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_SeedRandom(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulSeedLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_SeedRandom sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_SeedRandom)dlsym(hPK11, "C_SeedRandom");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, pSeed, ulSeedLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan HuntCK_RV
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Huntpkcs_C_GenerateRandom(CK_SESSION_HANDLE hSession, CK_BYTE_PTR RandomData,
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt CK_ULONG ulRandomLen)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt{
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static CK_C_GenerateRandom sym = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt static void *pPK11 = NULL;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (hPK11 == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_LIBRARY_FAILED_TO_LOAD);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if ((sym == NULL) || (hPK11 != pPK11)) {
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt pPK11 = hPK11;
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt sym = (CK_C_GenerateRandom)dlsym(hPK11, "C_GenerateRandom");
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt }
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt if (sym == NULL)
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (CKR_SYMBOL_RESOLUTION_FAILED);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt return (*sym)(hSession, RandomData, ulRandomLen);
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt}
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt#endif /* USE_PKCS11 */
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt