参考demo:import cryptoFramework from '@ohos.security.cryptoFramework'; import buffer from '@ohos.buffer'; import { util } from '@kit.ArkTS'; @Entry @Component struct signAndVerifySM2 { @State message: string = '点击开始'; build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) .onClick(() => { SM2Main() }) } .width('100%') } .height('100%') } } let input1: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from("This is Sign test plan1", 'utf-8').buffer) }; let input2: cryptoFramework.DataBlob = { data: new Uint8Array(buffer.from("This is Sign test plan2", 'utf-8').buffer) }; async function signMessagePromise(priKey: cryptoFramework.PriKey) { let signAlg = "SM2_256|SM3"; let signer = cryptoFramework.createSign(signAlg); await signer.init(priKey); await signer.update(input1); // 如果明文较短,可以直接调用sign接口一次性传入 let signData = await signer.sign(input2); return signData; } async function verifyMessagePromise(signMessageBlob: cryptoFramework.DataBlob, pubKey: cryptoFramework.PubKey) { let verifyAlg = "SM2_256|SM3"; let verifier = cryptoFramework.createVerify(verifyAlg); await verifier.init(pubKey); await verifier.update(input1); // 如果明文较短,可以直接调用verify接口一次性传入 let res = await verifier.verify(input2, signMessageBlob); console.info("verify result is " + res); return res; } async function SM2Main() { let keyGenAlg = "SM2_256"; let generator = cryptoFramework.createAsyKeyGenerator(keyGenAlg); let keyPair = await generator.generateKeyPair(); let signData = await signMessagePromise(keyPair.priKey); let verifyResult = await verifyMessagePromise(signData, keyPair.pubKey); if (verifyResult == true) { console.info('verify success'); } else { console.error('verify failed'); } }
参考demo: