/* * nssCKFWSlot_Destroy * */ NSS_IMPLEMENT CK_RV nssCKFWSlot_Destroy( NSSCKFWSlot *fwSlot) { CK_RV error = CKR_OK; #ifdef NSSDEBUG error = nssCKFWSlot_verifyPointer(fwSlot); if (CKR_OK != error) { return error; } #endif /* NSSDEBUG */ if (fwSlot->fwToken) { nssCKFWToken_Destroy(fwSlot->fwToken); } (void)nssCKFWMutex_Destroy(fwSlot->mutex); if (fwSlot->mdSlot->Destroy) { fwSlot->mdSlot->Destroy(fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance); } #ifdef DEBUG error = slot_remove_pointer(fwSlot); #endif /* DEBUG */ (void)nss_ZFreeIf(fwSlot); return error; }
NSS_IMPLEMENT NSSCKMDInstance * NSSCKFWSlot_GetMDInstance( NSSCKFWSlot *fwSlot) { #ifdef DEBUG if (CKR_OK != nssCKFWSlot_verifyPointer(fwSlot)) { return (NSSCKMDInstance *)NULL; } #endif /* DEBUG */ return nssCKFWSlot_GetMDInstance(fwSlot); }
/* * nssCKFWSlot_GetSlotID * */ NSS_IMPLEMENT CK_SLOT_ID nssCKFWSlot_GetSlotID( NSSCKFWSlot *fwSlot) { #ifdef NSSDEBUG if (CKR_OK != nssCKFWSlot_verifyPointer(fwSlot)) { return (CK_SLOT_ID)0; } #endif /* NSSDEBUG */ return fwSlot->slotID; }
NSS_IMPLEMENT NSSCKFWInstance * nssCKFWSlot_GetFWInstance( NSSCKFWSlot *fwSlot) { #ifdef NSSDEBUG if (CKR_OK != nssCKFWSlot_verifyPointer(fwSlot)) { return (NSSCKFWInstance *)NULL; } #endif /* NSSDEBUG */ return fwSlot->fwInstance; }
/* * nssCKFWSlot_GetMDSlot * */ NSS_IMPLEMENT NSSCKMDSlot * nssCKFWSlot_GetMDSlot( NSSCKFWSlot *fwSlot) { #ifdef NSSDEBUG if (CKR_OK != nssCKFWSlot_verifyPointer(fwSlot)) { return (NSSCKMDSlot *)NULL; } #endif /* NSSDEBUG */ return fwSlot->mdSlot; }
/* * nssCKFWSlot_GetToken * */ NSS_IMPLEMENT NSSCKFWToken * nssCKFWSlot_GetToken ( NSSCKFWSlot *fwSlot, CK_RV *pError ) { NSSCKMDToken *mdToken; NSSCKFWToken *fwToken; #ifdef NSSDEBUG if (!pError) { return (NSSCKFWToken *)NULL; } *pError = nssCKFWSlot_verifyPointer(fwSlot); if( CKR_OK != *pError ) { return (NSSCKFWToken *)NULL; } #endif /* NSSDEBUG */ *pError = nssCKFWMutex_Lock(fwSlot->mutex); if( CKR_OK != *pError ) { return (NSSCKFWToken *)NULL; } if (!fwSlot->fwToken) { if (!fwSlot->mdSlot->GetToken) { *pError = CKR_GENERAL_ERROR; fwToken = (NSSCKFWToken *)NULL; goto done; } mdToken = fwSlot->mdSlot->GetToken(fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance, pError); if (!mdToken) { if( CKR_OK == *pError ) { *pError = CKR_GENERAL_ERROR; } return (NSSCKFWToken *)NULL; } fwToken = nssCKFWToken_Create(fwSlot, mdToken, pError); fwSlot->fwToken = fwToken; } else { fwToken = fwSlot->fwToken; } done: (void)nssCKFWMutex_Unlock(fwSlot->mutex); return fwToken; }
/* * nssCKFWSlot_GetHardwareSlot * */ NSS_IMPLEMENT CK_BBOOL nssCKFWSlot_GetHardwareSlot( NSSCKFWSlot *fwSlot) { #ifdef NSSDEBUG if (CKR_OK != nssCKFWSlot_verifyPointer(fwSlot)) { return CK_FALSE; } #endif /* NSSDEBUG */ if (!fwSlot->mdSlot->GetHardwareSlot) { return CK_FALSE; } return fwSlot->mdSlot->GetHardwareSlot(fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance); }
/* * nssCKFWSlot_GetManufacturerID * */ NSS_IMPLEMENT CK_RV nssCKFWSlot_GetManufacturerID ( NSSCKFWSlot *fwSlot, CK_CHAR manufacturerID[32] ) { CK_RV error = CKR_OK; #ifdef NSSDEBUG if( (CK_CHAR_PTR)NULL == manufacturerID ) { return CKR_ARGUMENTS_BAD; } error = nssCKFWSlot_verifyPointer(fwSlot); if( CKR_OK != error ) { return error; } #endif /* NSSDEBUG */ error = nssCKFWMutex_Lock(fwSlot->mutex); if( CKR_OK != error ) { return error; } if (!fwSlot->manufacturerID) { if (fwSlot->mdSlot->GetManufacturerID) { fwSlot->manufacturerID = fwSlot->mdSlot->GetManufacturerID( fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance, &error); if ((!fwSlot->manufacturerID) && (CKR_OK != error)) { goto done; } } else { fwSlot->manufacturerID = (NSSUTF8 *) ""; } } (void)nssUTF8_CopyIntoFixedBuffer(fwSlot->manufacturerID, (char *)manufacturerID, 32, ' '); error = CKR_OK; done: (void)nssCKFWMutex_Unlock(fwSlot->mutex); return error; }
/* * nssCKFWSlot_GetSlotDescription * */ NSS_IMPLEMENT CK_RV nssCKFWSlot_GetSlotDescription ( NSSCKFWSlot *fwSlot, CK_CHAR slotDescription[64] ) { CK_RV error = CKR_OK; #ifdef NSSDEBUG if( (CK_CHAR_PTR)NULL == slotDescription ) { return CKR_ARGUMENTS_BAD; } error = nssCKFWSlot_verifyPointer(fwSlot); if( CKR_OK != error ) { return error; } #endif /* NSSDEBUG */ error = nssCKFWMutex_Lock(fwSlot->mutex); if( CKR_OK != error ) { return error; } if (!fwSlot->slotDescription) { if (fwSlot->mdSlot->GetSlotDescription) { fwSlot->slotDescription = fwSlot->mdSlot->GetSlotDescription( fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance, &error); if ((!fwSlot->slotDescription) && (CKR_OK != error)) { goto done; } } else { fwSlot->slotDescription = (NSSUTF8 *) ""; } } (void)nssUTF8_CopyIntoFixedBuffer(fwSlot->slotDescription, (char *)slotDescription, 64, ' '); error = CKR_OK; done: (void)nssCKFWMutex_Unlock(fwSlot->mutex); return error; }
/* * nssCKFWSlot_ClearToken * */ NSS_IMPLEMENT void nssCKFWSlot_ClearToken( NSSCKFWSlot *fwSlot) { #ifdef NSSDEBUG if (CKR_OK != nssCKFWSlot_verifyPointer(fwSlot)) { return; } #endif /* NSSDEBUG */ if (CKR_OK != nssCKFWMutex_Lock(fwSlot->mutex)) { /* Now what? */ return; } fwSlot->fwToken = (NSSCKFWToken *)NULL; (void)nssCKFWMutex_Unlock(fwSlot->mutex); return; }
/* * nssCKFWSlot_GetRemovableDevice * */ NSS_IMPLEMENT CK_BBOOL nssCKFWSlot_GetRemovableDevice ( NSSCKFWSlot *fwSlot ) { #ifdef NSSDEBUG if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) { return CK_FALSE; } #endif /* NSSDEBUG */ if( (void *)NULL == (void *)fwSlot->mdSlot->GetRemovableDevice ) { return CK_FALSE; } return fwSlot->mdSlot->GetRemovableDevice(fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance); }
/* * nssCKFWSlot_GetFirmwareVersion * */ NSS_IMPLEMENT CK_VERSION nssCKFWSlot_GetFirmwareVersion ( NSSCKFWSlot *fwSlot ) { CK_VERSION rv; #ifdef NSSDEBUG if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) { rv.major = rv.minor = 0; return rv; } #endif /* NSSDEBUG */ if( CKR_OK != nssCKFWMutex_Lock(fwSlot->mutex) ) { rv.major = rv.minor = 0; return rv; } if( (0 != fwSlot->firmwareVersion.major) || (0 != fwSlot->firmwareVersion.minor) ) { rv = fwSlot->firmwareVersion; goto done; } if (fwSlot->mdSlot->GetFirmwareVersion) { fwSlot->firmwareVersion = fwSlot->mdSlot->GetFirmwareVersion( fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance); } else { fwSlot->firmwareVersion.major = 0; fwSlot->firmwareVersion.minor = 1; } rv = fwSlot->firmwareVersion; done: (void)nssCKFWMutex_Unlock(fwSlot->mutex); return rv; }