slot.c

来自「支持SSL v2/v3, TLS, PKCS #5, PKCS #7, PKCS」· C语言 代码 · 共 754 行 · 第 1/2 页

C
754
字号
    return error;  }  if( (NSSUTF8 *)NULL == fwSlot->slotDescription ) {    if( (void *)NULL != (void *)fwSlot->mdSlot->GetSlotDescription ) {      fwSlot->slotDescription = fwSlot->mdSlot->GetSlotDescription(        fwSlot->mdSlot, fwSlot, fwSlot->mdInstance,         fwSlot->fwInstance, &error);      if( ((NSSUTF8 *)NULL == 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_GetManufacturerID * */NSS_IMPLEMENT CK_RVnssCKFWSlot_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( (NSSUTF8 *)NULL == fwSlot->manufacturerID ) {    if( (void *)NULL != (void *)fwSlot->mdSlot->GetManufacturerID ) {      fwSlot->manufacturerID = fwSlot->mdSlot->GetManufacturerID(        fwSlot->mdSlot, fwSlot, fwSlot->mdInstance,         fwSlot->fwInstance, &error);      if( ((NSSUTF8 *)NULL == 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_GetTokenPresent * */NSS_IMPLEMENT CK_BBOOLnssCKFWSlot_GetTokenPresent(  NSSCKFWSlot *fwSlot){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwSlot->mdSlot->GetTokenPresent ) {    return CK_TRUE;  }  return fwSlot->mdSlot->GetTokenPresent(fwSlot->mdSlot, fwSlot,    fwSlot->mdInstance, fwSlot->fwInstance);}/* * nssCKFWSlot_GetRemovableDevice * */NSS_IMPLEMENT CK_BBOOLnssCKFWSlot_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_GetHardwareSlot * */NSS_IMPLEMENT CK_BBOOLnssCKFWSlot_GetHardwareSlot(  NSSCKFWSlot *fwSlot){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwSlot->mdSlot->GetHardwareSlot ) {    return CK_FALSE;  }  return fwSlot->mdSlot->GetHardwareSlot(fwSlot->mdSlot, fwSlot,    fwSlot->mdInstance, fwSlot->fwInstance);}/* * nssCKFWSlot_GetHardwareVersion * */NSS_IMPLEMENT CK_VERSIONnssCKFWSlot_GetHardwareVersion(  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->hardwareVersion.major) ||      (0 != fwSlot->hardwareVersion.minor) ) {    rv = fwSlot->hardwareVersion;    goto done;  }  if( (void *)NULL != (void *)fwSlot->mdSlot->GetHardwareVersion ) {    fwSlot->hardwareVersion = fwSlot->mdSlot->GetHardwareVersion(      fwSlot->mdSlot, fwSlot, fwSlot->mdInstance, fwSlot->fwInstance);  } else {    fwSlot->hardwareVersion.major = 0;    fwSlot->hardwareVersion.minor = 1;  }  rv = fwSlot->hardwareVersion; done:  (void)nssCKFWMutex_Unlock(fwSlot->mutex);  return rv;}/* * nssCKFWSlot_GetFirmwareVersion * */NSS_IMPLEMENT CK_VERSIONnssCKFWSlot_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( (void *)NULL != (void *)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;}/* * nssCKFWSlot_GetToken *  */NSS_IMPLEMENT NSSCKFWToken *nssCKFWSlot_GetToken(  NSSCKFWSlot *fwSlot,  CK_RV *pError){  NSSCKMDToken *mdToken;  NSSCKFWToken *fwToken;#ifdef NSSDEBUG  if( (CK_RV *)NULL == 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( (NSSCKFWToken *)NULL == fwSlot->fwToken ) {    if( (void *)NULL == (void *)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( (NSSCKMDToken *)NULL == 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_ClearToken * */NSS_IMPLEMENT voidnssCKFWSlot_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_GetMDSlot * */NSS_IMPLEMENT NSSCKMDSlot *NSSCKFWSlot_GetMDSlot(  NSSCKFWSlot *fwSlot){#ifdef DEBUG  if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) {    return (NSSCKMDSlot *)NULL;  }#endif /* DEBUG */  return nssCKFWSlot_GetMDSlot(fwSlot);}/* * NSSCKFWSlot_GetFWInstance * */NSS_IMPLEMENT NSSCKFWInstance *NSSCKFWSlot_GetFWInstance(  NSSCKFWSlot *fwSlot){#ifdef DEBUG  if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) {    return (NSSCKFWInstance *)NULL;  }#endif /* DEBUG */  return nssCKFWSlot_GetFWInstance(fwSlot);}/* * NSSCKFWSlot_GetMDInstance * */NSS_IMPLEMENT NSSCKMDInstance *NSSCKFWSlot_GetMDInstance(  NSSCKFWSlot *fwSlot){#ifdef DEBUG  if( CKR_OK != nssCKFWSlot_verifyPointer(fwSlot) ) {    return (NSSCKMDInstance *)NULL;  }#endif /* DEBUG */  return nssCKFWSlot_GetMDInstance(fwSlot);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?