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&lt;number&gt;  | 是   | 否   | 设备软件信息校验结果详细说明<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