增加获取HSM私钥句柄
安装包增加libcertex库 增加HSM配置文件rcsp.con
This commit is contained in:
344
common/pkcs11/src/rlib_load.cpp
Normal file
344
common/pkcs11/src/rlib_load.cpp
Normal file
@@ -0,0 +1,344 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// RCSP Project
|
||||
// Copyright (c) 2007 Scientific Lab. Gamma Technologies. All rights reserved.
|
||||
//
|
||||
// R-CSP/R-PKCS11 LIB Loader
|
||||
//------------------------------------------------------------------------------
|
||||
#include "tdefs.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#ifdef WIND32
|
||||
#include <windows.h>
|
||||
#else
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
#include "rlib_load.h"
|
||||
|
||||
#ifndef WIND32
|
||||
typedef void* HINSTANCE;
|
||||
#endif
|
||||
//------------------------------------------------------------------------------
|
||||
#ifndef F_CPAcquireContext
|
||||
#define F_CPAcquireContext 1
|
||||
#define F_CPGetProvParam 2
|
||||
#define F_CPReleaseContext 3
|
||||
#define F_CPSetProvParam 4
|
||||
#define F_CPDeriveKey 5
|
||||
#define F_CPDestroyKey 6
|
||||
#define F_CPDuplicateKey 7
|
||||
#define F_CPExportKey 8
|
||||
#define F_CPGenKey 9
|
||||
#define F_CPGenRandom 10
|
||||
#define F_CPGetKeyParam 11
|
||||
#define F_CPGetUserKey 12
|
||||
#define F_CPImportKey 13
|
||||
#define F_CPSetKeyParam 14
|
||||
#define F_CPDecrypt 15
|
||||
#define F_CPEncrypt 16
|
||||
#define F_CPCreateHash 17
|
||||
#define F_CPDestroyHash 18
|
||||
#define F_CPDuplicateHash 19
|
||||
#define F_CPGetHashParam 20
|
||||
#define F_CPHashData 21
|
||||
#define F_CPHashSessionKey 22
|
||||
#define F_CPSetHashParam 23
|
||||
#define F_CPSignHash 24
|
||||
#define F_CPVerifySignature 25
|
||||
#endif
|
||||
//------------------------------------------------------------------------------
|
||||
#ifndef F_Initialize
|
||||
#define F_Initialize 31
|
||||
#define F_Finalize 32
|
||||
#define F_GetInfo 33
|
||||
#define F_GetFunctionList 34
|
||||
#define F_GetSlotList 35
|
||||
#define F_GetSlotInfo 36
|
||||
#define F_GetTokenInfo 37
|
||||
#define F_GetMechanismList 38
|
||||
#define F_GetMechanismInfo 39
|
||||
#define F_InitToken 40
|
||||
#define F_InitPIN 41
|
||||
#define F_SetPIN 42
|
||||
#define F_OpenSession 43
|
||||
#define F_CloseSession 44
|
||||
#define F_CloseAllSessions 45
|
||||
#define F_GetSessionInfo 46
|
||||
#define F_GetOperationState 47
|
||||
#define F_SetOperationState 48
|
||||
#define F_Login 49
|
||||
#define F_Logout 50
|
||||
#define F_CreateObject 51
|
||||
#define F_CopyObject 52
|
||||
#define F_DestroyObject 53
|
||||
#define F_GetObjectSize 54
|
||||
#define F_GetAttributeValue 55
|
||||
#define F_SetAttributeValue 56
|
||||
#define F_FindObjectsInit 57
|
||||
#define F_FindObjects 58
|
||||
#define F_FindObjectsFinal 59
|
||||
#define F_EncryptInit 60
|
||||
#define F_Encrypt 61
|
||||
#define F_EncryptUpdate 62
|
||||
#define F_EncryptFinal 63
|
||||
#define F_DecryptInit 64
|
||||
#define F_Decrypt 65
|
||||
#define F_DecryptUpdate 66
|
||||
#define F_DecryptFinal 67
|
||||
#define F_DigestInit 68
|
||||
#define F_Digest 69
|
||||
#define F_DigestUpdate 70
|
||||
#define F_DigestKey 71
|
||||
#define F_DigestFinal 72
|
||||
#define F_SignInit 73
|
||||
#define F_Sign 74
|
||||
#define F_SignUpdate 75
|
||||
#define F_SignFinal 76
|
||||
#define F_SignRecoverInit 77
|
||||
#define F_SignRecover 78
|
||||
#define F_VerifyInit 79
|
||||
#define F_Verify 80
|
||||
#define F_VerifyUpdate 81
|
||||
#define F_VerifyFinal 82
|
||||
#define F_VerifyRecoverInit 83
|
||||
#define F_VerifyRecover 84
|
||||
#define F_DigestEncryptUpdate 85
|
||||
#define F_DecryptDigestUpdate 86
|
||||
#define F_SignEncryptUpdate 87
|
||||
#define F_DecryptVerifyUpdate 88
|
||||
#define F_GenerateKey 89
|
||||
#define F_GenerateKeyPair 90
|
||||
#define F_WrapKey 91
|
||||
#define F_UnwrapKey 92
|
||||
#define F_DeriveKey 93
|
||||
#define F_SeedRandom 94
|
||||
#define F_GenerateRandom 95
|
||||
#define F_GetFunctionStatus 96
|
||||
#define F_CancelFunction 97
|
||||
#define F_WaitForSlotEvent 98
|
||||
#endif
|
||||
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
CK_C_Initialize FC_Initialize;
|
||||
CK_C_Finalize FC_Finalize;
|
||||
CK_C_GetInfo FC_GetInfo;
|
||||
CK_C_GetFunctionList FC_GetFunctionList;
|
||||
CK_C_GetSlotList FC_GetSlotList;
|
||||
CK_C_GetSlotInfo FC_GetSlotInfo;
|
||||
CK_C_GetTokenInfo FC_GetTokenInfo;
|
||||
CK_C_GetMechanismList FC_GetMechanismList;
|
||||
CK_C_GetMechanismInfo FC_GetMechanismInfo;
|
||||
CK_C_InitToken FC_InitToken;
|
||||
CK_C_InitPIN FC_InitPIN;
|
||||
CK_C_SetPIN FC_SetPIN;
|
||||
CK_C_OpenSession FC_OpenSession;
|
||||
CK_C_CloseSession FC_CloseSession;
|
||||
CK_C_CloseAllSessions FC_CloseAllSessions;
|
||||
CK_C_GetSessionInfo FC_GetSessionInfo;
|
||||
CK_C_GetOperationState FC_GetOperationState;
|
||||
CK_C_SetOperationState FC_SetOperationState;
|
||||
CK_C_Login FC_Login;
|
||||
CK_C_Logout FC_Logout;
|
||||
CK_C_CreateObject FC_CreateObject;
|
||||
CK_C_CopyObject FC_CopyObject;
|
||||
CK_C_DestroyObject FC_DestroyObject;
|
||||
CK_C_GetObjectSize FC_GetObjectSize;
|
||||
CK_C_GetAttributeValue FC_GetAttributeValue;
|
||||
CK_C_SetAttributeValue FC_SetAttributeValue;
|
||||
CK_C_FindObjectsInit FC_FindObjectsInit;
|
||||
CK_C_FindObjects FC_FindObjects;
|
||||
CK_C_FindObjectsFinal FC_FindObjectsFinal;
|
||||
CK_C_EncryptInit FC_EncryptInit;
|
||||
CK_C_Encrypt FC_Encrypt;
|
||||
CK_C_EncryptUpdate FC_EncryptUpdate;
|
||||
CK_C_EncryptFinal FC_EncryptFinal;
|
||||
CK_C_DecryptInit FC_DecryptInit;
|
||||
CK_C_Decrypt FC_Decrypt;
|
||||
CK_C_DecryptUpdate FC_DecryptUpdate;
|
||||
CK_C_DecryptFinal FC_DecryptFinal;
|
||||
CK_C_DigestInit FC_DigestInit;
|
||||
CK_C_Digest FC_Digest;
|
||||
CK_C_DigestUpdate FC_DigestUpdate;
|
||||
CK_C_DigestKey FC_DigestKey;
|
||||
CK_C_DigestFinal FC_DigestFinal;
|
||||
CK_C_SignInit FC_SignInit;
|
||||
CK_C_Sign FC_Sign;
|
||||
CK_C_SignUpdate FC_SignUpdate;
|
||||
CK_C_SignFinal FC_SignFinal;
|
||||
CK_C_SignRecoverInit FC_SignRecoverInit;
|
||||
CK_C_SignRecover FC_SignRecover;
|
||||
CK_C_VerifyInit FC_VerifyInit;
|
||||
CK_C_Verify FC_Verify;
|
||||
CK_C_VerifyUpdate FC_VerifyUpdate;
|
||||
CK_C_VerifyFinal FC_VerifyFinal;
|
||||
CK_C_VerifyRecoverInit FC_VerifyRecoverInit;
|
||||
CK_C_VerifyRecover FC_VerifyRecover;
|
||||
CK_C_DigestEncryptUpdate FC_DigestEncryptUpdate;
|
||||
CK_C_DecryptDigestUpdate FC_DecryptDigestUpdate;
|
||||
CK_C_SignEncryptUpdate FC_SignEncryptUpdate;
|
||||
CK_C_DecryptVerifyUpdate FC_DecryptVerifyUpdate;
|
||||
CK_C_GenerateKey FC_GenerateKey;
|
||||
CK_C_GenerateKeyPair FC_GenerateKeyPair;
|
||||
CK_C_WrapKey FC_WrapKey;
|
||||
CK_C_UnwrapKey FC_UnwrapKey;
|
||||
CK_C_DeriveKey FC_DeriveKey;
|
||||
CK_C_SeedRandom FC_SeedRandom;
|
||||
CK_C_GenerateRandom FC_GenerateRandom;
|
||||
CK_C_GetFunctionStatus FC_GetFunctionStatus;
|
||||
CK_C_CancelFunction FC_CancelFunction;
|
||||
CK_C_WaitForSlotEvent FC_WaitForSlotEvent;
|
||||
//------------------------------------------------------------------------------
|
||||
HINSTANCE load_lib(char *lib)
|
||||
{
|
||||
#ifdef WIND32
|
||||
return LoadLibrary(lib);
|
||||
#else
|
||||
return dlopen(lib,RTLD_LAZY);
|
||||
#endif
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void* get_sym(HINSTANCE inst, const char *proc)
|
||||
{
|
||||
#ifdef WIND32
|
||||
return (void*) GetProcAddress(inst,proc);
|
||||
#else
|
||||
return dlsym(inst,proc);
|
||||
#endif
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void free_lib(HINSTANCE inst)
|
||||
{
|
||||
#ifdef WIND32
|
||||
FreeLibrary(inst);
|
||||
#else
|
||||
dlclose(inst);
|
||||
#endif
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
int Get_PKCS_Fancs(HINSTANCE hLib)
|
||||
{
|
||||
FC_Initialize =(CK_C_Initialize ) get_sym(hLib,"C_Initialize" ); if (!FC_Initialize ) return F_Initialize;
|
||||
FC_Finalize =(CK_C_Finalize ) get_sym(hLib,"C_Finalize" ); if (!FC_Finalize ) return F_Finalize;
|
||||
FC_GetInfo =(CK_C_GetInfo ) get_sym(hLib,"C_GetInfo" ); if (!FC_GetInfo ) return F_GetInfo;
|
||||
FC_GetFunctionList =(CK_C_GetFunctionList ) get_sym(hLib,"C_GetFunctionList" ); if (!FC_GetFunctionList ) return F_GetFunctionList;
|
||||
FC_GetSlotList =(CK_C_GetSlotList ) get_sym(hLib,"C_GetSlotList" ); if (!FC_GetSlotList ) return F_GetSlotList;
|
||||
FC_GetSlotInfo =(CK_C_GetSlotInfo ) get_sym(hLib,"C_GetSlotInfo" ); if (!FC_GetSlotInfo ) return F_GetSlotInfo;
|
||||
FC_GetTokenInfo =(CK_C_GetTokenInfo ) get_sym(hLib,"C_GetTokenInfo" ); if (!FC_GetTokenInfo ) return F_GetTokenInfo;
|
||||
FC_GetMechanismList =(CK_C_GetMechanismList ) get_sym(hLib,"C_GetMechanismList" ); if (!FC_GetMechanismList ) return F_GetMechanismList;
|
||||
FC_GetMechanismInfo =(CK_C_GetMechanismInfo ) get_sym(hLib,"C_GetMechanismInfo" ); if (!FC_GetMechanismInfo ) return F_GetMechanismInfo;
|
||||
FC_InitToken =(CK_C_InitToken ) get_sym(hLib,"C_InitToken" ); if (!FC_InitToken ) return F_InitToken;
|
||||
FC_InitPIN =(CK_C_InitPIN ) get_sym(hLib,"C_InitPIN" ); if (!FC_InitPIN ) return F_InitPIN;
|
||||
FC_SetPIN =(CK_C_SetPIN ) get_sym(hLib,"C_SetPIN" ); if (!FC_SetPIN ) return F_SetPIN;
|
||||
FC_OpenSession =(CK_C_OpenSession ) get_sym(hLib,"C_OpenSession" ); if (!FC_OpenSession ) return F_OpenSession;
|
||||
FC_CloseSession =(CK_C_CloseSession ) get_sym(hLib,"C_CloseSession" ); if (!FC_CloseSession ) return F_CloseSession;
|
||||
FC_CloseAllSessions =(CK_C_CloseAllSessions ) get_sym(hLib,"C_CloseAllSessions" ); if (!FC_CloseAllSessions ) return F_CloseAllSessions;
|
||||
FC_GetSessionInfo =(CK_C_GetSessionInfo ) get_sym(hLib,"C_GetSessionInfo" ); if (!FC_GetSessionInfo ) return F_GetSessionInfo;
|
||||
FC_GetOperationState =(CK_C_GetOperationState ) get_sym(hLib,"C_GetOperationState" ); if (!FC_GetOperationState ) return F_GetOperationState;
|
||||
FC_SetOperationState =(CK_C_SetOperationState ) get_sym(hLib,"C_SetOperationState" ); if (!FC_SetOperationState ) return F_SetOperationState;
|
||||
FC_Login =(CK_C_Login ) get_sym(hLib,"C_Login" ); if (!FC_Login ) return F_Login;
|
||||
FC_Logout =(CK_C_Logout ) get_sym(hLib,"C_Logout" ); if (!FC_Logout ) return F_Logout;
|
||||
FC_CreateObject =(CK_C_CreateObject ) get_sym(hLib,"C_CreateObject" ); if (!FC_CreateObject ) return F_CreateObject;
|
||||
FC_CopyObject =(CK_C_CopyObject ) get_sym(hLib,"C_CopyObject" ); if (!FC_CopyObject ) return F_CopyObject;
|
||||
FC_DestroyObject =(CK_C_DestroyObject ) get_sym(hLib,"C_DestroyObject" ); if (!FC_DestroyObject ) return F_DestroyObject;
|
||||
FC_GetObjectSize =(CK_C_GetObjectSize ) get_sym(hLib,"C_GetObjectSize" ); if (!FC_GetObjectSize ) return F_GetObjectSize;
|
||||
FC_GetAttributeValue =(CK_C_GetAttributeValue ) get_sym(hLib,"C_GetAttributeValue" ); if (!FC_GetAttributeValue ) return F_GetAttributeValue;
|
||||
FC_SetAttributeValue =(CK_C_SetAttributeValue ) get_sym(hLib,"C_SetAttributeValue" ); if (!FC_SetAttributeValue ) return F_SetAttributeValue;
|
||||
FC_FindObjectsInit =(CK_C_FindObjectsInit ) get_sym(hLib,"C_FindObjectsInit" ); if (!FC_FindObjectsInit ) return F_FindObjectsInit;
|
||||
FC_FindObjects =(CK_C_FindObjects ) get_sym(hLib,"C_FindObjects" ); if (!FC_FindObjects ) return F_FindObjects;
|
||||
FC_FindObjectsFinal =(CK_C_FindObjectsFinal ) get_sym(hLib,"C_FindObjectsFinal" ); if (!FC_FindObjectsFinal ) return F_FindObjectsFinal;
|
||||
FC_EncryptInit =(CK_C_EncryptInit ) get_sym(hLib,"C_EncryptInit" ); if (!FC_EncryptInit ) return F_EncryptInit;
|
||||
FC_Encrypt =(CK_C_Encrypt ) get_sym(hLib,"C_Encrypt" ); if (!FC_Encrypt ) return F_Encrypt;
|
||||
FC_EncryptUpdate =(CK_C_EncryptUpdate ) get_sym(hLib,"C_EncryptUpdate" ); if (!FC_EncryptUpdate ) return F_EncryptUpdate;
|
||||
FC_EncryptFinal =(CK_C_EncryptFinal ) get_sym(hLib,"C_EncryptFinal" ); if (!FC_EncryptFinal ) return F_EncryptFinal;
|
||||
FC_DecryptInit =(CK_C_DecryptInit ) get_sym(hLib,"C_DecryptInit" ); if (!FC_DecryptInit ) return F_DecryptInit;
|
||||
FC_Decrypt =(CK_C_Decrypt ) get_sym(hLib,"C_Decrypt" ); if (!FC_Decrypt ) return F_Decrypt;
|
||||
FC_DecryptUpdate =(CK_C_DecryptUpdate ) get_sym(hLib,"C_DecryptUpdate" ); if (!FC_DecryptUpdate ) return F_DecryptUpdate;
|
||||
FC_DecryptFinal =(CK_C_DecryptFinal ) get_sym(hLib,"C_DecryptFinal" ); if (!FC_DecryptFinal ) return F_DecryptFinal;
|
||||
FC_DigestInit =(CK_C_DigestInit ) get_sym(hLib,"C_DigestInit" ); if (!FC_DigestInit ) return F_DigestInit;
|
||||
FC_Digest =(CK_C_Digest ) get_sym(hLib,"C_Digest" ); if (!FC_Digest ) return F_Digest;
|
||||
FC_DigestUpdate =(CK_C_DigestUpdate ) get_sym(hLib,"C_DigestUpdate" ); if (!FC_DigestUpdate ) return F_DigestUpdate;
|
||||
FC_DigestKey =(CK_C_DigestKey ) get_sym(hLib,"C_DigestKey" ); if (!FC_DigestKey ) return F_DigestKey;
|
||||
FC_DigestFinal =(CK_C_DigestFinal ) get_sym(hLib,"C_DigestFinal" ); if (!FC_DigestFinal ) return F_DigestFinal;
|
||||
FC_SignInit =(CK_C_SignInit ) get_sym(hLib,"C_SignInit" ); if (!FC_SignInit ) return F_SignInit;
|
||||
FC_Sign =(CK_C_Sign ) get_sym(hLib,"C_Sign" ); if (!FC_Sign ) return F_Sign;
|
||||
FC_SignUpdate =(CK_C_SignUpdate ) get_sym(hLib,"C_SignUpdate" ); if (!FC_SignUpdate ) return F_SignUpdate;
|
||||
FC_SignFinal =(CK_C_SignFinal ) get_sym(hLib,"C_SignFinal" ); if (!FC_SignFinal ) return F_SignFinal;
|
||||
FC_SignRecoverInit =(CK_C_SignRecoverInit ) get_sym(hLib,"C_SignRecoverInit" ); if (!FC_SignRecoverInit ) return F_SignRecoverInit;
|
||||
FC_SignRecover =(CK_C_SignRecover ) get_sym(hLib,"C_SignRecover" ); if (!FC_SignRecover ) return F_SignRecover;
|
||||
FC_VerifyInit =(CK_C_VerifyInit ) get_sym(hLib,"C_VerifyInit" ); if (!FC_VerifyInit ) return F_VerifyInit;
|
||||
FC_Verify =(CK_C_Verify ) get_sym(hLib,"C_Verify" ); if (!FC_Verify ) return F_Verify;
|
||||
FC_VerifyUpdate =(CK_C_VerifyUpdate ) get_sym(hLib,"C_VerifyUpdate" ); if (!FC_VerifyUpdate ) return F_VerifyUpdate;
|
||||
FC_VerifyFinal =(CK_C_VerifyFinal ) get_sym(hLib,"C_VerifyFinal" ); if (!FC_VerifyFinal ) return F_VerifyFinal;
|
||||
FC_VerifyRecoverInit =(CK_C_VerifyRecoverInit ) get_sym(hLib,"C_VerifyRecoverInit" ); if (!FC_VerifyRecoverInit ) return F_VerifyRecoverInit;
|
||||
FC_VerifyRecover =(CK_C_VerifyRecover ) get_sym(hLib,"C_VerifyRecover" ); if (!FC_VerifyRecover ) return F_VerifyRecover;
|
||||
FC_DigestEncryptUpdate=(CK_C_DigestEncryptUpdate) get_sym(hLib,"C_DigestEncryptUpdate"); if (!FC_DigestEncryptUpdate) return F_DigestEncryptUpdate;
|
||||
FC_DecryptDigestUpdate=(CK_C_DecryptDigestUpdate) get_sym(hLib,"C_DecryptDigestUpdate"); if (!FC_DecryptDigestUpdate) return F_DecryptDigestUpdate;
|
||||
FC_SignEncryptUpdate =(CK_C_SignEncryptUpdate ) get_sym(hLib,"C_SignEncryptUpdate" ); if (!FC_SignEncryptUpdate ) return F_SignEncryptUpdate;
|
||||
FC_DecryptVerifyUpdate=(CK_C_DecryptVerifyUpdate) get_sym(hLib,"C_DecryptVerifyUpdate"); if (!FC_DecryptVerifyUpdate) return F_DecryptVerifyUpdate;
|
||||
FC_GenerateKey =(CK_C_GenerateKey ) get_sym(hLib,"C_GenerateKey" ); if (!FC_GenerateKey ) return F_GenerateKey;
|
||||
FC_GenerateKeyPair =(CK_C_GenerateKeyPair ) get_sym(hLib,"C_GenerateKeyPair" ); if (!FC_GenerateKeyPair ) return F_GenerateKeyPair;
|
||||
FC_WrapKey =(CK_C_WrapKey ) get_sym(hLib,"C_WrapKey" ); if (!FC_WrapKey ) return F_WrapKey;
|
||||
FC_UnwrapKey =(CK_C_UnwrapKey ) get_sym(hLib,"C_UnwrapKey" ); if (!FC_UnwrapKey ) return F_UnwrapKey;
|
||||
FC_DeriveKey =(CK_C_DeriveKey ) get_sym(hLib,"C_DeriveKey" ); if (!FC_DeriveKey ) return F_DeriveKey;
|
||||
FC_SeedRandom =(CK_C_SeedRandom ) get_sym(hLib,"C_SeedRandom" ); if (!FC_SeedRandom ) return F_SeedRandom;
|
||||
FC_GenerateRandom =(CK_C_GenerateRandom ) get_sym(hLib,"C_GenerateRandom" ); if (!FC_GenerateRandom ) return F_GenerateRandom;
|
||||
FC_GetFunctionStatus =(CK_C_GetFunctionStatus ) get_sym(hLib,"C_GetFunctionStatus" ); if (!FC_GetFunctionStatus ) return F_GetFunctionStatus;
|
||||
FC_CancelFunction =(CK_C_CancelFunction ) get_sym(hLib,"C_CancelFunction" ); if (!FC_CancelFunction ) return F_CancelFunction;
|
||||
FC_WaitForSlotEvent =(CK_C_WaitForSlotEvent ) get_sym(hLib,"C_WaitForSlotEvent" ); if (!FC_WaitForSlotEvent ) return F_WaitForSlotEvent;
|
||||
return 0;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
HINSTANCE hPkcsLib=NULL;
|
||||
//------------------------------------------------------------------------------
|
||||
#ifdef WIND32
|
||||
int GetCapiPath(char *path)
|
||||
{
|
||||
HKEY hKey;
|
||||
DWORD Disposition,DataSize;
|
||||
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,CSP_REGKEY,0,KEY_READ,&hKey)!=ERROR_SUCCESS) return 1;
|
||||
path[0]=0; DataSize=255; RegQueryValueEx(hKey,"Image Path",0,&Disposition,(BYTE *)path,&DataSize);
|
||||
RegCloseKey(hKey);
|
||||
if (!strlen(path)) return 2;
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
int GetCapiPath(char *path) {strcpy(path,CAPI_LIB_PATH); return 0;}
|
||||
#endif
|
||||
//------------------------------------------------------------------------------
|
||||
#ifdef WIND32
|
||||
int GetPkcsPath(char *path)
|
||||
{return GetCapiPath(path);}
|
||||
#else
|
||||
int GetPkcsPath(char *path) {strcpy(path,PKCS_LIB_PATH); return 0;}
|
||||
#endif
|
||||
//------------------------------------------------------------------------------
|
||||
int LoadPkcsLib(char *dllpkcs)
|
||||
{
|
||||
int code;
|
||||
char path[260];
|
||||
if (hPkcsLib) return 0;
|
||||
if ((dllpkcs)&&(*dllpkcs)) strcpy(path,dllpkcs);
|
||||
else if (GetPkcsPath(path)) return -1;
|
||||
hPkcsLib=load_lib(dllpkcs);
|
||||
if (!hPkcsLib) return -2;
|
||||
code=Get_PKCS_Fancs(hPkcsLib);
|
||||
if (code) {free_lib(hPkcsLib); hPkcsLib=NULL;}
|
||||
return code;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
void FreePkcsLib(void)
|
||||
{
|
||||
if (hPkcsLib) {free_lib(hPkcsLib); hPkcsLib=NULL;}
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
int do_GetFunctionList( void )
|
||||
{
|
||||
CK_RV rc = 0;
|
||||
extern CK_FUNCTION_LIST *funcs;
|
||||
rc=FC_GetFunctionList(&funcs);
|
||||
if (rc != CKR_OK) {printf ("err %x\n",rc); return rc;}
|
||||
return 0;
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user