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 DEV_H andre@0: #define DEV_H andre@0: andre@0: /* andre@0: * dev.h andre@0: * andre@0: * Low-level methods for interaction with cryptoki devices andre@0: */ andre@0: andre@0: #ifndef NSSDEV_H andre@0: #include "nssdev.h" andre@0: #endif /* NSSDEV_H */ andre@0: andre@0: #ifndef DEVT_H andre@0: #include "devt.h" andre@0: #endif /* DEVT_H */ andre@0: andre@0: PR_BEGIN_EXTERN_C andre@0: andre@0: /* the global module list andre@0: * andre@0: * These functions are for managing the global set of modules. Trust Domains, andre@0: * etc., will draw from this set. These functions are completely internal andre@0: * and only invoked when there are changes to the global module state andre@0: * (load or unload). andre@0: * andre@0: * nss_InitializeGlobalModuleList andre@0: * nss_DestroyGlobalModuleList andre@0: * nss_GetLoadedModules andre@0: * andre@0: * nssGlobalModuleList_Add andre@0: * nssGlobalModuleList_Remove andre@0: * nssGlobalModuleList_FindModuleByName andre@0: * nssGlobalModuleList_FindSlotByName andre@0: * nssGlobalModuleList_FindTokenByName andre@0: */ andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nss_InitializeGlobalModuleList andre@0: ( andre@0: void andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nss_DestroyGlobalModuleList andre@0: ( andre@0: void andre@0: ); andre@0: andre@0: NSS_EXTERN NSSModule ** andre@0: nss_GetLoadedModules andre@0: ( andre@0: void andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssGlobalModuleList_Add andre@0: ( andre@0: NSSModule *module andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssGlobalModuleList_Remove andre@0: ( andre@0: NSSModule *module andre@0: ); andre@0: andre@0: NSS_EXTERN NSSModule * andre@0: nssGlobalModuleList_FindModuleByName andre@0: ( andre@0: NSSUTF8 *moduleName andre@0: ); andre@0: andre@0: NSS_EXTERN NSSSlot * andre@0: nssGlobalModuleList_FindSlotByName andre@0: ( andre@0: NSSUTF8 *slotName andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nssGlobalModuleList_FindTokenByName andre@0: ( andre@0: NSSUTF8 *tokenName andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nss_GetDefaultCryptoToken andre@0: ( andre@0: void andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nss_GetDefaultDatabaseToken andre@0: ( andre@0: void andre@0: ); andre@0: andre@0: /* andre@0: * |-----------|<---> NSSSlot <--> NSSToken andre@0: * | NSSModule |<---> NSSSlot <--> NSSToken andre@0: * |-----------|<---> NSSSlot <--> NSSToken andre@0: */ andre@0: andre@0: /* NSSModule andre@0: * andre@0: * nssModule_Create andre@0: * nssModule_CreateFromSpec andre@0: * nssModule_AddRef andre@0: * nssModule_GetName andre@0: * nssModule_GetSlots andre@0: * nssModule_FindSlotByName andre@0: * nssModule_FindTokenByName andre@0: * nssModule_GetCertOrder andre@0: */ andre@0: andre@0: NSS_EXTERN NSSModule * andre@0: nssModule_Create andre@0: ( andre@0: NSSUTF8 *moduleOpt, andre@0: NSSUTF8 *uriOpt, andre@0: NSSUTF8 *opaqueOpt, andre@0: void *reserved andre@0: ); andre@0: andre@0: /* This is to use the new loading mechanism. */ andre@0: NSS_EXTERN NSSModule * andre@0: nssModule_CreateFromSpec andre@0: ( andre@0: NSSUTF8 *moduleSpec, andre@0: NSSModule *parent, andre@0: PRBool loadSubModules andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssModule_Destroy andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN NSSModule * andre@0: nssModule_AddRef andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN NSSUTF8 * andre@0: nssModule_GetName andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN NSSSlot ** andre@0: nssModule_GetSlots andre@0: ( andre@0: NSSModule *mod andre@0: ); andre@0: andre@0: NSS_EXTERN NSSSlot * andre@0: nssModule_FindSlotByName andre@0: ( andre@0: NSSModule *mod, andre@0: NSSUTF8 *slotName andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nssModule_FindTokenByName andre@0: ( andre@0: NSSModule *mod, andre@0: NSSUTF8 *tokenName andre@0: ); andre@0: andre@0: NSS_EXTERN PRInt32 andre@0: nssModule_GetCertOrder andre@0: ( andre@0: NSSModule *module andre@0: ); andre@0: andre@0: /* NSSSlot andre@0: * andre@0: * nssSlot_Destroy andre@0: * nssSlot_AddRef andre@0: * nssSlot_GetName andre@0: * nssSlot_GetTokenName andre@0: * nssSlot_IsTokenPresent andre@0: * nssSlot_IsPermanent andre@0: * nssSlot_IsFriendly andre@0: * nssSlot_IsHardware andre@0: * nssSlot_Refresh andre@0: * nssSlot_GetModule andre@0: * nssSlot_GetToken andre@0: * nssSlot_Login andre@0: * nssSlot_Logout andre@0: * nssSlot_SetPassword andre@0: * nssSlot_CreateSession andre@0: */ andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssSlot_Destroy andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN NSSSlot * andre@0: nssSlot_AddRef andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssSlot_ResetDelay andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN NSSUTF8 * andre@0: nssSlot_GetName andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN NSSUTF8 * andre@0: nssSlot_GetTokenName andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN NSSModule * andre@0: nssSlot_GetModule andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nssSlot_GetToken andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssSlot_IsTokenPresent andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssSlot_IsPermanent andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssSlot_IsFriendly andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssSlot_IsHardware andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssSlot_IsLoggedIn andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssSlot_Refresh andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssSlot_Login andre@0: ( andre@0: NSSSlot *slot, andre@0: NSSCallback *pwcb andre@0: ); andre@0: extern const NSSError NSS_ERROR_INVALID_PASSWORD; andre@0: extern const NSSError NSS_ERROR_USER_CANCELED; andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssSlot_Logout andre@0: ( andre@0: NSSSlot *slot, andre@0: nssSession *sessionOpt andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssSlot_EnterMonitor andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssSlot_ExitMonitor andre@0: ( andre@0: NSSSlot *slot andre@0: ); andre@0: andre@0: #define NSSSLOT_ASK_PASSWORD_FIRST_TIME -1 andre@0: #define NSSSLOT_ASK_PASSWORD_EVERY_TIME 0 andre@0: NSS_EXTERN void andre@0: nssSlot_SetPasswordDefaults andre@0: ( andre@0: NSSSlot *slot, andre@0: PRInt32 askPasswordTimeout andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssSlot_SetPassword andre@0: ( andre@0: NSSSlot *slot, andre@0: NSSUTF8 *oldPasswordOpt, andre@0: NSSUTF8 *newPassword andre@0: ); andre@0: extern const NSSError NSS_ERROR_INVALID_PASSWORD; andre@0: extern const NSSError NSS_ERROR_USER_CANCELED; andre@0: andre@0: /* andre@0: * nssSlot_IsLoggedIn andre@0: */ andre@0: andre@0: NSS_EXTERN nssSession * andre@0: nssSlot_CreateSession andre@0: ( andre@0: NSSSlot *slot, andre@0: NSSArena *arenaOpt, andre@0: PRBool readWrite /* so far, this is the only flag used */ andre@0: ); andre@0: andre@0: /* NSSToken andre@0: * andre@0: * nssToken_Destroy andre@0: * nssToken_AddRef andre@0: * nssToken_GetName andre@0: * nssToken_GetModule andre@0: * nssToken_GetSlot andre@0: * nssToken_NeedsPINInitialization andre@0: * nssToken_ImportCertificate andre@0: * nssToken_ImportTrust andre@0: * nssToken_ImportCRL andre@0: * nssToken_GenerateKeyPair andre@0: * nssToken_GenerateSymmetricKey andre@0: * nssToken_DeleteStoredObject andre@0: * nssToken_FindObjects andre@0: * nssToken_FindCertificatesBySubject andre@0: * nssToken_FindCertificatesByNickname andre@0: * nssToken_FindCertificatesByEmail andre@0: * nssToken_FindCertificateByIssuerAndSerialNumber andre@0: * nssToken_FindCertificateByEncodedCertificate andre@0: * nssToken_FindTrustForCertificate andre@0: * nssToken_FindCRLsBySubject andre@0: * nssToken_FindPrivateKeys andre@0: * nssToken_FindPrivateKeyByID andre@0: * nssToken_Digest andre@0: * nssToken_BeginDigest andre@0: * nssToken_ContinueDigest andre@0: * nssToken_FinishDigest andre@0: */ andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssToken_Destroy andre@0: ( andre@0: NSSToken *tok andre@0: ); andre@0: andre@0: NSS_EXTERN NSSToken * andre@0: nssToken_AddRef andre@0: ( andre@0: NSSToken *tok andre@0: ); andre@0: andre@0: NSS_EXTERN NSSUTF8 * andre@0: nssToken_GetName andre@0: ( andre@0: NSSToken *tok andre@0: ); andre@0: andre@0: NSS_EXTERN NSSModule * andre@0: nssToken_GetModule andre@0: ( andre@0: NSSToken *token andre@0: ); andre@0: andre@0: NSS_EXTERN NSSSlot * andre@0: nssToken_GetSlot andre@0: ( andre@0: NSSToken *tok andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssToken_NeedsPINInitialization andre@0: ( andre@0: NSSToken *token andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_ImportCertificate andre@0: ( andre@0: NSSToken *tok, andre@0: nssSession *sessionOpt, andre@0: NSSCertificateType certType, andre@0: NSSItem *id, andre@0: const NSSUTF8 *nickname, andre@0: NSSDER *encoding, andre@0: NSSDER *issuer, andre@0: NSSDER *subject, andre@0: NSSDER *serial, andre@0: NSSASCII7 *emailAddr, andre@0: PRBool asTokenObject andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_ImportTrust andre@0: ( andre@0: NSSToken *tok, andre@0: nssSession *sessionOpt, andre@0: NSSDER *certEncoding, andre@0: NSSDER *certIssuer, andre@0: NSSDER *certSerial, andre@0: nssTrustLevel serverAuth, andre@0: nssTrustLevel clientAuth, andre@0: nssTrustLevel codeSigning, andre@0: nssTrustLevel emailProtection, andre@0: PRBool stepUpApproved, andre@0: PRBool asTokenObject andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_ImportCRL andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSDER *subject, andre@0: NSSDER *encoding, andre@0: PRBool isKRL, andre@0: NSSUTF8 *url, andre@0: PRBool asTokenObject andre@0: ); andre@0: andre@0: /* Permanently remove an object from the token. */ andre@0: NSS_EXTERN PRStatus andre@0: nssToken_DeleteStoredObject andre@0: ( andre@0: nssCryptokiObject *instance andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindObjects andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: CK_OBJECT_CLASS objclass, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindCertificatesBySubject andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSDER *subject, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindCertificatesByNickname andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: const NSSUTF8 *name, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindCertificatesByEmail andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSASCII7 *email, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindCertificatesByID andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSItem *id, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_FindCertificateByIssuerAndSerialNumber andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSDER *issuer, andre@0: NSSDER *serial, andre@0: nssTokenSearchType searchType, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_FindCertificateByEncodedCertificate andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSBER *encodedCertificate, andre@0: nssTokenSearchType searchType, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_FindTrustForCertificate andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSDER *certEncoding, andre@0: NSSDER *certIssuer, andre@0: NSSDER *certSerial, andre@0: nssTokenSearchType searchType andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindCRLsBySubject andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSDER *subject, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject ** andre@0: nssToken_FindPrivateKeys andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: nssTokenSearchType searchType, andre@0: PRUint32 maximumOpt, andre@0: PRStatus *statusOpt andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_FindPrivateKeyByID andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSItem *keyID andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssToken_FindPublicKeyByID andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: NSSItem *keyID andre@0: ); andre@0: andre@0: NSS_EXTERN NSSItem * andre@0: nssToken_Digest andre@0: ( andre@0: NSSToken *tok, andre@0: nssSession *sessionOpt, andre@0: NSSAlgorithmAndParameters *ap, andre@0: NSSItem *data, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssToken_BeginDigest andre@0: ( andre@0: NSSToken *tok, andre@0: nssSession *sessionOpt, andre@0: NSSAlgorithmAndParameters *ap andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssToken_ContinueDigest andre@0: ( andre@0: NSSToken *tok, andre@0: nssSession *sessionOpt, andre@0: NSSItem *item andre@0: ); andre@0: andre@0: NSS_EXTERN NSSItem * andre@0: nssToken_FinishDigest andre@0: ( andre@0: NSSToken *tok, andre@0: nssSession *sessionOpt, andre@0: NSSItem *rvOpt, andre@0: NSSArena *arenaOpt andre@0: ); andre@0: andre@0: /* nssSession andre@0: * andre@0: * nssSession_Destroy andre@0: * nssSession_EnterMonitor andre@0: * nssSession_ExitMonitor andre@0: * nssSession_IsReadWrite andre@0: */ andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssSession_Destroy andre@0: ( andre@0: nssSession *s andre@0: ); andre@0: andre@0: /* would like to inline */ andre@0: NSS_EXTERN PRStatus andre@0: nssSession_EnterMonitor andre@0: ( andre@0: nssSession *s andre@0: ); andre@0: andre@0: /* would like to inline */ andre@0: NSS_EXTERN PRStatus andre@0: nssSession_ExitMonitor andre@0: ( andre@0: nssSession *s andre@0: ); andre@0: andre@0: /* would like to inline */ andre@0: NSS_EXTERN PRBool andre@0: nssSession_IsReadWrite andre@0: ( andre@0: nssSession *s andre@0: ); andre@0: andre@0: /* nssCryptokiObject andre@0: * andre@0: * An object living on a cryptoki token. andre@0: * Not really proper to mix up the object types just because andre@0: * nssCryptokiObject itself is generic, but doing so anyway. andre@0: * andre@0: * nssCryptokiObject_Destroy andre@0: * nssCryptokiObject_Equal andre@0: * nssCryptokiObject_Clone andre@0: * nssCryptokiCertificate_GetAttributes andre@0: * nssCryptokiPrivateKey_GetAttributes andre@0: * nssCryptokiPublicKey_GetAttributes andre@0: * nssCryptokiTrust_GetAttributes andre@0: * nssCryptokiCRL_GetAttributes andre@0: */ andre@0: andre@0: NSS_EXTERN void andre@0: nssCryptokiObject_Destroy andre@0: ( andre@0: nssCryptokiObject *object andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssCryptokiObject_Equal andre@0: ( andre@0: nssCryptokiObject *object1, andre@0: nssCryptokiObject *object2 andre@0: ); andre@0: andre@0: NSS_EXTERN nssCryptokiObject * andre@0: nssCryptokiObject_Clone andre@0: ( andre@0: nssCryptokiObject *object andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssCryptokiCertificate_GetAttributes andre@0: ( andre@0: nssCryptokiObject *object, andre@0: nssSession *sessionOpt, andre@0: NSSArena *arenaOpt, andre@0: NSSCertificateType *certTypeOpt, andre@0: NSSItem *idOpt, andre@0: NSSDER *encodingOpt, andre@0: NSSDER *issuerOpt, andre@0: NSSDER *serialOpt, andre@0: NSSDER *subjectOpt andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssCryptokiTrust_GetAttributes andre@0: ( andre@0: nssCryptokiObject *trustObject, andre@0: nssSession *sessionOpt, andre@0: NSSItem *sha1_hash, andre@0: nssTrustLevel *serverAuth, andre@0: nssTrustLevel *clientAuth, andre@0: nssTrustLevel *codeSigning, andre@0: nssTrustLevel *emailProtection, andre@0: PRBool *stepUpApproved andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssCryptokiCRL_GetAttributes andre@0: ( andre@0: nssCryptokiObject *crlObject, andre@0: nssSession *sessionOpt, andre@0: NSSArena *arenaOpt, andre@0: NSSItem *encodingOpt, andre@0: NSSItem * subjectOpt, andre@0: CK_ULONG * crl_class, andre@0: NSSUTF8 **urlOpt, andre@0: PRBool *isKRLOpt andre@0: ); andre@0: andre@0: /* I'm including this to handle import of certificates in NSS 3.5. This andre@0: * function will set the cert-related attributes of a key, in order to andre@0: * associate it with a cert. Does it stay like this for 4.0? andre@0: */ andre@0: NSS_EXTERN PRStatus andre@0: nssCryptokiPrivateKey_SetCertificate andre@0: ( andre@0: nssCryptokiObject *keyObject, andre@0: nssSession *sessionOpt, andre@0: const NSSUTF8 *nickname, andre@0: NSSItem *id, andre@0: NSSDER *subject andre@0: ); andre@0: andre@0: NSS_EXTERN void andre@0: nssModuleArray_Destroy andre@0: ( andre@0: NSSModule **modules andre@0: ); andre@0: andre@0: /* nssSlotArray andre@0: * andre@0: * nssSlotArray_Destroy andre@0: */ andre@0: andre@0: NSS_EXTERN void andre@0: nssSlotArray_Destroy andre@0: ( andre@0: NSSSlot **slots andre@0: ); andre@0: andre@0: /* nssTokenArray andre@0: * andre@0: * nssTokenArray_Destroy andre@0: */ andre@0: andre@0: NSS_EXTERN void andre@0: nssTokenArray_Destroy andre@0: ( andre@0: NSSToken **tokens andre@0: ); andre@0: andre@0: /* nssCryptokiObjectArray andre@0: * andre@0: * nssCryptokiObjectArray_Destroy andre@0: */ andre@0: NSS_EXTERN void andre@0: nssCryptokiObjectArray_Destroy andre@0: ( andre@0: nssCryptokiObject **object andre@0: ); andre@0: andre@0: /* nssSlotList andre@0: * andre@0: * An ordered list of slots. The order can be anything, it is set in the andre@0: * Add methods. Perhaps it should be CreateInCertOrder, ...? andre@0: * andre@0: * nssSlotList_Create andre@0: * nssSlotList_Destroy andre@0: * nssSlotList_Add andre@0: * nssSlotList_AddModuleSlots andre@0: * nssSlotList_GetSlots andre@0: * nssSlotList_FindSlotByName andre@0: * nssSlotList_FindTokenByName andre@0: * nssSlotList_GetBestSlot andre@0: * nssSlotList_GetBestSlotForAlgorithmAndParameters andre@0: * nssSlotList_GetBestSlotForAlgorithmsAndParameters andre@0: */ andre@0: andre@0: /* nssSlotList_Create andre@0: */ andre@0: NSS_EXTERN nssSlotList * andre@0: nssSlotList_Create andre@0: ( andre@0: NSSArena *arenaOpt andre@0: ); andre@0: andre@0: /* nssSlotList_Destroy andre@0: */ andre@0: NSS_EXTERN void andre@0: nssSlotList_Destroy andre@0: ( andre@0: nssSlotList *slotList andre@0: ); andre@0: andre@0: /* nssSlotList_Add andre@0: * andre@0: * Add the given slot in the given order. andre@0: */ andre@0: NSS_EXTERN PRStatus andre@0: nssSlotList_Add andre@0: ( andre@0: nssSlotList *slotList, andre@0: NSSSlot *slot, andre@0: PRUint32 order andre@0: ); andre@0: andre@0: /* nssSlotList_AddModuleSlots andre@0: * andre@0: * Add all slots in the module, in the given order (the slots will have andre@0: * equal weight). andre@0: */ andre@0: NSS_EXTERN PRStatus andre@0: nssSlotList_AddModuleSlots andre@0: ( andre@0: nssSlotList *slotList, andre@0: NSSModule *module, andre@0: PRUint32 order andre@0: ); andre@0: andre@0: /* nssSlotList_GetSlots andre@0: */ andre@0: NSS_EXTERN NSSSlot ** andre@0: nssSlotList_GetSlots andre@0: ( andre@0: nssSlotList *slotList andre@0: ); andre@0: andre@0: /* nssSlotList_FindSlotByName andre@0: */ andre@0: NSS_EXTERN NSSSlot * andre@0: nssSlotList_FindSlotByName andre@0: ( andre@0: nssSlotList *slotList, andre@0: NSSUTF8 *slotName andre@0: ); andre@0: andre@0: /* nssSlotList_FindTokenByName andre@0: */ andre@0: NSS_EXTERN NSSToken * andre@0: nssSlotList_FindTokenByName andre@0: ( andre@0: nssSlotList *slotList, andre@0: NSSUTF8 *tokenName andre@0: ); andre@0: andre@0: /* nssSlotList_GetBestSlot andre@0: * andre@0: * The best slot is the highest ranking in order, i.e., the first in the andre@0: * list. andre@0: */ andre@0: NSS_EXTERN NSSSlot * andre@0: nssSlotList_GetBestSlot andre@0: ( andre@0: nssSlotList *slotList andre@0: ); andre@0: andre@0: /* nssSlotList_GetBestSlotForAlgorithmAndParameters andre@0: * andre@0: * Highest-ranking slot than can handle algorithm/parameters. andre@0: */ andre@0: NSS_EXTERN NSSSlot * andre@0: nssSlotList_GetBestSlotForAlgorithmAndParameters andre@0: ( andre@0: nssSlotList *slotList, andre@0: NSSAlgorithmAndParameters *ap andre@0: ); andre@0: andre@0: /* nssSlotList_GetBestSlotForAlgorithmsAndParameters andre@0: * andre@0: * Highest-ranking slot than can handle all algorithms/parameters. andre@0: */ andre@0: NSS_EXTERN NSSSlot * andre@0: nssSlotList_GetBestSlotForAlgorithmsAndParameters andre@0: ( andre@0: nssSlotList *slotList, andre@0: NSSAlgorithmAndParameters **ap andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssToken_IsPresent 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 PRStatus andre@0: nssToken_GetTrustOrder andre@0: ( andre@0: NSSToken *tok andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssToken_NotifyCertsNotVisible andre@0: ( andre@0: NSSToken *tok andre@0: ); andre@0: andre@0: NSS_EXTERN PRStatus andre@0: nssToken_TraverseCertificates andre@0: ( andre@0: NSSToken *token, andre@0: nssSession *sessionOpt, andre@0: nssTokenSearchType searchType, andre@0: PRStatus (* callback)(nssCryptokiObject *instance, void *arg), andre@0: void *arg andre@0: ); andre@0: andre@0: NSS_EXTERN PRBool andre@0: nssToken_IsPrivateKeyAvailable andre@0: ( andre@0: NSSToken *token, andre@0: NSSCertificate *c, andre@0: nssCryptokiObject *instance andre@0: ); andre@0: andre@0: PR_END_EXTERN_C andre@0: andre@0: #endif /* DEV_H */