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