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: #include "ckmk.h" michael@0: michael@0: /* michael@0: * nssmkey/minstance.c michael@0: * michael@0: * This file implements the NSSCKMDInstance object for the michael@0: * "nssmkey" cryptoki module. michael@0: */ michael@0: michael@0: /* michael@0: * NSSCKMDInstance methods michael@0: */ michael@0: michael@0: static CK_ULONG michael@0: ckmk_mdInstance_GetNSlots michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance, michael@0: CK_RV *pError michael@0: ) michael@0: { michael@0: return (CK_ULONG)1; michael@0: } michael@0: michael@0: static CK_VERSION michael@0: ckmk_mdInstance_GetCryptokiVersion michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance michael@0: ) michael@0: { michael@0: return nss_ckmk_CryptokiVersion; michael@0: } michael@0: michael@0: static NSSUTF8 * michael@0: ckmk_mdInstance_GetManufacturerID michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance, michael@0: CK_RV *pError michael@0: ) michael@0: { michael@0: return (NSSUTF8 *)nss_ckmk_ManufacturerID; michael@0: } michael@0: michael@0: static NSSUTF8 * michael@0: ckmk_mdInstance_GetLibraryDescription michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance, michael@0: CK_RV *pError michael@0: ) michael@0: { michael@0: return (NSSUTF8 *)nss_ckmk_LibraryDescription; michael@0: } michael@0: michael@0: static CK_VERSION michael@0: ckmk_mdInstance_GetLibraryVersion michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance michael@0: ) michael@0: { michael@0: return nss_ckmk_LibraryVersion; michael@0: } michael@0: michael@0: static CK_RV michael@0: ckmk_mdInstance_GetSlots michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance, michael@0: NSSCKMDSlot *slots[] michael@0: ) michael@0: { michael@0: slots[0] = (NSSCKMDSlot *)&nss_ckmk_mdSlot; michael@0: return CKR_OK; michael@0: } michael@0: michael@0: static CK_BBOOL michael@0: ckmk_mdInstance_ModuleHandlesSessionObjects michael@0: ( michael@0: NSSCKMDInstance *mdInstance, michael@0: NSSCKFWInstance *fwInstance michael@0: ) michael@0: { michael@0: /* we don't want to allow any session object creation, at least michael@0: * until we can investigate whether or not we can use those objects michael@0: */ michael@0: return CK_TRUE; michael@0: } michael@0: michael@0: NSS_IMPLEMENT_DATA const NSSCKMDInstance michael@0: nss_ckmk_mdInstance = { michael@0: (void *)NULL, /* etc */ michael@0: NULL, /* Initialize */ michael@0: NULL, /* Finalize */ michael@0: ckmk_mdInstance_GetNSlots, michael@0: ckmk_mdInstance_GetCryptokiVersion, michael@0: ckmk_mdInstance_GetManufacturerID, michael@0: ckmk_mdInstance_GetLibraryDescription, michael@0: ckmk_mdInstance_GetLibraryVersion, michael@0: ckmk_mdInstance_ModuleHandlesSessionObjects, michael@0: /*NULL, /* HandleSessionObjects */ michael@0: ckmk_mdInstance_GetSlots, michael@0: NULL, /* WaitForSlotEvent */ michael@0: (void *)NULL /* null terminator */ michael@0: };