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 + -
显示快捷键?