Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
p6tokenimpl.h
Go to the documentation of this file.
1 
17 #ifndef P6TOKENIMPL_H__
18 #define P6TOKENIMPL_H__ 1
19 
20 #include "pkcs11.h"
21 #include "p6com.h"
22 
23 #ifdef __cplusplus
24 namespace P6R {
25 extern "C" {
26 #endif
27 
36 typedef enum
37 {
38  ACCESS_READ_ONLY = 0x00, // -> default, not logged in user with session has this privledge
39  ACCESS_READ_WRITE = 0x01 // -> logged in user can as for R/W access
41 
42 typedef P6R::P6ERR (*ADD_OBJECT_TO_SESSION)( CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, P6BSTR* pGUID, P6ACCESS_TYPE requested );
43 
44 
55 #undef INTERFACE
56 #define INTERFACE p6ITokenImpl
58 {
77  P6DECLCOMMETHOD(initialize)(P6THIS_ P6UINT32 libWideFlags, P6BWCSTR* pTokenType ) P6PURE;
78 
90  P6DECLCOMMETHOD(finalize)(P6THIS_ CK_VOID_PTR pReserved ) P6PURE;
91 
110 
131 
148  P6DECLCOMMETHOD(getTokenInfo)(P6THIS_ CK_RV* pRV, CK_SLOT_ID slotId, CK_TOKEN_INFO_PTR pInfo ) P6PURE;
149 
166  P6DECLCOMMETHOD(getMechanismList)(P6THIS_ CK_RV* pRV, CK_SLOT_ID slotId, CK_MECHANISM_TYPE_PTR pMechanismList, CK_ULONG_PTR pulCount ) P6PURE;
167 
184  P6DECLCOMMETHOD(getMechanismInfo)(P6THIS_ CK_RV* pRV, CK_SLOT_ID slotId, CK_MECHANISM_TYPE mechType, CK_MECHANISM_INFO_PTR pInfo ) P6PURE;
185 
207  P6DECLCOMMETHOD(openSession)(P6THIS_ CK_RV* pRV, CK_SLOT_ID slotId, CK_FLAGS flags, CK_VOID_PTR pApplication, CK_NOTIFY Notify, CK_SESSION_HANDLE hSession ) P6PURE;
208 
225  P6DECLCOMMETHOD(closeSession)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession ) P6PURE;
226 
243  P6DECLCOMMETHOD(getSessionInfo)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_SESSION_INFO_PTR pInfo ) P6PURE;
244 
261  P6DECLCOMMETHOD(getOperationState)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG_PTR pulOperationStateLen ) P6PURE;
262 
279  P6DECLCOMMETHOD(setOperationState)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pOperationState, CK_ULONG ulOperationStateLen, CK_OBJECT_HANDLE hEncryptionKey, CK_OBJECT_HANDLE hAuthenticationKey ) P6PURE;
280 
298 
315  P6DECLCOMMETHOD(setPIN)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_UTF8CHAR_PTR pOldPin, CK_ULONG ulOldLen, CK_UTF8CHAR_PTR pNewPin, CK_ULONG ulNewLen ) P6PURE;
316 
334 
351  P6DECLCOMMETHOD(logout)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession ) P6PURE;
352 
369  P6DECLCOMMETHOD(createObject)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phObject ) P6PURE;
370 
387  P6DECLCOMMETHOD(destroyObject)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject ) P6PURE;
388 
405  P6DECLCOMMETHOD(copyObject)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phNewObject ) P6PURE;
406 
423  P6DECLCOMMETHOD(getObjectSize)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ULONG_PTR pulSize ) P6PURE;
424 
441  P6DECLCOMMETHOD(getAttributeValue)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount ) P6PURE;
442 
459  P6DECLCOMMETHOD(setAttributeValue)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount ) P6PURE;
460 
477  P6DECLCOMMETHOD(findObjectsInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount ) P6PURE;
478 
501  P6DECLCOMMETHOD(findObjects)(P6THIS_ ADD_OBJECT_TO_SESSION pCallback, CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE_PTR phObject, CK_ULONG ulMaxObjectCount, CK_ULONG_PTR pulObjectCount ) P6PURE;
502 
519  P6DECLCOMMETHOD(findObjectsFinal)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession ) P6PURE;
520 
537  P6DECLCOMMETHOD(seedRandom)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSeed, CK_ULONG ulSeedLen ) P6PURE;
538 
555  P6DECLCOMMETHOD(generateRandom)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pRandomData, CK_ULONG ulRandomLen ) P6PURE;
556 
573  P6DECLCOMMETHOD(waitForSlotEvent)(P6THIS_ CK_RV* pRV, CK_FLAGS flags, CK_SLOT_ID_PTR pSlot, CK_VOID_PTR pReserved ) P6PURE;
574 
591  P6DECLCOMMETHOD(getFunctionStatus)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession ) P6PURE;
592 
609  P6DECLCOMMETHOD(cancelFunction)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession ) P6PURE;
610 
627  P6DECLCOMMETHOD(digestEncryptUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen ) P6PURE;
628 
645  P6DECLCOMMETHOD(decryptDigestUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen ) P6PURE;
646 
663  P6DECLCOMMETHOD(signEncryptUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen ) P6PURE;
664 
681  P6DECLCOMMETHOD(decryptVerifyUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen ) P6PURE;
682 
699  P6DECLCOMMETHOD(signInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey ) P6PURE;
700 
717  P6DECLCOMMETHOD(sign)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen ) P6PURE;
718 
735  P6DECLCOMMETHOD(signUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen ) P6PURE;
736 
753  P6DECLCOMMETHOD(signFinal)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen ) P6PURE;
754 
771  P6DECLCOMMETHOD(signRecoverInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey ) P6PURE;
772 
789  P6DECLCOMMETHOD(signRecover)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG_PTR pulSignatureLen ) P6PURE;
790 
807  P6DECLCOMMETHOD(verifyInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey ) P6PURE;
808 
825  P6DECLCOMMETHOD(verify)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen ) P6PURE;
826 
843  P6DECLCOMMETHOD(verifyUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen ) P6PURE;
844 
861  P6DECLCOMMETHOD(verifyFinal)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen ) P6PURE;
862 
879  P6DECLCOMMETHOD(verifyRecoverInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey ) P6PURE;
880 
897  P6DECLCOMMETHOD(verifyRecover)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pSignature, CK_ULONG ulSignatureLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen ) P6PURE;
898 
915  P6DECLCOMMETHOD(digestInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism ) P6PURE;
916 
933  P6DECLCOMMETHOD(digest)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen ) P6PURE;
934 
951  P6DECLCOMMETHOD(digestUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen ) P6PURE;
952 
969  P6DECLCOMMETHOD(digestKey)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hKey ) P6PURE;
970 
987  P6DECLCOMMETHOD(digestFinal)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pDigest, CK_ULONG_PTR pulDigestLen ) P6PURE;
988 
1005  P6DECLCOMMETHOD(generateKey)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulCount, CK_OBJECT_HANDLE_PTR phKey ) P6PURE;
1006 
1027  P6DECLCOMMETHOD(generateKeyPair)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_ATTRIBUTE_PTR pPublicKeyTemplate,
1028  CK_ULONG ulPublicKeyAttributeCount, CK_ATTRIBUTE_PTR pPrivateKeyTemplate, CK_ULONG ulPrivateKeyAttributeCount,
1029  CK_OBJECT_HANDLE_PTR phPublicKey, CK_OBJECT_HANDLE_PTR phPrivateKey ) P6PURE;
1030 
1047  P6DECLCOMMETHOD(wrapKey)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hWrappingKey,
1048  CK_OBJECT_HANDLE hKey, CK_BYTE_PTR pWrappedKey, CK_ULONG_PTR pulWrappedKeyLen ) P6PURE;
1049 
1066  P6DECLCOMMETHOD(unwrapKey)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hUnwrappingKey,
1067  CK_BYTE_PTR pWrappedKey, CK_ULONG ulWrappedKeyLen, CK_ATTRIBUTE_PTR pTemplate,
1068  CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey ) P6PURE;
1069 
1086  P6DECLCOMMETHOD(deriveKey)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hBaseKey,
1087  CK_ATTRIBUTE_PTR pTemplate, CK_ULONG ulAttributeCount, CK_OBJECT_HANDLE_PTR phKey ) P6PURE;
1088 
1105  P6DECLCOMMETHOD(encrypt)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pData, CK_ULONG ulDataLen, CK_BYTE_PTR pEncryptedData, CK_ULONG_PTR pulEncryptedDataLen ) P6PURE;
1106 
1123  P6DECLCOMMETHOD(encryptInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey ) P6PURE;
1124 
1141  P6DECLCOMMETHOD(encryptUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pPart, CK_ULONG ulPartLen, CK_BYTE_PTR pEncryptedPart, CK_ULONG_PTR pulEncryptedPartLen ) P6PURE;
1142 
1159  P6DECLCOMMETHOD(encryptFinal)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastEncryptedPart, CK_ULONG_PTR pulLastEncryptedPartLen ) P6PURE;
1160 
1177  P6DECLCOMMETHOD(decryptInit)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_MECHANISM_PTR pMechanism, CK_OBJECT_HANDLE hKey ) P6PURE;
1178 
1195  P6DECLCOMMETHOD(decrypt)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedData, CK_ULONG ulEncryptedDataLen, CK_BYTE_PTR pData, CK_ULONG_PTR pulDataLen ) P6PURE;
1196 
1213  P6DECLCOMMETHOD(decryptUpdate)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pEncryptedPart, CK_ULONG ulEncryptedPartLen, CK_BYTE_PTR pPart, CK_ULONG_PTR pulPartLen ) P6PURE;
1214 
1231  P6DECLCOMMETHOD(decryptFinal)(P6THIS_ CK_RV* pRV, CK_SESSION_HANDLE hSession, CK_BYTE_PTR pLastPart, CK_ULONG_PTR pulLastPartLen ) P6PURE;
1232 };
1233 
1234 // {59B44C1F-8032-42fe-9D89-A03821454778}
1235 #define IF_p6ITokenImpl {0x59b44c1f,0x8032,0x42fe,{0x9d,0x89,0xa0,0x38,0x21,0x45,0x47,0x78}}
1236 
1237 
1238 #ifdef __cplusplus
1239 } // extern "C"
1240 } // namespace
1241 #endif
1242 
1243 #endif
1244 
1245 
1246 
1247 
1248 
1249 
CK_MECHANISM_INFO CK_PTR CK_MECHANISM_INFO_PTR
Definition: pkcs11t.h:1033
This is an internal interface that forwards the PKCS 11 token interface to a "named" implementation...
Definition: p6tokenimpl.h:57
CK_ULONG CK_OBJECT_HANDLE
Definition: pkcs11t.h:292
unsigned int P6UINT32
Definition: p6types.h:46
CK_OBJECT_HANDLE CK_PTR CK_OBJECT_HANDLE_PTR
Definition: pkcs11t.h:294
#define P6DECLAREICOM
Definition: p6defs.h:175
#define P6PURE
Definition: p6defs.h:176
unsigned char P6BOOL
Boolean type.
Definition: p6types.h:112
CK_UTF8CHAR_PTR pPin
Definition: pkcs11p6r.h:99
CK_ULONG CK_MECHANISM_TYPE
Definition: pkcs11t.h:580
Wide Const binary string.
Definition: p6types.h:210
CK_MECHANISM_TYPE CK_PTR CK_MECHANISM_TYPE_PTR
Definition: pkcs11t.h:982
CK_SESSION_INFO CK_PTR CK_SESSION_INFO_PTR
Definition: pkcs11t.h:287
CK_MECHANISM CK_PTR CK_MECHANISM_PTR
Definition: pkcs11t.h:993
P6R::P6ERR(* ADD_OBJECT_TO_SESSION)(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject, P6BSTR *pGUID, P6ACCESS_TYPE requested)
Definition: p6tokenimpl.h:42
unsigned long int CK_ULONG
Definition: pkcs11t.h:44
CK_ULONG CK_FLAGS
Definition: pkcs11t.h:50
CK_TOKEN_INFO CK_PTR CK_TOKEN_INFO_PTR
Definition: pkcs11t.h:245
CK_UTF8CHAR_PTR CK_ULONG ulPinLen
Definition: pkcs11p6r.h:99
void CK_PTR CK_VOID_PTR
Definition: pkcs11t.h:62
The base interface all [p6]COM components must derive from and implement.
Definition: p6comdef.h:97
CK_ULONG CK_SLOT_ID
Definition: pkcs11t.h:102
Binary string.
Definition: p6types.h:164
CK_SLOT_ID CK_PTR CK_SLOT_ID_PTR
Definition: pkcs11t.h:104
P6UINT32 P6ERR
COM err return type see P6ERR.h.
Definition: p6types.h:120
P6ACCESS_TYPE
ADD_OBJECT_TO_SESSION callback.
Definition: p6tokenimpl.h:36
CK_NOTIFICATION CK_VOID_PTR pApplication
Definition: pkcs11t.h:1174
#define P6DECLCOMMETHOD(method)
Definition: p6defs.h:173
CK_ULONG CK_SESSION_HANDLE
Definition: pkcs11t.h:250
#define P6THIS_
Definition: p6defs.h:177
P6COM definitions and interfaces.
CK_BYTE CK_PTR CK_BYTE_PTR
Definition: pkcs11t.h:58
CK_ULONG CK_PTR CK_ULONG_PTR
Definition: pkcs11t.h:61
CK_ULONG CK_USER_TYPE
Definition: pkcs11t.h:256
CK_ULONG CK_RV
Definition: pkcs11t.h:1038
CK_ATTRIBUTE CK_PTR CK_ATTRIBUTE_PTR
Definition: pkcs11t.h:567
#define P6DECLAREIF_(iface, baseif)
Definition: p6defs.h:172
CK_UTF8CHAR CK_PTR CK_UTF8CHAR_PTR
Definition: pkcs11t.h:60