注册/注销Provider(ArkTS)
从API 22开始,huksExternalCrypto提供Provider注册和注销功能接口。
注册Provider
开发步骤
- 构造注册参数,需要传入HUKS_EXT_CRYPTO_TAG_ABILITY_NAME。
- 调用注册接口registerProvider。
开发案例
import { huksExternalCrypto } from '@kit.UniversalKeystoreKit';
import { BusinessError } from '@kit.BasicServicesKit';
function StringToUint8Array(str: string) {
let arr: number[] = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
return new Uint8Array(arr);
}
async function registerProvider(): Promise<void> {
try {
/* 1.构造注册参数 */
const providerName = "testProvider";
const extProperties: Array<huksExternalCrypto.HuksExternalCryptoParam> = [
{
tag: huksExternalCrypto.HuksExternalCryptoTag.HUKS_EXT_CRYPTO_TAG_ABILITY_NAME,
value: StringToUint8Array("CryptoExtension")
}
];
/* 2.调用registerProvider */
await huksExternalCrypto.registerProvider(providerName, extProperties)
.then(() => {
console.info(`promise: registerProvider success`);
}).catch((error: BusinessError) => {
console.error(`promise: registerProvider failed, errCode : ${error.code}, errMsg : ${error.message}`);
});
} catch (error) {
console.error(`promise: registerProvider input arg invalid`);
}
}
async function TestRegisterProvider() {
await registerProvider();
}
注销Provider
开发步骤
- 构造注销参数,注销单个ability需要传入HUKS_EXT_CRYPTO_TAG_ABILITY_NAME参数。批量注销不需要传入HUKS_EXT_CRYPTO_TAG_ABILITY_NAME参数。
- 调用注销接口unregisterProvider。
注销单个ability
import { huksExternalCrypto } from '@kit.UniversalKeystoreKit';
import { BusinessError } from '@kit.BasicServicesKit';
function StringToUint8Array(str: string) {
let arr: number[] = [];
for (let i = 0, j = str.length; i < j; ++i) {
arr.push(str.charCodeAt(i));
}
return new Uint8Array(arr);
}
async function unregisterProvider(): Promise<void> {
try {
/* 1.构造注销参数 */
const providerName = "testProvider";
const extProperties: Array<huksExternalCrypto.HuksExternalCryptoParam> = [
{
tag: huksExternalCrypto.HuksExternalCryptoTag.HUKS_EXT_CRYPTO_TAG_ABILITY_NAME,
value: StringToUint8Array("CryptoExtension")
}
];
/* 2.调用unregisterProvider */
await huksExternalCrypto.unregisterProvider(providerName, extProperties)
.then(() => {
console.info(`promise: unregisterProvider success`);
}).catch((error: BusinessError) => {
console.error(`promise: unregisterProvider failed, errCode : ${error.code}, errMsg : ${error.message}`);
});
} catch (error) {
console.error(`promise: unregisterProvider input arg invalid`);
}
}
async function TestRegisterProvider() {
await unregisterProvider();
}
批量注销
import { huksExternalCrypto } from '@kit.UniversalKeystoreKit';
import { BusinessError } from '@kit.BasicServicesKit';
async function unregisterProvider(): Promise<void> {
try {
/* 1.构造注销参数 */
const providerName = "testProvider";
const extProperties: Array<huksExternalCrypto.HuksExternalCryptoParam> = [];
/* 2.调用unregisterProvider */
await huksExternalCrypto.unregisterProvider(providerName, extProperties)
.then(() => {
console.info(`promise: unregisterProvider success`);
}).catch((error: BusinessError) => {
console.error(`promise: unregisterProvider failed, errCode : ${error.code}, errMsg : ${error.message}`);
});
} catch (error) {
console.error(`promise: unregisterProvider input arg invalid`);
}
}
async function TestRegisterProvider() {
await unregisterProvider();
}