本文整理汇总了C++中CK_FUNCTION_LIST_PTR::C_GetSlotInfo方法的典型用法代码示例。如果您正苦于以下问题:C++ CK_FUNCTION_LIST_PTR::C_GetSlotInfo方法的具体用法?C++ CK_FUNCTION_LIST_PTR::C_GetSlotInfo怎么用?C++ CK_FUNCTION_LIST_PTR::C_GetSlotInfo使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CK_FUNCTION_LIST_PTR
的用法示例。
在下文中一共展示了CK_FUNCTION_LIST_PTR::C_GetSlotInfo方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EstEID_loadCertInfo
int EstEID_loadCertInfo(EstEID_Certs *certs, int index) {
CK_SLOT_ID slotID = certs->slotIDs[index];
CK_SLOT_INFO slotInfo;
FAIL_IF(EstEID_CK_failure("C_GetSlotInfo", fl->C_GetSlotInfo(slotID, &slotInfo)));
if (!(slotInfo.flags & CKF_TOKEN_PRESENT)) return SUCCESS;
CK_TOKEN_INFO tokenInfo;
FAIL_IF(EstEID_CK_failure("C_GetTokenInfo", fl->C_GetTokenInfo(slotID, &tokenInfo)));
certs->certs[index] = EstEID_createCertMap(tokenInfo);
FAIL_UNLESS(EstEID_loadCertInfoEntries(certs, index));
return SUCCESS;
}
示例2: usage
//.........这里部分代码省略.........
break;
default:
PR_fprintf(PR_STDERR, "C_GetSlotList(FALSE, NULL, ) returned 0x%08x\n", ck_rv);
return 1;
}
PR_fprintf(PR_STDOUT, "There are %lu slots.\n", nSlots);
pSlots = (CK_SLOT_ID_PTR)PR_Calloc(nSlots, sizeof(CK_SLOT_ID));
if( (CK_SLOT_ID_PTR)NULL == pSlots ) {
PR_fprintf(PR_STDERR, "[memory allocation of %lu bytes failed]\n", nSlots * sizeof(CK_SLOT_ID));
return 1;
}
ck_rv = epv->C_GetSlotList(CK_FALSE, pSlots, &nSlots);
if( CKR_OK != ck_rv ) {
PR_fprintf(PR_STDERR, "C_GetSlotList(FALSE, , ) returned 0x%08x\n", ck_rv);
return 1;
}
for( i = 0; i < nSlots; i++ ) {
PR_fprintf(PR_STDOUT, " [%lu]: CK_SLOT_ID = %lu\n", (i+1), pSlots[i]);
}
PR_fprintf(PR_STDOUT, "\n");
/* C_GetSlotInfo */
for( i = 0; i < nSlots; i++ ) {
CK_SLOT_INFO sinfo;
PR_fprintf(PR_STDOUT, "[%lu]: CK_SLOT_ID = %lu\n", (i+1), pSlots[i]);
(void)memset(&sinfo, 0, sizeof(CK_SLOT_INFO));
ck_rv = epv->C_GetSlotInfo(pSlots[i], &sinfo);
if( CKR_OK != ck_rv ) {
PR_fprintf(PR_STDERR, "C_GetSlotInfo(%lu, ) returned 0x%08x\n", pSlots[i], ck_rv);
return 1;
}
PR_fprintf(PR_STDOUT, " Slot Info:\n");
PR_fprintf(PR_STDOUT, " slotDescription = \"%.64s\"\n", sinfo.slotDescription);
PR_fprintf(PR_STDOUT, " manufacturerID = \"%.32s\"\n", sinfo.manufacturerID);
PR_fprintf(PR_STDOUT, " flags = 0x%08lx\n", sinfo.flags);
PR_fprintf(PR_STDOUT, " -> TOKEN PRESENT = %s\n",
sinfo.flags & CKF_TOKEN_PRESENT ? "TRUE" : "FALSE");
PR_fprintf(PR_STDOUT, " -> REMOVABLE DEVICE = %s\n",
sinfo.flags & CKF_REMOVABLE_DEVICE ? "TRUE" : "FALSE");
PR_fprintf(PR_STDOUT, " -> HW SLOT = %s\n",
sinfo.flags & CKF_HW_SLOT ? "TRUE" : "FALSE");
PR_fprintf(PR_STDOUT, " hardwareVersion = %lu.%02lu\n",
(PRUint32)sinfo.hardwareVersion.major, (PRUint32)sinfo.hardwareVersion.minor);
PR_fprintf(PR_STDOUT, " firmwareVersion = %lu.%02lu\n",
(PRUint32)sinfo.firmwareVersion.major, (PRUint32)sinfo.firmwareVersion.minor);
if( sinfo.flags & CKF_TOKEN_PRESENT ) {
CK_TOKEN_INFO tinfo;
CK_MECHANISM_TYPE *pMechanismList;
CK_ULONG nMechanisms = 0;
CK_ULONG j;
(void)memset(&tinfo, 0, sizeof(CK_TOKEN_INFO));
ck_rv = epv->C_GetTokenInfo(pSlots[i], &tinfo);
if( CKR_OK != ck_rv ) {
PR_fprintf(PR_STDERR, "C_GetTokenInfo(%lu, ) returned 0x%08x\n", pSlots[i], ck_rv);
return 1;
}
示例3: DataMarshalling
//.........这里部分代码省略.........
*/
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;
CK_SLOT_INFO slot;
DataMarshalling *d2 = new DataMarshalling(client);
/*
* Opening session
*/
ret = pFunctionList->C_GetSlotInfo(slotId, &slot);
d2->setMsgType(d->getMsgType());
d2->packInt((char *)&ret);
d2->packMem((char *)slot.slotDescription, 64);
d2->packMem((char *)slot.manufacturerID, 32);
d2->packInt((char *)&slot.flags);
d2->packChar(slot.hardwareVersion.major);
d2->packChar(slot.hardwareVersion.minor);
d2->packChar(slot.firmwareVersion.major);
d2->packChar(slot.firmwareVersion.minor);
d2->sendData();
delete d2;
}
} else if (!strcmp(d->getMsgType(), "C_GetTokenInfo")) {
unsigned int slotId = 0, flags = 0;
CK_SESSION_HANDLE sessionId = 0;
printf("Processing: C_GetTokenInfo\n");
slotId = d->unpackInt();
{
CK_RV ret = 0;
CK_TOKEN_INFO token;
示例4: WaitForCardEvent
CK_RV WaitForCardEvent(HWND hTextEdit, CK_FUNCTION_LIST_PTR functions, DWORD *pAutoFlags)
{
CK_RV retVal = CKR_OK;
CK_FLAGS flags = 0;
CK_SLOT_ID slotID;
CK_SLOT_INFO slotInfo;
CK_TOKEN_INFO tokenInfo;
CK_ULONG ulPreviousCount = 0;
CK_ULONG ulCount = 0;
CK_ULONG ulCounter = 0;
CK_SLOT_ID_PTR pSlotList;
CK_ULONG_PTR pCardPresentList;
//CK_BYTE_PTR pserialNumberList;
//CK_ULONG_PTR pserialNumberLenList;
//CK_ULONG certContextLen = 5;
PCCERT_CONTEXT** pCertContextArray;
retVal = functions->C_GetSlotList(FALSE, NULL_PTR, &ulCount);
ulPreviousCount = ulCount;
pSlotList = (CK_SLOT_ID_PTR) malloc(ulCount*sizeof(CK_SLOT_ID));
pCardPresentList = (CK_ULONG_PTR)malloc(ulCount*sizeof(CK_SLOT_ID));
//pserialNumberList = (CK_BYTE*)malloc(ulCount*sizeof(CK_BYTE));
//memset(pserialNumberList,0,ulCount*sizeof(CK_BYTE));
//pserialNumberLenList = (CK_ULONG*)malloc(ulCount*sizeof(CK_ULONG));
//allocate space for the array of certificate pointers per slot
pCertContextArray = malloc(ulCount*sizeof(PCCERT_CONTEXT*));
//initialize with zero's
memset(pCertContextArray,0,ulCount*sizeof(PCCERT_CONTEXT*));
if((pSlotList != NULL) &&(pCardPresentList != NULL) &&(pCertContextArray != NULL))
{
//retVal = functions->C_GetSlotList(FALSE, NULL_PTR, &ulCount);
//if(retVal != CKR_OK){}
if ((retVal == CKR_OK) && (ulCount > 0)) {
SendMessage(hTextEdit, EM_REPLACESEL, 0, (LPARAM)"Readers found: \r\n");
retVal = functions->C_GetSlotList(FALSE, pSlotList, &ulCount);
if(retVal != CKR_OK){}
//ulCount readers found, now fill in the certificate context array,
//and register all certificates found
while(ulCounter < ulCount)
{
/* Get slot information*/
retVal = functions->C_GetSlotInfo(pSlotList[ulCounter], &slotInfo);
if(retVal != CKR_OK){}
else
{
slotInfo.slotDescription[63] = 0;
//do not display the PnP slot
if(strncmp(slotInfo.slotDescription,"\\\\?PnP?\\Notification",20) != 0)
{
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)"- ");
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)slotInfo.slotDescription);
//SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)"\r\n");
/* Get token information*/
retVal = functions->C_GetTokenInfo(pSlotList[ulCounter], &tokenInfo);
if (retVal == CKR_TOKEN_NOT_PRESENT) {
pCardPresentList[ulCounter] = 0;
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)" No Card Found \r\n");
}
else if (retVal==CKR_OK)
{
pCardPresentList[ulCounter] = 1;
tokenInfo.label[31]=0;
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)" Card Found: ");
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)tokenInfo.label);
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)"\r\n");
//allocate space for 5 certificate context pointers
pCertContextArray[ulCounter] = malloc (5*sizeof(PCCERT_CONTEXT));
memset(pCertContextArray[ulCounter],0,5*sizeof(PCCERT_CONTEXT));
if(pCertContextArray[ulCounter] != NULL)
{
memset(pCertContextArray[ulCounter],0,5*sizeof(PCCERT_CONTEXT));
if(*pAutoFlags & AUTO_REGISTER)
retVal = HandleNewCardFound(hTextEdit, functions, ulCounter, pSlotList,pCertContextArray[ulCounter], 5);
}
else
{
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)"ERROR: Out of memory\r\n");
}
}
}
}
ulCounter++;
}//end of while
}
//as long as the readercount didn't change; keep the current slotlist
//TODO: match the entire slotList, not just checking its size
while(ulCount == ulPreviousCount)
{
/* Block and wait for a slot event */
retVal = functions->C_WaitForSlotEvent(flags, &slotID, NULL_PTR);
if(retVal != CKR_OK)
{
SendMessage(hTextEdit, EM_REPLACESEL,0, (LPARAM)"WARNING: C_WaitForSlotEvent returned an error \r\n");
return retVal;
// printError()
//.........这里部分代码省略.........
示例5: gettext
//.........这里部分代码省略.........
if (Tmp_C_GetFunctionList == NULL) {
cryptodebug("Cannot get the address of the C_GetFunctionList "
"from framework");
rc = FAILURE;
goto finish;
}
/* Get the provider's function list */
rv = Tmp_C_GetFunctionList(&funcs);
if (rv != CKR_OK) {
cryptodebug("failed to call C_GetFunctionList in "
"framework library");
rc = FAILURE;
goto finish;
}
/* Initialize this provider */
rv = funcs->C_Initialize(NULL_PTR);
if (rv != CKR_OK) {
cryptodebug("C_Initialize failed with error code 0x%x\n", rv);
rc = FAILURE;
goto finish;
} else {
lib_initialized = B_TRUE;
}
/*
* We know for sure that metaslot is slot 0 in the framework,
* so, we will do a C_GetSlotInfo() trying to see if it works.
* If it fails with CKR_SLOT_ID_INVALID, we know that metaslot
* is not really enabled.
*/
rv = funcs->C_GetSlotInfo(METASLOT_ID, &slot_info);
if (rv == CKR_SLOT_ID_INVALID) {
(void) printf(gettext("actual status: disabled.\n"));
/*
* Even if the -m and -v flag is supplied, there's nothing
* interesting to display about metaslot since it is disabled,
* so, just stop right here.
*/
goto finish;
}
if (rv != CKR_OK) {
cryptodebug("C_GetSlotInfo failed with error "
"code 0x%x\n", rv);
rc = FAILURE;
goto finish;
}
if (!verbose) {
goto display_mechs;
}
(void) printf(gettext("actual status: enabled.\n"));
(void) printf(gettext("Description: %.64s\n"),
slot_info.slotDescription);
(void) printf(gettext("Token Present: %s\n"),
(slot_info.flags & CKF_TOKEN_PRESENT ?
gettext("True") : gettext("False")));
rv = funcs->C_GetTokenInfo(METASLOT_ID, &token_info);
if (rv != CKR_OK) {