通用密鑰庫系統
說明
開發前請熟悉鴻蒙開發指導文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
本模塊首批接口從API version 8開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。
向應用提供密鑰庫能力,包括密鑰管理及密鑰的密碼學操作等功能。 HUKS所管理的密鑰可以由應用導入或者由應用調用HUKS接口生成。
導入模塊
import huks from '@ohos.security.huks'
HuksErrorCode
表示錯誤碼的枚舉。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_SUCCESS | 0 | 表示成功。 |
HUKS_FAILURE | -1 | 表示失敗。 |
HUKS_ERROR_BAD_STATE | -2 | 表示錯誤的狀態。 |
HUKS_ERROR_INVALID_ARGUMENT | -3 | 表示無效的數據。 |
HUKS_ERROR_NOT_SUPPORTED | -4 | 表示不支持。 |
HUKS_ERROR_NO_PERMISSION | -5 | 表示沒有許可。 |
HUKS_ERROR_INSUFFICIENT_DATA | -6 | 表示數據不足。 |
HUKS_ERROR_BUFFER_TOO_SMALL | -7 | 表示緩沖區太小。 |
HUKS_ERROR_INSUFFICIENT_MEMORY | -8 | 表示內存不足。 |
HUKS_ERROR_COMMUNICATION_FAILURE | -9 | 表示通訊失敗。 |
HUKS_ERROR_STORAGE_FAILURE | -10 | 表示存儲故障。 |
HUKS_ERROR_HARDWARE_FAILURE | -11 | 表示硬件故障。 |
HUKS_ERROR_ALREADY_EXISTS | -12 | 表示已經存在。 |
HUKS_ERROR_NOT_EXIST | -13 | 表示不存在。 |
HUKS_ERROR_NULL_POINTER | -14 | 表示空指針。 |
HUKS_ERROR_FILE_SIZE_FAIL | -15 | 表示文件大小失敗。 |
HUKS_ERROR_READ_FILE_FAIL | -16 | 表示讀取文件失敗。 |
HUKS_ERROR_INVALID_PUBLIC_KEY | -17 | 表示無效的公鑰。 |
HUKS_ERROR_INVALID_PRIVATE_KEY | -18 | 表示無效的私鑰。 |
HUKS_ERROR_INVALID_KEY_INFO | -19 | 表示無效的密鑰信息。 |
HUKS_ERROR_HASH_NOT_EQUAL | -20 | 表示哈希不相等。 |
HUKS_ERROR_MALLOC_FAIL | -21 | 表示MALLOC 失敗。 |
HUKS_ERROR_WRITE_FILE_FAIL | -22 | 表示寫文件失敗。 |
HUKS_ERROR_REMOVE_FILE_FAIL | -23 | 表示刪除文件失敗。 |
HUKS_ERROR_OPEN_FILE_FAIL | -24 | 表示打開文件失敗。 |
HUKS_ERROR_CLOSE_FILE_FAIL | -25 | 表示關閉文件失敗。 |
HUKS_ERROR_MAKE_DIR_FAIL | -26 | 表示創建目錄失敗。 |
HUKS_ERROR_INVALID_KEY_FILE | -27 | 表示無效的密鑰文件。 |
HUKS_ERROR_IPC_MSG_FAIL | -28 | 表示IPC 信息失敗。 |
HUKS_ERROR_REQUEST_OVERFLOWS | -29 | 表示請求溢出。 |
HUKS_ERROR_PARAM_NOT_EXIST | -30 | 表示參數不存在。 |
HUKS_ERROR_CRYPTO_ENGINE_ERROR | -31 | 表示CRYPTO ENGINE錯誤。 |
HUKS_ERROR_COMMUNICATION_TIMEOUT | -32 | 表示通訊超時。 |
HUKS_ERROR_IPC_INIT_FAIL | -33 | 表示IPC 初始化失敗。 |
HUKS_ERROR_IPC_DLOPEN_FAIL | -34 | 表示IPC DLOPEN 失敗。 |
HUKS_ERROR_EFUSE_READ_FAIL | -35 | 表示EFUSE 讀取失敗。 |
HUKS_ERROR_NEW_ROOT_KEY_MATERIAL_EXIST | -36 | 表示存在新的根密鑰材料。 |
HUKS_ERROR_UPDATE_ROOT_KEY_MATERIAL_FAIL | -37 | 表示更新根密鑰材料失敗。 |
HUKS_ERROR_VERIFICATION_FAILED | -38 | 表示驗證證書鏈失敗。 |
HUKS_ERROR_CHECK_GET_ALG_FAIL | -100 | 表示檢查獲取 ALG 失敗。 |
HUKS_ERROR_CHECK_GET_KEY_SIZE_FAIL | -101 | 表示檢查獲取密鑰大小失敗。 |
HUKS_ERROR_CHECK_GET_PADDING_FAIL | -102 | 表示檢查獲取填充失敗。 |
HUKS_ERROR_CHECK_GET_PURPOSE_FAIL | -103 | 表示檢查獲取目的失敗。 |
HUKS_ERROR_CHECK_GET_DIGEST_FAIL | -104 | 表示檢查獲取摘要失敗。 |
HUKS_ERROR_CHECK_GET_MODE_FAIL | -105 | 表示檢查獲取模式失敗。 |
HUKS_ERROR_CHECK_GET_NONCE_FAIL | -106 | 表示檢查獲取隨機數失敗。 |
HUKS_ERROR_CHECK_GET_AAD_FAIL | -107 | 表示檢查獲取 AAD 失敗。 |
HUKS_ERROR_CHECK_GET_IV_FAIL | -108 | 表示檢查 GET IV 失敗。 |
HUKS_ERROR_CHECK_GET_AE_TAG_FAIL | -109 | 表示檢查獲取 AE 標記失敗。 |
HUKS_ERROR_CHECK_GET_SALT_FAIL | -110 | 表示檢查獲取SALT失敗。 |
HUKS_ERROR_CHECK_GET_ITERATION_FAIL | -111 | 表示檢查獲取迭代失敗。 |
HUKS_ERROR_INVALID_ALGORITHM | -112 | 表示無效的算法。 |
HUKS_ERROR_INVALID_KEY_SIZE | -113 | 表示無效的密鑰大小。 |
HUKS_ERROR_INVALID_PADDING | -114 | 表示無效的填充。 |
HUKS_ERROR_INVALID_PURPOSE | -115 | 表示無效的目的。 |
HUKS_ERROR_INVALID_MODE | -116 | 表示無效模式。 |
HUKS_ERROR_INVALID_DIGEST | -117 | 表示無效的摘要。 |
HUKS_ERROR_INVALID_SIGNATURE_SIZE | -118 | 表示簽名大小無效。 |
HUKS_ERROR_INVALID_IV | -119 | 表示無效的 IV。 |
HUKS_ERROR_INVALID_AAD | -120 | 表示無效的 AAD。 |
HUKS_ERROR_INVALID_NONCE | -121 | 表示無效的隨機數。 |
HUKS_ERROR_INVALID_AE_TAG | -122 | 表示無效的 AE 標簽。 |
HUKS_ERROR_INVALID_SALT | -123 | 表示無效SALT。 |
HUKS_ERROR_INVALID_ITERATION | -124 | 表示無效的迭代。 |
HUKS_ERROR_INVALID_OPERATION | -125 | 表示無效操作。 |
HUKS_ERROR_INTERNAL_ERROR | -999 | 表示內部錯誤。 |
HUKS_ERROR_UNKNOWN_ERROR | -1000 | 表示未知錯誤。 |
HuksKeyPurpose
表示密鑰用途。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_PURPOSE_ENCRYPT | 1 | 表示密鑰用于對明文進行加密操作。 |
HUKS_KEY_PURPOSE_DECRYPT | 2 | 表示密鑰用于對密文進行解密操作。 |
HUKS_KEY_PURPOSE_SIGN | 4 | 表示密鑰用于對數據進行簽名。 |
HUKS_KEY_PURPOSE_VERIFY | 8 | 表示密鑰用于驗證簽名后的數據。 |
HUKS_KEY_PURPOSE_DERIVE | 16 | 表示密鑰用于派生密鑰。 |
HUKS_KEY_PURPOSE_WRAP | 32 | 表示密鑰用于加密導入。 |
HUKS_KEY_PURPOSE_UNWRAP | 64 | 表示密鑰加密導出。 |
HUKS_KEY_PURPOSE_MAC | 128 | 表示密鑰用于生成mac消息驗證碼。 |
HUKS_KEY_PURPOSE_AGREE | 256 | 表示密鑰用于進行密鑰協商。 |
HuksKeyDigest
表示摘要算法。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_DIGEST_NONE | 0 | 表示無摘要算法。 |
HUKS_DIGEST_MD5 | 1 | 表示MD5摘要算法。 |
HUKS_DIGEST_SHA1 | 10 | 表示SHA1摘要算法。 |
HUKS_DIGEST_SHA224 | 11 | 表示SHA224摘要算法。 |
HUKS_DIGEST_SHA256 | 12 | 表示SHA256摘要算法。 |
HUKS_DIGEST_SHA384 | 13 | 表示SHA384摘要算法。 |
HUKS_DIGEST_SHA512 | 14 | 表示SHA512摘要算法。 |
HuksKeyPadding
表示補齊算法。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_PADDING_NONE | 0 | 表示不使用補齊算法。 |
HUKS_PADDING_OAEP | 1 | 表示使用OAEP補齊算法。 |
HUKS_PADDING_PSS | 2 | 表示使用PSS補齊算法。 |
HUKS_PADDING_PKCS1_V1_5 | 3 | 表示使用PKCS1_V1_5補齊算法。 |
HUKS_PADDING_PKCS5 | 4 | 表示使用PKCS5補齊算法。 |
HUKS_PADDING_PKCS7 | 5 | 表示使用PKCS7補齊算法。 |
HuksCipherMode
表示加密模式。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_MODE_ECB | 1 | 表示使用ECB加密模式。 |
HUKS_MODE_CBC | 2 | 表示使用CBC加密模式。 |
HUKS_MODE_CTR | 3 | 表示使用CTR加密模式。 |
HUKS_MODE_OFB | 4 | 表示使用OFB加密模式。 |
HUKS_MODE_CCM | 31 | 表示使用CCM加密模式。 |
HUKS_MODE_GCM | 32 | 表示使用GCM加密模式。 |
HuksKeySize
表示密鑰長度。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_RSA_KEY_SIZE_512 | 512 | 表示使用RSA算法的密鑰長度為512bit。 |
HUKS_RSA_KEY_SIZE_768 | 768 | 表示使用RSA算法的密鑰長度為768bit。 |
HUKS_RSA_KEY_SIZE_1024 | 1024 | 表示使用RSA算法的密鑰長度為1024bit。 |
HUKS_RSA_KEY_SIZE_2048 | 2048 | 表示使用RSA算法的密鑰長度為2048bit。 |
HUKS_RSA_KEY_SIZE_3072 | 3072 | 表示使用RSA算法的密鑰長度為3072bit。 |
HUKS_RSA_KEY_SIZE_4096 | 4096 | 表示使用RSA算法的密鑰長度為4096bit。 |
HUKS_ECC_KEY_SIZE_224 | 224 | 表示使用ECC算法的密鑰長度為224bit。 |
HUKS_ECC_KEY_SIZE_256 | 256 | 表示使用ECC算法的密鑰長度為256bit。 |
HUKS_ECC_KEY_SIZE_384 | 384 | 表示使用ECC算法的密鑰長度為384bit。 |
HUKS_ECC_KEY_SIZE_521 | 521 | 表示使用ECC算法的密鑰長度為521bit。 |
HUKS_AES_KEY_SIZE_128 | 128 | 表示使用AES算法的密鑰長度為128bit。 |
HUKS_AES_KEY_SIZE_192 | 196 | 表示使用AES算法的密鑰長度為196bit。 |
HUKS_AES_KEY_SIZE_256 | 256 | 表示使用AES算法的密鑰長度為256bit。 |
HUKS_AES_KEY_SIZE_512 | 512 | 表示使用AES算法的密鑰長度為512bit。 |
HUKS_CURVE25519_KEY_SIZE_256 | 256 | 表示使用CURVE25519算法的密鑰長度為256bit。 |
HUKS_DH_KEY_SIZE_2048 | 2048 | 表示使用DH算法的密鑰長度為2048bit。 |
HUKS_DH_KEY_SIZE_3072 | 3072 | 表示使用DH算法的密鑰長度為3072bit。 |
HUKS_DH_KEY_SIZE_4096 | 4096 | 表示使用DH算法的密鑰長度為4096bit。 |
HuksKeyAlg
表示密鑰使用的算法。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_ALG_RSA | 1 | 表示使用RSA算法。 |
HUKS_ALG_ECC | 2 | 表示使用ECC算法。 |
HUKS_ALG_DSA | 3 | 表示使用DSA算法。 |
HUKS_ALG_AES | 20 | 表示使用AES算法。 |
HUKS_ALG_HMAC | 50 | 表示使用HMAC算法。 |
HUKS_ALG_HKDF | 51 | 表示使用HKDF算法。 |
HUKS_ALG_PBKDF2 | 52 | 表示使用PBKDF2算法。 |
HUKS_ALG_ECDH | 100 | 表示使用ECDH算法。 |
HUKS_ALG_X25519 | 101 | 表示使用X25519算法。 |
HUKS_ALG_ED25519 | 102 | 表示使用ED25519算法。 |
HUKS_ALG_DH | 103 | 表示使用DH算法。 |
HuksKeyGenerateType
表示生成密鑰的類型。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_GENERATE_TYPE_DEFAULT | 0 | 默認生成的密鑰。 |
HUKS_KEY_GENERATE_TYPE_DERIVE | 1 | 派生生成的密鑰。 |
HUKS_KEY_GENERATE_TYPE_AGREE | 2 | 協商生成的密鑰。 |
HuksKeyFlag
表示密鑰的產生方式。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_KEY_FLAG_IMPORT_KEY | 1 | 表示通過導入公鑰接口導入的密鑰。 |
HUKS_KEY_FLAG_GENERATE_KEY | 2 | 表示通過生成密鑰接口生成的密鑰。 |
HUKS_KEY_FLAG_AGREE_KEY | 3 | 表示通過生成密鑰協商接口生成的密鑰。 |
HUKS_KEY_FLAG_DERIVE_KEY | 4 | 表示通過生成密鑰派生接口生成的密鑰。 |
HuksKeyStorageType
表示密鑰存儲方式。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_STORAGE_TEMP | 0 | 表示通過本地直接管理密鑰。 |
HUKS_STORAGE_PERSISTENT | 1 | 表示通過HUKS service管理密鑰。 |
HuksSendType
表示發送Tag的方式。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_SEND_TYPE_ASYNC | 0 | 表示異步發送TAG。 |
HUKS_SEND_TYPE_SYNC | 1 | 表示同步發送TAG。 |
HuksTagType
表示Tag的數據類型。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_TAG_TYPE_INVALID | 0 << 28 | 表示非法的Tag類型。 |
HUKS_TAG_TYPE_INT | 1 << 28 | 表示該Tag的數據類型為int類型的number。 |
HUKS_TAG_TYPE_UINT | 2 << 28 | 表示該Tag的數據類型為uint類型的number。 |
HUKS_TAG_TYPE_ULONG | 3 << 28 | 表示該Tag的數據類型為bigint。 |
HUKS_TAG_TYPE_BOOL | 4 << 28 | 表示該Tag的數據類型為boolean。 |
HUKS_TAG_TYPE_BYTES | 5 << 28 | 表示該Tag的數據類型為Uint8Array。 |
HuksTag
表示調用參數的Tag。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
名稱 | 值 | 說明 |
---|---|---|
HUKS_TAG_INVALID | HuksTagType.HUKS_TAG_TYPE_INVALID | 0 |
HUKS_TAG_ALGORITHM | HUKS_TAG_TYPE_UINT | 1 |
HUKS_TAG_PURPOSE | HuksTagType.HUKS_TAG_TYPE_UINT | 2 |
HUKS_TAG_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 3 |
HUKS_TAG_DIGEST | HuksTagType.HUKS_TAG_TYPE_UINT | 4 |
HUKS_TAG_PADDING | HuksTagType.HUKS_TAG_TYPE_UINT | 5 |
HUKS_TAG_BLOCK_MODE | HuksTagType.HUKS_TAG_TYPE_UINT | 6 |
HUKS_TAG_KEY_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 7 |
HUKS_TAG_ASSOCIATED_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 8 |
HUKS_TAG_NONCE | HuksTagType.HUKS_TAG_TYPE_BYTES | 9 |
HUKS_TAG_IV | HuksTagType.HUKS_TAG_TYPE_BYTES | 10 |
HUKS_TAG_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 11 |
HUKS_TAG_SALT | HuksTagType.HUKS_TAG_TYPE_BYTES | 12 |
HUKS_TAG_PWD | HuksTagType.HUKS_TAG_TYPE_BYTES | 13 |
HUKS_TAG_ITERATION | HuksTagType.HUKS_TAG_TYPE_UINT | 14 |
HUKS_TAG_KEY_GENERATE_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 15 |
HUKS_TAG_DERIVE_MAIN_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 16 |
HUKS_TAG_DERIVE_FACTOR | HuksTagType.HUKS_TAG_TYPE_BYTES | 17 |
HUKS_TAG_DERIVE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 18 |
HUKS_TAG_AGREE_ALG | HuksTagType.HUKS_TAG_TYPE_UINT | 19 |
HUKS_TAG_AGREE_PUBLIC_KEY_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 20 |
HUKS_TAG_AGREE_PRIVATE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 21 |
HUKS_TAG_AGREE_PUBLIC_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 22 |
HUKS_TAG_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 23 |
HUKS_TAG_DERIVE_KEY_SIZE | HuksTagType.HUKS_TAG_TYPE_UINT | 24 |
HUKS_TAG_ACTIVE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 201 |
HUKS_TAG_ORIGINATION_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 202 |
HUKS_TAG_USAGE_EXPIRE_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 203 |
HUKS_TAG_CREATION_DATETIME | HuksTagType.HUKS_TAG_TYPE_ULONG | 204 |
HUKS_TAG_ALL_USERS | ksTagType.HUKS_TAG_TYPE_BOOL | 301 |
HUKS_TAG_USER_ID | HuksTagType.HUKS_TAG_TYPE_UINT | 302 |
HUKS_TAG_NO_AUTH_REQUIRED | HuksTagType.HUKS_TAG_TYPE_BOOL | 303 |
HUKS_TAG_USER_AUTH_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 304 |
HUKS_TAG_AUTH_TIMEOUT | HuksTagType.HUKS_TAG_TYPE_UINT | 305 |
HUKS_TAG_AUTH_TOKEN | HuksTagType.HUKS_TAG_TYPE_BYTES | 306 |
HUKS_TAG_ATTESTATION_CHALLENGE | HuksTagType.HUKS_TAG_TYPE_BYTES | 501 |
HUKS_TAG_ATTESTATION_APPLICATION_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 502 |
HUKS_TAG_ATTESTATION_ID_BRAND | HuksTagType.HUKS_TAG_TYPE_BYTES | 503 |
HUKS_TAG_ATTESTATION_ID_DEVICE | HuksTagType.HUKS_TAG_TYPE_BYTES | 504 |
HUKS_TAG_ATTESTATION_ID_PRODUCT | HuksTagType.HUKS_TAG_TYPE_BYTES | 505 |
HUKS_TAG_ATTESTATION_ID_SERIAL | HuksTagType.HUKS_TAG_TYPE_BYTES | 506 |
HUKS_TAG_ATTESTATION_ID_IMEI | HuksTagType.HUKS_TAG_TYPE_BYTES | 507 |
HUKS_TAG_ATTESTATION_ID_MEID | HuksTagType.HUKS_TAG_TYPE_BYTES | 508 |
HUKS_TAG_ATTESTATION_ID_MANUFACTURER | HuksTagType.HUKS_TAG_TYPE_BYTES | 509 |
HUKS_TAG_ATTESTATION_ID_MODEL | HuksTagType.HUKS_TAG_TYPE_BYTES | 510 |
HUKS_TAG_ATTESTATION_ID_ALIAS | HuksTagType.HUKS_TAG_TYPE_BYTES | 511 |
HUKS_TAG_ATTESTATION_ID_SOCID | HuksTagType.HUKS_TAG_TYPE_BYTES | 512 |
HUKS_TAG_ATTESTATION_ID_UDID | HuksTagType.HUKS_TAG_TYPE_BYTES | 513 |
HUKS_TAG_ATTESTATION_ID_SEC_LEVEL_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 514 |
HUKS_TAG_ATTESTATION_ID_VERSION_INFO | HuksTagType.HUKS_TAG_TYPE_BYTES | 515 |
HUKS_TAG_IS_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1001 |
HUKS_TAG_KEY_STORAGE_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1002 |
HUKS_TAG_IS_ALLOWED_WRAP | HuksTagType.HUKS_TAG_TYPE_BOOL | 1003 |
HUKS_TAG_KEY_WRAP_TYPE | HuksTagType.HUKS_TAG_TYPE_UINT | 1004 |
HUKS_TAG_KEY_AUTH_ID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1005 |
HUKS_TAG_KEY_ROLE | HuksTagType.HUKS_TAG_TYPE_UINT | 1006 |
HUKS_TAG_KEY_FLAG | HuksTagType.HUKS_TAG_TYPE_UINT | 1007 |
HUKS_TAG_IS_ASYNCHRONIZED | HuksTagType.HUKS_TAG_TYPE_UINT | 1008 |
HUKS_TAG_SECURE_KEY_ALIAS | HuksTagType.HUKS_TAG_TYPE_BOOL | 1009 |
HUKS_TAG_SECURE_KEY_UUID | HuksTagType.HUKS_TAG_TYPE_BYTES | 1010 |
HUKS_TAG_KEY_DOMAIN | HuksTagType.HUKS_TAG_TYPE_UINT | 1011 |
HUKS_TAG_PROCESS_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10001 |
HUKS_TAG_PACKAGE_NAME | HuksTagType.HUKS_TAG_TYPE_BYTES | 10002 |
HUKS_TAG_ACCESS_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10003 |
HUKS_TAG_USES_TIME | HuksTagType.HUKS_TAG_TYPE_UINT | 10004 |
HUKS_TAG_CRYPTO_CTX | HuksTagType.HUKS_TAG_TYPE_ULONG | 10005 |
HUKS_TAG_KEY | HuksTagType.HUKS_TAG_TYPE_BYTES | 10006 |
HUKS_TAG_KEY_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10007 |
HUKS_TAG_PAYLOAD_LEN | HuksTagType.HUKS_TAG_TYPE_UINT | 10008 |
HUKS_TAG_AE_TAG | HuksTagType.HUKS_TAG_TYPE_BYTES | 10009 |
HUKS_TAG_IS_KEY_HANDLE | HuksTagType.HUKS_TAG_TYPE_ULONG | 10010 |
HUKS_TAG_OS_VERSION | HuksTagType.HUKS_TAG_TYPE_UINT | 10101 |
HUKS_TAG_OS_PATCHLEVEL | HuksTagType.HUKS_TAG_TYPE_UINT | 10102 |
HUKS_TAG_SYMMETRIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20001 |
HUKS_TAG_ASYMMETRIC_PUBLIC_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20002 |
HUKS_TAG_ASYMMETRIC_PRIVATE_KEY_DATA | HuksTagType.HUKS_TAG_TYPE_BYTES | 20003 |
huks.generateKey
generateKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
生成密鑰,使用Callback回調異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 別名。 |
options | [HuksOptions] | 是 | 用于存放生成key所需TAG。 |
callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS時表示接口使用成功,其余結果請參考HuksResult進行錯誤碼查詢。 |
示例:
/* 以生成RSA512密鑰為例 */
var keyAlias = 'keyAlias';
var properties = new Array();
properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_RSA
};
properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_512
};
properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
};
properties[3] = {
tag: huks.HuksTag.HUKS_TAG_PADDING,
value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
};
properties[4] = {
tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
};
var options = {
properties: properties
};
huks.generateKey(keyAlias, options, function (err, data){});
huks.generateKey
generateKey(keyAlias: string, options: HuksOptions) : Promise
生成密鑰,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名。 |
options | [HuksOptions] | 是 | 用于存放生成key所需TAG。 |
返回值 :(可選,如不涉及可刪除)
類型 | 說明 |
---|---|
Promise<[HuksResult]> | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
/* 以生成ECC256密鑰為例 */
var keyAlias = 'keyAlias';
var properties = new Array();
properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_ECC
};
properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_ECC_KEY_SIZE_256
};
properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_SIGN |
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_VERIFY
};
properties[3] = {
tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
};
var options = {
properties: properties
};
var result = huks.generateKey(keyAlias, options);
huks.deleteKey
deleteKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
刪除密鑰,使用Callback回調異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應為生成key時傳入的別名。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
/* 此處options選擇emptyOptions傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
huks.deleteKey(keyAlias, emptyOptions, function (err, data) {});
huks.deleteKey
deleteKey(keyAlias: string, options: HuksOptions) : Promise
刪除密鑰,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應為生成key時傳入的別名。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<[HuksResult]> | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
/* 此處options選擇emptyOptions傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
var result = huks.deleteKey(keyAlias, emptyOptions);
huks.getSdkVersion
getSdkVersion(options: HuksOptions) : string
獲取當前系統sdk版本。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
options | [HuksOptions] | 是 | 空對象,用于存放sdk版本。 |
返回值:
類型 | 說明 |
---|---|
string | 返回sdk版本。 |
示例:
/* 此處options選擇emptyOptions傳空 */
var emptyOptions = {
properties: []
};
var result = huks.getSdkVersion(emptyOptions);
huks.importKey
importKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
導入密鑰,使用Callback方式回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,用于存放所需密鑰。 |
options | [HuksOptions] | 是 | 用于導入時所需TAG和需要導入的密鑰。 |
callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
/* 以導入AES256密鑰為例 */
var plainTextSize32 = makeRandomArr(32);
function makeRandomArr(size) {
var arr = new Uint8Array(size);
for (var i = 0; i < size; i++) {
arr[i] = Math.floor(Math.random() * 10);
}
return arr;
};
var keyAlias = 'keyAlias';
var properties = new Array();
properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_AES
};
properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256
};
properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value:
huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
};
properties[3] = {
tag: huks.HuksTag.HUKS_TAG_PADDING,
value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
};
properties[4] = {
tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
value: huks.HuksCipherMode.HUKS_MODE_ECB
};
var options = {
properties: properties,
inData: plainTextSize32
};
huks.importKey(keyAlias, options, function (err, data){});
huks.importKey
importKey(keyAlias: string, options: HuksOptions) : Promise
導入密鑰,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,用于存放所需密鑰。 |
options | [HuksOptions] | 是 | 用于導入時所需TAG和需要導入的密鑰。 |
返回值:
類型 | 說明 |
---|---|
Promise<[HuksResult]> | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
/* 以導入AES128為例 */
var plainTextSize32 = makeRandomArr(32);
function makeRandomArr(size) {
var arr = new Uint8Array(size);
for (var i = 0; i < size; i++) {
arr[i] = Math.floor(Math.random() * 10);
}
return arr;
};
/*第一步:生成密鑰*/
var keyAlias = 'keyAlias';
var properties = new Array();
properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_AES
};
properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_128
};
properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT | huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT
};
properties[3] = {
tag: huks.HuksTag.HUKS_TAG_PADDING,
value:huks.HuksKeyPadding.HUKS_PADDING_PKCS7
};
properties[4] = {
tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,
value: huks.HuksCipherMode.HUKS_MODE_ECB
};
var huksoptions = {
properties: properties,
inData: plainTextSize32
};
var result = huks.importKey(keyAlias, huksoptions);
huks.exportKey
exportKey(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
導出密鑰,使用Callback方式回調異步返回的結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應與所用密鑰生成時使用的別名相同。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
callback | AsyncCallback<[HuksResult]> | 是 | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。outData:返回從密鑰中導出的公鑰。 |
示例:
/* 此處options選擇emptyOptions來傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
huks.exportKey(keyAlias, emptyOptions, function (err, data){});
huks.exportKey
exportKey(keyAlias: string, options: HuksOptions) : Promise
導出密鑰,使用Promise方式回調異步返回的結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應與所用密鑰生成時使用的別名相同。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<[HuksResult]> | 返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。outData:返回從密鑰中導出的公鑰。 |
示例:
/* 此處options選擇emptyOptions來傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
var result = huks.exportKey(keyAlias, emptyOptions);
huks.getKeyProperties
getKeyProperties(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
獲取密鑰屬性,使用Callback回調異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應與所用密鑰生成時使用的別名相同。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
callback | AsyncCallback<[HuksResult]> | 是 | errorCode:返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。 |
示例:
/* 此處options選擇emptyOptions來傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
huks.getKeyProperties(keyAlias, emptyOptions, function (err, data){});
huks.getKeyProperties
getKeyProperties(keyAlias: string, options: HuksOptions) : Promise
獲取密鑰屬性,使用Promise回調異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 密鑰別名,應與所用密鑰生成時使用的別名相同。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise<[HuksResult]> | errorCode:返回HUKS_SUCCESS時表示接口使用成功,其他時為錯誤。properties:返回值為生成密鑰時所需參數。 |
示例:
/* 此處options選擇emptyOptions來傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
var result = huks.getKeyProperties(keyAlias, emptyOptions);
huks.isKeyExist
isKeyExist(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
判斷密鑰是否存在,使用Callback回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 所需查找的密鑰的別名。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
callback | AsyncCallback | 是 | FALSE代表密鑰不存在,TRUE代表密鑰存在。 |
示例:
/* 此處options選擇emptyOptions來傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
huks.isKeyExist(keyAlias, emptyOptions, function (err, data){});
huks.isKeyExist
isKeyExist(keyAlias: string, options: HuksOptions) : Promise
判斷密鑰是否存在,使用Promise回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | 所需查找的密鑰的別名。 |
options | [HuksOptions] | 是 | 空對象(此處傳空即可)。 |
返回值:
類型 | 說明 |
---|---|
Promise | FALSE代表密鑰不存在,TRUE代表密鑰存在。 |
示例:
/* 此處options選擇emptyOptions來傳空 */
var keyAlias = 'keyAlias';
var emptyOptions = {
properties: []
};
var result = huks.isKeyExist(keyAlias, emptyOptions);
huks.init
init(keyAlias: string, options: HuksOptions, callback: AsyncCallback) : void
init操作密鑰接口,使用Callback回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | Init操作密鑰的別名。 |
options | [HuksOptions] | 是 | Init操作的參數集合。 |
callback | AsyncCallback<[HuksHandle]> | 是 | 將Init操作操作返回的handle添加到密鑰管理系統的回調。 |
huks.init
init(keyAlias: string, options: HuksOptions) : Promise
init操作密鑰接口,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
keyAlias | string | 是 | Init操作密鑰的別名。 |
options | [HuksOptions] | 是 | Init參數集合。 |
promise | Promise<[HuksHandle]> | 是 | 將Init操作返回的handle添加到密鑰管理系統的回調。 |
huks.update
update(handle: number, token?: Uint8Array, options: HuksOptions, callback: AsyncCallback) : void
update操作密鑰接口,使用Callback回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Update操作的handle。 |
token | Uint8Array | 否 | Update操作的token。 |
options | [HuksOptions] | 是 | Update的參數集合。 |
callback | AsyncCallback<[HuksResult]> | 是 | 將Update操作的結果添加到密鑰管理系統的回調。 |
huks.update
update(handle: number, token?: Uint8Array, options: HuksOptions) : Promise
update操作密鑰接口,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Update操作的handle。 |
token | Uint8Array | 否 | Update操作的token。 |
options | [HuksOptions] | 是 | Update操作的參數集合。 |
promise | Promise<[HuksResult]> | 是 | 將Update操作的結果添加到密鑰管理系統的回調。 |
huks.finish
finish(handle: number, options: HuksOptions, callback: AsyncCallback) : void
finish操作密鑰接口,使用Callback回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Finish操作的handle。 |
options | [HuksOptions] | 是 | Finish的參數集合。 |
callback | AsyncCallback<[HuksResult]> | 是 | 將Finish操作的結果添加到密鑰管理系統的回調。 |
huks.finish
finish(handle: number, options: HuksOptions) : Promise
finish操作密鑰接口,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Finish操作的handle。 |
options | [HuksOptions] | 是 | Finish操作的參數集合。 |
promise | Promise<[HuksResult]> | 是 | promise實例,用于獲取異步返回結果。 |
huks.abort
abort(handle: number, options: HuksOptions, callback: AsyncCallback) : void
abort操作密鑰接口,使用Callback回調異步返回結果 。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Abort操作的handle。 |
options | [HuksOptions] | 是 | Abort操作的參數集合。 |
callback | AsyncCallback<[HuksResult]> | 是 | 將Abort操作的結果添加到密鑰管理系統的回調。 |
示例:
/* huks.init, huks.update, huks.finish為三段式接口,需要一起使用,當huks.init和huks.update
* 以及huks.finish操作中的任一階段發生錯誤時,都需要調用huks.abort來終止密鑰的使用。
*
* 以下以RSA1024密鑰的callback操作使用為例
*/
import router from '@system.router';
import huks from '@ohos.security.huks';
async function routePage() {
let options = {
uri: 'pages/second'
}
try {
await router.push(options)
} catch (err) {
console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)
}
}
var keyalias = "HuksDemoRSA";
var properties = new Array();
var options = {
properties: properties,
inData: new Uint8Array(0)
};
var handle;
var resultMessage = "";
async function generateKey() {
properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_RSA
};
properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
};
properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
};
properties[3] = {
tag: huks.HuksTag.HUKS_TAG_PADDING,
value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
};
properties[4] = {
tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
};
huks.generateKey(keyalias, options);
}
function stringToUint8Array(str) {
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array;
}
async function huksInit() {
await huks.init(keyalias, options).then((data) = > {
console.log(`test init data: ${JSON.stringify(data)}`);
handle = data.handle;
}).catch((err) = > {
console.log("test init err information: " + JSON.stringify(err))
})
}
async function huksUpdate() {
options.inData = stringToUint8Array("huksHmacTest");
await huks.update(handle, options).then((data) = > {
if (data.errorCode === 0) {
resultMessage += "update success!";
} else {
resultMessage += "update fail!";
}
});
console.log(resultMessage);
}
function huksFinish() {
options.inData = stringToUint8Array("HuksDemoHMAC");
huks.finish(handle, options).then((data) = > {
if (data.errorCode === 0) {
resultMessage = "finish success!";
} else {
resultMessage = "finish fail errorCode: " + data.errorCode;
}
}).catch((err) = > {
resultMessage = "finish fail, catch errorMessage:" + JSON.stringify(err)
});
console.log(resultMessage);
}
async function huksAbort() {
huks.abort(handle, options).then((data) = > {
if (data.errorCode === 0) {
resultMessage = "abort success!";
} else {
resultMessage = "abort fail errorCode: " + data.errorCode;
}
}).catch((err) = > {
resultMessage = "abort fail, catch errorMessage:" + JSON.stringify(err)
});
console.log(resultMessage);
}
@Entry
@Component
struct Index {
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Text('Hello World')
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button() {
Text('Tocallback')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
routePage()
})
Button() {
Text('generateKey')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
generateKey()
})
Button() {
Text('Init')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksInit()
})
Button() {
Text('Update')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksUpdate()
})
Button() {
Text('Finish')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksFinish()
})
Button() {
Text('Abort')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksAbort()
})
}
.width('100%')
.height('100%')
}
}
huks.abort
abort(handle: number, options: HuksOptions) : Promise;
abort操作密鑰接口,使用Promise方式異步返回結果。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數:
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
handle | number | 是 | Abort操作的handle。 |
options | [HuksOptions] | 是 | Abort操作的參數集合。 |
promise | Promise<[HuksResult]> | 是 | 將Abort操作的結果添加到密鑰管理系統的回調。 |
示例:
/* huks.init, huks.update, huks.finish為三段式接口,需要一起使用,當huks.init和huks.update
* 以及huks.finish操作中的任一階段發生錯誤時,都需要調用huks.abort來終止密鑰的使用。
*
* 以下以RSA1024密鑰的promise操作使用為例
*/
import router from '@system.router';
import huks from '@ohos.security.huks';
async function routePage() {
let options = {
uri: 'pages/second'
}
try {
await router.push(options)
} catch (err) {
console.error(`fail callback, code: ${err.code}, msg: ${err.msg}`)
}
}
var keyalias = "HuksDemoRSA";
var properties = new Array();
var options = {
properties: properties,
inData: new Uint8Array(0)
};
var handle;
var resultMessage = "";
function stringToUint8Array(str) {
var arr = [];
for (var i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
var tmpUint8Array = new Uint8Array(arr);
return tmpUint8Array;
}
async function generateKey() {
properties[0] = {
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_RSA
};
properties[1] = {
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_RSA_KEY_SIZE_1024
};
properties[2] = {
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT
};
properties[3] = {
tag: huks.HuksTag.HUKS_TAG_PADDING,
value: huks.HuksKeyPadding.HUKS_PADDING_OAEP
};
properties[4] = {
tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
};
huks.generateKey(keyalias, options, function (err, data) { });
}
async function huksInit() {
return new Promise((resolve, reject) = > {
huks.init(keyalias, options, async function (err, data) {
if (data.errorCode === 0) {
resultMessage = "init success!"
handle = data.handle;
} else {
resultMessage = "init fail errorCode: " + data.errorCode
}
});
});
}
async function huksUpdate() {
options.inData = stringToUint8Array("huksHmacTest");
new Promise((resolve, reject) = > {
huks.update(handle, options, function (err, data) {
if (data.errorCode === 0) {
resultMessage += "update success!";
} else {
resultMessage += "update fail!";
}
});
});
console.log(resultMessage);
}
async function huksFinish() {
options.inData = stringToUint8Array("0");
new Promise((resolve, reject) = > {
huks.finish(handle, options, function (err, data) {
if (data.errorCode === 0) {
resultMessage = "finish success!";
} else {
resultMessage = "finish fail errorCode: " + data.errorCode;
}
});
});
}
function huksAbort() {
new Promise((resolve, reject) = > {
huks.abort(handle, options, function (err, data) {
console.log(`Huks_Demo hmac huksAbort1 data ${JSON.stringify(data)}`);
console.log(`Huks_Demo hmac huksAbort1 err ${JSON.stringify(err)}`);
});
});
}
@Entry
@Component
struct Index {
build() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
Text('Hello World')
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button() {
Text('to Promise')
.fontSize(20)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
router.back()
})
Button() {
Text('generateKey')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
generateKey()
})
Button() {
Text('Init')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksInit()
})
Button() {
Text('Update')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksUpdate()
})
Button() {
Text('Finish')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksFinish()
})
Button() {
Text('Abort')
.fontSize(25)
.fontWeight(FontWeight.Bold)
}.type(ButtonType.Capsule)
.margin({
top: 20
})
.width('50%')
.height('10%')
.backgroundColor('#0D9FFB')
.onClick(() = > {
huksAbort()
})
}
.width('100%')
.height('100%')
}
}
HuksParam
調用接口使用的options中的properties數組中的param。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
tag | HuksTag | 是 | 標簽 |
value | boolean | number | bigint |
HuksOptions
調用接口使用的options。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
properties | Array | 否 | 屬性,存HuksParam的數組。 |
inData | Uint8Array | 否 | 輸入數據。 |
HuksHandle
huks Handle結構體。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
errorCode | number | 是 | 錯誤碼 |
handle | number | 是 | handle值 |
tokenHarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | Uint8Array | 否 | 預留字段 |
HuksResult
調用接口返回的result。
系統能力 :以下各項對應的系統能力均為SystemCapability.Security.Huks。
參數名 | 類型 | 必填 | 說明 |
---|---|---|---|
errorCode | number | 是 | 錯誤碼 |
outData | Uint8Array | 否 | 輸出數據 |
properties | Array | 否 | 屬性 |
審核編輯 黃宇
-
接口
+關注
關注
33文章
8577瀏覽量
151027 -
鴻蒙
+關注
關注
57文章
2343瀏覽量
42821
發布評論請先 登錄
相關推薦
評論