@@ -279,13 +279,23 @@ bool CVerification_XAuthKey::Verification_XAuthKey_MemoryWrite(VERIFICATION_XAUT
279279 类型:字符指针
280280 可空:N
281281 意思:输出解析到的信息
282+ 参数.二:enHWType
283+ In/Out:In
284+ 类型:枚举型
285+ 可空:Y
286+ 意思:输入要验证的硬件类型,默认使用主板序列类型
287+ 参数.三:lpszHWCode
288+ In/Out:In
289+ 类型:常量字符指针
290+ 可空:Y
291+ 意思:输入原始注册的硬件码,此参数传值,参数二将无效
282292返回值
283293 类型:逻辑型
284294 意思:是否成功
285295备注:无限制版本不做验证
286296 其他验证nHasTime将被设置还拥有时间
287297*********************************************************************/
288- bool CVerification_XAuthKey::Verification_XAuthKey_KeyParse (VERIFICATION_XAUTHKEY* pSt_XAuthInfo)
298+ bool CVerification_XAuthKey::Verification_XAuthKey_KeyParse (VERIFICATION_XAUTHKEY* pSt_XAuthInfo, ENUM_VERIFICATION_MODULE_HW_TYPE enHWType /* = ENUM_VERIFICATION_MODULE_HW_TYPE_UNKNOW */ , LPCXSTR lpszHWCode /* = NULL */ )
289299{
290300 Verification_IsErrorOccur = false ;
291301
@@ -361,28 +371,101 @@ bool CVerification_XAuthKey::Verification_XAuthKey_KeyParse(VERIFICATION_XAUTHKE
361371 return false ;
362372 }
363373 }
364-
365- SYSTEMAPI_SERIAL_INFOMATION st_SDKSerial = {};
366- SystemApi_HardWare_GetSerial (&st_SDKSerial);
374+ // 类型不匹配
367375 if (ENUM_VERIFICATION_MODULE_VERMODE_TYPE_LOCAL != pSt_XAuthInfo->st_AuthRegInfo .enVModeType )
368376 {
369377 Verification_IsErrorOccur = true ;
370378 Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_MODETYPE;
371379 return false ;
372380 }
373- if (ENUM_VERIFICATION_MODULE_HW_TYPE_BOARD != pSt_XAuthInfo->st_AuthRegInfo .enHWType )
381+ // 是否有自定义硬件码,如果有,那么可以不用关心硬件类型
382+ if (NULL == lpszHWCode)
374383 {
375- Verification_IsErrorOccur = true ;
376- Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_HWTYPE;
377- return false ;
384+ SYSTEMAPI_SERIAL_INFOMATION st_SDKSerial = {};
385+ SystemApi_HardWare_GetSerial (&st_SDKSerial);
386+
387+ if (ENUM_VERIFICATION_MODULE_HW_TYPE_UNKNOW == enHWType)
388+ {
389+ // 采用默认主板序列验证
390+ if (ENUM_VERIFICATION_MODULE_HW_TYPE_BOARD != pSt_XAuthInfo->st_AuthRegInfo .enHWType )
391+ {
392+ Verification_IsErrorOccur = true ;
393+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_HWTYPE;
394+ return false ;
395+ }
396+ if (0 != _tcsxnicmp (st_SDKSerial.tszBoardSerial , pSt_XAuthInfo->st_AuthRegInfo .tszHardware , _tcsxlen (st_SDKSerial.tszBoardSerial )))
397+ {
398+ Verification_IsErrorOccur = true ;
399+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
400+ return false ;
401+ }
402+ }
403+ else
404+ {
405+ // 验证硬件类型是否匹配
406+ if (enHWType == pSt_XAuthInfo->st_AuthRegInfo .enHWType )
407+ {
408+ if (ENUM_VERIFICATION_MODULE_HW_TYPE_CPU == enHWType)
409+ {
410+ if (0 != _tcsxnicmp (st_SDKSerial.tszCPUSerial , pSt_XAuthInfo->st_AuthRegInfo .tszHardware , _tcsxlen (st_SDKSerial.tszCPUSerial )))
411+ {
412+ Verification_IsErrorOccur = true ;
413+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
414+ return false ;
415+ }
416+ }
417+ else if (ENUM_VERIFICATION_MODULE_HW_TYPE_DISK == enHWType)
418+ {
419+ if (0 != _tcsxnicmp (st_SDKSerial.tszDiskSerial , pSt_XAuthInfo->st_AuthRegInfo .tszHardware , _tcsxlen (st_SDKSerial.tszDiskSerial )))
420+ {
421+ Verification_IsErrorOccur = true ;
422+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
423+ return false ;
424+ }
425+ }
426+ else if (ENUM_VERIFICATION_MODULE_HW_TYPE_BOARD == enHWType)
427+ {
428+ if (0 != _tcsxnicmp (st_SDKSerial.tszBoardSerial , pSt_XAuthInfo->st_AuthRegInfo .tszHardware , _tcsxlen (st_SDKSerial.tszBoardSerial )))
429+ {
430+ Verification_IsErrorOccur = true ;
431+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
432+ return false ;
433+ }
434+ }
435+ else if (ENUM_VERIFICATION_MODULE_HW_TYPE_SYSTEM == enHWType)
436+ {
437+ if (0 != _tcsxnicmp (st_SDKSerial.tszSystemSerial , pSt_XAuthInfo->st_AuthRegInfo .tszHardware , _tcsxlen (st_SDKSerial.tszSystemSerial )))
438+ {
439+ Verification_IsErrorOccur = true ;
440+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
441+ return false ;
442+ }
443+ }
444+ else
445+ {
446+ Verification_IsErrorOccur = true ;
447+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_NOTSUPPORT;
448+ return false ;
449+ }
450+ }
451+ else
452+ {
453+ Verification_IsErrorOccur = true ;
454+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_HWTYPE;
455+ return false ;
456+ }
457+ }
378458 }
379- if ( 0 != _tcsxnicmp (st_SDKSerial. tszBoardSerial , pSt_XAuthInfo-> st_AuthRegInfo . tszHardware , _tcsxlen (st_SDKSerial. tszBoardSerial )))
459+ else
380460 {
381- Verification_IsErrorOccur = true ;
382- Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
383- return false ;
461+ if (0 != _tcsxnicmp (lpszHWCode, pSt_XAuthInfo->st_AuthRegInfo .tszHardware , _tcsxlen (lpszHWCode)))
462+ {
463+ Verification_IsErrorOccur = true ;
464+ Verification_dwErrorCode = ERROR_XENGINE_MODULE_VERIFICATION_XAUTH_SERIAL;
465+ return false ;
466+ }
384467 }
385-
468+
386469 return true ;
387470}
388471/* *******************************************************************
0 commit comments