本文整理汇总了C++中CK_FUNCTION_LIST_PTR::C_GetInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ CK_FUNCTION_LIST_PTR::C_GetInfo方法的具体用法?C++ CK_FUNCTION_LIST_PTR::C_GetInfo怎么用?C++ CK_FUNCTION_LIST_PTR::C_GetInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CK_FUNCTION_LIST_PTR
的用法示例。
在下文中一共展示了CK_FUNCTION_LIST_PTR::C_GetInfo方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_lib_info
static void test_lib_info() {
const CK_CHAR_PTR MANUFACTURER_ID = "Yubico (www.yubico.com)";
const CK_CHAR_PTR YKCS11_DESCRIPTION = "PKCS#11 PIV Library (SP-800-73)";
const CK_ULONG CRYPTOKI_VERSION_MAJ = 2;
const CK_ULONG CRYPTOKI_VERSION_MIN = 40;
CK_INFO info;
asrt(funcs->C_GetInfo(&info), CKR_OK, "GET_INFO");
asrt(strcmp(info.manufacturerID, MANUFACTURER_ID), 0, "MANUFACTURER");
asrt(info.cryptokiVersion.major, CRYPTOKI_VERSION_MAJ, "CK_MAJ");
asrt(info.cryptokiVersion.minor, CRYPTOKI_VERSION_MIN, "CK_MIN");
asrt(info.libraryVersion.major, YKCS11_VERSION_MAJOR, "LIB_MAJ");
asrt(info.libraryVersion.minor, ((YKCS11_VERSION_MINOR * 10) + YKCS11_VERSION_PATCH ), "LIB_MIN");
asrt(strcmp(info.libraryDescription, YKCS11_DESCRIPTION), 0, "LIB_DESC");
}
示例2: lib_info
static void lib_info() {
CK_INFO info;
CK_FUNCTION_LIST_PTR funcs;
if (C_GetFunctionList(&funcs) != CKR_OK) {
fprintf(stderr, "Get function list failed\n");
exit(EXIT_FAILURE);
}
if (funcs->C_GetInfo(&info) != CKR_OK) {
fprintf(stderr, "GetInfo failed\n");
exit(EXIT_FAILURE);
}
if (strcmp(info.manufacturerID, MANUFACTURER_ID) != 0) {
fprintf(stderr, "unexpected manufacturer ID %s\n", info.manufacturerID);
exit(EXIT_FAILURE);
}
if (info.cryptokiVersion.major != CRYPTOKI_VERSION_MAJ ||
info.cryptokiVersion.minor != CRYPTOKI_VERSION_MIN ) {
fprintf(stderr, "unexpected Cryptoki version %d.%d\n", info.cryptokiVersion.major, info.cryptokiVersion.minor);
exit(EXIT_FAILURE);
}
if (info.libraryVersion.major != YKCS11_VERSION_MAJOR ||
info.libraryVersion.minor != ((YKCS11_VERSION_MINOR * 100) + YKCS11_VERSION_PATCH )) {
fprintf(stderr, "unexpected YKCS11 version %d.%d\n", info.libraryVersion.major, info.libraryVersion.minor);
exit(EXIT_FAILURE);
}
if (strcmp(info.libraryDescription, YKCS11_DESCRIPTION) != 0) {
fprintf(stderr, "unexpected description %s\n", info.libraryDescription);
exit(EXIT_FAILURE);
}
}
示例3: EstEID_initializeCryptokiThread
THREAD_RETURN_TYPE EstEID_initializeCryptokiThread(void *v) {
LOG_LOCATION;
#ifdef _WIN32
WaitForSingleObject(initialization_mutex, INFINITE);
#else
pthread_mutex_lock(&initialization_mutex);
#endif
CK_C_INITIALIZE_ARGS init_args;
memset( &init_args, 0x0, sizeof(init_args) );
init_args.flags = CKF_OS_LOCKING_OK;
struct timeval start = EstEID_startTimer();
initialization_result = fl->C_Initialize(&init_args);
EstEID_log("C_Initialize: %s (%li)", pkcs11_error_message(initialization_result), initialization_result);
EstEID_stopTimerAndLog(start, "C_Initialize:");
if (initialization_result == CKR_CRYPTOKI_ALREADY_INITIALIZED) {
EstEID_log("initialization_result == CKR_CRYPTOKI_ALREADY_INITIALIZED");
}
if (initialization_result == CKR_OK) {
CK_INFO info;
EstEID_log("initialization_result == CKR_OK");
if (!EstEID_CK_failure("C_GetInfo", fl->C_GetInfo(&info))) {
EstEID_logInitInfo(info);
};
}
initialization_completed = TRUE;
#ifdef _WIN32
ReleaseMutex(initialization_mutex);
return TRUE;
#else
pthread_cond_broadcast(&initialization_condition);
pthread_mutex_unlock(&initialization_mutex);
pthread_exit(NULL);
#endif
}
示例4: usage
int
rmain
(
int argc,
char *argv[]
)
{
char *argv0 = argv[0];
PRLibrary *lib;
CK_C_GetFunctionList gfl;
CK_FUNCTION_LIST_PTR epv = (CK_FUNCTION_LIST_PTR)NULL;
CK_RV ck_rv;
CK_INFO info;
CK_ULONG nSlots;
CK_SLOT_ID *pSlots;
CK_ULONG i;
CK_C_INITIALIZE_ARGS ia, *iap;
(void)memset(&ia, 0, sizeof(CK_C_INITIALIZE_ARGS));
iap = (CK_C_INITIALIZE_ARGS *)NULL;
while( argv++, --argc ) {
if( '-' == argv[0][0] ) {
switch( argv[0][1] ) {
case 'i':
iap = &ia;
if( ((char *)NULL != argv[1]) && ('-' != argv[1][0]) ) {
#ifdef WITH_NSS
ia.pConfig = argv[1];
ia.ulConfigLen = strlen(argv[1]);
argv++, --argc;
#else
return usage(argv0);
#endif /* WITH_NSS */
}
break;
case '-':
argv++, --argc;
goto endargs;
default:
return usage(argv0);
}
} else {
break;
}
}
endargs:;
if( 1 != argc ) {
return usage(argv0);
}
lib = PR_LoadLibrary(argv[0]);
if( (PRLibrary *)NULL == lib ) {
PR_fprintf(PR_STDERR, "Can't load %s: %ld, %ld\n", argv[1], PR_GetError(), PR_GetOSError());
return 1;
}
gfl = (CK_C_GetFunctionList)PR_FindSymbol(lib, "C_GetFunctionList");
if( (CK_C_GetFunctionList)NULL == gfl ) {
PR_fprintf(PR_STDERR, "Can't find C_GetFunctionList in %s: %ld, %ld\n", argv[1],
PR_GetError(), PR_GetOSError());
return 1;
}
ck_rv = (*gfl)(&epv);
if( CKR_OK != ck_rv ) {
PR_fprintf(PR_STDERR, "CK_GetFunctionList returned 0x%08x\n", ck_rv);
return 1;
}
PR_fprintf(PR_STDOUT, "Module %s loaded, epv = 0x%08x.\n\n", argv[1], (CK_ULONG)epv);
/* C_Initialize */
ck_rv = epv->C_Initialize(iap);
if( CKR_OK != ck_rv ) {
PR_fprintf(PR_STDERR, "C_Initialize returned 0x%08x\n", ck_rv);
return 1;
}
/* C_GetInfo */
(void)memset(&info, 0, sizeof(CK_INFO));
ck_rv = epv->C_GetInfo(&info);
if( CKR_OK != ck_rv ) {
PR_fprintf(PR_STDERR, "C_GetInfo returned 0x%08x\n", ck_rv);
return 1;
}
PR_fprintf(PR_STDOUT, "Module Info:\n");
PR_fprintf(PR_STDOUT, " cryptokiVersion = %lu.%02lu\n",
(PRUint32)info.cryptokiVersion.major, (PRUint32)info.cryptokiVersion.minor);
PR_fprintf(PR_STDOUT, " manufacturerID = \"%.32s\"\n", info.manufacturerID);
PR_fprintf(PR_STDOUT, " flags = 0x%08lx\n", info.flags);
PR_fprintf(PR_STDOUT, " libraryDescription = \"%.32s\"\n", info.libraryDescription);
PR_fprintf(PR_STDOUT, " libraryVersion = %lu.%02lu\n",
(PRUint32)info.libraryVersion.major, (PRUint32)info.libraryVersion.minor);
PR_fprintf(PR_STDOUT, "\n");
/* C_GetSlotList */
nSlots = 0;
ck_rv = epv->C_GetSlotList(CK_FALSE, (CK_SLOT_ID_PTR)CK_NULL_PTR, &nSlots);
//.........这里部分代码省略.........
示例5: DataMarshalling
//.........这里部分代码省略.........
CK_SESSION_HANDLE sessionId = 0;
printf("Processing: C_OpenSession\n");
slotId = d->unpackInt();
flags = d->unpackInt();
{
CK_RV ret = 0;
DataMarshalling *d2 = new DataMarshalling(client);
/*
* Opening session
*/
ret = pFunctionList->C_OpenSession(slotId, flags, NULL, NULL, &sessionId);
d2->setMsgType(d->getMsgType());
d2->packInt((char *)&ret);
d2->packInt((char *)&sessionId);
d2->sendData();
delete d2;
}
} else if (!strcmp(d->getMsgType(), "C_CloseSession")) {
CK_SESSION_HANDLE sessionId = 0;
printf("Processing: C_CloseSession\n");
sessionId = d->unpackInt();
{
CK_RV ret = 0;
DataMarshalling *d2 = new DataMarshalling(client);
/*
* Opening session
*/
ret = pFunctionList->C_CloseSession(sessionId);
d2->setMsgType(d->getMsgType());
d2->packInt((char *)&ret);
d2->sendData();
delete d2;
}
} else if (!strcmp(d->getMsgType(), "C_GetInfo")) {
unsigned int slotId = 0, flags = 0;
CK_SESSION_HANDLE sessionId = 0;
CK_INFO info;
printf("Processing: C_GetInfo\n");
slotId = d->unpackInt();
{
CK_RV ret = 0;
CK_TOKEN_INFO token;
DataMarshalling *d2 = new DataMarshalling(client);
/*
* Opening session
*/
ret = pFunctionList->C_GetInfo(&info);
d2->setMsgType(d->getMsgType());
d2->packInt((char *)&ret);
d2->packChar(info.cryptokiVersion.major);
d2->packChar(info.cryptokiVersion.minor);
d2->packMem((char *)info.manufacturerID, 32);
d2->packInt((char *)&info.flags);
d2->packMem((char *)info.libraryDescription, 32);
d2->packChar(info.libraryVersion.major);
d2->packChar(info.libraryVersion.minor);
d2->sendData();
delete d2;
}
} else if (!strcmp(d->getMsgType(), "C_GetSlotInfo")) {
unsigned int slotId = 0, flags = 0;
CK_SESSION_HANDLE sessionId = 0;
printf("Processing: C_GetSlotInfo\n");
slotId = d->unpackInt();
{
CK_RV ret = 0;