andre@0: /* This Source Code Form is subject to the terms of the Mozilla Public andre@0: * License, v. 2.0. If a copy of the MPL was not distributed with this andre@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ andre@0: andre@0: #ifndef DEVM_H andre@0: #define DEVM_H andre@0: andre@0: #ifndef BASE_H andre@0: #include "base.h" andre@0: #endif /* BASE_H */ andre@0: andre@0: #ifndef DEV_H andre@0: #include "dev.h" andre@0: #endif /* DEV_H */ andre@0: andre@0: #ifndef DEVTM_H andre@0: #include "devtm.h" andre@0: #endif /* DEVTM_H */ andre@0: andre@0: PR_BEGIN_EXTERN_C andre@0: andre@0: /* Shortcut to cryptoki API functions. */ andre@0: #define CKAPI(epv) \ andre@0: ((CK_FUNCTION_LIST_PTR)(epv)) andre@0: andre@0: NSS_EXTERN void andre@0: nssDevice_AddRef andre@0: ( andre@0: struct nssDeviceBaseStr *device andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssDevice_Destroy andre@0: ( andre@0: struct nssDeviceBaseStr *device andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssModule_IsThreadSafe andre@0: ( andre@0: NSSModule *module andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssModule_IsInternal andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssModule_IsModuleDBOnly andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN void * andre@0: nssModule_GetCryptokiEPV andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN NSSSlot * andre@0: nssSlot_Create andre@0: ( andre@0: CK_SLOT_ID slotId, andre@0: NSSModule *parent andre@0: ); andre@0: andre@0: NSS_EXTERN void * andre@0: nssSlot_GetCryptokiEPV andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nssToken_Create andre@0: ( andre@0: CK_SLOT_ID slotID, andre@0: NSSSlot *peer andre@0: ); andre@0: andre@0: NSS_EXTERN void * andre@0: nssToken_GetCryptokiEPV andre@0: ( andre@0: NSSToken *token andre@0: ); andre@0: andre@0: NSS_EXTERN nssSession * andre@0: nssToken_GetDefaultSession andre@0: ( andre@0: NSSToken *token andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssToken_IsLoginRequired andre@0: ( andre@0: NSSToken *token andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssToken_Remove andre@0: ( andre@0: NSSToken *token andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssCryptokiObject_Create andre@0: ( andre@0: NSSToken *t, andre@0: nssSession *session, andre@0: CK_OBJECT_HANDLE h andre@0: ); andre@0: andre@0: NSS_EXTERN nssTokenObjectCache * andre@0: nssTokenObjectCache_Create andre@0: ( andre@0: NSSToken *token, andre@0: PRBool cacheCerts, andre@0: PRBool cacheTrust, andre@0: PRBool cacheCRLs andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssTokenObjectCache_Destroy andre@0: ( andre@0: nssTokenObjectCache *cache andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssTokenObjectCache_Clear andre@0: ( andre@0: nssTokenObjectCache *cache andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssTokenObjectCache_HaveObjectClass andre@0: ( andre@0: nssTokenObjectCache *cache, andre@0: CK_OBJECT_CLASS objclass andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssTokenObjectCache_FindObjectsByTemplate andre@0: ( andre@0: nssTokenObjectCache *cache, andre@0: CK_OBJECT_CLASS objclass, andre@0: CK_ATTRIBUTE_PTR otemplate, andre@0: CK_ULONG otlen, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssTokenObjectCache_GetObjectAttributes andre@0: ( andre@0: nssTokenObjectCache *cache, andre@0: NSSArena *arenaOpt, andre@0: nssCryptokiObject *object, andre@0: CK_OBJECT_CLASS objclass, andre@0: CK_ATTRIBUTE_PTR atemplate, andre@0: CK_ULONG atlen andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssTokenObjectCache_ImportObject andre@0: ( andre@0: nssTokenObjectCache *cache, andre@0: nssCryptokiObject *object, andre@0: CK_OBJECT_CLASS objclass, andre@0: CK_ATTRIBUTE_PTR ot, andre@0: CK_ULONG otlen andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssTokenObjectCache_RemoveObject andre@0: ( andre@0: nssTokenObjectCache *cache, andre@0: nssCryptokiObject *object andre@0: ); andre@0: andre@0: /* XXX allows peek back into token */ andre@0: NSS_EXTERN PRStatus andre@0: nssToken_GetCachedObjectAttributes andre@0: ( andre@0: NSSToken *token, andre@0: NSSArena *arenaOpt, andre@0: nssCryptokiObject *object, andre@0: CK_OBJECT_CLASS objclass, andre@0: CK_ATTRIBUTE_PTR atemplate, andre@0: CK_ULONG atlen andre@0: ); andre@0: andre@0: /* PKCS#11 stores strings in a fixed-length buffer padded with spaces. This andre@0: * function gets the length of the actual string. andre@0: */ andre@0: NSS_EXTERN PRUint32 andre@0: nssPKCS11String_Length andre@0: ( andre@0: CK_CHAR *pkcs11str, andre@0: PRUint32 bufLen andre@0: ); andre@0: andre@0: PR_END_EXTERN_C andre@0: andre@0: #endif /* DEV_H */