352 CK_RV (*C_Initialize)(CK_VOID_PTR pInitArgs);
353 CK_RV (*C_Finalize)(CK_VOID_PTR pReserved);
356 CK_RV (*C_GetSlotList)(CK_BBOOL tokenPresent, CK_SLOT_ID_PTR pSlotList,
357 CK_ULONG_PTR pulCount);
360 CK_RV (*C_GetMechanismList)(CK_SLOT_ID slotID,
361 CK_MECHANISM_TYPE_PTR pMechanismList,
362 CK_ULONG_PTR pulCount);
363 CK_RV (*C_GetMechanismInfo)(CK_SLOT_ID slotID, CK_MECHANISM_TYPE type,
365 CK_RV (*C_InitToken)(CK_SLOT_ID slotID, CK_UTF8CHAR_PTR pPin,
366 CK_ULONG ulPinLen, CK_UTF8CHAR_PTR pLabel);
367 CK_RV (*C_InitPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pPin,
369 CK_RV (*C_SetPIN)(CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin,
370 CK_ULONG ulOldLen, CK_UTF8CHAR_PTR pNewPin,
372 CK_RV (*C_OpenSession)(CK_SLOT_ID slotID, CK_FLAGS flags,
373 CK_VOID_PTR pApplication, CK_NOTIFY Notify,
374 CK_SESSION_HANDLE_PTR phSession);
375 CK_RV (*C_CloseSession)(CK_SESSION_HANDLE hSession);
376 CK_RV (*C_CloseAllSessions)(CK_SLOT_ID slotID);
377 CK_RV (*C_GetSessionInfo)(CK_SESSION_HANDLE hSession,
379 CK_RV (*C_GetOperationState)(CK_SESSION_HANDLE hSession,
380 CK_BYTE_PTR pOperationState,
381 CK_ULONG_PTR pulOperationStateLen);
382 CK_RV (*C_SetOperationState)(CK_SESSION_HANDLE hSession,
383 CK_BYTE_PTR pOperationState,
384 CK_ULONG ulOperationStateLen,
385 CK_OBJECT_HANDLE hEncryptionKey,
386 CK_OBJECT_HANDLE hAuthenticationKey);
387 CK_RV (*C_Login)(CK_SESSION_HANDLE hSession, CK_USER_TYPE userType,
388 CK_UTF8CHAR_PTR pPin, CK_ULONG ulPinLen);
389 CK_RV (*C_Logout)(CK_SESSION_HANDLE hSession);
390 CK_RV (*C_CreateObject)(CK_SESSION_HANDLE hSession,
392 CK_OBJECT_HANDLE_PTR phObject);
393 CK_RV (*C_CopyObject)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject,
395 CK_OBJECT_HANDLE_PTR phNewObject);
396 CK_RV (*C_DestroyObject)(CK_SESSION_HANDLE hSession,
397 CK_OBJECT_HANDLE hObject);
398 CK_RV (*C_GetObjectSize)(CK_SESSION_HANDLE hSession,
399 CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize);
400 CK_RV (*C_GetAttributeValue)(CK_SESSION_HANDLE hSession,
401 CK_OBJECT_HANDLE hObject,
403 CK_RV (*C_SetAttributeValue)(CK_SESSION_HANDLE hSession,
404 CK_OBJECT_HANDLE hObject,
406 CK_RV (*C_FindObjectsInit)(CK_SESSION_HANDLE hSession,
408 CK_RV (*C_FindObjects)(CK_SESSION_HANDLE hSession,
409 CK_OBJECT_HANDLE_PTR phObject,
410 CK_ULONG ulMaxObjectCount,
411 CK_ULONG_PTR pulObjectCount);
412 CK_RV (*C_FindObjectsFinal)(CK_SESSION_HANDLE hSession);
413 CK_RV (*C_EncryptInit)(CK_SESSION_HANDLE hSession,
415 CK_RV (*C_Encrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
416 CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData,
417 CK_ULONG_PTR pulEncryptedDataLen);
418 CK_RV (*C_EncryptUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
419 CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart,
420 CK_ULONG_PTR pulEncryptedPartLen);
421 CK_RV (*C_EncryptFinal)(CK_SESSION_HANDLE hSession,
422 CK_BYTE_PTR pLastEncryptedPart,
423 CK_ULONG_PTR pulLastEncryptedPartLen);
424 CK_RV (*C_DecryptInit)(CK_SESSION_HANDLE hSession,
426 CK_RV (*C_Decrypt)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData,
427 CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData,
428 CK_ULONG_PTR pulDataLen);
429 CK_RV (*C_DecryptUpdate)(CK_SESSION_HANDLE hSession,
430 CK_BYTE_PTR pEncryptedPart,
431 CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart,
432 CK_ULONG_PTR pulPartLen);
433 CK_RV (*C_DecryptFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart,
434 CK_ULONG_PTR pulLastPartLen);
435 CK_RV (*C_DigestInit)(CK_SESSION_HANDLE hSession,
437 CK_RV (*C_Digest)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
438 CK_ULONG ulDataLen, CK_BYTE_PTR pDigest,
439 CK_ULONG_PTR pulDigestLen);
440 CK_RV (*C_DigestUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
442 CK_RV (*C_DigestKey)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey);
443 CK_RV (*C_DigestFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest,
444 CK_ULONG_PTR pulDigestLen);
445 CK_RV (*C_SignInit)(CK_SESSION_HANDLE hSession,
CK_MECHANISM_PTR pMechanism,
446 CK_OBJECT_HANDLE hKey);
447 CK_RV (*C_Sign)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
448 CK_ULONG ulDataLen, CK_BYTE_PTR pSignature,
449 CK_ULONG_PTR pulSignatureLen);
450 CK_RV (*C_SignUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
452 CK_RV (*C_SignFinal)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature,
453 CK_ULONG_PTR pulSignatureLen);
454 CK_RV (*C_SignRecoverInit)(CK_SESSION_HANDLE hSession,
456 CK_OBJECT_HANDLE hKey);
457 CK_RV (*C_SignRecover)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
458 CK_ULONG ulDataLen, CK_BYTE_PTR pSignature,
459 CK_ULONG_PTR pulSignatureLen);
460 CK_RV (*C_VerifyInit)(CK_SESSION_HANDLE hSession,
462 CK_RV (*C_Verify)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData,
463 CK_ULONG ulDataLen, CK_BYTE_PTR pSignature,
464 CK_ULONG ulSignatureLen);
465 CK_RV (*C_VerifyUpdate)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart,
467 CK_RV (*C_VerifyFinal)(CK_SESSION_HANDLE hSession,
468 CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen);
469 CK_RV (*C_VerifyRecoverInit)(CK_SESSION_HANDLE hSession,
471 CK_OBJECT_HANDLE hKey);
472 CK_RV (*C_VerifyRecover)(CK_SESSION_HANDLE hSession,
473 CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen,
474 CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen);
475 CK_RV (*C_DigestEncryptUpdate)(CK_SESSION_HANDLE hSession,
476 CK_BYTE_PTR pPart, CK_ULONG ulPartLen,
477 CK_BYTE_PTR pEncryptedPart,
478 CK_ULONG_PTR pulEncryptedPartLen);
479 CK_RV (*C_DecryptDigestUpdate)(CK_SESSION_HANDLE hSession,
480 CK_BYTE_PTR pEncryptedPart,
481 CK_ULONG ulEncryptedPartLen,
482 CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen);
483 CK_RV (*C_SignEncryptUpdate)(CK_SESSION_HANDLE hSession,
484 CK_BYTE_PTR pPart, CK_ULONG ulPartLen,
485 CK_BYTE_PTR pEncryptedPart,
486 CK_ULONG_PTR pulEncryptedPartLen);
487 CK_RV (*C_DecryptVerifyUpdate)(CK_SESSION_HANDLE hSession,
488 CK_BYTE_PTR pEncryptedPart,
489 CK_ULONG ulEncryptedPartLen,
490 CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen);
491 CK_RV (*C_GenerateKey)(CK_SESSION_HANDLE hSession,
494 CK_OBJECT_HANDLE_PTR phKey);
495 CK_RV (*C_GenerateKeyPair)(CK_SESSION_HANDLE hSession,
498 CK_ULONG ulPublicKeyAttributeCount,
500 CK_ULONG ulPrivateKeyAttributeCount,
501 CK_OBJECT_HANDLE_PTR phPublicKey,
502 CK_OBJECT_HANDLE_PTR phPrivateKey);
503 CK_RV (*C_WrapKey)(CK_SESSION_HANDLE hSession,
505 CK_OBJECT_HANDLE hWrappingKey, CK_OBJECT_HANDLE hKey,
506 CK_BYTE_PTR pWrappedKey,
507 CK_ULONG_PTR pulWrappedKeyLen);
508 CK_RV (*C_UnwrapKey)(CK_SESSION_HANDLE hSession,
510 CK_OBJECT_HANDLE hUnwrappingKey,
511 CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen,
513 CK_ULONG ulAttributeCount,
514 CK_OBJECT_HANDLE_PTR phKey);
515 CK_RV (*C_DeriveKey)(CK_SESSION_HANDLE hSession,
517 CK_OBJECT_HANDLE hBaseKey,
519 CK_ULONG ulAttributeCount,
520 CK_OBJECT_HANDLE_PTR phKey);
521 CK_RV (*C_SeedRandom)(CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed,
523 CK_RV (*C_GenerateRandom)(CK_SESSION_HANDLE hSession,
524 CK_BYTE_PTR RandomData, CK_ULONG ulRandomLen);
525 CK_RV (*C_GetFunctionStatus)(CK_SESSION_HANDLE hSession);
526 CK_RV (*C_CancelFunction)(CK_SESSION_HANDLE hSession);
527 CK_RV (*C_WaitForSlotEvent)(CK_FLAGS flags, CK_SLOT_ID_PTR pSlot,
528 CK_VOID_PTR pRserved);