• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "device_attest_oem_adapter.h"
16 
17 #include "attest_type.h"
18 #include "attest_utils_log.h"
19 #include "attest_adapter_oem.h"
20 #include "attest_adapter_os.h"
21 #include "attest_adapter_mock.h"
22 #include "attest_adapter.h"
23 
24 // 是否存在重置标记
AttestIsResetFlagExist(void)25 bool AttestIsResetFlagExist(void)
26 {
27     return OEMIsResetFlagExist();
28 }
29 // 创建重置标记
30 
AttestCreateResetFlag(void)31 int32_t AttestCreateResetFlag(void)
32 {
33     return OEMCreateResetFlag();
34 }
35 // 写入认证结果
AttestWriteAuthStatus(const char * data,uint32_t len)36 int32_t AttestWriteAuthStatus(const char* data, uint32_t len)
37 {
38     return OEMWriteAuthStatus(data, len);
39 }
40 
41 // 读取认证结果
AttestReadAuthStatus(char * buffer,uint32_t bufferLen)42 int32_t AttestReadAuthStatus(char* buffer, uint32_t bufferLen)
43 {
44     return OEMReadAuthStatus(buffer, bufferLen);
45 }
46 
47 // 读取认证结果长度
AttestGetAuthStatusFileSize(uint32_t * len)48 int32_t AttestGetAuthStatusFileSize(uint32_t* len)
49 {
50     return OEMGetAuthStatusFileSize(len);
51 }
52 
53 // 读取凭据
AttestReadTicket(TicketInfo * ticketInfo)54 int32_t AttestReadTicket(TicketInfo* ticketInfo)
55 {
56     return OEMReadTicket(ticketInfo);
57 }
58 
59 // 写入凭据
AttestWriteTicket(const TicketInfo * ticketInfo)60 int32_t AttestWriteTicket(const TicketInfo* ticketInfo)
61 {
62     return OEMWriteTicket(ticketInfo);
63 }
64 
65 // 读取Manufacturekey
AttestGetManufacturekey(uint8_t manufacturekey[],uint32_t len)66 int32_t AttestGetManufacturekey(uint8_t manufacturekey[], uint32_t len)
67 {
68     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
69         return OsGetAcKeyStub((char*)manufacturekey, len);
70     }
71     return OEMGetManufacturekey((char*)manufacturekey, len);
72 }
73 
74 // 读取ProductId
AttestGetProductId(uint8_t productId[],uint32_t len)75 int32_t AttestGetProductId(uint8_t productId[], uint32_t len)
76 {
77     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
78         return OsGetProdIdStub((char*)productId, len);
79     }
80     return OEMGetProductId((char*)productId, len);
81 }
82 
83 // 读取Token
AttestReadToken(TokenInfo * tokenInfo)84 int32_t AttestReadToken(TokenInfo* tokenInfo)
85 {
86     if (tokenInfo == NULL) {
87         return ATTEST_ERR;
88     }
89     char token[TOKEN_ENCRYPT_LEN + 1] = {0};
90     int32_t ret = 0;
91     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
92         ret = OsReadTokenStub(token, TOKEN_ENCRYPT_LEN);
93     } else {
94         ret = OEMReadToken(token, TOKEN_ENCRYPT_LEN);
95     }
96     if (ret != ATTEST_OK) {
97         ATTEST_LOG_ERROR("[AttestReadToken] Read oem token failed, ret = %d", ret);
98         return ret;
99     }
100     int32_t offset = 0;
101     if (memcpy_s(tokenInfo->tokenId, TOKEN_ID_ENCRYPT_LEN, token + offset, TOKEN_ID_ENCRYPT_LEN) != 0) {
102         return ATTEST_ERR;
103     }
104     offset += (TOKEN_ID_ENCRYPT_LEN + 1);
105     if (memcpy_s(tokenInfo->tokenValue, TOKEN_VALUE_ENCRYPT_LEN, token + offset, TOKEN_VALUE_ENCRYPT_LEN) != 0) {
106         return ATTEST_ERR;
107     }
108     offset += (TOKEN_VALUE_ENCRYPT_LEN + 1);
109     if (memcpy_s(tokenInfo->salt, SALT_ENCRYPT_LEN, token + offset, SALT_ENCRYPT_LEN) != 0) {
110         return ATTEST_ERR;
111     }
112     offset += (SALT_ENCRYPT_LEN + 1);
113     if (memcpy_s(tokenInfo->version, VERSION_ENCRYPT_LEN, token + offset, VERSION_ENCRYPT_LEN) != 0) {
114         return ATTEST_ERR;
115     }
116     return ATTEST_OK;
117 }
118 
119 // 写入Token
AttestWriteToken(TokenInfo * tokenInfo)120 int32_t AttestWriteToken(TokenInfo* tokenInfo)
121 {
122     if (tokenInfo == NULL) {
123         return ATTEST_ERR;
124     }
125     char token[TOKEN_ENCRYPT_LEN + 1];
126     char separator = ',';
127     (void)memset_s(token, sizeof(token), 0, sizeof(token));
128     int32_t offset = 0;
129     if (memcpy_s(token, sizeof(token), tokenInfo->tokenId, sizeof(tokenInfo->tokenId)) != 0) {
130         return ATTEST_ERR;
131     }
132     offset += (TOKEN_ID_ENCRYPT_LEN + 1);
133     token[offset - 1] = separator;
134     if (memcpy_s(token + offset, sizeof(token), tokenInfo->tokenValue, sizeof(tokenInfo->tokenValue)) != 0) {
135         return ATTEST_ERR;
136     }
137     offset += (TOKEN_VALUE_ENCRYPT_LEN + 1);
138     token[offset - 1] = separator;
139     if (memcpy_s(token + offset, sizeof(token), tokenInfo->salt, sizeof(tokenInfo->salt)) != 0) {
140         return ATTEST_ERR;
141     }
142     offset += (SALT_ENCRYPT_LEN + 1);
143     token[offset - 1] = separator;
144     if (memcpy_s(token + offset, sizeof(token), tokenInfo->version, sizeof(tokenInfo->version)) != 0) {
145         return ATTEST_ERR;
146     }
147 
148     int32_t ret = 0;
149     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
150         ret = OsWriteTokenStub(token, TOKEN_ENCRYPT_LEN);
151     } else {
152         ret = OEMWriteToken((const char *)token, TOKEN_ENCRYPT_LEN);
153     }
154     if (ret != ATTEST_OK) {
155         ATTEST_LOG_ERROR("[AttestWriteToken] Write token failed, ret = %d", ret);
156         ret = ATTEST_ERR;
157     }
158     return ret;
159 }
160 
161 // 读取ProductKey
AttestGetProductKey(uint8_t productKey[],uint32_t len)162 int32_t AttestGetProductKey(uint8_t productKey[], uint32_t len)
163 {
164     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
165         return OsGetProdKeyStub((char*)productKey, len);
166     }
167     return OEMGetProductKey((char*)productKey, len);
168 }
169 
AttestGetVersionId(void)170 char* AttestGetVersionId(void)
171 {
172     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
173         return OsGetVersionIdStub();
174     }
175     return OsGetVersionId();
176 }
177 
AttestGetBuildRootHash(void)178 char* AttestGetBuildRootHash(void)
179 {
180     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
181         return OsGetBuildRootHashStub();
182     }
183     return OsGetBuildRootHash();
184 }
185 
AttestGetDisplayVersion(void)186 char* AttestGetDisplayVersion(void)
187 {
188     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
189         return OsGetDisplayVersionStub();
190     }
191     return OsGetDisplayVersion();
192 }
193 
AttestGetManufacture(void)194 char* AttestGetManufacture(void)
195 {
196     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
197         return OsGetManufactureStub();
198     }
199     return OsGetManufacture();
200 }
201 
AttestGetProductModel(void)202 char* AttestGetProductModel(void)
203 {
204     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
205         return OsGetProductModelStub();
206     }
207     return OsGetProductModel();
208 }
209 
AttestGetBrand(void)210 char* AttestGetBrand(void)
211 {
212     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
213         return OsGetBrandStub();
214     }
215     return OsGetBrand();
216 }
217 
AttestGetSecurityPatchTag(void)218 char* AttestGetSecurityPatchTag(void)
219 {
220     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
221         return OsGetSecurityPatchTagStub();
222     }
223     return OsGetSecurityPatchTag();
224 }
225 
AttestGetUdid(void)226 char* AttestGetUdid(void)
227 {
228     if (ATTEST_MOCK_DEVICE_STUB_FLAG) {
229         return OsGetUdidStub();
230     }
231     return OsGetUdid();
232 }
233 
AttestGetSerial(void)234 char* AttestGetSerial(void)
235 {
236     return OsGetSerial();
237 }
238 
AttestSetParameter(const char * key,const char * value)239 int32_t AttestSetParameter(const char *key, const char *value)
240 {
241     return OsSetParameter(key, value);
242 }
243 
AttestGetParameter(const char * key,const char * def,char * value,uint32_t len)244 int32_t AttestGetParameter(const char *key, const char *def, char *value, uint32_t len)
245 {
246     return OsGetParameter(key, def, value, len);
247 }
248 
AttestReadNetworkConfig(char * buffer,uint32_t bufferLen)249 int32_t AttestReadNetworkConfig(char* buffer, uint32_t bufferLen)
250 {
251     return OEMReadNetworkConfig(buffer, bufferLen);
252 }
253 
AttestWriteAuthResultCode(const char * data,uint32_t len)254 int32_t AttestWriteAuthResultCode(const char* data, uint32_t len)
255 {
256     return OEMWriteAuthResultCode(data, len);
257 }
258 
AttestReadAuthResultCode(char * buffer,uint32_t bufferLen)259 int32_t AttestReadAuthResultCode(char* buffer, uint32_t bufferLen)
260 {
261     return OEMReadAuthResultCode(buffer, bufferLen);
262 }
263