1e41f4b71Sopenharmony_ci# @ohos.deviceAttest (设备证明)(系统接口) 2e41f4b71Sopenharmony_ci 3e41f4b71Sopenharmony_ci为了证明设备是OpenHarmony生态中的合法设备,设备证明模块会把设备信息通过云端进行一致性合法校验。 4e41f4b71Sopenharmony_ci通过本模块接口,可查询设备在云端校验的结果。 5e41f4b71Sopenharmony_ci 6e41f4b71Sopenharmony_ci> **说明:** 7e41f4b71Sopenharmony_ci> 8e41f4b71Sopenharmony_ci> - 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 9e41f4b71Sopenharmony_ci> 10e41f4b71Sopenharmony_ci> - 本模块接口为系统接口。 11e41f4b71Sopenharmony_ci 12e41f4b71Sopenharmony_ci## 导入模块 13e41f4b71Sopenharmony_ci 14e41f4b71Sopenharmony_ci```ts 15e41f4b71Sopenharmony_ciimport deviceAttest from '@ohos.deviceAttest'; 16e41f4b71Sopenharmony_ci``` 17e41f4b71Sopenharmony_ci 18e41f4b71Sopenharmony_ci## deviceAttest.getAttestStatus 19e41f4b71Sopenharmony_ci 20e41f4b71Sopenharmony_cigetAttestStatus(callback: AsyncCallback<AttestResultInfo>) : void 21e41f4b71Sopenharmony_ci 22e41f4b71Sopenharmony_ci获取端云校验结果的详细信息。使用callback异步回调。 23e41f4b71Sopenharmony_ci 24e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.XTS.DeviceAttest 25e41f4b71Sopenharmony_ci 26e41f4b71Sopenharmony_ci**参数:** 27e41f4b71Sopenharmony_ci 28e41f4b71Sopenharmony_ci| 参数名 | 类型 | 必填 | 说明 | 29e41f4b71Sopenharmony_ci| -------- | ----------------------------------------------------------- | ---- | ------------------------------------------------------------ | 30e41f4b71Sopenharmony_ci| callback | AsyncCallback<[AttestResultInfo](#attestresultinfo)> | 是 | 回调函数。当获取端云校验结果的详细信息成功,error为undefined,result为获取到的[AttestResultInfo](#attestresultinfo);否则为错误对象。 | 31e41f4b71Sopenharmony_ci 32e41f4b71Sopenharmony_ci**错误码:** 33e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[设备证明错误码](./errorcode-deviceAttest.md)和[通用错误码说明文档](../errorcode-universal.md)。 34e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 35e41f4b71Sopenharmony_ci|----------|----------------------| 36e41f4b71Sopenharmony_ci| 202 | This api is system api, Please use the system application to call this api. | 37e41f4b71Sopenharmony_ci| 401 | Input parameters wrong, the number of parameters is incorrect, or the type of parameters is incorrect. | 38e41f4b71Sopenharmony_ci| 20000001 | System service exception, please try again or reboot your device. | 39e41f4b71Sopenharmony_ci 40e41f4b71Sopenharmony_ci**示例:** 41e41f4b71Sopenharmony_ci 42e41f4b71Sopenharmony_ci```ts 43e41f4b71Sopenharmony_ciimport base from '@ohos.base'; 44e41f4b71Sopenharmony_ci 45e41f4b71Sopenharmony_citry { 46e41f4b71Sopenharmony_ci deviceAttest.getAttestStatus((error: base.BusinessError, value: deviceAttest.AttestResultInfo) => { 47e41f4b71Sopenharmony_ci if (typeof error != 'undefined') { 48e41f4b71Sopenharmony_ci console.info("error code:" + error.code + " message:" + error.message); 49e41f4b71Sopenharmony_ci } else { 50e41f4b71Sopenharmony_ci console.info("auth:" + value.authResult + " software:" + value.softwareResult + " ticket:" + value.ticket); 51e41f4b71Sopenharmony_ci console.info("versionIdResult:" + value.softwareResultDetail[0], 52e41f4b71Sopenharmony_ci " patchLevelResult:" + value.softwareResultDetail[1], 53e41f4b71Sopenharmony_ci " rootHashResult:" + value.softwareResultDetail[2], 54e41f4b71Sopenharmony_ci " PCIDResult:" + value.softwareResultDetail[3], 55e41f4b71Sopenharmony_ci " reserver:" + value.softwareResultDetail[4]); 56e41f4b71Sopenharmony_ci } 57e41f4b71Sopenharmony_ci }) 58e41f4b71Sopenharmony_ci} catch (error) { 59e41f4b71Sopenharmony_ci let code: number = (error as base.BusinessError).code; 60e41f4b71Sopenharmony_ci let message: string = (error as base.BusinessError).message; 61e41f4b71Sopenharmony_ci console.info("error code:" + code + " message:" + message); 62e41f4b71Sopenharmony_ci} 63e41f4b71Sopenharmony_ci``` 64e41f4b71Sopenharmony_ci 65e41f4b71Sopenharmony_ci## deviceAttest.getAttestStatus 66e41f4b71Sopenharmony_ci 67e41f4b71Sopenharmony_cigetAttestStatus() : Promise<AttestResultInfo> 68e41f4b71Sopenharmony_ci 69e41f4b71Sopenharmony_ci获取端云校验结果的详细信息。使用Promise异步回调。 70e41f4b71Sopenharmony_ci 71e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.XTS.DeviceAttest 72e41f4b71Sopenharmony_ci 73e41f4b71Sopenharmony_ci**返回值:** 74e41f4b71Sopenharmony_ci 75e41f4b71Sopenharmony_ci| 类型 | 说明 | 76e41f4b71Sopenharmony_ci| ----------------------------------------------------- | ------------------------------- | 77e41f4b71Sopenharmony_ci| Promise<[AttestResultInfo](#attestresultinfo)> | Promise对象,返回端云校验结果的详细信息。 | 78e41f4b71Sopenharmony_ci 79e41f4b71Sopenharmony_ci**错误码:** 80e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[设备证明错误码](./errorcode-deviceAttest.md)和[通用错误码说明文档](../errorcode-universal.md)。 81e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 82e41f4b71Sopenharmony_ci|----------|----------------------| 83e41f4b71Sopenharmony_ci| 202 | This api is system api, Please use the system application to call this api. | 84e41f4b71Sopenharmony_ci| 401 | Input parameters wrong, the number of parameters is incorrect, or the type of parameters is incorrect. | 85e41f4b71Sopenharmony_ci| 20000001 | System service exception, please try again or reboot your device. | 86e41f4b71Sopenharmony_ci 87e41f4b71Sopenharmony_ci**示例:** 88e41f4b71Sopenharmony_ci 89e41f4b71Sopenharmony_ci```ts 90e41f4b71Sopenharmony_ciimport base from '@ohos.base'; 91e41f4b71Sopenharmony_ci 92e41f4b71Sopenharmony_citry { 93e41f4b71Sopenharmony_ci deviceAttest.getAttestStatus().then((value: deviceAttest.AttestResultInfo) => { 94e41f4b71Sopenharmony_ci console.info("auth:" + value.authResult + " software:" + value.softwareResult + " ticket:" + value.ticket); 95e41f4b71Sopenharmony_ci console.info("versionIdResult:" + value.softwareResultDetail[0], 96e41f4b71Sopenharmony_ci " patchLevelResult:" + value.softwareResultDetail[1], 97e41f4b71Sopenharmony_ci " rootHashResult:" + value.softwareResultDetail[2], 98e41f4b71Sopenharmony_ci " PCIDResult:" + value.softwareResultDetail[3], 99e41f4b71Sopenharmony_ci " reserver:" + value.softwareResultDetail[4]); 100e41f4b71Sopenharmony_ci }).catch((error: base.BusinessError) => { 101e41f4b71Sopenharmony_ci console.info("error code:" + error.code + " message:" + error.message); 102e41f4b71Sopenharmony_ci }); 103e41f4b71Sopenharmony_ci} catch (error) { 104e41f4b71Sopenharmony_ci let code: number = (error as base.BusinessError).code; 105e41f4b71Sopenharmony_ci let message: string = (error as base.BusinessError).message; 106e41f4b71Sopenharmony_ci console.info("error code:" + code + " message:" + message); 107e41f4b71Sopenharmony_ci} 108e41f4b71Sopenharmony_ci``` 109e41f4b71Sopenharmony_ci 110e41f4b71Sopenharmony_ci## deviceAttest.getAttestStatusSync 111e41f4b71Sopenharmony_ci 112e41f4b71Sopenharmony_cigetAttestStatusSync() : AttestResultInfo 113e41f4b71Sopenharmony_ci 114e41f4b71Sopenharmony_ci以同步方式获取端云校验结果的详细信息。 115e41f4b71Sopenharmony_ci 116e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.XTS.DeviceAttest 117e41f4b71Sopenharmony_ci 118e41f4b71Sopenharmony_ci**返回值:** 119e41f4b71Sopenharmony_ci 120e41f4b71Sopenharmony_ci| 类型 | 说明 | 121e41f4b71Sopenharmony_ci| ----------------------------------------------------- | ------------------------------- | 122e41f4b71Sopenharmony_ci| [AttestResultInfo](#attestresultinfo) | 返回端云校验结果的详细信息。 | 123e41f4b71Sopenharmony_ci 124e41f4b71Sopenharmony_ci**错误码:** 125e41f4b71Sopenharmony_ci以下错误码的详细介绍请参见[设备证明错误码](./errorcode-deviceAttest.md)和[通用错误码说明文档](../errorcode-universal.md)。 126e41f4b71Sopenharmony_ci| 错误码ID | 错误信息 | 127e41f4b71Sopenharmony_ci|----------|----------------------| 128e41f4b71Sopenharmony_ci| 202 | This api is system api, Please use the system application to call this api. | 129e41f4b71Sopenharmony_ci| 401 | Input parameters wrong, the number of parameters is incorrect, or the type of parameters is incorrect. | 130e41f4b71Sopenharmony_ci| 20000001 | System service exception, please try again or reboot your device. | 131e41f4b71Sopenharmony_ci 132e41f4b71Sopenharmony_ci**示例:** 133e41f4b71Sopenharmony_ci 134e41f4b71Sopenharmony_ci```ts 135e41f4b71Sopenharmony_ciimport base from '@ohos.base'; 136e41f4b71Sopenharmony_ci 137e41f4b71Sopenharmony_citry { 138e41f4b71Sopenharmony_ci let value: deviceAttest.AttestResultInfo = deviceAttest.getAttestStatusSync(); 139e41f4b71Sopenharmony_ci console.info("auth:" + value.authResult + " software:" + value.softwareResult + " ticket:" + value.ticket); 140e41f4b71Sopenharmony_ci console.info("versionIdResult:" + value.softwareResultDetail[0], 141e41f4b71Sopenharmony_ci " patchLevelResult:" + value.softwareResultDetail[1], 142e41f4b71Sopenharmony_ci " rootHashResult:" + value.softwareResultDetail[2], 143e41f4b71Sopenharmony_ci " PCIDResult:" + value.softwareResultDetail[3], 144e41f4b71Sopenharmony_ci " reserver:" + value.softwareResultDetail[4]); 145e41f4b71Sopenharmony_ci} catch (error) { 146e41f4b71Sopenharmony_ci let code: number = (error as base.BusinessError).code; 147e41f4b71Sopenharmony_ci let message: string = (error as base.BusinessError).message; 148e41f4b71Sopenharmony_ci console.info("error code:" + code + " message:" + message); 149e41f4b71Sopenharmony_ci} 150e41f4b71Sopenharmony_ci``` 151e41f4b71Sopenharmony_ci 152e41f4b71Sopenharmony_ci## AttestResultInfo 153e41f4b71Sopenharmony_ci 154e41f4b71Sopenharmony_ci端云校验结果的详细信息。 155e41f4b71Sopenharmony_ci 156e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.XTS.DeviceAttest 157e41f4b71Sopenharmony_ci 158e41f4b71Sopenharmony_ci| 名称 | 类型 | 可读 | 可写 | 说明 | 159e41f4b71Sopenharmony_ci| --------------------- | --------------------- | ---- | ---- | ---------------------- | 160e41f4b71Sopenharmony_ci| authResult | number | 是 | 否 | 设备硬件信息校验结果。 | 161e41f4b71Sopenharmony_ci| softwareResult | number | 是 | 否 | 设备软件信息校验结果。 | 162e41f4b71Sopenharmony_ci| softwareResultDetail | Array<number> | 是 | 否 | 设备软件信息校验结果详细说明<br/> - softwareResultDetail[0]:版本Id的校验结果;<br/>- softwareResultDetail[1]:安全补丁标签的校验结果;<br/>- softwareResultDetail[2]:版本Hash的校验结果;<br/>- softwareResultDetail[3]:系统能力集合的校验结果;<br/>- softwareResultDetail[4]:保留位。 | 163e41f4b71Sopenharmony_ci| ticket | string | 是 | 否 | 云侧下发的软证书。<br/>设备硬件信息校验结果通过后有值;校验结果失败,该值为空 | 164e41f4b71Sopenharmony_ci 165e41f4b71Sopenharmony_ci> **说明:** 166e41f4b71Sopenharmony_ci> 167e41f4b71Sopenharmony_ci> - 设备硬件信息和设备软件信息的校验结果返回值有-2、-1、0。-2表示未认证,-1表示认证失败,0表示认证通过。 168