# 加解密算法库框架 为屏蔽底层硬件和算法库,向上提供统一的密码算法库加解密和证书相关接口。 > **说明:** > > 本模块首批接口从API version 9开始支持。 ## 导入模块 ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" ``` ## Result 表示执行结果的枚举。 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 默认值 | 描述 | | --------------------------------------| -------- | ------------------------------| | INVALID_PARAMS | 401 | 非法入参。 | | NOT_SUPPORT | 801 | 操作不支持。 | | ERR_OUT_OF_MEMORY | 17620001 | 内存错误。 | | ERR_EXTERNAL_ERROR | 17620002 | 运行时外部错误。 | | ERR_CRYPTO_OPERATION | 17630001 | 调用三方算法库API出错。 | | ERR_CERT_SIGNATURE_FAILURE | 17630002 | 证书签名验证错误。 | | ERR_CERT_NOT_YET_VALID | 17630003 | 证书尚未生效。 | | ERR_CERT_HAS_EXPIRED | 17630004 | 证书过期。 | | ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY | 17630005 | 无法获取证书的颁发者。 | | ERR_KEYUSAGE_NO_CERTSIGN | 17630006 | 证书的秘钥用途不含证书签名。 | | ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE | 17630007 | 证书的秘钥用途不含数字签名。 | ## EncodingFormat 表示证书编码格式的枚举。 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 默认值 | 描述 | | ------------| ---------| -----------| | FORMAT_DER | 0 | DER格式。 | | FORMAT_PEM | 1 | PEM格式。 | ## EncodingBlob 证书链数据,在证书链校验时,作为入参传入。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | -------------- | -------------- | ---- | ---- | ----------------------------------| | data | Uint8Array | 是 | 是 | 传入的数据中,包含的证书数量。 | | encodingFormat | [EncodingFormat](#EncodingFormat) | 是 | 是 | 指明证书编码格式。 | ## CertChainData 证书链数据,在证书链校验时,作为入参传入。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | -------------- | -------------- | ---- | ---- | ------------------------------------------------------------ | | data | Uint8Array | 是 | 是 | 证书数据,按照长度(2字节)-数据的形式传入,如:08ABCDEFGH07ABCDEFG,第一本证书,前2个字节表示证书的长度为8字节,后面附加8字节的证书数据;第2本证书前2个字节表示证书的长度为7字节,后面附加7字节的证书数据。 | | count | number | 是 | 是 | 传入的数据中,包含的证书数量。 | | encodingFormat | [EncodingFormat](#EncodingFormat) | 是 | 是 | 指明证书编码格式。 | ## cryptoFramework.createMac createMac(algName : string) : Mac 生成Mac实例,用于进行消息认证码的计算与操作 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ------------------------------------------------------------ | | algName | string | 是 | 指定摘要算法,支持算法范围:SHA1/SHA224/SHA256/SHA384/SHA512 | **返回值**: | 类型 | 说明 | | ---- | --------------------------------------- | | Mac | 返回由输入算法指定生成的[Mac](#mac)对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } ``` ## Mac Mac类,调用Mac方法可以进行MAC(Message Authentication Code)加密计算。调用前,需要通过[createMac](#cryptoframeworkcreatemac)构造Mac实例。 ### **属性** **系统能力:**SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 说明 | | ------- | ------ | ---- | ---- | -------------------- | | algName | string | 是 | 否 | 代表指定的摘要算法名 | ### init init(key : SymKey, callback : AsyncCallback\) : void; 使用对称密钥初始化Mac计算 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | key | SymKey | 是 | 共享对称密钥 | | callback | AsyncCallback\ | 是 | 回调函数 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } var KeyBlob; var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); symKeyGenerator.convertKey(KeyBlob, (err, symKey) => { if (err) { console.error("[Callback] err: " + err.code); } mac.init(symKey, (err1, ) => { if (err1) { console.error("[Callback] err: " + err1.code); } }); }); ``` ### init init(key : SymKey) : Promise\; 使用对称密钥初始化Mac计算 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | ------------ | | key | SymKey | 是 | 共享对称密钥 | **返回值:** | 类型 | 说明 | | --------------- | ------------ | | Promise\ | Promise对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { AlertDialog.show({message: "[Promise]: error code: " + error.code + ", message is: " + error.message}); console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } console.error("Mac algName is: " + mac.algName); var KeyBlob; var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob); promiseConvertKey.then(symKey => { var promiseMacInit = mac.init(symKey); return promiseMacInit; }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ### update update(input : DataBlob, callback : AsyncCallback\) : void; 传入消息进行Mac更新计算 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ---------- | | input | DataBlob | 是 | 传入的消息 | | callback | AsyncCallback\ | 是 | 回调函数 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var KeyBlob; var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { AlertDialog.show({message: "[Callback]: error code: " + error.code + ", message is: " + error.message}); console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); symKeyGenerator.convertKey(KeyBlob, (err, symKey) => { if (err) { console.error("[Callback] err: " + err.code); } mac.init(symKey, (err1, ) => { if (err1) { console.error("[Callback] err: " + err1.code); } let blob; mac.update(blob, (err2, data) => { if (err2) { console.error("[Callback] err: " + err2.code); } }); }); }); ``` ### update update(input : DataBlob) : Promise\; 传入消息进行Mac更新计算 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | input | DataBlob | 是 | 传入的消息 | **返回值:** | 类型 | 说明 | | --------------- | ----------- | | Promise\ | Promise对象 | ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { AlertDialog.show({message: "[Promise]: error code: " + error.code + ", message is: " + error.message}); console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } console.error("Mac algName is: " + mac.algName); AlertDialog.show({message: "Mac algName is: " + mac.algName}); var KeyBlob; var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob); promiseConvertKey.then(symKey => { var promiseMacInit = mac.init(symKey); return promiseMacInit; }).then(() => { let blob; var promiseMacUpdate = mac.update(blob); return promiseMacUpdate; }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ### doFinal doFinal(callback : AsyncCallback\) : void; 返回Mac的计算结果 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | -------- | | callback | AsyncCallback\ | 是 | 回调函数 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var KeyBlob; var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { AlertDialog.show({message: "[Callback]: error code: " + error.code + ", message is: " + error.message}); console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); symKeyGenerator.convertKey(KeyBlob, (err, symKey) => { if (err) { console.error("[Callback] err: " + err.code); } mac.init(symKey, (err1, ) => { if (err1) { console.error("[Callback] err: " + err1.code); } let blob; mac.update(blob, (err2, ) => { if (err2) { console.error("[Callback] err: " + err2.code); } mac.doFinal((err3, macOutput) => { if (err3) { console.error("[Callback] err: " + err3.code); } else { console.error("[Promise]: HMAC result: " + macOutput); } }); }); }); }); ``` ### doFinal doFinal() : Promise\ 返回Mac的计算结果 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 | 说明 | | ------------------- | ----------- | | Promise\ | Promise对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } console.error("Mac algName is: " + mac.algName); AlertDialog.show({message: "Mac algName is: " + mac.algName}); var KeyBlob; var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob); promiseConvertKey.then(symKey => { var promiseMacInit = mac.init(symKey); return promiseMacInit; }).then(() => { let blob; var promiseMacUpdate = mac.update(blob); return promiseMacUpdate; }).then(() => { var PromiseMacDoFinal = mac.doFinal(); return PromiseMacDoFinal; }).then(macOutput => { console.error("[Promise]: HMAC result: " + macOutput.data); }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ### getMacLength getMacLength() : number 获取Mac消息认证码的长度(字节数) **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 | 说明 | | ------ | ------------------------- | | number | 返回mac计算结果的字节长度 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var mac; try { mac = cryptoFramework.createMac("SHA256"); } catch (error) { console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } console.error("Mac algName is: " + mac.algName); AlertDialog.show({message: "Mac algName is: " + mac.algName}); var KeyBlob; var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob); promiseConvertKey.then(symKey => { var promiseMacInit = mac.init(symKey); return promiseMacInit; }).then(() => { let blob; var promiseMacUpdate = mac.update(blob); return promiseMacUpdate; }).then(() => { var PromiseMacDoFinal = mac.doFinal(); return PromiseMacDoFinal; }).then(macOutput => { console.error("[Promise]: HMAC result: " + macOutput.data); let macLen = mac.getMacLength(); AlertDialog.show({message: "MAC len: " + macLen}); }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ## cryptoFramework.createMd createMd(algName : string) : Md 生成Md实例,用于进行消息摘要的计算与操作 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ------------------------------------------------------------ | | algName | string | 是 | 指定摘要算法,支持算法范围:SHA1/SHA224/SHA256/SHA384/SHA512/MD5 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------------- | | Md | 返回由输入算法指定生成的[Md](#md)对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var md; try { md = cryptoFramework.createMd("SHA256"); } catch (error) { console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); } ``` ## Md Md类,调用Md方法可以进行MD(Message Digest)摘要计算。调用前,需要通过[createMd](#cryptoframeworkcreatemd)构造Md实例。 ### **属性** **系统能力:**SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 说明 | | ------- | ------ | ---- | ---- | -------------------- | | algName | string | 是 | 否 | 代表指定的摘要算法名 | ### update update(input : DataBlob, callback : AsyncCallback\) : void; 传入消息进行Md更新计算 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------ | | input | DataBlob | 是 | 传入的消息 | | callback | AsyncCallback\ | 是 | 回调函数 | **返回值:** | 类型 | 说明 | | --------------- | ------------ | | Promise\ | Promise对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var md; try { md = cryptoFramework.createMd("SHA256"); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } console.error("Md algName is: " + md.algName); let blob; md.update(blob, (err,) => { if (err) { console.error("[Callback] err: " + err.code); } }); ``` ### update update(input : DataBlob) : Promise\; 传入消息进行Md更新计算 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | input | DataBlob | 是 | 传入的消息 | **返回值:** | 类型 | 说明 | | --------------- | ------------ | | Promise\ | Promise对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var md; try { md = cryptoFramework.createMd("SHA256"); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } console.error("Md algName is: " + md.algName); let blob; var promiseMdUpdate = md.update(blob); promiseMdUpdate.then(() => { // do something }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ### digest digest(callback : AsyncCallback\) : void 返回Md的计算结果 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | -------------------- | | callback | AsyncCallback\ | 是 | 回调函数 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var md; try { md = cryptoFramework.createMd("SHA256"); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } console.error("Md algName is: " + md.algName); let blob; md.update(blob, (err,) => { if (err) { console.error("[Callback] err: " + err.code); } md.digest((err1, mdOutput) => { if (err1) { console.error("[Callback] err: " + err1.code); } else { console.error("[Callback]: MD result: " + mdOutput); } }); }); ``` ### digest digest() : Promise\ 返回Md的计算结果 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 | 说明 | | ------------------- | ----------- | | Promise\ | Promise对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var md; try { md = cryptoFramework.createMd("SHA256"); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } console.error("Md algName is: " + md.algName); let blob; var promiseMdUpdate = md.update(blob); promiseMdUpdate.then(() => { var PromiseMdDigest = md.digest(); return PromiseMdDigest; }).then(mdOutput => { console.error("[Promise]: MD result: " + mdOutput.data); }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ### getMdLength getMdLength() : number 获取Md消息摘要长度(字节数) **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 | 说明 | | ------ | ------------------------ | | number | 返回md计算结果的字节长度 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var md; try { md = cryptoFramework.createMd("SHA256"); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } console.error("Md algName is: " + md.algName); let blob; var promiseMdUpdate = md.update(blob); promiseMdUpdate.then(() => { var PromiseMdDigest = md.digest(); return PromiseMdDigest; }).then(mdOutput => { console.error("[Promise]: MD result: " + mdOutput.data); let mdLen = md.getMdLength(); AlertDialog.show({message: "MD len: " + mdLen}); }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ## cryptoFramework.createRandom createRandom() : Random 生成Random实例,用于进行随机数的计算与设置种子 **系统能力:** SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | --------------------------------------------- | | Random | 返回由输入算法指定生成的[Random](#random)对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" try { var rand = cryptoFramework.createRandom(); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } ``` ## Random Random类,调用Random方法可以进行随机数计算。调用前,需要通过[createRandom](#cryptoframeworkcreaterandom)构造Random实例。 ### generateRandom generateRandom(len : number, callback: AsyncCallback\) : void; 生成指定长度的随机数 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------- | ---- | -------------------- | | len | number | 是 | 表示生成随机数的长度 | | callback | AsyncCallback\ | 是 | 回调函数 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var rand; try { rand = cryptoFramework.createRandom(); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } rand.generateRandom(12, (err, randData) => { if (err) { console.error("[Callback] err: " + err.code); } else { console.error("[Callback]: generate random result: " + randData.data); } }); ``` ### generateRandom generateRandom(len : number) : Promise\; 生成指定长度的随机数 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | -------------------- | | len | number | 是 | 表示生成随机数的长度 | **返回值:** | 类型 | 说明 | | ------------------- | ----------- | | Promise\ | Promise对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var rand; try { rand = cryptoFramework.createRandom(); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } var promiseGenerateRand = rand.generateRandom(12); promiseGenerateRand.then(randData => { console.error("[Promise]: rand result: " + randData.data); }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ### setSeed setSeed(seed : DataBlob, callback : AsyncCallback\) : void; 设置指定的种子 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------- | ---- | ------------ | | seed | DataBlob | 是 | 设置的种子 | | callback | AsyncCallback\ | 是 | 回调函数 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var rand; try { rand = cryptoFramework.createRandom(); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } rand.generateRandom(12, (err, randData) => { if (err) { console.error("[Callback] err: " + err.code); } else { console.error("[Callback]: generate random result: " + randData.data); rand.setSeed(randData, (err1, data) => { if (err1) { console.error("[Callback] err: " + err1.code); } else { console.error("[Callback]: setSeed success"); } }); } }); ``` ### setSeed setSeed(seed : DataBlob) : Promise\; 设置指定的种子 **系统能力:** SystemCapability.Security.CryptoFramework | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | seed | DataBlob | 是 | 设置的种子 | ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" var rand; try { rand = cryptoFramework.createRandom(); } catch (error) { console.error("[Callback]: error code: " + error.code + ", message is: " + error.message); } var promiseGenerateRand = rand.generateRandom(12); promiseGenerateRand.then(randData => { console.error("[Promise]: rand result: " + randData.data); var promiseSetSeed = rand.setSeed(randData); return promiseSetSeed; }).then(() => { console.error("[Promise]: setSeed success"); }).catch(error => { console.error("[Promise]: error: " + error.message); }); ``` ## ParamsSpec 加解密参数,在进行对称加解密时需要构造其子类对象,并将子类对象传入[init()](#init-2)方法。适用于需要iv等参数的对称加解密模式(对于无iv等参数的模式如ECB模式,不需要构造其子类对象)。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------- | | algoName | string | 是 | 是 | 指明对称加解密参数的算法模式。可选值如下:
- "IvParamsSpec": 适用于CBC\|CTR\|OFB\|CFB模式
- "GcmParamsSpec": 适用于GCM模式
- "CcmParamsSpec": 适用于CCM模式 | ## IvParamsSpec 适用于CBC、CTR、OFB、CFB模式,仅使用iv的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------- | | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv。常见取值如下:
- AES的CBC\|CTR\|OFB\|CFB模式:iv长度为16字节
- 3DES的CBC\|OFB\|CFB模式:iv长度为8字节| ## GcmParamsSpec 适用于GCM模式的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------- | | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为12字节| | aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节| | authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为16字节。
采用GCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),将其作为解密时[GcmParamsSpec](#gcmparamsspec)中的authTag| ## CcmParamsSpec 适用于CCM模式的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | -------- | ---- | ---- | -------------------------------| | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为7字节 | | aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节 | | authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为12字节。
采用CCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),将其作为解密时[CcmParamsSpec](#ccmparamsspec)中的authTag | ## CryptoMode 表示加解密操作的枚举。 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 值 | 描述 | | ------------ | -------- | -------------------------------- | | ENCRYPT_MODE | 0 | 表示进行加密操作 | | DECRYPT_MODE | 1 | 表示进行解密操作 | ## Key 密钥(父类),在运行密码算法(如加解密)时需要提前生成其子类对象,并传入[Cipher](#cipher)实例的[init()](#init-2)方法。密钥可以通过密钥生成器来生成。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------- | | format | string | 是 | 否 | 密钥的格式。| | algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| ### getEncoded getEncoded() : DataBlob 以同步方法,获取16进制形式的密钥内容。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 |描述 | | ------- | ----------- | | [DataBlob](#datablob) | 用于查看密钥的具体内容。| **示例:** ```js function uint8ArrayToShowStr(uint8Array) { return Array.prototype.map .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .join(''); } let key; // key为使用对称密钥生成器 生成的密钥,此处省略生成过程 let encodedKey = key.getEncoded(); console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); ``` ## SymKey 对称密钥,是[Key](#key)的子类,在对称加解密时需要将其对象传入[Cipher](#cipher)实例的[init()](#init-2)方法使用。对称密钥可以通过对称密钥生成器[SymKeyGenerator](#symkeygenerator)来生成。 ### clearMem clearMem() : void 以同步方法,将系统底层内存中的的密钥内容清零。 **系统能力:** SystemCapability.Security.CryptoFramework **示例:** ```js function uint8ArrayToShowStr(uint8Array) { return Array.prototype.map .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .join(''); } let key; // key为使用对称密钥生成器 生成的密钥,此处省略生成过程 let encodedKey = key.getEncoded(); console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); // 输出密钥内容 key.clearMem(); encodedKey = key.getEncoded(); console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); // 输出全零 ``` ## PubKey 公钥,是Key的子类,在非对称加解密、验签、密钥协商时需要将其对象作为输入使用。公钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------- | | format | string | 是 | 否 | 密钥的格式。| | algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| ### getEncoded getEncoded() : DataBlob 以同步方法,获取二进制形式的密钥内容。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 |描述 | | ------- | ----------- | | [DataBlob](#datablob) | 用于查看密钥的具体内容。| **示例:** ```js console.info("key format:" + key.format); console.info("key algName:" + key.algName); var encodedKey = key.getEncoded(); console.info("key encoded:" + Uint8ArrayToShowStr(encodedKey.data)); ``` ## PriKey 私钥,是Key的子类,在非对称加解密、签名、密钥协商时需要将其作为输入使用。私钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------- | | format | string | 是 | 否 | 密钥的格式。| | algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| ### getEncoded getEncoded() : DataBlob 以同步方法,获取二进制形式的密钥内容。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 |描述 | | ------- | ----------- | | [DataBlob](#datablob) | 用于查看密钥的具体内容。| **示例:** ```js console.info("key format:" + key.format); console.info("key algName:" + key.algName); var encodedKey = key.getEncoded(); console.info("key encoded:" + Uint8ArrayToShowStr(encodedKey.data)); ``` ### clearMem clearMem() : void 以同步方法,将系统底层内存中的的密钥内容清零。 **系统能力:** SystemCapability.Security.CryptoFramework **示例:** ```js key.clearMem(); ``` ## cryptoFramework.createSymKeyGenerator createSymKeyGenerator(algName : string) : SymKeyGenerator 通过指定算法名称的字符串,获取相应的对称密钥生成器实例。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ----------------------------- | | algName | string | 是 | 待生成对称密钥生成器的算法名称。 | **返回值:** | 类型 | 说明 | | ----------------------------------- | -------------------------- | | [SymKeyGenerator](#symkeygenerator) | 返回对称密钥生成器的对象。 | ## SymKeyGenerator 对称密钥生成器。在使用该类的方法前,需要先使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)方法构建一个symKeyGenerator实例。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | ---- | ---- | ---------------------------- | | algName | string | 是 | 否 | 对称密钥生成器指定的算法名称。 | ### generateSymKey generateSymKey(callback : AsyncCallback\) : void 异步获取对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | ----------------- | ---- | ------------------- | | callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数,用于获取对称密钥。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let symAlgoName = '3DES192'; let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); symKeyGenerator.generateSymKey((err, symKey) => { if (err) { console.error('Failed to generate symKey'); return; } console.log('Generate symKey success, algName: ' + symKey.algName); }) ``` ### generateSymKey generateSymKey() : Promise\ 异步获取该对称密钥生成器随机生成的密钥,通过Promise获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 | 说明 | | --------------------- | ------------------------------- | | Promise\<[SymKey](#symkey)> | 使用Promise的方式获取对称密钥。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let symAlgoName = 'AES128'; let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); symKeyGenerator.generateSymKey().then((symKey) => { console.log('Generate symKey success, algName:' + symKey.algName); }) ``` ### convertKey convertKey(key : DataBlob, callback : AsyncCallback\) : void 异步获取指定数据生成对称密钥,通过注册回调函数获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | ----------------- | ---- | ---------------------- | | key | [DataBlob](#datablob) | 是 | 指定的对称密钥材料。 | | callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数,用于获取对称密钥。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; function genKeyMaterialBlob() { let arr = [ 0xba, 0x3d, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c, 0xba, 0x3b, 0xc2, 0x71, 0xab, 0xa0, 0x30, 0x72]; // keyLen = 192 (24 bytes) let keyMaterial = new Uint8Array(arr); return {data : keyMaterial}; } let symAlgoName = '3DES192'; let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let keyMaterialBlob = genKeyMaterialBlob(); symKeyGenerator.convertKey(keyMaterial, (err, symKey) => { if (err) { console.error('Failed to convert symKey'); return; } console.log('Convert symKey success, algName:' + symKey.algName); }) ``` ### convertKey convertKey(key : DataBlob) : Promise\ 异步获取指定数据生成对称密钥,通过Promise获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | ---- | -------- | ---- | -------------------- | | key | [DataBlob](#datablob) | 是 | 指定的密钥材料数据。 | **返回值:** | 类型 | 说明 | | --------------------- | ------------------------------- | | Promise\<[SymKey](#symkey)> | 使用Promise的方式获取对称密钥。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; function genKeyMaterialBlob() { let arr = [ 0xba, 0x3d, 0xc2, 0x71, 0x21, 0x1e, 0x30, 0x56, 0xad, 0x47, 0xfc, 0x5a, 0x46, 0x39, 0xee, 0x7c, 0xba, 0x3b, 0xc2, 0x71, 0xab, 0xa0, 0x30, 0x72]; // keyLen = 192 (24 bytes) let keyMaterial = new Uint8Array(arr); return {data : keyMaterial}; } let symAlgoName = '3DES192'; let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let keyMaterialBlob = genKeyMaterialBlob(); symKeyGenerator.convertKey(keyMaterial).then((symKey) => { console.log('Convert symKey success, algName:' + symKey.algName); }) ``` ## cryptoFramework.createAsyKeyGenerator createAsyKeyGenerator(algName : string) : AsyKeyGenerator 通过指定算法名称的字符串,获取相应的非对称密钥生成器实例。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | -------------------------------- | | algName | string | 是 | 待生成对称密钥生成器的算法名称。 | **返回值:** | 类型 | 说明 | | --------------- | -------------------------- | | asyKeyGenerator | 返回非对称密钥生成器的对象。 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); ``` ## AsyKeyGenerator 非对称密钥生成器。在使用该类的方法前,需要先使用createAsyKeyGenerator()方法构建一个AsyKeyGenerator实例。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | -------------- | -------------- | ---- | ---- | ----------------------------------| | algName | string | 是 | 否 | 非对称密钥生成器指定的算法名称。 | ### generateKeyPair generateKeyPair(callback : AsyncCallback\) : void; 异步获取非对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | -------------------------- | ---- | ---------------------------- | | callback | AsyncCallback\ | 是 | 回调函数,用于获取非对称密钥。 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); asyKeyGenerator.generateKeyPair((err, keyPair) => { if (err) { console.error("generateKeyPair: error."); return; } console.info("generateKeyPair: success."); }) ``` ### generateKeyPair generateKeyPair() : Promise\ 异步获取该非对称密钥生成器随机生成的密钥,通过Promise获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** | 类型 | 说明 | | --------------------- | ------------------------------- | | Promise\ | 使用Promise的方式获取非对称密钥。 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); let keyGenPromise = asyKeyGenerator.generateKeyPair(); keyGenPromise.then( keyPair => { console.info("generateKeyPair success."); }).catch(error => { console.error("generateKeyPair error."); }); ``` ### convertKey convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\) : void 异步获取指定数据生成非对称密钥,通过注册回调函数获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | -------------------------- | ---- | ---------------------------- | | pubKey | DataBlob | 否 | 指定的公钥材料。 | | priKey | DataBlob | 否 | 指定的私钥材料。 | | callback | AsyncCallback\ | 是 | 回调函数,用于获取非对称密钥。 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); asyKeyGenerator.convertKey(pubKey, priKey, (err, keyPair) => { if (err) { console.error("convertKey: error."); return; } console.info("convertKey: success."); }) ``` ### convertKey convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\ 异步获取指定数据生成非对称密钥,通过Promise获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | ---- | -------- | ---- | -------------------- | | pubKey | DataBlob | 否 | 指定的公钥材料。 | | priKey | DataBlob | 否 | 指定的私钥材料。 | **返回值:** | 类型 | 说明 | | --------------------- | ------------------------------- | | Promise\ | 使用Promise的方式获取非对称密钥。 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); let keyGenPromise = asyKeyGenerator.convertKey(pubKey, priKey); keyGenPromise.then( keyPair => { console.info("convertKey success."); }).catch(error => { console.error("convertKey error."); }); ``` ## cryptoFramework.createCipher createCipher(transformation : string) : Cipher 通过指定算法名称,获取相应的[Cipher](#cipher)实例。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------------- | ------ | -------- | ------------------------------------------------------------ | | transformation | string | 是 | 待生成Cipher的算法名称、加密模式以及填充方法的组合。输入可以为"RSA1024\|PKCS1", "RSA1024\|PKCS1_OAEP\|SHA256\|SHA256"等 | **返回值:** | 类型 | 说明 | | ------ | ------------------------ | | [Cipher](#cipher) | 返回加解密生成器的对象。 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let cipherAlgoName = '3DES192|ECB|PKCS7'; var cipher; try { cipher = cryptoFramework.createCipher(cipherAlgoName); console.info(`cipher algName: ${cipher.algName}`); } catch (error) { console.error(`createCipher failed, ${error.code}, ${error.message}`); return; } ``` ## Cipher 提供加解密的算法操作功能,按序调用本类中的[init()](#init-2)、[update()](#update-4)、[doFinal()](#dofinal-2)方法,可以实现对称加密/对称解密/非对称加密/非对称解密。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 描述 | | ------- | ------ | -------- | ----------- | ---------------------------- | | algName | string | 是 | 否 | 加解密生成器指定的算法名称。 | ### init init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallback\) : void 初始化加解密的[cipher](#cipher)对象,通过注册回调函数获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | ------------------------ | ------- | ------------------------ | | opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | | key | [Key](#key) | 是 | 指定加密或解密的密钥。 | | params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数。 | | callback | AsyncCallback\ | 是 | 回调函数。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let symKey; // 此处省略生成对称密钥的过程 let cipher; // 此处省略生成cipher实例的过程 cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null, (err, ) => { if (err) { console.error('Failed to init cipher'); return; } console.log('Init cipher success'); // 此处进行update等后续操作 }) ``` ### init init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\ 初始化加解密的cipher对象,通过Promise获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | ------ | ---------- | ---- | ---------------------- | | opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | | key | [Key](#key) | 是 | 指定加密或解密的密钥。 | | params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数,对于ECB等没有参数的算法模式,可以传入null。 | **返回值:** | 类型 | 说明 | | ------------------- | --------------------------- | | Promise\ | 使用Promise的方式获取结果。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let symKey; // 此处省略生成对称密钥的过程 let cipher; // 此处省略生成cipher实例的过程 cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null).then(() => { console.log('Init cipher success'); // 此处进行update等后续操作 }) ``` ### update update(data : DataBlob, callback : AsyncCallback\) : void 分段更新加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。(根据数据量,可不调用update或调用多次update) **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ------------------------------------------ | | data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | | callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数,用于获取加密或者解密的数据结果。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; function stringToUint8Array(str) { let arr = []; for (let i = 0, j = str.length; i < j; ++i) { arr.push(str.charCodeAt(i)); } return new Uint8Array(arr); } let cipher; // 此处省略生成cipher实例的过程 // 此处省略init()过程 let plainText = {data : stringToUint8Array('this is test!')}; cipher.update(plainText, (err, output) => { // 加密过程举例 if (err) { console.error('Failed to update cipher'); return; } console.log('Update cipher success'); // 此处进行doFinal等后续操作 }) ``` ### update update(data : DataBlob) : Promise\ 分段更新加密或者解密数据操作,通过Promise获取结果。(根据数据量,可不调用update或调用多次update) **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | ---- | -------- | ---- | -------------------- | | data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | **返回值:** | 类型 | 说明 | | ----------------------- | --------------------------- | | Promise\<[DataBlob](#datablob)> | 使用Promise的方式获取结果。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; function stringToUint8Array(str) { let arr = []; for (let i = 0, j = str.length; i < j; ++i) { arr.push(str.charCodeAt(i)); } return new Uint8Array(arr); } let cipher; // 此处省略生成cipher实例的过程 // 此处省略init()过程 let plainText = {data : stringToUint8Array('this is test!')}; cipher.update(data).then((output) => { console.log('Update cipher success'); // 此处进行doFinal等后续操作 }) ``` ### doFinal doFinal(data : DataBlob, callback : AsyncCallback\) : void 最后结束加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。如果在本次加解密过程中已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。
根据对称加解密的模式不同,doFinal的输出可能不同。
对于GCM和CCM模式的对称加密,在doFinal完成后需要将其结果暂存作为解密时的authTag。
对于其他模式的对称加解密,存在两种情况(1)update输出一部分加解密结果,doFinal输出剩余加解密结果;(2)update输出加解密结果全部由update输出,doFinal输出空。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | -------- | ---------------------------- | ---- | ------------------------------------------ | | data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | | callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数,用于获取加密或者解密的数据结果。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let cipher; // 此处省略生成cipher实例的过程 let data; // 此处省略准备待加密/解密数据的过程 // 此处省略init()和update()过程 cipher.doFinal(data, (err, output) => { if (err) { console.error('Failed to final cipher'); return; } console.log('Final cipher success'); }) ``` ### doFinal doFinal(data : DataBlob) : Promise\ 最后结束加密或者解密数据操作,通过Promise获取结果。如果在本次加解密过程中已经使用update传入过数据,可以在doFinal的data参数处传入null。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 名称 | 类型 | 必填 | 说明 | | ---- | -------- | ---- | -------------------- | | data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | **返回值:** | 类型 | 说明 | | ----------------------- | --------------------------- | | Promise\<[DataBlob](#datablob)> | 使用Promise的方式获取结果。 | **示例:** ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let cipher; // 此处省略生成cipher实例的过程 let data; // 此处省略准备待加密/解密数据的过程 // 此处省略init()和update()过程 cipher.doFinal(data).then((output) => { console.log('Final cipher success'); }) ``` **callback示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2"); let cipher = cryptoFramework.createCipher("RSA1024|PKCS1"); rsaGenerator.generateKeyPair(function (err, keyPair) { let pubKey = keyPair.pubKey; cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubKey, null, function (err, data) { let input = {data : stringToUint8Array(plan) }; cipher.doFinal(input, function (err, data) { AlertDialog.show({ message : "EncryptOutPut is " + data.data} ); }); }); }); ``` **promise示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2"); let cipher = cryptoFramework.createCipher("RSA1024|PKCS1"); let keyGenPromise = rsaGenerator.generateKeyPair(); keyGenPromise.then(rsaKeyPair => { let pubKey = rsaKeyPair.pubKey; return cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, pubKey, null); // 传入私钥和DECRYPT_MODE可初始化解密模式 }).then(() => { let input = { data : stringToUint8Array(plan) }; return cipher.doFinal(input); }).then(dataBlob => { console.info("EncryptOutPut is " + dataBlob.data); }); ``` ## cryptoFramework.createSign createSign(algName : string) : Sign Sign实例生成 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ------------------------------------------------------------ | | algName | string | 是 | 指定签名算法:RSA或ECC,使用RSA PKCS1模式时需要设置摘要,使用RSA PSS模式时需要设置摘要和掩码摘要 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------ | | Sign | 返回由输入算法指定生成的Sign对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let signer1 = cryptoFramework.createSign("RSA1024|PKCS1|SHA256"); let singer2 = cryptoFramework.createSign("RSA1024|PKCS1_OAEP|SHA256|MGF1_SHA256") ``` ## Sign Sign类,使用Sign方法之前需要创建该类的实例进行操作,通过createSign(algName : string) : Sign方法构造此实例。 ### init init(priKey : PriKey, callback : AsyncCallback\) : void 使用私钥初始化Sign对象,Callback形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | priKey | Key |是| 用于Sign的初始化 | | callback | AsyncCallback\ | 是 | 回调函数的 | ### init init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\ 使用私钥初始化Sign对象,Promise形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | priKey | Key |是| 用于Sign的初始化 | **返回值:** | 类型 | 说明 | | ------------- | ----------- | | Promise | Promise对象 | ### update update(data : DataBlob, callback : AsyncCallback\) : void 追加待签名数据,callback方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | data | DataBlob | 是 | 传入的消息 | | callback | AsyncCallback | 是 | 回调函数 | ### update update(data : DataBlob) : Promise\; 追加待签名数据,promise方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | data | DataBlob | 是 | 传入的消息 | **返回值:** | 类型 | 说明 | | ------------- | ----------- | | Promise\ | Promise对象 | ### sign sign(data : DataBlob, callback : AsyncCallback\) : void 对数据进行签名,返回签名结果,callback方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | data | DataBlob | 是 | 传入的消息 | | callback | AsyncCallback\ | 是 | 回调函数 | ### sign sign(data : DataBlob) : Promise\ 对数据进行签名,返回签名结果,promise方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | data | DataBlob | 是 | 传入的消息 | **返回值:** | 类型 | 说明 | | ------------- | ----------- | | Promise\ | Promise对象 | **callback示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2"); let signer = cryptoFramework.createSign("RSA1024|PKCS1|SHA256"); rsaGenerator.generateKeyPair(function (err, keyPair) { globalKeyPair = keyPair; let priKey = globalKeyPair.priKey; signer.init(priKey, function (err, data) { signer.update(input1, function (err, data) { signer.sign(input2, function (err, data) { SignMessageBlob = data; console.info("sign output is " + SignMessageBlob.data); }); }); }); }); ``` **promise示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let rsaGenerator = cryptoFramework.createAsyKeyGenerator("RSA1024|PRIMES_2"); let signer = cryptoFramework.createSign("RSA1024|PKCS1|SHA256"); let keyGenPromise = rsaGenerator.generateKeyPair(); keyGenPromise.then( keyPair => { globalKeyPair = keyPair; let priKey = globalKeyPair.priKey; return signer.init(priKey); }).then(() => { return signer.update(input1); }).then(() => { return signer.sign(input2); }).then(dataBlob => { SignMessageBlob = dataBlob; console.info("sign output is " + SignMessageBlob.data); }); ``` ## cryptoFramework.createVerify createVerify(algName : string) : Verify Verify实例生成 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ------------------------------------------------------------ | | algName | string | 是 | 指定签名算法:RSA或ECC,使用RSA PKCS1模式时需要设置摘要,使用RSA PSS模式时需要设置摘要和掩码摘要 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------ | | Verify | 返回由输入算法指定生成的Verify对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let verifyer1 = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256"); let verifyer2 = cryptoFramework.createVerify("RSA1024|PKCS1_OAEP|SHA256|MGF1_SHA256") ``` ## Verify Verify类,使用Verify方法之前需要创建该类的实例进行操作,通过createVerify(algName : string) : Verify方法构造此实例。 ### init init(pubKey : PubKey, callback : AsyncCallback\) : void 传入私钥初始化Verify对象,Callback形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | pubKey | Key |是| 公钥对象,用于Verify的初始化 | | callback | AsyncCallback\ | 是 | 回调函数 | ### init init(pubKey : PubKey) : Promise\ 传入私钥初始化Verify对象,Promise形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | pubKey | Key |是|公钥对象,用于Verify的初始化 | **返回值:** | 类型 | 说明 | | --------------- | ------------ | | Promise\ | Promise对象 | ### update update(data : DataBlob, callback : AsyncCallback\) : void 追加待验签数据,callback方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | data | DataBlob | 是 | 传入的消息 | | callback | AsyncCallback\ | 是 | 回调函数 | ### update update(data : DataBlob) : Promise\; 追加待验签数据,promise方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | data | DataBlob | 是 | 传入的消息 | **返回值:** | 类型 | 说明 | | ------------- | ----------- | | Promise\ | Promise对象 | ### verify verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\) : void 对数据进行签名,返回签名结果,callback方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | data | DataBlob | 是 | 传入的消息 | | signatureData | DataBlob | 是 | 签名数据 | | callback | AsyncCallback\ | 是 | 回调函数 | ### verify verify(data : DataBlob, signatureData : DataBlob) : Promise\ 对数据进行签名,返回签名结果,promise方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | data | DataBlob | 是 | 传入的消息 | | signatureData | DataBlob| 是 | 签名数据 | **返回值:** | 类型 | 说明 | | --------------- | ------------ | | Promise\ | 异步返回值,代表验签是否通过| **callback示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let verifyer = cryptoFramework.createVerify("RSA1024|PKCS1|SHA25"); verifyer.init(globalKeyPair.pubKey, function (err, data) { verifyer.update(input1, function(err, data) { verifyer.verify(input2, SignMessageBlob, function(err, data) { console.info("verify result is " + data); }) }); }) ``` **promise示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let verifyer = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256"); let verifyInitPromise = verifyer.init(globalKeyPair.pubKey); verifyInitPromise.then(() => { return verifyer.update(input1); }).then(() => { return verifyer.verify(input2, SignMessageBlob); }).then(res => { console.log("Verify result is " + res); }); ``` ## cryptoFramework.createKeyAgreement createKeyAgreement(algName : string) : KeyAgreement KeyAgreement实例生成 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | ------- | ------ | ---- | ------------------------------------------------------------ | | algName | string | 是 | 指定密钥协商算法:目前仅支持ECC | **返回值**: | 类型 | 说明 | | ---- | ------------------------------ | | KeyAgreement | 返回由输入算法指定生成的KeyAgreement对象 | **示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let keyAgreement = cryptoFramework.createKeyAgreement("ECC256"); ``` ## KeyAgreement KeyAgreement类,使用密钥协商方法之前需要创建该类的实例进行操作,通过createKeyAgreement(algName : string) : KeyAgreement方法构造此实例。 ### generateSecret generateSecret(priKey : PriKey, pubKey : PubKey, callback : AsyncCallback\) : void 基于传入的私钥与公钥进行密钥协商,返回共享秘密,Callback形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | priKey | PriKey |是| 设置密钥协商的私钥输入 | | pubKey | PubKey |是| 设置密钥协商的公钥输入 | | callback | AsyncCallback\ | 是 | 异步接受共享秘密的回调 | ### generateSecret generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\ 基于传入的私钥与公钥进行密钥协商,返回共享秘密,Promise形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | --------------------- | ---- | ------------------ | | priKey | PriKey |是| 设置密钥协商的私钥输入 | | pubKey | PubKey |是| 设置密钥协商的公钥输入 | **返回值:** | 类型 | 说明 | | --------------- | ------------ | | Promise\ | 共享秘密 | **callback示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let keyAgreement = cryptoFramework.createKeyAgreement("ECC256"); keyAgreement.generateSecret(globalKeyPair.priKey, globalKeyPair.pubKey, function (err, secret) { if (err) { console.error("keyAgreement error."); return; } console.info("keyAgreement output is " + secret.data); }); ``` **promise示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" let keyAgreement = cryptoFramework.createKeyAgreement("ECC256"); let keyAgreementPromise = keyAgreement.generateSecret(globalKeyPair.priKey, globalKeyPair.pubKey); keyAgreementPromise.then((secret) => { console.info("keyAgreement output is " + secret.data); }).catch((error) => { console.error("keyAgreement error."); }); ``` ## cryptoFramework.createX509Cert createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\) : void 表示创建X509证书对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | ------------------ | | inStream | EncodingBlob | 是 | X509证书序列化数据 | | callback | AsyncCallback\ | 否 | 回调函数。表示X509证书对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); } }); ``` ## cryptoFramework.createX509Cert createX509Cert(inStream : EncodingBlob) : Promise\ 表示创建X509证书对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------ | ---- | ------------------ | | inStream | EncodingBlob | 是 | X509证书序列化数据 | **返回值**: | 类型 | 说明 | | :------- | ---------------- | | X509Cert | 表示X509证书对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob).then(x509Cert => { Console.log("createX509Cert success"); }, error => { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ## X509Cert X509证书类。 ### verify verify(key : PubKey, callback : AsyncCallback\) : void 表示对证书验签。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | ------------------ | | key | PubKey | 是 | 用于验签的公钥对象 | | callback | AsyncCallback\) | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,不为null表示失败 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); // 业务需通过AsyKeyGenerator生成PubKey或通过上级X509Cert证书对象的getPublicKey获取PubKey let pubKey = null; x509Cert.verify(pubKey, function (error, data) { if (error != null) { Console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("verify success"); } }); } }); ``` ### verify verify(key : PubKey) : Promise\ 表示对证书验签。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | ------------------ | | key | PubKey | 是 | 用于验签的公钥对象 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------------------------------------ | | Promise\ | Promise对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob).then(x509Cert => { Console.log("createX509Cert success"); // 业务需通过AsyKeyGenerator生成PubKey或通过上级X509Cert证书对象的getPublicKey获取PubKey let pubKey = null; x509Cert.verify(pubKey).then(result => { Console.log("verify success"); }, error => { Console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getEncoded getEncoded(callback : AsyncCallback\) : void 表示获取X509证书序列化数据。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback\ | 否 | 回调函数。表示X509证书序列化数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); x509Cert.getEncoded(function (error, data) { if (error != null) { Console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getEncoded success"); } }); } }); ``` ### getEncoded getEncoded() : Promise\ 表示获取X509证书序列化数据。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------------ | ---------------------- | | Promise\ | 表示X509证书序列化数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob).then(x509Cert => { Console.log("createX509Cert success"); x509Cert.getEncoded().then(result => { Console.log("getEncoded success"); }, error => { Console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getPublicKey getPublicKey(callback : AsyncCallback\) : void 表示获取X509证书公钥。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback | 否 | 回调函数,X509证书公钥对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); x509Cert.getPublicKey(function (error, pubKey) { if (error != null) { Console.log("getPublicKey failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getPublicKey success"); } }); } }); ``` ### getPublicKey getPublicKey() : Promise\ 表示获取X509证书公钥。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ---------------- | | PubKey | X509证书公钥对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob).then(x509Cert => { Console.log("createX509Cert success"); x509Cert.getPublicKey().then(pubKey => { Console.log("getPublicKey success"); }, error => { Console.log("getPublicKey failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### checkValidityWithDate checkValidityWithDate(date: string, callback : AsyncCallback\) : void 表示检查X509证书有效期。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | date | string | 是 | 日期 | | callback | AsyncCallback\ | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否检查成功,error为null表示成功,不为null表示失败 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let date = "150527000001Z"; x509Cert.checkValidityWithDate(date, function (error, data) { if (error != null) { Console.log("checkValidityWithDate failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("checkValidityWithDate success"); } }); } }); ``` ### checkValidityWithDate checkValidityWithDate(date: string) : Promise\ 表示检查X509证书有效期。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | ---- | | date | string | 是 | 日期 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------------------------------------ | | void | 使用AsyncCallback的第一个error参数判断是否检查成功,error为null表示成功,不为null表示失败 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob).then(x509Cert => { Console.log("createX509Cert success"); let date = "150527000001Z"; x509Cert.checkValidityWithDate(date).then(result => { Console.log("checkValidityWithDate success"); }, error => { Console.log("checkValidityWithDate failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getVersion getVersion() : number 表示获取X509证书版本。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ---------------- | | number | 表示X509证书版本 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let version = x509Cert.getVersion(); } }); ``` ### getSerialNumber getSerialNumber() : number 表示获取X509证书序列号。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ------------------ | | number | 表示X509证书序列号 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let serialNumber = x509Cert.getSerialNumber(); } }); ``` ### getIssuerName getIssuerName() : DataBlob 表示获取X509证书颁发者名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | ---------------------- | | DataBlob | 表示X509证书颁发者名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let issuerName = x509Cert.getIssuerName(); } }); ``` ### getSubjectName getSubjectName() : DataBlob 表示获取X509证书主体名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | -------------------- | | DataBlob | 表示X509证书主体名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let subjectName = x509Cert.getSubjectName(); } }); ``` ### getNotBeforeTime getNotBeforeTime() : string 表示获取X509证书有效期起始时间。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------------- | | string | 表示X509证书有效期起始时间 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let notBefore = x509Cert.getNotBeforeTime(); } }); ``` ### getNotAfterTime getNotAfterTime() : string 表示获取X509证书有效期截止时间。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------------- | | string | 表示X509证书有效期截止时间 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let notAfter = x509Cert.getNotAfterTime(); } }); ``` ### getSignature getSignature() : DataBlob 表示获取X509证书签名数据。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | -------------------- | | DataBlob | 表示X509证书签名数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let signature = x509Cert.getSignature(); } }); ``` ### getSignatureAlgName getSignatureAlgName() : string 表示获取X509证书签名算法名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ------------------------ | | string | 表示X509证书签名算法名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let sigAlgName = x509Cert.getSignatureAlgName(); } }); ``` ### getSignatureAlgOid getSignatureAlgOid() : string 表示获取X509证书签名算法OID。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ----------------------- | | string | 表示X509证书签名算法OID | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let sigAlgOid = x509Cert.getSignatureAlgOid(); } }); ``` ### getSignatureAlgParams getSignatureAlgParams() : DataBlob 表示获取X509证书签名算法参数。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | ------------------------ | | DataBlob | 表示X509证书签名算法参数 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let sigAlgParams = x509Cert.getSignatureAlgParams(); } }); ``` ### getKeyUsage getKeyUsage() : DataBlob 表示获取X509证书秘钥用途。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | -------------------- | | DataBlob | 表示X509证书秘钥用途 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let keyUsage = x509Cert.getKeyUsage(); } }); ``` ### getExtKeyUsage getExtKeyUsage() : DataArray 表示获取X509证书扩展秘钥用途。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | --------- | ------------------------ | | DataArray | 表示X509证书扩展秘钥用途 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let extKeyUsage = x509Cert.getExtKeyUsage(); } }); ``` ### getBasicConstraints getBasicConstraints() : number 表示获取X509证书基本约束。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------- | | number | 表示X509证书基本约束 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let basicConstraints = x509Cert.getBasicConstraints(); } }); ``` ### getSubjectAltNames getSubjectAltNames() : DataArray 表示获取X509证书主体可选名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | --------- | ------------------------ | | DataArray | 表示X509证书主体可选名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let subjectAltNames = x509Cert.getSubjectAltNames(); } }); ``` ### getIssuerAltNames getIssuerAltNames() : DataArray 表示获取X509证书颁发者可选名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | --------- | -------------------------- | | DataArray | 表示X509证书颁发者可选名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Cert(encodingBlob, function (error, x509Cert) { if (error != null) { Console.log("createX509Cert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Cert success"); let issuerAltNames = x509Cert.getIssuerAltNames(); } }); ``` ## cryptoFramework.createX509Crl createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\) : void 表示创建X509证书吊销列表的对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------------------------- | | inStream | EncodingBlob | 是 | 表示证书吊销列表序列化数据 | | callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销列表对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); } }); ``` ## cryptoFramework.createX509Crl createX509Crl(inStream : EncodingBlob) : Promise\ 表示创建X509证书吊销列表的对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------ | ---- | -------------------------- | | inStream | EncodingBlob | 是 | 表示证书吊销列表序列化数据 | **返回值**: | 类型 | 说明 | | ------- | -------------------- | | Promise\ | 表示证书吊销列表对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ## X509Crl X509证书吊销列表对象。 ### isRevoked isRevoked(cert : X509Cert, callback : AsyncCallback\) : void 表示检查证书是否吊销。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------------------- | | cert | X509Cert | 是 | 表示被检查的证书对象 | | callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销状态,true表示已吊销,false表示未吊销 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); // 业务需自行生成X509Cert证书对象 let x509Cert = null; x509Crl.isRevoked(x509Cert, function (error, isRevoked) { if (error != null) { Console.log("call isRevoked failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("call isRevoked success"); } }); } }); ``` ### isRevoked isRevoked(cert : X509Cert) : Promise\ 表示检查证书是否吊销。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | -------------------- | | cert | X509Cert | 是 | 表示被检查的证书对象 | **返回值**: | 类型 | 说明 | | ------- | ------------------------------------------------- | | Promise\ | 表示证书吊销状态,true表示已吊销,false表示未吊销 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); // 业务需自行生成X509Cert证书对象 let x509Cert = null; x509Crl.isRevoked(x509Cert).then(isRevoked => { Console.log("call isRevoked success"); }, error => { Console.log("call isRevoked failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getType getType() : string 表示获取证书吊销列表类型。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------- | | string | 表示证书吊销列表类型 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let type = x509Crl.getType(); } }); ``` ### getEncoded getEncoded(callback : AsyncCallback\) : void 表示获取X509证书吊销列表的序列化数据。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback\ | 否 | 回调函数,表示X509证书吊销列表的序列化数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); x509Crl.getEncoded(function (error, data) { if (error != null) { Console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getEncoded success"); } }); } }); ``` ### getEncoded getEncoded() : Promise\ 表示获取X509证书吊销列表的序列化数据。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------------ | -------------------------------- | | Promise\ | 表示X509证书吊销列表的序列化数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); x509Crl.getEncoded().then(result => { Console.log("getEncoded success"); }, error => { Console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### verify verify(key : PubKey, callback : AsyncCallback\) : void 表示对X509证书吊销列表进行验签。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | ---------------------- | | key | PubKey | 是 | 表示用于验签的公钥对象 | | callback | AsyncCallback\ | 否 | 回调函数,使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败。 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); // 业务需通过AsyKeyGenerator生成PubKey let pubKey = null; x509Crl.verify(pubKey, function (error, data) { if (error != null) { Console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("verify success"); } }); } }); ``` ### verify verify(key : PubKey) : Promise\ 表示对X509证书吊销列表进行验签。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | ---------------------- | | key | PubKey | 是 | 表示用于验签的公钥对象 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------------------------------------ | | Promise\ | 使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); // 业务需通过AsyKeyGenerator生成PubKey let pubKey = null; x509Crl.verify(pubKey).then(result => { Console.log("verify success"); }, error => { Console.log("verify failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getVersion getVersion() : number 表示获取X509证书吊销列表的版本号。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------------------- | | number | 表示获取X509证书吊销列表的版本号 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let version = x509Crl.getVersion(); } }); ``` ### getIssuerName getIssuerName() : DataBlob 表示获取X509证书吊销列表颁发者名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | ------------------------------ | | DataBlob | 表示X509证书吊销列表颁发者名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let issuerName = x509Crl.getIssuerName(); } }); ``` ### getLastUpdate getLastUpdate() : string 表示获取X509证书吊销列表最后一次更新日期。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ------------------------------------ | | string | 表示X509证书吊销列表最后一次更新日期 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let lastUpdate = x509Crl.getLastUpdate(); } }); ``` ### getNextUpdate getNextUpdate() : string 表示获取证书吊销列表下一次更新的日期。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ------------------------------------ | | string | 表示X509证书吊销列表下一次更新的日期 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let nextUpdate = x509Crl.getNextUpdate(); } }); ``` ### getRevokedCert getRevokedCert(serialNumber : number, callback : AsyncCallback\) : void 表示通过指定证书序列号获取被吊销X509证书对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------------- | ---- | -------------- | | serialNumber | number | 是 | 表示证书序列号 | | callback | AsyncCallback\ | 否 | 回调函数。表示被吊销X509证书对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); // 业务需赋值为对应证书的序列号 let serialNumber = 1000; x509Crl.getRevokedCert(serialNumber, function (error, entry) { if (error != null) { Console.log("getRevokedCert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getRevokedCert success"); } }); } }); ``` ### getRevokedCert getRevokedCert(serialNumber : number) : Promise\ 表示通过指定证书序列号获取被吊销X509证书对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------------ | ------ | ---- | -------------- | | serialNumber | number | 是 | 表示证书序列号 | **返回值**: | 类型 | 说明 | | ------------ | ---------------------- | | Promise\ | 表示被吊销X509证书对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); // 业务需赋值为对应证书的序列号 let serialNumber = 1000; x509Crl.getRevokedCert(serialNumber).then(entry => { Console.log("getRevokedCert success"); }, error => { Console.log("getRevokedCert failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getRevokedCertWithCert getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\) : void 表示通过指定证书对象获取被吊销X509证书对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | ------------ | | cert | X509Cert | 是 | 表示证书对象 | | callback | AsyncCallback\ | 否 | 回调函数,表示被吊销X509证书对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); // 业务需自行生成X509Cert证书对象 let x509Cert = null; x509Crl.getRevokedCertWithCert(x509Cert, function (error, entry) { if (error != null) { Console.log("getRevokedCertWithCert failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getRevokedCertWithCert success"); } }); } }); ``` ### getRevokedCertWithCert getRevokedCertWithCert(cert : X509Cert) : Promise\ 表示通过指定证书对象获取被吊销X509证书对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ------------ | | cert | X509Cert | 是 | 表示证书对象 | **返回值**: | 类型 | 说明 | | ------------ | ---------------------- | | Promise\ | 表示被吊销X509证书对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); // 业务需自行生成X509Cert证书对象 let x509Cert = null; x509Crl.getRevokedCertWithCert(x509Cert).then(entry => { Console.log("getRevokedCertWithCert success"); }, error => { Console.log("getRevokedCertWithCert failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getRevokedCerts getRevokedCerts(callback : AsyncCallback>) : void 表示获取被吊销X509证书列表。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback> | 否 | 回调函数。表示被吊销X509证书列表 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); x509Crl.getRevokedCerts(function (error, array) { if (error != null) { Console.log("getRevokedCerts failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getRevokedCerts success"); } }); } }); ``` ### getRevokedCerts getRevokedCerts() : Promise> 表示获取被吊销X509证书列表。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------------------- | ---------------------- | |Promise> | 表示被吊销X509证书列表 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); x509Crl.getRevokedCerts().then(array => { Console.log("getRevokedCerts success"); }, error => { Console.log("getRevokedCerts failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getTbsInfo getTbsInfo(callback : AsyncCallback\) : void 表示获取证书吊销列表的tbsCertList信息。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销列表的tbsCertList信息 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); x509Crl.getTbsInfo(function (error, tbsInfo) { if (error != null) { Console.log("getTbsInfo failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getTbsInfo success"); } }); } }); ``` ### getTbsInfo getTbsInfo() : Promise\ 表示获取证书吊销列表的tbsCertList信息。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | --------------------------------- | | Promise\ | 表示证书吊销列表的tbsCertList信息 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob).then(x509Crl => { Console.log("createX509Crl success"); x509Crl.getTbsInfo().then(tbsInfo => { Console.log("getTbsInfo success"); }, error => { Console.log("getTbsInfo failed, errCode: " + error.code + ", errMsg: " + error.message); }); }, error => { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getSignature getSignature() : DataBlob 表示获取X509证书吊销列表的签名数据。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | ------------------------------ | | DataBlob | 表示X509证书吊销列表的签名数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let signature = x509Crl.getSignature(); } }); ``` ### getSignatureAlgName getSignatureAlgName() : string 表示获取X509证书吊销列表签名的算法名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------------------- | | string | 表示X509证书吊销列表签名的算法名 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let sigAlgName = x509Crl.getSignatureAlgName(); } }); ``` ### getSignatureAlgOid getSignatureAlgOid() : string 表示获取X509证书吊销列表签名的算法OID。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ----------------------------------- | | string | 表示X509证书吊销列表签名的算法OID。 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let sigAlgOid = x509Crl.getSignatureAlgOid(); } }); ``` ### getSignatureAlgParams getSignatureAlgParams() : DataBlob 表示获取X509证书吊销列表签名的算法参数。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | ---------------------------------- | | DataBlob | 表示X509证书吊销列表签名的算法参数 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 证书吊销列表二进制数据,需业务自行赋值 let encodingData = null; let encodingBlob = { data: encodingData, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; cryptoFramework.createX509Crl(encodingBlob, function (error, x509Crl) { if (error != null) { Console.log("createX509Crl failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("createX509Crl success"); let sigAlgParams = x509Crl.getSignatureAlgParams(); } }); ``` ## cryptoFramework.createCertChainValidator createCertChainValidator(algorithm :string) : CertChainValidator 表示创建证书链校验器对象。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | --------- | ------ | ---- | -------------------- | | algorithm | string | 是 | 表示证书链校验器算法 | **返回值**: | 类型 | 说明 | | ------------------ | -------------------- | | CertChainValidator | 表示证书链校验器对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let validator = cryptoFramework.createCertChainValidator("PKIX"); ``` ## CertChainValidator 证书链校验器对象。 ### validate validate(certChain : CertChainData, callback : AsyncCallback\) : void 表示校验X509证书链。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------- | ---- | ------------------------ | | certChain | CertChainData | 是 | 表示X509证书链序列化数据 | | callback | AsyncCallback\ | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let validator = cryptoFramework.createCertChainValidator("PKIX"); // 证书链二进制数据,需业务自行赋值 let encodingData = null; // 证书链包含的证书个数,需业务自行赋值 let certCount = 2; let certChainData = { data: encodingData, count: certCount, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; validator.validate(certChainData, function (error, data) { if (error != null) { Console.log("validate failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("validate success"); } }); ``` ### validate validate(certChain : CertChainData) : Promise\ 表示校验X509证书链。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | --------- | ------------- | ---- | ------------------------ | | certChain | CertChainData | 是 | 表示X509证书链序列化数据。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 | **返回值**: | 类型 | 说明 | | ---- | ------------------------------------------------------------ | | Promise\ | Promise对象 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let validator = cryptoFramework.createCertChainValidator("PKIX"); // 证书链二进制数据,需业务自行赋值 let encodingData = null; // 证书链包含的证书个数,需业务自行赋值 let certCount = 2; let certChainData = { data: encodingData, count: certCount, // 根据encodingData的格式进行赋值,支持FORMAT_PEM和FORMAT_DER encodingFormat: cryptoFramework.EncodingFormat.FORMAT_PEM }; validator.validate(certChainData).then(result => { Console.log("validate success"); }, error => { Console.log("validate failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### algorithm algorithm : string 表示X509证书链校验器算法名称。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ------------------------ | | string | 表示证书链校验器算法名称 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; let validator = cryptoFramework.createCertChainValidator("PKIX"); let algorithm = validator.algorithm; ``` ## X509CrlEntry 被吊销证书对象。 ### getEncoded getEncoded(callback : AsyncCallback\) : void 表示获取被吊销证书的序列化数据。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback\ | 否 | 回调函数。表示被吊销证书的序列化数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; x509CrlEntry.getEncoded(function (error, data) { if (error != null) { Console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getEncoded success"); } }); ``` ### getEncoded getEncoded() : Promise\ 表示获取被吊销证书的序列化数据。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------------ | -------------------------- | | Promise\ | 表示被吊销证书的序列化数据 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; x509CrlEntry.getEncoded().then(result => { Console.log("getEncoded success"); }, error => { Console.log("getEncoded failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getSerialNumber getSerialNumber() : number 表示获取被吊销证书的序列号。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | ---------------------- | | number | 表示被吊销证书的序列号 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; let serialNumber = x509CrlEntry.getSerialNumber(); ``` ### getCertIssuer getCertIssuer(callback : AsyncCallback\) : void 表示获取被吊销证书的颁发者信息。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback\ | 否 | 回调函数。表示被吊销证书的颁发者信息 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; x509CrlEntry.getCertIssuer(function (error, issuer) { if (error != null) { Console.log("getCertIssuer failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getCertIssuer success"); } }); ``` ### getCertIssuer getCertIssuer() : Promise\ 表示获取被吊销证书的颁发者信息。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | -------- | -------------------------- | | Promise\ | 表示被吊销证书的颁发者信息 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; x509CrlEntry.getCertIssuer().then(issuer => { Console.log("getCertIssuer success"); }, error => { Console.log("getCertIssuer failed, errCode: " + error.code + ", errMsg: " + error.message); }); ``` ### getRevocationDate getRevocationDate(callback : AsyncCallback\) : void 表示获取证书被吊销的日期。 **系统能力**:SystemCapability.Security.CryptoFramework **参数**: | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------- | ---- | -------- | | callback | AsyncCallback\ | 否 | 回调函数。表示证书被吊销的日期 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; x509CrlEntry.getRevocationDate(function (error, date) { if (error != null) { Console.log("getRevocationDate failed, errCode: " + error.code + ", errMsg: " + error.message); } else { Console.log("getRevocationDate success"); } }); ``` ### getRevocationDate getRevocationDate() : Promise\ 表示获取证书被吊销的日期。 **系统能力**:SystemCapability.Security.CryptoFramework **返回值**: | 类型 | 说明 | | ------ | -------------------- | | Promise\ | 表示证书被吊销的日期 | **示例**: ```js import cryptoFramework from '@ohos.security.cryptoFramework'; // 业务需通过X509Crl的getRevokedCert相关方法获取X509CrlEntry let x509CrlEntry = null; x509CrlEntry.getRevocationDate().then(date => { Console.log("getRevocationDate success"); }, error => { Console.log("getRevocationDate failed, errCode: " + error.code + ", errMsg: " + error.message); }); ```