生成密鑰(ArkTS)
以生成DH密鑰為例,生成隨機(jī)密鑰。具體的場(chǎng)景介紹及支持的算法規(guī)格
注意: 密鑰別名中禁止包含個(gè)人數(shù)據(jù)等敏感信息。
開發(fā)前請(qǐng)熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
開發(fā)步驟
- 指定待生成的密鑰別名keyAlias。
- 密鑰別名的最大長(zhǎng)度為64字節(jié)。
- 對(duì)于不同業(yè)務(wù)間生成的密鑰,HUKS將基于業(yè)務(wù)身份信息進(jìn)行存儲(chǔ)路徑隔離,不會(huì)因?yàn)楹推渌麡I(yè)務(wù)密鑰同名導(dǎo)致沖突。
- 初始化密鑰屬性集。通過(guò)[HuksParam]封裝密鑰屬性,搭配Array組成密鑰屬性集,并賦值給[HuksOptions]中的properties字段。 密鑰屬性集中必須包含[HuksKeyAlg],[HuksKeySize],[HuksKeyPurpose]屬性,即必傳TAG,HUKS_TAG_ALGORITHM、HUKS_TAG_PURPOSE、HUKS_TAG_KEY_SIZE。
- 調(diào)用[huks.generateKeyItem],傳入密鑰別名和密鑰屬性集,生成密鑰。
說(shuō)明: 如果業(yè)務(wù)再次使用相同別名調(diào)用HUKS生成密鑰,HUKS將生成新密鑰并直接覆蓋歷史的密鑰文件。
HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿
/* 以下以生成DH密鑰為例 */
import { huks } from "@kit.UniversalKeystoreKit";
/* 1.確定密鑰別名 */
let keyAlias = 'dh_key';
/* 2.初始化密鑰屬性集 */
let properties1: Array< huks.HuksParam > = [
{
tag: huks.HuksTag.HUKS_TAG_ALGORITHM,
value: huks.HuksKeyAlg.HUKS_ALG_DH
},
{
tag: huks.HuksTag.HUKS_TAG_PURPOSE,
value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_AGREE
},
{
tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,
value: huks.HuksKeySize.HUKS_DH_KEY_SIZE_2048
},
{
tag: huks.HuksTag.HUKS_TAG_DIGEST,
value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256
}
];
let huksOptions: huks.HuksOptions = {
properties: properties1,
inData: new Uint8Array(new Array())
}
/* 3.生成密鑰 */
function generateKeyItem(keyAlias: string, huksOptions: huks.HuksOptions){
return new Promise< void >((resolve, reject) = > {
try {
huks.generateKeyItem(keyAlias, huksOptions, (error, data) = > {
if (error) {
reject(error);
} else {
resolve(data);
}
});
} catch (error) {
throw (error as Error);
}
});
}
async function publicGenKeyFunc(keyAlias: string, huksOptions: huks.HuksOptions) {
console.info(`enter promise generateKeyItem`);
try {
await generateKeyItem(keyAlias, huksOptions)
.then((data) = > {
console.info(`promise: generateKeyItem success, data = ${JSON.stringify(data)}`);
})
.catch((error: Error) = > {
console.error(`promise: generateKeyItem failed, ${JSON.stringify(error)}`);
});
} catch (error) {
console.error(`promise: generateKeyItem input arg invalid` + JSON.stringify(error));
}
}
async function TestGenKey() {
await publicGenKeyFunc(keyAlias, huksOptions);
}
審核編輯 黃宇
-
密鑰
+關(guān)注
關(guān)注
1文章
141瀏覽量
19858 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2397瀏覽量
43095
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論