token.c

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

C
1,865
字号
 * nssCKFWToken_GetModel * */NSS_IMPLEMENT CK_RVnssCKFWToken_GetModel(  NSSCKFWToken *fwToken,  CK_CHAR model[16]){  CK_RV error = CKR_OK;#ifdef NSSDEBUG  if( (CK_CHAR_PTR)NULL == model ) {    return CKR_ARGUMENTS_BAD;  }  error = nssCKFWToken_verifyPointer(fwToken);  if( CKR_OK != error ) {    return error;  }#endif /* NSSDEBUG */  error = nssCKFWMutex_Lock(fwToken->mutex);  if( CKR_OK != error ) {    return error;  }  if( (NSSUTF8 *)NULL == fwToken->model ) {    if( (void *)NULL != (void *)fwToken->mdToken->GetModel ) {      fwToken->model = fwToken->mdToken->GetModel(fwToken->mdToken, fwToken,        fwToken->mdInstance, fwToken->fwInstance, &error);      if( ((NSSUTF8 *)NULL == fwToken->model) && (CKR_OK != error) ) {        goto done;      }    } else {      fwToken->model = (NSSUTF8 *)"";    }  }  (void)nssUTF8_CopyIntoFixedBuffer(fwToken->model, (char *)model, 16, ' ');  error = CKR_OK; done:  (void)nssCKFWMutex_Unlock(fwToken->mutex);  return error;}/* * nssCKFWToken_GetSerialNumber * */NSS_IMPLEMENT CK_RVnssCKFWToken_GetSerialNumber(  NSSCKFWToken *fwToken,  CK_CHAR serialNumber[16]){  CK_RV error = CKR_OK;#ifdef NSSDEBUG  if( (CK_CHAR_PTR)NULL == serialNumber ) {    return CKR_ARGUMENTS_BAD;  }  error = nssCKFWToken_verifyPointer(fwToken);  if( CKR_OK != error ) {    return error;  }#endif /* NSSDEBUG */  error = nssCKFWMutex_Lock(fwToken->mutex);  if( CKR_OK != error ) {    return error;  }  if( (NSSUTF8 *)NULL == fwToken->serialNumber ) {    if( (void *)NULL != (void *)fwToken->mdToken->GetSerialNumber ) {      fwToken->serialNumber = fwToken->mdToken->GetSerialNumber(fwToken->mdToken,         fwToken, fwToken->mdInstance, fwToken->fwInstance, &error);      if( ((NSSUTF8 *)NULL == fwToken->serialNumber) && (CKR_OK != error) ) {        goto done;      }    } else {      fwToken->serialNumber = (NSSUTF8 *)"";    }  }  (void)nssUTF8_CopyIntoFixedBuffer(fwToken->serialNumber, (char *)serialNumber, 16, ' ');  error = CKR_OK; done:  (void)nssCKFWMutex_Unlock(fwToken->mutex);  return error;}/* * nssCKFWToken_GetHasRNG * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetHasRNG(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetHasRNG ) {    return CK_FALSE;  }  return fwToken->mdToken->GetHasRNG(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetIsWriteProtected * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetIsWriteProtected(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetIsWriteProtected ) {    return CK_FALSE;  }  return fwToken->mdToken->GetIsWriteProtected(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetLoginRequired * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetLoginRequired(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetLoginRequired ) {    return CK_FALSE;  }  return fwToken->mdToken->GetLoginRequired(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetUserPinInitialized * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetUserPinInitialized(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetUserPinInitialized ) {    return CK_FALSE;  }  return fwToken->mdToken->GetUserPinInitialized(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetRestoreKeyNotNeeded * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetRestoreKeyNotNeeded(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetRestoreKeyNotNeeded ) {    return CK_FALSE;  }  return fwToken->mdToken->GetRestoreKeyNotNeeded(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetHasClockOnToken * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetHasClockOnToken(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetHasClockOnToken ) {    return CK_FALSE;  }  return fwToken->mdToken->GetHasClockOnToken(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetHasProtectedAuthenticationPath * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetHasProtectedAuthenticationPath(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetHasProtectedAuthenticationPath ) {    return CK_FALSE;  }  return fwToken->mdToken->GetHasProtectedAuthenticationPath(fwToken->mdToken,     fwToken, fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetSupportsDualCryptoOperations * */NSS_IMPLEMENT CK_BBOOLnssCKFWToken_GetSupportsDualCryptoOperations(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_FALSE;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetSupportsDualCryptoOperations ) {    return CK_FALSE;  }  return fwToken->mdToken->GetSupportsDualCryptoOperations(fwToken->mdToken,     fwToken, fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetMaxSessionCount * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetMaxSessionCount(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetMaxSessionCount ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetMaxSessionCount(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetMaxRwSessionCount * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetMaxRwSessionCount(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetMaxRwSessionCount ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetMaxRwSessionCount(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetMaxPinLen * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetMaxPinLen(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetMaxPinLen ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetMaxPinLen(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetMinPinLen * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetMinPinLen(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetMinPinLen ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetMinPinLen(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetTotalPublicMemory * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetTotalPublicMemory(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetTotalPublicMemory ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetTotalPublicMemory(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetFreePublicMemory * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetFreePublicMemory(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetFreePublicMemory ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetFreePublicMemory(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetTotalPrivateMemory * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetTotalPrivateMemory(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetTotalPrivateMemory ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetTotalPrivateMemory(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetFreePrivateMemory * */NSS_IMPLEMENT CK_ULONGnssCKFWToken_GetFreePrivateMemory(  NSSCKFWToken *fwToken){#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    return CK_UNAVAILABLE_INFORMATION;  }#endif /* NSSDEBUG */  if( (void *)NULL == (void *)fwToken->mdToken->GetFreePrivateMemory ) {    return CK_UNAVAILABLE_INFORMATION;  }  return fwToken->mdToken->GetFreePrivateMemory(fwToken->mdToken, fwToken,     fwToken->mdInstance, fwToken->fwInstance);}/* * nssCKFWToken_GetHardwareVersion * */NSS_IMPLEMENT CK_VERSIONnssCKFWToken_GetHardwareVersion(  NSSCKFWToken *fwToken){  CK_VERSION rv;#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    rv.major = rv.minor = 0;    return rv;  }#endif /* NSSDEBUG */  if( CKR_OK != nssCKFWMutex_Lock(fwToken->mutex) ) {    rv.major = rv.minor = 0;    return rv;  }  if( (0 != fwToken->hardwareVersion.major) ||      (0 != fwToken->hardwareVersion.minor) ) {    rv = fwToken->hardwareVersion;    goto done;  }  if( (void *)NULL != (void *)fwToken->mdToken->GetHardwareVersion ) {    fwToken->hardwareVersion = fwToken->mdToken->GetHardwareVersion(      fwToken->mdToken, fwToken, fwToken->mdInstance, fwToken->fwInstance);  } else {    fwToken->hardwareVersion.major = 0;    fwToken->hardwareVersion.minor = 1;  }  rv = fwToken->hardwareVersion; done:  (void)nssCKFWMutex_Unlock(fwToken->mutex);  return rv;}/* * nssCKFWToken_GetFirmwareVersion * */NSS_IMPLEMENT CK_VERSIONnssCKFWToken_GetFirmwareVersion(  NSSCKFWToken *fwToken){  CK_VERSION rv;#ifdef NSSDEBUG  if( CKR_OK != nssCKFWToken_verifyPointer(fwToken) ) {    rv.major = rv.minor = 0;    return rv;  }#endif /* NSSDEBUG */  if( CKR_OK != nssCKFWMutex_Lock(fwToken->mutex) ) {    rv.major = rv.minor = 0;    return rv;  }  if( (0 != fwToken->firmwareVersion.major) ||      (0 != fwToken->firmwareVersion.minor) ) {    rv = fwToken->firmwareVersion;    goto done;  }  if( (void *)NULL != (void *)fwToken->mdToken->GetFirmwareVersion ) {    fwToken->firmwareVersion = fwToken->mdToken->GetFirmwareVersion(      fwToken->mdToken, fwToken, fwToken->mdInstance, fwToken->fwInstance);  } else {    fwToken->firmwareVersion.major = 0;    fwToken->firmwareVersion.minor = 1;  }  rv = fwToken->firmwareVersion; done:  (void)nssCKFWMutex_Unlock(fwToken->mutex);  return rv;}/* * nssCKFWToken_GetUTCTime * */NSS_IMPLEMENT CK_RVnssCKFWToken_GetUTCTime(  NSSCKFWToken *fwToken,  CK_CHAR utcTime[16]){  CK_RV error = CKR_OK;#ifdef NSSDEBUG  error = nssCKFWToken_verifyPointer(fwToken);  if( CKR_OK != error ) {    return error;  }  if( (CK_CHAR_PTR)NULL == utcTime ) {    return CKR_ARGUMENTS_BAD;  }#endif /* DEBUG */  if( CK_TRUE != nssCKFWToken_GetHasClockOnToken(fwToken) ) {    /* return CKR_DEVICE_ERROR; */    (void)nssUTF8_CopyIntoFixedBuffer((NSSUTF8 *)NULL, (char *)utcTime, 16, ' ');    return CKR_OK;  }  if( (void *)NULL == (void *)fwToken->mdToken->GetUTCTime ) {    /* It said it had one! */    return CKR_GENERAL_ERROR;  }  error = fwToken->mdToken->GetUTCTime(fwToken->mdToken, fwToken,             fwToken->mdInstance, fwToken->fwInstance, utcTime);  if( CKR_OK != error ) {    return error;  }  /* Sanity-check the data */  {    /* Format is YYYYMMDDhhmmss00 */    int i;    int Y, M, D, h, m, s, z;    static int dims[] = { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };    for( i = 0; i < 16; i++ ) {      if( (utcTime[i] < '0') || (utcTime[i] > '9') ) {

⌨️ 快捷键说明

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