1526fd984Sopenharmony_ci/* 2526fd984Sopenharmony_ci * Copyright (c) 2021-2024 Huawei Device Co., Ltd. 3526fd984Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4526fd984Sopenharmony_ci * you may not use this file except in compliance with the License. 5526fd984Sopenharmony_ci * You may obtain a copy of the License at 6526fd984Sopenharmony_ci * 7526fd984Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8526fd984Sopenharmony_ci * 9526fd984Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10526fd984Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11526fd984Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12526fd984Sopenharmony_ci * See the License for the specific language governing permissions and 13526fd984Sopenharmony_ci * limitations under the License. 14526fd984Sopenharmony_ci */ 15526fd984Sopenharmony_ci 16526fd984Sopenharmony_ci#include "huks_napi.h" 17526fd984Sopenharmony_ci 18526fd984Sopenharmony_ci#include "napi/native_api.h" 19526fd984Sopenharmony_ci#include "napi/native_node_api.h" 20526fd984Sopenharmony_ci 21526fd984Sopenharmony_ci#include "hks_type.h" 22526fd984Sopenharmony_ci#include "huks_napi_abort.h" 23526fd984Sopenharmony_ci#include "huks_napi_abort_session.h" 24526fd984Sopenharmony_ci#include "huks_napi_attest_key_item_as_user.h" 25526fd984Sopenharmony_ci#include "huks_napi_attest_key_item.h" 26526fd984Sopenharmony_ci#include "huks_napi_delete_key.h" 27526fd984Sopenharmony_ci#include "huks_napi_delete_key_item_as_user.h" 28526fd984Sopenharmony_ci#include "huks_napi_delete_key_item.h" 29526fd984Sopenharmony_ci#include "huks_napi_export_key.h" 30526fd984Sopenharmony_ci#include "huks_napi_export_key_item_as_user.h" 31526fd984Sopenharmony_ci#include "huks_napi_export_key_item.h" 32526fd984Sopenharmony_ci#include "huks_napi_generate_key.h" 33526fd984Sopenharmony_ci#include "huks_napi_generate_key_item_as_user.h" 34526fd984Sopenharmony_ci#include "huks_napi_generate_key_item.h" 35526fd984Sopenharmony_ci#include "huks_napi_get_key_item_properties_as_user.h" 36526fd984Sopenharmony_ci#include "huks_napi_get_key_item_properties.h" 37526fd984Sopenharmony_ci#include "huks_napi_get_key_properties.h" 38526fd984Sopenharmony_ci#include "huks_napi_get_sdk_version.h" 39526fd984Sopenharmony_ci#include "huks_napi_has_key_item_as_user.h" 40526fd984Sopenharmony_ci#include "huks_napi_has_key_item.h" 41526fd984Sopenharmony_ci#include "huks_napi_import_key.h" 42526fd984Sopenharmony_ci#include "huks_napi_import_key_item_as_user.h" 43526fd984Sopenharmony_ci#include "huks_napi_import_key_item.h" 44526fd984Sopenharmony_ci#include "huks_napi_import_wrapped_key_item_as_user.h" 45526fd984Sopenharmony_ci#include "huks_napi_import_wrapped_key_item.h" 46526fd984Sopenharmony_ci#include "huks_napi_init.h" 47526fd984Sopenharmony_ci#include "huks_napi_init_session_as_user.h" 48526fd984Sopenharmony_ci#include "huks_napi_init_session.h" 49526fd984Sopenharmony_ci#include "huks_napi_is_key_exist.h" 50526fd984Sopenharmony_ci#include "huks_napi_is_key_item_exist.h" 51526fd984Sopenharmony_ci#include "huks_napi_list_aliases.h" 52526fd984Sopenharmony_ci#include "huks_napi_update_finish.h" 53526fd984Sopenharmony_ci#include "huks_napi_update_finish_session.h" 54526fd984Sopenharmony_ci 55526fd984Sopenharmony_cinamespace HuksNapi { 56526fd984Sopenharmony_ciinline void AddInt32Property(napi_env env, napi_value object, const char *name, int32_t value) 57526fd984Sopenharmony_ci{ 58526fd984Sopenharmony_ci napi_value property = nullptr; 59526fd984Sopenharmony_ci NAPI_CALL_RETURN_VOID(env, napi_create_int32(env, value, &property)); 60526fd984Sopenharmony_ci NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, object, name, property)); 61526fd984Sopenharmony_ci} 62526fd984Sopenharmony_ci 63526fd984Sopenharmony_cistatic void AddHuksTagPart1(napi_env env, napi_value tag) 64526fd984Sopenharmony_ci{ 65526fd984Sopenharmony_ci /* Invalid TAG */ 66526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_INVALID", HKS_TAG_INVALID); 67526fd984Sopenharmony_ci 68526fd984Sopenharmony_ci /* Base algrithom TAG: 1 - 200 */ 69526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ALGORITHM", HKS_TAG_ALGORITHM); 70526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_PURPOSE", HKS_TAG_PURPOSE); 71526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_SIZE", HKS_TAG_KEY_SIZE); 72526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_DIGEST", HKS_TAG_DIGEST); 73526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_PADDING", HKS_TAG_PADDING); 74526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_BLOCK_MODE", HKS_TAG_BLOCK_MODE); 75526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_TYPE", HKS_TAG_KEY_TYPE); 76526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ASSOCIATED_DATA", HKS_TAG_ASSOCIATED_DATA); 77526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_NONCE", HKS_TAG_NONCE); 78526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IV", HKS_TAG_IV); 79526fd984Sopenharmony_ci 80526fd984Sopenharmony_ci /* Key derivation TAG */ 81526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_INFO", HKS_TAG_INFO); 82526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_SALT", HKS_TAG_SALT); 83526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_PWD", HKS_TAG_PWD); 84526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ITERATION", HKS_TAG_ITERATION); 85526fd984Sopenharmony_ci 86526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_GENERATE_TYPE", HKS_TAG_KEY_GENERATE_TYPE); 87526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_DERIVE_MAIN_KEY", HKS_TAG_DERIVE_MAIN_KEY); 88526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_DERIVE_FACTOR", HKS_TAG_DERIVE_FACTOR); 89526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_DERIVE_ALG", HKS_TAG_DERIVE_ALG); 90526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AGREE_ALG", HKS_TAG_AGREE_ALG); 91526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS", HKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS); 92526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS", HKS_TAG_AGREE_PRIVATE_KEY_ALIAS); 93526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AGREE_PUBLIC_KEY", HKS_TAG_AGREE_PUBLIC_KEY); 94526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_ALIAS", HKS_TAG_KEY_ALIAS); 95526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_DERIVE_KEY_SIZE", HKS_TAG_DERIVE_KEY_SIZE); 96526fd984Sopenharmony_ci 97526fd984Sopenharmony_ci /* 98526fd984Sopenharmony_ci * Key authentication related TAG: 201 - 300 99526fd984Sopenharmony_ci * 100526fd984Sopenharmony_ci * Start of validity 101526fd984Sopenharmony_ci */ 102526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ACTIVE_DATETIME", HKS_TAG_ACTIVE_DATETIME); 103526fd984Sopenharmony_ci 104526fd984Sopenharmony_ci /* Date when new "messages" should not be created. */ 105526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ORIGINATION_EXPIRE_DATETIME", HKS_TAG_ORIGINATION_EXPIRE_DATETIME); 106526fd984Sopenharmony_ci 107526fd984Sopenharmony_ci /* Date when existing "messages" should not be used. */ 108526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_USAGE_EXPIRE_DATETIME", HKS_TAG_USAGE_EXPIRE_DATETIME); 109526fd984Sopenharmony_ci 110526fd984Sopenharmony_ci /* Key creation time */ 111526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_CREATION_DATETIME", HKS_TAG_CREATION_DATETIME); 112526fd984Sopenharmony_ci 113526fd984Sopenharmony_ci /* Other authentication related TAG: 301 - 500 */ 114526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ALL_USERS", HKS_TAG_ALL_USERS); 115526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_USER_ID", HKS_TAG_USER_ID); 116526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_NO_AUTH_REQUIRED", HKS_TAG_NO_AUTH_REQUIRED); 117526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_USER_AUTH_TYPE", HKS_TAG_USER_AUTH_TYPE); 118526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AUTH_TIMEOUT", HKS_TAG_AUTH_TIMEOUT); 119526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AUTH_TOKEN", HKS_TAG_AUTH_TOKEN); 120526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AUTH_STORAGE_LEVEL", HKS_TAG_AUTH_STORAGE_LEVEL); 121526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_USER_AUTH_MODE", HKS_TAG_USER_AUTH_MODE); 122526fd984Sopenharmony_ci} 123526fd984Sopenharmony_ci 124526fd984Sopenharmony_cistatic void AddHuksTagPart2(napi_env env, napi_value tag) 125526fd984Sopenharmony_ci{ 126526fd984Sopenharmony_ci /* Attestation related TAG: 501 - 600 */ 127526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_CHALLENGE", HKS_TAG_ATTESTATION_CHALLENGE); 128526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_APPLICATION_ID", HKS_TAG_ATTESTATION_APPLICATION_ID); 129526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_BRAND", HKS_TAG_ATTESTATION_ID_BRAND); 130526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_DEVICE", HKS_TAG_ATTESTATION_ID_DEVICE); 131526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_PRODUCT", HKS_TAG_ATTESTATION_ID_PRODUCT); 132526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_SERIAL", HKS_TAG_ATTESTATION_ID_SERIAL); 133526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_IMEI", HKS_TAG_ATTESTATION_ID_IMEI); 134526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_MEID", HKS_TAG_ATTESTATION_ID_MEID); 135526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_MANUFACTURER", HKS_TAG_ATTESTATION_ID_MANUFACTURER); 136526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_MODEL", HKS_TAG_ATTESTATION_ID_MODEL); 137526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_ALIAS", HKS_TAG_ATTESTATION_ID_ALIAS); 138526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_SOCID", HKS_TAG_ATTESTATION_ID_SOCID); 139526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_UDID", HKS_TAG_ATTESTATION_ID_UDID); 140526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO", HKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO); 141526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ATTESTATION_ID_VERSION_INFO", HKS_TAG_ATTESTATION_ID_VERSION_INFO); 142526fd984Sopenharmony_ci 143526fd984Sopenharmony_ci /* 144526fd984Sopenharmony_ci * Other reserved TAG: 601 - 1000 145526fd984Sopenharmony_ci * 146526fd984Sopenharmony_ci * Extention TAG: 1001 - 9999 147526fd984Sopenharmony_ci */ 148526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IS_KEY_ALIAS", HKS_TAG_IS_KEY_ALIAS); 149526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_STORAGE_FLAG", HKS_TAG_KEY_STORAGE_FLAG); 150526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IS_ALLOWED_WRAP", HKS_TAG_IS_ALLOWED_WRAP); 151526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_WRAP_TYPE", HKS_TAG_KEY_WRAP_TYPE); 152526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_AUTH_ID", HKS_TAG_KEY_AUTH_ID); 153526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_ROLE", HKS_TAG_KEY_ROLE); 154526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_FLAG", HKS_TAG_KEY_FLAG); 155526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IS_ASYNCHRONIZED", HKS_TAG_IS_ASYNCHRONIZED); 156526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_SECURE_KEY_ALIAS", HKS_TAG_SECURE_KEY_ALIAS); 157526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_SECURE_KEY_UUID", HKS_TAG_SECURE_KEY_UUID); 158526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_DOMAIN", HKS_TAG_KEY_DOMAIN); 159526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IS_DEVICE_PASSWORD_SET", HKS_TAG_IS_DEVICE_PASSWORD_SET); 160526fd984Sopenharmony_ci 161526fd984Sopenharmony_ci /* Inner-use TAG: 10001 - 10999 */ 162526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_PROCESS_NAME", HKS_TAG_PROCESS_NAME); 163526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_PACKAGE_NAME", HKS_TAG_PACKAGE_NAME); 164526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ACCESS_TIME", HKS_TAG_ACCESS_TIME); 165526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_USES_TIME", HKS_TAG_USES_TIME); 166526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_CRYPTO_CTX", HKS_TAG_CRYPTO_CTX); 167526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY", HKS_TAG_KEY); 168526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_VERSION", HKS_TAG_KEY_VERSION); 169526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_PAYLOAD_LEN", HKS_TAG_PAYLOAD_LEN); 170526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_AE_TAG", HKS_TAG_AE_TAG); 171526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IS_KEY_HANDLE", HKS_TAG_IS_KEY_HANDLE); 172526fd984Sopenharmony_ci} 173526fd984Sopenharmony_ci 174526fd984Sopenharmony_cistatic void AddHuksTagPart3(napi_env env, napi_value tag) 175526fd984Sopenharmony_ci{ 176526fd984Sopenharmony_ci /* Os version related TAG */ 177526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_OS_VERSION", HKS_TAG_OS_VERSION); 178526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_OS_PATCHLEVEL", HKS_TAG_OS_PATCHLEVEL); 179526fd984Sopenharmony_ci 180526fd984Sopenharmony_ci /* 181526fd984Sopenharmony_ci * Reversed TAGs for SOTER: 11000 - 12000 182526fd984Sopenharmony_ci * 183526fd984Sopenharmony_ci * Other TAGs: 20001 - N 184526fd984Sopenharmony_ci * TAGs used for paramSetOut 185526fd984Sopenharmony_ci */ 186526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_SYMMETRIC_KEY_DATA", HKS_TAG_SYMMETRIC_KEY_DATA); 187526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA", HKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA); 188526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA", HKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA); 189526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_IMPORT_KEY_TYPE", HKS_TAG_IMPORT_KEY_TYPE); 190526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_UNWRAP_ALGORITHM_SUITE", HKS_TAG_UNWRAP_ALGORITHM_SUITE); 191526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_DERIVED_AGREED_KEY_STORAGE_FLAG", HKS_TAG_DERIVE_AGREE_KEY_STORAGE_FLAG); 192526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_RSA_PSS_SALT_LEN_TYPE", HKS_TAG_RSA_PSS_SALT_LEN_TYPE); 193526fd984Sopenharmony_ci 194526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_AUTH_ACCESS_TYPE", HKS_TAG_KEY_AUTH_ACCESS_TYPE); 195526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_SECURE_SIGN_TYPE", HKS_TAG_KEY_SECURE_SIGN_TYPE); 196526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_CHALLENGE_TYPE", HKS_TAG_CHALLENGE_TYPE); 197526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_CHALLENGE_POS", HKS_TAG_CHALLENGE_POS); 198526fd984Sopenharmony_ci AddInt32Property(env, tag, "HUKS_TAG_KEY_AUTH_PURPOSE", HKS_TAG_KEY_AUTH_PURPOSE); 199526fd984Sopenharmony_ci} 200526fd984Sopenharmony_ci 201526fd984Sopenharmony_cistatic napi_value CreateHuksTag(napi_env env) 202526fd984Sopenharmony_ci{ 203526fd984Sopenharmony_ci napi_value tag = nullptr; 204526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &tag)); 205526fd984Sopenharmony_ci 206526fd984Sopenharmony_ci AddHuksTagPart1(env, tag); 207526fd984Sopenharmony_ci AddHuksTagPart2(env, tag); 208526fd984Sopenharmony_ci AddHuksTagPart3(env, tag); 209526fd984Sopenharmony_ci 210526fd984Sopenharmony_ci return tag; 211526fd984Sopenharmony_ci} 212526fd984Sopenharmony_ci 213526fd984Sopenharmony_cistatic napi_value CreateHuksKeySize(napi_env env) 214526fd984Sopenharmony_ci{ 215526fd984Sopenharmony_ci napi_value keySize = nullptr; 216526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keySize)); 217526fd984Sopenharmony_ci 218526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_RSA_KEY_SIZE_512", HKS_RSA_KEY_SIZE_512); 219526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_RSA_KEY_SIZE_768", HKS_RSA_KEY_SIZE_768); 220526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_RSA_KEY_SIZE_1024", HKS_RSA_KEY_SIZE_1024); 221526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_RSA_KEY_SIZE_2048", HKS_RSA_KEY_SIZE_2048); 222526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_RSA_KEY_SIZE_3072", HKS_RSA_KEY_SIZE_3072); 223526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_RSA_KEY_SIZE_4096", HKS_RSA_KEY_SIZE_4096); 224526fd984Sopenharmony_ci 225526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_ECC_KEY_SIZE_224", HKS_ECC_KEY_SIZE_224); 226526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_ECC_KEY_SIZE_256", HKS_ECC_KEY_SIZE_256); 227526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_ECC_KEY_SIZE_384", HKS_ECC_KEY_SIZE_384); 228526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_ECC_KEY_SIZE_521", HKS_ECC_KEY_SIZE_521); 229526fd984Sopenharmony_ci 230526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_AES_KEY_SIZE_128", HKS_AES_KEY_SIZE_128); 231526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_AES_KEY_SIZE_192", HKS_AES_KEY_SIZE_192); 232526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_AES_KEY_SIZE_256", HKS_AES_KEY_SIZE_256); 233526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_AES_KEY_SIZE_512", HKS_AES_KEY_SIZE_512); 234526fd984Sopenharmony_ci 235526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_CURVE25519_KEY_SIZE_256", HKS_CURVE25519_KEY_SIZE_256); 236526fd984Sopenharmony_ci 237526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_DH_KEY_SIZE_2048", HKS_DH_KEY_SIZE_2048); 238526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_DH_KEY_SIZE_3072", HKS_DH_KEY_SIZE_3072); 239526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_DH_KEY_SIZE_4096", HKS_DH_KEY_SIZE_4096); 240526fd984Sopenharmony_ci 241526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_SM2_KEY_SIZE_256", HKS_SM2_KEY_SIZE_256); 242526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_SM4_KEY_SIZE_128", HKS_SM4_KEY_SIZE_128); 243526fd984Sopenharmony_ci 244526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_DES_KEY_SIZE_64", HKS_DES_KEY_SIZE_64); 245526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_3DES_KEY_SIZE_128", HKS_3DES_KEY_SIZE_128); 246526fd984Sopenharmony_ci AddInt32Property(env, keySize, "HUKS_3DES_KEY_SIZE_192", HKS_3DES_KEY_SIZE_192); 247526fd984Sopenharmony_ci 248526fd984Sopenharmony_ci return keySize; 249526fd984Sopenharmony_ci} 250526fd984Sopenharmony_ci 251526fd984Sopenharmony_cistatic napi_value CreateHuksKeyAlg(napi_env env) 252526fd984Sopenharmony_ci{ 253526fd984Sopenharmony_ci napi_value keyAlg = nullptr; 254526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyAlg)); 255526fd984Sopenharmony_ci 256526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_RSA", HKS_ALG_RSA); 257526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_ECC", HKS_ALG_ECC); 258526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_DSA", HKS_ALG_DSA); 259526fd984Sopenharmony_ci 260526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_AES", HKS_ALG_AES); 261526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_HMAC", HKS_ALG_HMAC); 262526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_HKDF", HKS_ALG_HKDF); 263526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_PBKDF2", HKS_ALG_PBKDF2); 264526fd984Sopenharmony_ci 265526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_ECDH", HKS_ALG_ECDH); 266526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_X25519", HKS_ALG_X25519); 267526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_ED25519", HKS_ALG_ED25519); 268526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_DH", HKS_ALG_DH); 269526fd984Sopenharmony_ci 270526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_SM2", HKS_ALG_SM2); 271526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_SM3", HKS_ALG_SM3); 272526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_SM4", HKS_ALG_SM4); 273526fd984Sopenharmony_ci 274526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_DES", HKS_ALG_DES); 275526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_3DES", HKS_ALG_3DES); 276526fd984Sopenharmony_ci AddInt32Property(env, keyAlg, "HUKS_ALG_CMAC", HKS_ALG_CMAC); 277526fd984Sopenharmony_ci 278526fd984Sopenharmony_ci return keyAlg; 279526fd984Sopenharmony_ci} 280526fd984Sopenharmony_ci 281526fd984Sopenharmony_cistatic napi_value CreateHuksKeyPurpose(napi_env env) 282526fd984Sopenharmony_ci{ 283526fd984Sopenharmony_ci napi_value keyPurpose = nullptr; 284526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyPurpose)); 285526fd984Sopenharmony_ci 286526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_ENCRYPT", HKS_KEY_PURPOSE_ENCRYPT); 287526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_DECRYPT", HKS_KEY_PURPOSE_DECRYPT); 288526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_SIGN", HKS_KEY_PURPOSE_SIGN); 289526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_VERIFY", HKS_KEY_PURPOSE_VERIFY); 290526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_DERIVE", HKS_KEY_PURPOSE_DERIVE); 291526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_WRAP", HKS_KEY_PURPOSE_WRAP); 292526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_UNWRAP", HKS_KEY_PURPOSE_UNWRAP); 293526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_MAC", HKS_KEY_PURPOSE_MAC); 294526fd984Sopenharmony_ci AddInt32Property(env, keyPurpose, "HUKS_KEY_PURPOSE_AGREE", HKS_KEY_PURPOSE_AGREE); 295526fd984Sopenharmony_ci 296526fd984Sopenharmony_ci return keyPurpose; 297526fd984Sopenharmony_ci} 298526fd984Sopenharmony_ci 299526fd984Sopenharmony_cistatic napi_value CreateHuksKeyPadding(napi_env env) 300526fd984Sopenharmony_ci{ 301526fd984Sopenharmony_ci napi_value keyPadding = nullptr; 302526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyPadding)); 303526fd984Sopenharmony_ci 304526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_NONE", HKS_PADDING_NONE); 305526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_OAEP", HKS_PADDING_OAEP); 306526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_PSS", HKS_PADDING_PSS); 307526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_PKCS1_V1_5", HKS_PADDING_PKCS1_V1_5); 308526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_PKCS5", HKS_PADDING_PKCS5); 309526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_PKCS7", HKS_PADDING_PKCS7); 310526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_ISO_IEC_9796_2", HKS_PADDING_ISO_IEC_9796_2); 311526fd984Sopenharmony_ci AddInt32Property(env, keyPadding, "HUKS_PADDING_ISO_IEC_9797_1", HKS_PADDING_ISO_IEC_9797_1); 312526fd984Sopenharmony_ci 313526fd984Sopenharmony_ci return keyPadding; 314526fd984Sopenharmony_ci} 315526fd984Sopenharmony_ci 316526fd984Sopenharmony_cistatic napi_value CreateHuksCipherMode(napi_env env) 317526fd984Sopenharmony_ci{ 318526fd984Sopenharmony_ci napi_value keyCipherMode = nullptr; 319526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyCipherMode)); 320526fd984Sopenharmony_ci 321526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_ECB", HKS_MODE_ECB); 322526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_CBC", HKS_MODE_CBC); 323526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_CTR", HKS_MODE_CTR); 324526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_OFB", HKS_MODE_OFB); 325526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_CFB", HKS_MODE_CFB); 326526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_CCM", HKS_MODE_CCM); 327526fd984Sopenharmony_ci AddInt32Property(env, keyCipherMode, "HUKS_MODE_GCM", HKS_MODE_GCM); 328526fd984Sopenharmony_ci 329526fd984Sopenharmony_ci return keyCipherMode; 330526fd984Sopenharmony_ci} 331526fd984Sopenharmony_ci 332526fd984Sopenharmony_cistatic napi_value CreateHuksKeyStorageType(napi_env env) 333526fd984Sopenharmony_ci{ 334526fd984Sopenharmony_ci napi_value keyStorageType = nullptr; 335526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyStorageType)); 336526fd984Sopenharmony_ci 337526fd984Sopenharmony_ci AddInt32Property(env, keyStorageType, "HUKS_STORAGE_TEMP", HKS_STORAGE_TEMP); 338526fd984Sopenharmony_ci AddInt32Property(env, keyStorageType, "HUKS_STORAGE_PERSISTENT", HKS_STORAGE_PERSISTENT); 339526fd984Sopenharmony_ci AddInt32Property(env, keyStorageType, "HUKS_STORAGE_ONLY_USED_IN_HUKS", HKS_STORAGE_ONLY_USED_IN_HUKS); 340526fd984Sopenharmony_ci AddInt32Property(env, keyStorageType, "HUKS_STORAGE_KEY_EXPORT_ALLOWED", HKS_STORAGE_ALLOW_KEY_EXPORTED); 341526fd984Sopenharmony_ci 342526fd984Sopenharmony_ci return keyStorageType; 343526fd984Sopenharmony_ci} 344526fd984Sopenharmony_ci 345526fd984Sopenharmony_cistatic napi_value CreateHuksUnwrapSuite(napi_env env) 346526fd984Sopenharmony_ci{ 347526fd984Sopenharmony_ci napi_value huksUnwrapSuite = nullptr; 348526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &huksUnwrapSuite)); 349526fd984Sopenharmony_ci 350526fd984Sopenharmony_ci AddInt32Property(env, huksUnwrapSuite, "HUKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING", 351526fd984Sopenharmony_ci HKS_UNWRAP_SUITE_X25519_AES_256_GCM_NOPADDING); 352526fd984Sopenharmony_ci AddInt32Property(env, huksUnwrapSuite, "HUKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING", 353526fd984Sopenharmony_ci HKS_UNWRAP_SUITE_ECDH_AES_256_GCM_NOPADDING); 354526fd984Sopenharmony_ci return huksUnwrapSuite; 355526fd984Sopenharmony_ci} 356526fd984Sopenharmony_ci 357526fd984Sopenharmony_cistatic void AddHuksErrorCodePart1(napi_env env, napi_value errorCode) 358526fd984Sopenharmony_ci{ 359526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_SUCCESS", HKS_SUCCESS); 360526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_FAILURE", HKS_FAILURE); 361526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_BAD_STATE", HKS_ERROR_BAD_STATE); 362526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_ARGUMENT", HKS_ERROR_INVALID_ARGUMENT); 363526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_NOT_SUPPORTED", HKS_ERROR_NOT_SUPPORTED); 364526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_NO_PERMISSION", HKS_ERROR_NO_PERMISSION); 365526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INSUFFICIENT_DATA", HKS_ERROR_INSUFFICIENT_DATA); 366526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_BUFFER_TOO_SMALL", HKS_ERROR_BUFFER_TOO_SMALL); 367526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INSUFFICIENT_MEMORY", HKS_ERROR_INSUFFICIENT_MEMORY); 368526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_COMMUNICATION_FAILURE", HKS_ERROR_COMMUNICATION_FAILURE); 369526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_STORAGE_FAILURE", HKS_ERROR_STORAGE_FAILURE); 370526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_HARDWARE_FAILURE", HKS_ERROR_HARDWARE_FAILURE); 371526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_ALREADY_EXISTS", HKS_ERROR_ALREADY_EXISTS); 372526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_NOT_EXIST", HKS_ERROR_NOT_EXIST); 373526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_NULL_POINTER", HKS_ERROR_NULL_POINTER); 374526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_FILE_SIZE_FAIL", HKS_ERROR_FILE_SIZE_FAIL); 375526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_READ_FILE_FAIL", HKS_ERROR_READ_FILE_FAIL); 376526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_PUBLIC_KEY", HKS_ERROR_INVALID_PUBLIC_KEY); 377526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_PRIVATE_KEY", HKS_ERROR_INVALID_PRIVATE_KEY); 378526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_KEY_INFO", HKS_ERROR_INVALID_KEY_INFO); 379526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_HASH_NOT_EQUAL", HKS_ERROR_HASH_NOT_EQUAL); 380526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_MALLOC_FAIL", HKS_ERROR_MALLOC_FAIL); 381526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_WRITE_FILE_FAIL", HKS_ERROR_WRITE_FILE_FAIL); 382526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_REMOVE_FILE_FAIL", HKS_ERROR_REMOVE_FILE_FAIL); 383526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_OPEN_FILE_FAIL", HKS_ERROR_OPEN_FILE_FAIL); 384526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CLOSE_FILE_FAIL", HKS_ERROR_CLOSE_FILE_FAIL); 385526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_MAKE_DIR_FAIL", HKS_ERROR_MAKE_DIR_FAIL); 386526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_KEY_FILE", HKS_ERROR_INVALID_KEY_FILE); 387526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_IPC_MSG_FAIL", HKS_ERROR_IPC_MSG_FAIL); 388526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_REQUEST_OVERFLOWS", HKS_ERROR_REQUEST_OVERFLOWS); 389526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_PARAM_NOT_EXIST", HKS_ERROR_PARAM_NOT_EXIST); 390526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CRYPTO_ENGINE_ERROR", HKS_ERROR_CRYPTO_ENGINE_ERROR); 391526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_COMMUNICATION_TIMEOUT", HKS_ERROR_COMMUNICATION_TIMEOUT); 392526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_IPC_INIT_FAIL", HKS_ERROR_IPC_INIT_FAIL); 393526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_IPC_DLOPEN_FAIL", HKS_ERROR_IPC_DLOPEN_FAIL); 394526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_EFUSE_READ_FAIL", HKS_ERROR_EFUSE_READ_FAIL); 395526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST", HKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST); 396526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL", 397526fd984Sopenharmony_ci HKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL); 398526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_VERIFICATION_FAILED", HKS_ERROR_VERIFICATION_FAILED); 399526fd984Sopenharmony_ci} 400526fd984Sopenharmony_ci 401526fd984Sopenharmony_cistatic void AddHuksErrorCodePart2(napi_env env, napi_value errorCode) 402526fd984Sopenharmony_ci{ 403526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_GET_USERIAM_SECINFO_FAILED", HKS_ERROR_GET_USERIAM_SECINFO_FAILED); 404526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_GET_USERIAM_AUTHINFO_FAILED", HKS_ERROR_GET_USERIAM_AUTHINFO_FAILED); 405526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_USER_AUTH_TYPE_NOT_SUPPORT", HKS_ERROR_USER_AUTH_TYPE_NOT_SUPPORT); 406526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_KEY_AUTH_FAILED", HKS_ERROR_KEY_AUTH_FAILED); 407526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_DEVICE_NO_CREDENTIAL", HKS_ERROR_DEVICE_NO_CREDENTIAL); 408526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_API_NOT_SUPPORTED", HKS_ERROR_API_NOT_SUPPORTED); 409526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_KEY_AUTH_PERMANENTLY_INVALIDATED", 410526fd984Sopenharmony_ci HKS_ERROR_KEY_AUTH_PERMANENTLY_INVALIDATED); 411526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_KEY_AUTH_VERIFY_FAILED", HKS_ERROR_KEY_AUTH_VERIFY_FAILED); 412526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_KEY_AUTH_TIME_OUT", HKS_ERROR_KEY_AUTH_TIME_OUT); 413526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST", HKS_ERROR_CREDENTIAL_NOT_EXIST); 414526fd984Sopenharmony_ci 415526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_ALG_FAIL", HKS_ERROR_CHECK_GET_ALG_FAIL); 416526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL", HKS_ERROR_CHECK_GET_KEY_SIZE_FAIL); 417526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_PADDING_FAIL", HKS_ERROR_CHECK_GET_PADDING_FAIL); 418526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_PURPOSE_FAIL", HKS_ERROR_CHECK_GET_PURPOSE_FAIL); 419526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_DIGEST_FAIL", HKS_ERROR_CHECK_GET_DIGEST_FAIL); 420526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_MODE_FAIL", HKS_ERROR_CHECK_GET_MODE_FAIL); 421526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_NONCE_FAIL", HKS_ERROR_CHECK_GET_NONCE_FAIL); 422526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_AAD_FAIL", HKS_ERROR_CHECK_GET_AAD_FAIL); 423526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_IV_FAIL", HKS_ERROR_CHECK_GET_IV_FAIL); 424526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_AE_TAG_FAIL", HKS_ERROR_CHECK_GET_AE_TAG_FAIL); 425526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_SALT_FAIL", HKS_ERROR_CHECK_GET_SALT_FAIL); 426526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_ITERATION_FAIL", HKS_ERROR_CHECK_GET_ITERATION_FAIL); 427526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_ALGORITHM", HKS_ERROR_INVALID_ALGORITHM); 428526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_KEY_SIZE", HKS_ERROR_INVALID_KEY_SIZE); 429526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_PADDING", HKS_ERROR_INVALID_PADDING); 430526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_PURPOSE", HKS_ERROR_INVALID_PURPOSE); 431526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_MODE", HKS_ERROR_INVALID_MODE); 432526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_DIGEST", HKS_ERROR_INVALID_DIGEST); 433526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_SIGNATURE_SIZE", HKS_ERROR_INVALID_SIGNATURE_SIZE); 434526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_IV", HKS_ERROR_INVALID_IV); 435526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_AAD", HKS_ERROR_INVALID_AAD); 436526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_NONCE", HKS_ERROR_INVALID_NONCE); 437526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_AE_TAG", HKS_ERROR_INVALID_AE_TAG); 438526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_SALT", HKS_ERROR_INVALID_SALT); 439526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_ITERATION", HKS_ERROR_INVALID_ITERATION); 440526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_OPERATION", HKS_ERROR_INVALID_OPERATION); 441526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_WRAPPED_FORMAT", HKS_ERROR_INVALID_WRAPPED_FORMAT); 442526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_USAGE_OF_KEY", HKS_ERROR_INVALID_USAGE_OF_KEY); 443526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INTERNAL_ERROR", HKS_ERROR_INTERNAL_ERROR); 444526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_UNKNOWN_ERROR", HKS_ERROR_UNKNOWN_ERROR); 445526fd984Sopenharmony_ci} 446526fd984Sopenharmony_ci 447526fd984Sopenharmony_cistatic void AddHuksErrorCodePart3(napi_env env, napi_value errorCode) 448526fd984Sopenharmony_ci{ 449526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_AUTH_TYP_FAILED", HKS_ERROR_CHECK_GET_AUTH_TYP_FAILED); 450526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_CHALLENGE_TYPE_FAILED", 451526fd984Sopenharmony_ci HKS_ERROR_CHECK_GET_CHALLENGE_TYPE_FAILED); 452526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_ACCESS_TYPE_FAILED", 453526fd984Sopenharmony_ci HKS_ERROR_CHECK_GET_ACCESS_TYPE_FAILED); 454526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_CHECK_GET_AUTH_TOKEN_FAILED", HKS_ERROR_CHECK_GET_AUTH_TOKEN_FAILED); 455526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_TIME_OUT", HKS_ERROR_INVALID_TIME_OUT); 456526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_AUTH_TYPE", HKS_ERROR_INVALID_AUTH_TYPE); 457526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_CHALLENGE_TYPE", HKS_ERROR_INVALID_CHALLENGE_TYPE); 458526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_ACCESS_TYPE", HKS_ERROR_INVALID_ACCESS_TYPE); 459526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_AUTH_TOKEN", HKS_ERROR_INVALID_AUTH_TOKEN); 460526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERROR_INVALID_SECURE_SIGN_TYPE", HKS_ERROR_INVALID_SECURE_SIGN_TYPE); 461526fd984Sopenharmony_ci} 462526fd984Sopenharmony_ci 463526fd984Sopenharmony_cistatic napi_value CreateHuksErrorCode(napi_env env) 464526fd984Sopenharmony_ci{ 465526fd984Sopenharmony_ci napi_value errorCode = nullptr; 466526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &errorCode)); 467526fd984Sopenharmony_ci 468526fd984Sopenharmony_ci AddHuksErrorCodePart1(env, errorCode); 469526fd984Sopenharmony_ci AddHuksErrorCodePart2(env, errorCode); 470526fd984Sopenharmony_ci AddHuksErrorCodePart3(env, errorCode); 471526fd984Sopenharmony_ci 472526fd984Sopenharmony_ci return errorCode; 473526fd984Sopenharmony_ci} 474526fd984Sopenharmony_ci 475526fd984Sopenharmony_cistatic void AddHuksErrCodePart(napi_env env, napi_value errorCode) 476526fd984Sopenharmony_ci{ 477526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_PERMISSION_FAIL", HUKS_ERR_CODE_PERMISSION_FAIL); 478526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_NOT_SYSTEM_APP", HUKS_ERR_CODE_NOT_SYSTEM_APP); 479526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_ILLEGAL_ARGUMENT", HUKS_ERR_CODE_ILLEGAL_ARGUMENT); 480526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_NOT_SUPPORTED_API", HUKS_ERR_CODE_NOT_SUPPORTED_API); 481526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED", HUKS_ERR_CODE_FEATURE_NOT_SUPPORTED); 482526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT", 483526fd984Sopenharmony_ci HUKS_ERR_CODE_MISSING_CRYPTO_ALG_ARGUMENT); 484526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT", 485526fd984Sopenharmony_ci HUKS_ERR_CODE_INVALID_CRYPTO_ALG_ARGUMENT); 486526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_FILE_OPERATION_FAIL", HUKS_ERR_CODE_FILE_OPERATION_FAIL); 487526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_COMMUNICATION_FAIL", HUKS_ERR_CODE_COMMUNICATION_FAIL); 488526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_CRYPTO_FAIL", HUKS_ERR_CODE_CRYPTO_FAIL); 489526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED", 490526fd984Sopenharmony_ci HUKS_ERR_CODE_KEY_AUTH_PERMANENTLY_INVALIDATED); 491526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED", HUKS_ERR_CODE_KEY_AUTH_VERIFY_FAILED); 492526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_KEY_AUTH_TIME_OUT", HUKS_ERR_CODE_KEY_AUTH_TIME_OUT); 493526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_SESSION_LIMIT", HUKS_ERR_CODE_SESSION_LIMIT); 494526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_ITEM_NOT_EXIST", HUKS_ERR_CODE_ITEM_NOT_EXIST); 495526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_EXTERNAL_ERROR", HUKS_ERR_CODE_EXTERNAL_ERROR); 496526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST", HUKS_ERR_CODE_CREDENTIAL_NOT_EXIST); 497526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_INSUFFICIENT_MEMORY", HUKS_ERR_CODE_INSUFFICIENT_MEMORY); 498526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_CALL_SERVICE_FAILED", HUKS_ERR_CODE_CALL_SERVICE_FAILED); 499526fd984Sopenharmony_ci AddInt32Property(env, errorCode, "HUKS_ERR_CODE_DEVICE_PASSWORD_UNSET", HUKS_ERR_CODE_DEVICE_PASSWORD_UNSET); 500526fd984Sopenharmony_ci} 501526fd984Sopenharmony_ci 502526fd984Sopenharmony_cistatic napi_value CreateHuksErrCode(napi_env env) 503526fd984Sopenharmony_ci{ 504526fd984Sopenharmony_ci napi_value errorCode = nullptr; 505526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &errorCode)); 506526fd984Sopenharmony_ci 507526fd984Sopenharmony_ci AddHuksErrCodePart(env, errorCode); 508526fd984Sopenharmony_ci 509526fd984Sopenharmony_ci return errorCode; 510526fd984Sopenharmony_ci} 511526fd984Sopenharmony_ci 512526fd984Sopenharmony_cistatic napi_value CreateHuksKeyDigest(napi_env env) 513526fd984Sopenharmony_ci{ 514526fd984Sopenharmony_ci napi_value keyDisgest = nullptr; 515526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyDisgest)); 516526fd984Sopenharmony_ci 517526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_NONE", HKS_DIGEST_NONE); 518526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_MD5", HKS_DIGEST_MD5); 519526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_SHA1", HKS_DIGEST_SHA1); 520526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_SHA224", HKS_DIGEST_SHA224); 521526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_SHA256", HKS_DIGEST_SHA256); 522526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_SHA384", HKS_DIGEST_SHA384); 523526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_SHA512", HKS_DIGEST_SHA512); 524526fd984Sopenharmony_ci AddInt32Property(env, keyDisgest, "HUKS_DIGEST_SM3", HKS_DIGEST_SM3); 525526fd984Sopenharmony_ci 526526fd984Sopenharmony_ci return keyDisgest; 527526fd984Sopenharmony_ci} 528526fd984Sopenharmony_ci 529526fd984Sopenharmony_cistatic napi_value CreateHuksKeyGenerateType(napi_env env) 530526fd984Sopenharmony_ci{ 531526fd984Sopenharmony_ci napi_value keyGenerateType = nullptr; 532526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyGenerateType)); 533526fd984Sopenharmony_ci 534526fd984Sopenharmony_ci AddInt32Property(env, keyGenerateType, "HUKS_KEY_GENERATE_TYPE_DEFAULT", HKS_KEY_GENERATE_TYPE_DEFAULT); 535526fd984Sopenharmony_ci AddInt32Property(env, keyGenerateType, "HUKS_KEY_GENERATE_TYPE_DERIVE", HKS_KEY_GENERATE_TYPE_DERIVE); 536526fd984Sopenharmony_ci AddInt32Property(env, keyGenerateType, "HUKS_KEY_GENERATE_TYPE_AGREE", HKS_KEY_GENERATE_TYPE_AGREE); 537526fd984Sopenharmony_ci 538526fd984Sopenharmony_ci return keyGenerateType; 539526fd984Sopenharmony_ci} 540526fd984Sopenharmony_ci 541526fd984Sopenharmony_cistatic napi_value CreateHuksKeyFlag(napi_env env) 542526fd984Sopenharmony_ci{ 543526fd984Sopenharmony_ci napi_value keyFlag = nullptr; 544526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &keyFlag)); 545526fd984Sopenharmony_ci 546526fd984Sopenharmony_ci AddInt32Property(env, keyFlag, "HUKS_KEY_FLAG_IMPORT_KEY", HKS_KEY_FLAG_IMPORT_KEY); 547526fd984Sopenharmony_ci AddInt32Property(env, keyFlag, "HUKS_KEY_FLAG_GENERATE_KEY", HKS_KEY_FLAG_GENERATE_KEY); 548526fd984Sopenharmony_ci AddInt32Property(env, keyFlag, "HUKS_KEY_FLAG_AGREE_KEY", HKS_KEY_FLAG_AGREE_KEY); 549526fd984Sopenharmony_ci AddInt32Property(env, keyFlag, "HUKS_KEY_FLAG_DERIVE_KEY", HKS_KEY_FLAG_DERIVE_KEY); 550526fd984Sopenharmony_ci 551526fd984Sopenharmony_ci return keyFlag; 552526fd984Sopenharmony_ci} 553526fd984Sopenharmony_ci 554526fd984Sopenharmony_cistatic napi_value CreateHuksTagType(napi_env env) 555526fd984Sopenharmony_ci{ 556526fd984Sopenharmony_ci napi_value tagType = nullptr; 557526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &tagType)); 558526fd984Sopenharmony_ci 559526fd984Sopenharmony_ci AddInt32Property(env, tagType, "HUKS_TAG_TYPE_INVALID", HKS_TAG_TYPE_INVALID); 560526fd984Sopenharmony_ci AddInt32Property(env, tagType, "HUKS_TAG_TYPE_INT", HKS_TAG_TYPE_INT); 561526fd984Sopenharmony_ci AddInt32Property(env, tagType, "HUKS_TAG_TYPE_UINT", HKS_TAG_TYPE_UINT); 562526fd984Sopenharmony_ci AddInt32Property(env, tagType, "HUKS_TAG_TYPE_ULONG", HKS_TAG_TYPE_ULONG); 563526fd984Sopenharmony_ci AddInt32Property(env, tagType, "HUKS_TAG_TYPE_BOOL", HKS_TAG_TYPE_BOOL); 564526fd984Sopenharmony_ci AddInt32Property(env, tagType, "HUKS_TAG_TYPE_BYTES", HKS_TAG_TYPE_BYTES); 565526fd984Sopenharmony_ci 566526fd984Sopenharmony_ci return tagType; 567526fd984Sopenharmony_ci} 568526fd984Sopenharmony_ci 569526fd984Sopenharmony_cistatic napi_value CreateHuksImportKeyType(napi_env env) 570526fd984Sopenharmony_ci{ 571526fd984Sopenharmony_ci napi_value ImportKeyType = nullptr; 572526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &ImportKeyType)); 573526fd984Sopenharmony_ci 574526fd984Sopenharmony_ci AddInt32Property(env, ImportKeyType, "HUKS_KEY_TYPE_PUBLIC_KEY", HKS_KEY_TYPE_PUBLIC_KEY); 575526fd984Sopenharmony_ci AddInt32Property(env, ImportKeyType, "HUKS_KEY_TYPE_PRIVATE_KEY", HKS_KEY_TYPE_PRIVATE_KEY); 576526fd984Sopenharmony_ci AddInt32Property(env, ImportKeyType, "HUKS_KEY_TYPE_KEY_PAIR", HKS_KEY_TYPE_KEY_PAIR); 577526fd984Sopenharmony_ci 578526fd984Sopenharmony_ci return ImportKeyType; 579526fd984Sopenharmony_ci} 580526fd984Sopenharmony_ci 581526fd984Sopenharmony_cistatic napi_value CreateHuksSendType(napi_env env) 582526fd984Sopenharmony_ci{ 583526fd984Sopenharmony_ci napi_value sendType = nullptr; 584526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &sendType)); 585526fd984Sopenharmony_ci 586526fd984Sopenharmony_ci AddInt32Property(env, sendType, "HUKS_SEND_TYPE_ASYNC", HKS_SEND_TYPE_ASYNC); 587526fd984Sopenharmony_ci AddInt32Property(env, sendType, "HUKS_SEND_TYPE_SYNC", HKS_SEND_TYPE_SYNC); 588526fd984Sopenharmony_ci 589526fd984Sopenharmony_ci return sendType; 590526fd984Sopenharmony_ci} 591526fd984Sopenharmony_ci 592526fd984Sopenharmony_cistatic napi_value CreateHuksUserAuthType(napi_env env) 593526fd984Sopenharmony_ci{ 594526fd984Sopenharmony_ci napi_value value = nullptr; 595526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 596526fd984Sopenharmony_ci 597526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_USER_AUTH_TYPE_FINGERPRINT", HKS_USER_AUTH_TYPE_FINGERPRINT); 598526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_USER_AUTH_TYPE_FACE", HKS_USER_AUTH_TYPE_FACE); 599526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_USER_AUTH_TYPE_PIN", HKS_USER_AUTH_TYPE_PIN); 600526fd984Sopenharmony_ci 601526fd984Sopenharmony_ci return value; 602526fd984Sopenharmony_ci} 603526fd984Sopenharmony_ci 604526fd984Sopenharmony_cistatic napi_value CreateHuksAuthAccessType(napi_env env) 605526fd984Sopenharmony_ci{ 606526fd984Sopenharmony_ci napi_value value = nullptr; 607526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 608526fd984Sopenharmony_ci 609526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD", HKS_AUTH_ACCESS_INVALID_CLEAR_PASSWORD); 610526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL", HKS_AUTH_ACCESS_INVALID_NEW_BIO_ENROLL); 611526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_AUTH_ACCESS_ALWAYS_VALID", HKS_AUTH_ACCESS_ALWAYS_VALID); 612526fd984Sopenharmony_ci 613526fd984Sopenharmony_ci return value; 614526fd984Sopenharmony_ci} 615526fd984Sopenharmony_ci 616526fd984Sopenharmony_cistatic napi_value CreateHuksChallengeType(napi_env env) 617526fd984Sopenharmony_ci{ 618526fd984Sopenharmony_ci napi_value value = nullptr; 619526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 620526fd984Sopenharmony_ci 621526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_TYPE_NORMAL", HKS_CHALLENGE_TYPE_NORMAL); 622526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_TYPE_CUSTOM", HKS_CHALLENGE_TYPE_CUSTOM); 623526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_TYPE_NONE", HKS_CHALLENGE_TYPE_NONE); 624526fd984Sopenharmony_ci 625526fd984Sopenharmony_ci return value; 626526fd984Sopenharmony_ci} 627526fd984Sopenharmony_ci 628526fd984Sopenharmony_cistatic napi_value CreateHuksUserAuthMode(napi_env env) 629526fd984Sopenharmony_ci{ 630526fd984Sopenharmony_ci napi_value value = nullptr; 631526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 632526fd984Sopenharmony_ci 633526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_USER_AUTH_MODE_LOCAL", HKS_USER_AUTH_MODE_LOCAL); 634526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_USER_AUTH_MODE_COAUTH", HKS_USER_AUTH_MODE_COAUTH); 635526fd984Sopenharmony_ci 636526fd984Sopenharmony_ci return value; 637526fd984Sopenharmony_ci} 638526fd984Sopenharmony_ci 639526fd984Sopenharmony_cistatic napi_value CreateHuksChallengePosition(napi_env env) 640526fd984Sopenharmony_ci{ 641526fd984Sopenharmony_ci napi_value value = nullptr; 642526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 643526fd984Sopenharmony_ci 644526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_POS_0", HKS_CHALLENGE_POS_0); 645526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_POS_1", HKS_CHALLENGE_POS_1); 646526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_POS_2", HKS_CHALLENGE_POS_2); 647526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_CHALLENGE_POS_3", HKS_CHALLENGE_POS_3); 648526fd984Sopenharmony_ci 649526fd984Sopenharmony_ci return value; 650526fd984Sopenharmony_ci} 651526fd984Sopenharmony_ci 652526fd984Sopenharmony_cistatic napi_value CreateHuksSecureSignType(napi_env env) 653526fd984Sopenharmony_ci{ 654526fd984Sopenharmony_ci napi_value value = nullptr; 655526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 656526fd984Sopenharmony_ci 657526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_SECURE_SIGN_WITH_AUTHINFO", HKS_SECURE_SIGN_WITH_AUTHINFO); 658526fd984Sopenharmony_ci 659526fd984Sopenharmony_ci return value; 660526fd984Sopenharmony_ci} 661526fd984Sopenharmony_ci 662526fd984Sopenharmony_cistatic napi_value CreateHuksRsaPssSaltLenType(napi_env env) 663526fd984Sopenharmony_ci{ 664526fd984Sopenharmony_ci napi_value rsaPssSaltLenType = nullptr; 665526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &rsaPssSaltLenType)); 666526fd984Sopenharmony_ci 667526fd984Sopenharmony_ci AddInt32Property(env, rsaPssSaltLenType, "HUKS_RSA_PSS_SALT_LEN_DIGEST", HKS_RSA_PSS_SALTLEN_DIGEST); 668526fd984Sopenharmony_ci AddInt32Property(env, rsaPssSaltLenType, "HUKS_RSA_PSS_SALT_LEN_MAX", HKS_RSA_PSS_SALTLEN_MAX); 669526fd984Sopenharmony_ci 670526fd984Sopenharmony_ci return rsaPssSaltLenType; 671526fd984Sopenharmony_ci} 672526fd984Sopenharmony_ci 673526fd984Sopenharmony_cistatic napi_value CreateHuksAuthStorageLevel(napi_env env) 674526fd984Sopenharmony_ci{ 675526fd984Sopenharmony_ci napi_value value = nullptr; 676526fd984Sopenharmony_ci NAPI_CALL(env, napi_create_object(env, &value)); 677526fd984Sopenharmony_ci 678526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_AUTH_STORAGE_LEVEL_DE", HKS_AUTH_STORAGE_LEVEL_DE); 679526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_AUTH_STORAGE_LEVEL_CE", HKS_AUTH_STORAGE_LEVEL_CE); 680526fd984Sopenharmony_ci AddInt32Property(env, value, "HUKS_AUTH_STORAGE_LEVEL_ECE", HKS_AUTH_STORAGE_LEVEL_ECE); 681526fd984Sopenharmony_ci return value; 682526fd984Sopenharmony_ci} 683526fd984Sopenharmony_ci} // namespace HuksNapi 684526fd984Sopenharmony_ci 685526fd984Sopenharmony_ciusing namespace HuksNapi; 686526fd984Sopenharmony_ciusing namespace HuksNapiItem; 687526fd984Sopenharmony_ci 688526fd984Sopenharmony_ciextern "C" { 689526fd984Sopenharmony_cinapi_property_descriptor NAPI_FUNC_DESC[] = { 690526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("generateKey", HuksNapiGenerateKey), 691526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("deleteKey", HuksNapiDeleteKey), 692526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("getSdkVersion", HuksNapiGetSdkVersion), 693526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("importKey", HuksNapiImportKey), 694526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("exportKey", HuksNapiExportKey), 695526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("getKeyProperties", HuksNapiGetKeyProperties), 696526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("isKeyExist", HuksNapiIsKeyExist), 697526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("init", HuksNapiInit), 698526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("update", HuksNapiUpdate), 699526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("finish", HuksNapiFinish), 700526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("abort", HuksNapiAbort), 701526fd984Sopenharmony_ci 702526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("generateKeyItem", HuksNapiItemGenerateKey), 703526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("generateKeyItemAsUser", HuksNapiItemGenerateKeyAsUser), 704526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("deleteKeyItem", HuksNapiDeleteKeyItem), 705526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("deleteKeyItemAsUser", HuksNapiDeleteKeyItemAsUser), 706526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("importKeyItem", HuksNapiImportKeyItem), 707526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("importKeyItemAsUser", HuksNapiImportKeyItemAsUser), 708526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("importWrappedKeyItem", HuksNapiImportWrappedKeyItem), 709526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("importWrappedKeyItemAsUser", HuksNapiImportWrappedKeyItemAsUser), 710526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("exportKeyItem", HuksNapiExportKeyItem), 711526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("exportKeyItemAsUser", HuksNapiExportKeyItemAsUser), 712526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("getKeyItemProperties", HuksNapiGetKeyItemProperties), 713526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("getKeyItemPropertiesAsUser", HuksNapiGetKeyItemPropertiesAsUser), 714526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("isKeyItemExist", HuksNapiIsKeyItemExist), 715526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("hasKeyItem", HuksNapihasKeyItem), 716526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("hasKeyItemAsUser", HuksNapiHasKeyItemAsUser), 717526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("attestKeyItem", HuksNapiAttestKeyItem), 718526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("attestKeyItemAsUser", HuksNapiAttestKeyItemAsUser), 719526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("anonAttestKeyItem", HuksNapiAnonAttestKeyItem), 720526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("anonAttestKeyItemAsUser", HuksNapiAnonAttestKeyItemAsUser), 721526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("initSession", HuksNapiInitSession), 722526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("initSessionAsUser", HuksNapiInitSessionAsUser), 723526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("updateSession", HuksNapiUpdateSession), 724526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("finishSession", HuksNapiFinishSession), 725526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("abortSession", HuksNapiAbortSession), 726526fd984Sopenharmony_ci DECLARE_NAPI_FUNCTION("listAliases", HuksNapiListAliases), 727526fd984Sopenharmony_ci}; 728526fd984Sopenharmony_ci 729526fd984Sopenharmony_cistatic napi_value HuksNapiRegister(napi_env env, napi_value exports) 730526fd984Sopenharmony_ci{ 731526fd984Sopenharmony_ci napi_property_descriptor propDesc[] = { 732526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksExceptionErrCode", CreateHuksErrCode(env)), 733526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksErrorCode", CreateHuksErrorCode(env)), 734526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyPurpose", CreateHuksKeyPurpose(env)), 735526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyDigest", CreateHuksKeyDigest(env)), 736526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyPadding", CreateHuksKeyPadding(env)), 737526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksCipherMode", CreateHuksCipherMode(env)), 738526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeySize", CreateHuksKeySize(env)), 739526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyAlg", CreateHuksKeyAlg(env)), 740526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyGenerateType", CreateHuksKeyGenerateType(env)), 741526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyFlag", CreateHuksKeyFlag(env)), 742526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksKeyStorageType", CreateHuksKeyStorageType(env)), 743526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksTagType", CreateHuksTagType(env)), 744526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksTag", CreateHuksTag(env)), 745526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksImportKeyType", CreateHuksImportKeyType(env)), 746526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksUnwrapSuite", CreateHuksUnwrapSuite(env)), 747526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksSendType", CreateHuksSendType(env)), 748526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksUserAuthType", CreateHuksUserAuthType(env)), 749526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksAuthAccessType", CreateHuksAuthAccessType(env)), 750526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksChallengeType", CreateHuksChallengeType(env)), 751526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksUserAuthMode", CreateHuksUserAuthMode(env)), 752526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksChallengePosition", CreateHuksChallengePosition(env)), 753526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksSecureSignType", CreateHuksSecureSignType(env)), 754526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksRsaPssSaltLenType", CreateHuksRsaPssSaltLenType(env)), 755526fd984Sopenharmony_ci DECLARE_NAPI_PROPERTY("HuksAuthStorageLevel", CreateHuksAuthStorageLevel(env)), 756526fd984Sopenharmony_ci }; 757526fd984Sopenharmony_ci napi_property_descriptor desc[HKS_ARRAY_SIZE(NAPI_FUNC_DESC) + HKS_ARRAY_SIZE(propDesc)]; 758526fd984Sopenharmony_ci 759526fd984Sopenharmony_ci for (uint32_t i = 0; i < HKS_ARRAY_SIZE(NAPI_FUNC_DESC); ++i) { 760526fd984Sopenharmony_ci desc[i] = NAPI_FUNC_DESC[i]; 761526fd984Sopenharmony_ci } 762526fd984Sopenharmony_ci 763526fd984Sopenharmony_ci for (uint32_t i = 0; i < HKS_ARRAY_SIZE(propDesc); ++i) { 764526fd984Sopenharmony_ci desc[HKS_ARRAY_SIZE(NAPI_FUNC_DESC) + i] = propDesc[i]; 765526fd984Sopenharmony_ci } 766526fd984Sopenharmony_ci 767526fd984Sopenharmony_ci NAPI_CALL(env, napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc)); 768526fd984Sopenharmony_ci return exports; 769526fd984Sopenharmony_ci} 770526fd984Sopenharmony_ci 771526fd984Sopenharmony_cistatic napi_module g_module = { 772526fd984Sopenharmony_ci .nm_version = 1, 773526fd984Sopenharmony_ci .nm_flags = 0, 774526fd984Sopenharmony_ci .nm_filename = nullptr, 775526fd984Sopenharmony_ci .nm_register_func = HuksNapiRegister, 776526fd984Sopenharmony_ci .nm_modname = "security.huks", 777526fd984Sopenharmony_ci .nm_priv = reinterpret_cast<void *>(0), 778526fd984Sopenharmony_ci .reserved = { 0 }, 779526fd984Sopenharmony_ci}; 780526fd984Sopenharmony_ci 781526fd984Sopenharmony_ci__attribute__((constructor)) void RegisterModule(void) 782526fd984Sopenharmony_ci{ 783526fd984Sopenharmony_ci napi_module_register(&g_module); 784526fd984Sopenharmony_ci} 785526fd984Sopenharmony_ci} 786