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