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}