• 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
16import { paramMock } from "../utils"
17
18export function mockHuks() {
19
20  const HuksParamMock = {
21    tag: '[PC preview] unknow tag',
22    value: '[PC preview] unknow value',
23  }
24  const HuksHandleMock = {
25    errorCode: '[PC preview] unknow errorCode',
26    handle: '[PC preview] unknow handle',
27    token: '[PC preview] unknow token',
28  }
29  const HuksOptionsMock = {
30    properties: [HuksParamMock],
31    inData: '[PC preview] unknow inData',
32  }
33  const HuksResultMock = {
34    errorCode: '[PC preview] unknow errorCode',
35    outData: '[PC preview] unknow outData',
36    properties: [HuksParamMock],
37    certChains: [paramMock.paramStringMock],
38  }
39  const huks = {
40    generateKey: function (...args) {
41      console.warn("huks.generateKey interface mocked in the Previewer. How this interface works on the Previewer" +
42        " may be different from that on a real device.")
43      const len = args.length
44      if (typeof args[len - 1] === 'function') {
45        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
46      } else {
47        return new Promise((resolve, reject) => {
48          resolve(HuksResultMock)
49        })
50      }
51    },
52    deleteKey: function (...args) {
53      console.warn("huks.deleteKey interface mocked in the Previewer. How this interface works on the Previewer" +
54        " may be different from that on a real device.")
55      const len = args.length
56      if (typeof args[len - 1] === 'function') {
57        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
58      } else {
59        return new Promise((resolve, reject) => {
60          resolve(HuksResultMock)
61        })
62      }
63    },
64    importKey: function (...args) {
65      console.warn("huks.importKey interface mocked in the Previewer. How this interface works on the Previewer" +
66        " may be different from that on a real device.")
67      const len = args.length
68      if (typeof args[len - 1] === 'function') {
69        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
70      } else {
71        return new Promise((resolve, reject) => {
72          resolve(HuksResultMock)
73        })
74      }
75    },
76    exportKey: function (...args) {
77      console.warn("huks.exportKey interface mocked in the Previewer. How this interface works on the Previewer" +
78        " may be different from that on a real device.")
79      const len = args.length
80      if (typeof args[len - 1] === 'function') {
81        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
82      } else {
83        return new Promise((resolve, reject) => {
84          resolve(HuksResultMock)
85        })
86      }
87    },
88    getKeyProperties: function (...args) {
89      console.warn("huks.getKeyProperties interface mocked in the Previewer. How this interface works on the Previewer" +
90        " may be different from that on a real device.")
91      const len = args.length
92      if (typeof args[len - 1] === 'function') {
93        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
94      } else {
95        return new Promise((resolve, reject) => {
96          resolve(HuksResultMock)
97        })
98      }
99    },
100    isKeyExist: function (...args) {
101      console.warn("huks.isKeyExist interface mocked in the Previewer. How this interface works on the Previewer" +
102        " may be different from that on a real device.")
103      const len = args.length
104      if (typeof args[len - 1] === 'function') {
105        args[len - 1].call(this, paramMock.businessErrorMock, paramMock.paramBooleanMock)
106      } else {
107        return new Promise((resolve, reject) => {
108          resolve(paramMock.paramBooleanMock)
109        })
110      }
111    },
112    init: function (...args) {
113      console.warn("huks.init interface mocked in the Previewer. How this interface works on the Previewer" +
114        " may be different from that on a real device.")
115      const len = args.length
116      if (typeof args[len - 1] === 'function') {
117        args[len - 1].call(this, paramMock.businessErrorMock, HuksHandleMock)
118      } else {
119        return new Promise((resolve, reject) => {
120          resolve(HuksResultMock)
121        })
122      }
123    },
124    update: function (...args) {
125      console.warn("huks.update interface mocked in the Previewer. How this interface works on the Previewer" +
126        " may be different from that on a real device.")
127      const len = args.length
128      if (typeof args[len - 1] === 'function') {
129        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
130      } else {
131        return new Promise((resolve, reject) => {
132          resolve(HuksResultMock)
133        })
134      }
135    },
136    finish: function (...args) {
137      console.warn("huks.finish interface mocked in the Previewer. How this interface works on the Previewer" +
138        " may be different from that on a real device.")
139      const len = args.length
140      if (typeof args[len - 1] === 'function') {
141        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
142      } else {
143        return new Promise((resolve, reject) => {
144          resolve(HuksResultMock)
145        })
146      }
147    },
148    abort: function (...args) {
149      console.warn("huks.abort interface mocked in the Previewer. How this interface works on the Previewer" +
150        " may be different from that on a real device.")
151      const len = args.length
152      if (typeof args[len - 1] === 'function') {
153        args[len - 1].call(this, paramMock.businessErrorMock, HuksResultMock)
154      } else {
155        return new Promise((resolve, reject) => {
156          resolve(HuksResultMock)
157        })
158      }
159    },
160    getSdkVersion: function (...args) {
161      console.warn("huks.getSdkVersion interface mocked in the Previewer. How this interface works on the Previewer" +
162        " may be different from that on a real device.")
163      return paramMock.paramStringMock;
164    },
165    HuksErrorCode: {
166      HUKS_SUCCESS: 0,
167      HUKS_FAILURE: -1,
168      HUKS_ERROR_BAD_STATE: -2,
169      HUKS_ERROR_INVALID_ARGUMENT: -3,
170      HUKS_ERROR_NOT_SUPPORTED: -4,
171      HUKS_ERROR_NO_PERMISSION: -5,
172      HUKS_ERROR_INSUFFICIENT_DATA: -6,
173      HUKS_ERROR_BUFFER_TOO_SMALL: -7,
174      HUKS_ERROR_INSUFFICIENT_MEMORY: -8,
175      HUKS_ERROR_COMMUNICATION_FAILURE: -9,
176      HUKS_ERROR_STORAGE_FAILURE: -10,
177      HUKS_ERROR_HARDWARE_FAILURE: -11,
178      HUKS_ERROR_ALREADY_EXISTS: -12,
179      HUKS_ERROR_NOT_EXIST: -13,
180      HUKS_ERROR_NULL_POINTER: -14,
181      HUKS_ERROR_FILE_SIZE_FAIL: -15,
182      HUKS_ERROR_READ_FILE_FAIL: -16,
183      HUKS_ERROR_INVALID_PUBLIC_KEY: -17,
184      HUKS_ERROR_INVALID_PRIVATE_KEY: -18,
185      HUKS_ERROR_INVALID_KEY_INFO: -19,
186      HUKS_ERROR_HASH_NOT_EQUAL: -20,
187      HUKS_ERROR_MALLOC_FAIL: -21,
188      HUKS_ERROR_WRITE_FILE_FAIL: -22,
189      HUKS_ERROR_REMOVE_FILE_FAIL: -23,
190      HUKS_ERROR_OPEN_FILE_FAIL: -24,
191      HUKS_ERROR_CLOSE_FILE_FAIL: -25,
192      HUKS_ERROR_MAKE_DIR_FAIL: -26,
193      HUKS_ERROR_INVALID_KEY_FILE: -27,
194      HUKS_ERROR_IPC_MSG_FAIL: -28,
195      HUKS_ERROR_REQUEST_OVERFLOWS: -29,
196      HUKS_ERROR_PARAM_NOT_EXIST: -30,
197      HUKS_ERROR_CRYPTO_ENGINE_ERROR: -31,
198      HUKS_ERROR_COMMUNICATION_TIMEOUT: -32,
199      HUKS_ERROR_IPC_INIT_FAIL: -33,
200      HUKS_ERROR_IPC_DLOPEN_FAIL: -34,
201      HUKS_ERROR_EFUSE_READ_FAIL: -35,
202      HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST: -36,
203      HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL: -37,
204      HUKS_ERROR_VERIFICATION_FAILED: -38,
205
206      HUKS_ERROR_CHECK_GET_ALG_FAIL: -100,
207      HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL: -101,
208      HUKS_ERROR_CHECK_GET_PADDING_FAIL: -102,
209      HUKS_ERROR_CHECK_GET_PURPOSE_FAIL: -103,
210      HUKS_ERROR_CHECK_GET_DIGEST_FAIL: -104,
211      HUKS_ERROR_CHECK_GET_MODE_FAIL: -105,
212      HUKS_ERROR_CHECK_GET_NONCE_FAIL: -106,
213      HUKS_ERROR_CHECK_GET_AAD_FAIL: -107,
214      HUKS_ERROR_CHECK_GET_IV_FAIL: -108,
215      HUKS_ERROR_CHECK_GET_AE_TAG_FAIL: -109,
216      HUKS_ERROR_CHECK_GET_SALT_FAIL: -110,
217      HUKS_ERROR_CHECK_GET_ITERATION_FAIL: -111,
218      HUKS_ERROR_INVALID_ALGORITHM: -112,
219      HUKS_ERROR_INVALID_KEY_SIZE: -113,
220      HUKS_ERROR_INVALID_PADDING: -114,
221      HUKS_ERROR_INVALID_PURPOSE: -115,
222      HUKS_ERROR_INVALID_MODE: -116,
223      HUKS_ERROR_INVALID_DIGEST: -117,
224      HUKS_ERROR_INVALID_SIGNATURE_SIZE: -118,
225      HUKS_ERROR_INVALID_IV: -119,
226      HUKS_ERROR_INVALID_AAD: -120,
227      HUKS_ERROR_INVALID_NONCE: -121,
228      HUKS_ERROR_INVALID_AE_TAG: -122,
229      HUKS_ERROR_INVALID_SALT: -123,
230      HUKS_ERROR_INVALID_ITERATION: -124,
231      HUKS_ERROR_INVALID_OPERATION: -125,
232
233      HUKS_ERROR_INTERNAL_ERROR: -999,
234      HUKS_ERROR_UNKNOWN_ERROR: -1000,
235    },
236
237    HuksKeyPurpose: {
238      HUKS_KEY_PURPOSE_ENCRYPT: 1,
239      HUKS_KEY_PURPOSE_DECRYPT: 2,
240      HUKS_KEY_PURPOSE_SIGN: 4,
241      HUKS_KEY_PURPOSE_VERIFY: 8,
242      HUKS_KEY_PURPOSE_DERIVE: 16,
243      HUKS_KEY_PURPOSE_WRAP: 32,
244      HUKS_KEY_PURPOSE_UNWRAP: 64,
245      HUKS_KEY_PURPOSE_MAC: 128,
246      HUKS_KEY_PURPOSE_AGREE: 256,
247    },
248
249    HuksKeyDigest: {
250      HUKS_DIGEST_NONE: 0,
251      HUKS_DIGEST_MD5: 1,
252      HUKS_DIGEST_SHA1: 10,
253      HUKS_DIGEST_SHA224: 11,
254      HUKS_DIGEST_SHA256: 12,
255      HUKS_DIGEST_SHA384: 13,
256      HUKS_DIGEST_SHA512: 14,
257    },
258
259    HuksKeyPadding: {
260      HUKS_PADDING_NONE: 0,
261      HUKS_PADDING_OAEP: 1,
262      HUKS_PADDING_PSS: 2,
263      HUKS_PADDING_PKCS1_V1_5: 3,
264      HUKS_PADDING_PKCS5: 4,
265      HUKS_PADDING_PKCS7: 5,
266    },
267
268    HuksCipherMode: {
269      HUKS_MODE_ECB: 1,
270      HUKS_MODE_CBC: 2,
271      HUKS_MODE_CTR: 3,
272      HUKS_MODE_OFB: 4,
273      HUKS_MODE_CCM: 31,
274      HUKS_MODE_GCM: 32,
275    },
276
277    HuksKeySize: {
278      HUKS_RSA_KEY_SIZE_512: 512,
279      HUKS_RSA_KEY_SIZE_768: 768,
280      HUKS_RSA_KEY_SIZE_1024: 1024,
281      HUKS_RSA_KEY_SIZE_2048: 2048,
282      HUKS_RSA_KEY_SIZE_3072: 3072,
283      HUKS_RSA_KEY_SIZE_4096: 4096,
284
285      HUKS_ECC_KEY_SIZE_224: 224,
286      HUKS_ECC_KEY_SIZE_256: 256,
287      HUKS_ECC_KEY_SIZE_384: 384,
288      HUKS_ECC_KEY_SIZE_521: 521,
289
290      HUKS_AES_KEY_SIZE_128: 128,
291      HUKS_AES_KEY_SIZE_192: 192,
292      HUKS_AES_KEY_SIZE_256: 256,
293      HUKS_AES_KEY_SIZE_512: 512,
294
295      HUKS_CURVE25519_KEY_SIZE_256: 256,
296
297      HUKS_DH_KEY_SIZE_2048: 2048,
298      HUKS_DH_KEY_SIZE_3072: 3072,
299      HUKS_DH_KEY_SIZE_4096: 4096,
300    },
301
302    HuksKeyAlg: {
303      HUKS_ALG_RSA: 1,
304      HUKS_ALG_ECC: 2,
305      HUKS_ALG_DSA: 3,
306
307      HUKS_ALG_AES: 20,
308      HUKS_ALG_HMAC: 50,
309      HUKS_ALG_HKDF: 51,
310      HUKS_ALG_PBKDF2: 52,
311
312      HUKS_ALG_ECDH: 100,
313      HUKS_ALG_X25519: 101,
314      HUKS_ALG_ED25519: 102,
315      HUKS_ALG_DH: 103,
316    },
317
318    HuksKeyGenerateType: {
319      HUKS_KEY_GENERATE_TYPE_DEFAULT: 0,
320      HUKS_KEY_GENERATE_TYPE_DERIVE: 1,
321      HUKS_KEY_GENERATE_TYPE_AGREE: 2,
322    },
323
324    HuksKeyFlag: {
325      HUKS_KEY_FLAG_IMPORT_KEY: 1,
326      HUKS_KEY_FLAG_GENERATE_KEY: 2,
327      HUKS_KEY_FLAG_AGREE_KEY: 3,
328      HUKS_KEY_FLAG_DERIVE_KEY: 4,
329    },
330
331    HuksKeyStorageType: {
332      HUKS_STORAGE_TEMP: 0,
333      HUKS_STORAGE_PERSISTENT: 1,
334    },
335
336    HuksSendType: {
337      HUKS_SEND_TYPE_ASYNC: 0,
338      HUKS_SEND_TYPE_SYNC: 1,
339    },
340
341    HuksTagType: {
342      HUKS_TAG_TYPE_INVALID: 0,
343      HUKS_TAG_TYPE_INT: 1,
344      HUKS_TAG_TYPE_UINT: 2,
345      HUKS_TAG_TYPE_ULONG: 3,
346      HUKS_TAG_TYPE_BOOL: 4,
347      HUKS_TAG_TYPE_BYTES: 5,
348    },
349    HuksTag: {
350      HUKS_TAG_INVALID: 0,
351
352      HUKS_TAG_ALGORITHM: 1,
353      HUKS_TAG_PURPOSE: 2,
354      HUKS_TAG_KEY_SIZE: 3,
355      HUKS_TAG_DIGEST: 4,
356      HUKS_TAG_PADDING: 5,
357      HUKS_TAG_BLOCK_MODE: 6,
358      HUKS_TAG_KEY_TYPE: 7,
359      HUKS_TAG_ASSOCIATED_DATA: 8,
360      HUKS_TAG_NONCE: 9,
361      HUKS_TAG_IV: 10,
362
363      HUKS_TAG_INFO: 11,
364      HUKS_TAG_SALT: 12,
365      HUKS_TAG_PWD: 13,
366      HUKS_TAG_ITERATION: 14,
367
368      HUKS_TAG_KEY_GENERATE_TYPE: 15,
369      HUKS_TAG_DERIVE_MAIN_KEY: 16,
370      HUKS_TAG_DERIVE_FACTOR: 17,
371      HUKS_TAG_DERIVE_ALG: 18,
372      HUKS_TAG_AGREE_ALG: 19,
373      HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS: 20,
374      HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS: 21,
375      HUKS_TAG_AGREE_PUBLIC_KEY: 22,
376      HUKS_TAG_KEY_ALIAS: 23,
377      HUKS_TAG_DERIVE_KEY_SIZE: 24,
378
379      HUKS_TAG_ACTIVE_DATETIME: 201,
380
381      HUKS_TAG_ORIGINATION_EXPIRE_DATETIME: 202,
382
383      HUKS_TAG_USAGE_EXPIRE_DATETIME: 203,
384
385      HUKS_TAG_CREATION_DATETIME: 204,
386
387      HUKS_TAG_ALL_USERS: 301,
388      HUKS_TAG_USER_ID: 302,
389      HUKS_TAG_NO_AUTH_REQUIRED: 303,
390      HUKS_TAG_USER_AUTH_TYPE: 304,
391      HUKS_TAG_AUTH_TIMEOUT: 305,
392      HUKS_TAG_AUTH_TOKEN: 306,
393
394      HUKS_TAG_ATTESTATION_CHALLENGE: 501,
395      HUKS_TAG_ATTESTATION_APPLICATION_ID: 502,
396      HUKS_TAG_ATTESTATION_ID_BRAND: 503,
397      HUKS_TAG_ATTESTATION_ID_DEVICE: 504,
398      HUKS_TAG_ATTESTATION_ID_PRODUCT: 505,
399      HUKS_TAG_ATTESTATION_ID_SERIAL: 506,
400      HUKS_TAG_ATTESTATION_ID_IMEI: 507,
401      HUKS_TAG_ATTESTATION_ID_MEID: 508,
402      HUKS_TAG_ATTESTATION_ID_MANUFACTURER: 509,
403      HUKS_TAG_ATTESTATION_ID_MODEL: 510,
404      HUKS_TAG_ATTESTATION_ID_ALIAS: 511,
405      HUKS_TAG_ATTESTATION_ID_SOCID: 512,
406      HUKS_TAG_ATTESTATION_ID_UDID: 513,
407      HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO: 514,
408      HUKS_TAG_ATTESTATION_ID_VERSION_INFO: 515,
409
410      HUKS_TAG_IS_KEY_ALIAS: 1001,
411      HUKS_TAG_KEY_STORAGE_FLAG: 1002,
412      HUKS_TAG_IS_ALLOWED_WRAP: 1003,
413      HUKS_TAG_KEY_WRAP_TYPE: 1004,
414      HUKS_TAG_KEY_AUTH_ID: 1005,
415      HUKS_TAG_KEY_ROLE: 1006,
416      HUKS_TAG_KEY_FLAG: 1007,
417      HUKS_TAG_IS_ASYNCHRONIZED: 1008,
418      HUKS_TAG_SECURE_KEY_ALIAS: 1009,
419      HUKS_TAG_SECURE_KEY_UUID: 1010,
420      HUKS_TAG_KEY_DOMAIN: 1011,
421
422      HUKS_TAG_PROCESS_NAME: 10001,
423      HUKS_TAG_PACKAGE_NAME: 10002,
424      HUKS_TAG_ACCESS_TIME: 10003,
425      HUKS_TAG_USES_TIME: 10004,
426      HUKS_TAG_CRYPTO_CTX: 10005,
427      HUKS_TAG_KEY: 10006,
428      HUKS_TAG_KEY_VERSION: 10007,
429      HUKS_TAG_PAYLOAD_LEN: 10008,
430      HUKS_TAG_AE_TAG: 10009,
431      HUKS_TAG_IS_KEY_HANDLE: 10010,
432
433      HUKS_TAG_OS_VERSION: 10101,
434      HUKS_TAG_OS_PATCHLEVEL: 10102,
435
436      HUKS_TAG_SYMMETRIC_KEY_DATA: 20001,
437      HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA: 20002,
438      HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA: 20003,
439    },
440  }
441  return huks
442}