diff --git a/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md b/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md index d8e5e1b251feb62851336d77d58c040d39b77b9c..186af7d0e3a86101b5f82251db81d7c22692634e 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md +++ b/zh-cn/application-dev/reference/apis/js-apis-cryptoFramework.md @@ -3,7 +3,7 @@ 为屏蔽底层硬件和算法库,向上提供统一的密码算法库加解密和证书相关接口。 > **说明:** -> +> > 本模块首批接口从API version 9开始支持。 ## 导入模块 @@ -18,33 +18,37 @@ import cryptoFramework from "@ohos.security.cryptoFramework" **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 默认值 | 描述 | -| --------------------------------------| -------- | ------------------------------| -| INVALID_PARAMS | 401 | 非法入参。 | -| NOT_SUPPORT | 801 | 操作不支持。 | -| ERR_OUT_OF_MEMORY | 17620001 | 内存错误。 | -| ERR_RUNTIME_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 | 证书的秘钥用途不含数字签名。 | +| 名称 | 默认值 | 描述 | +| ------------------------------------- | -------- | ---------------------------- | +| INVALID_PARAMS | 401 | 非法入参。 | +| NOT_SUPPORT | 801 | 操作不支持。 | +| ERR_OUT_OF_MEMORY | 17620001 | 内存错误。 | +| ERR_RUNTIME_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 | 证书的秘钥用途不含数字签名。 | ## DataBlob + buffer数组。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| -------------- | -------------- | ---- | ---- | ----------------| -| data | Uint8Array | 是 | 是 | 数据。 | + +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ---- | ---------- | ---- | ---- | ------ | +| data | Uint8Array | 是 | 是 | 数据。 | ## DataArray + buffer数组的列表。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| -------------- | -------------- | ---- | ---- | ----------------| -| data | Uint8Array | 是 | 是 | 数据列表。 | + +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ---- | ---------- | ---- | ---- | ---------- | +| data | Uint8Array | 是 | 是 | 数据列表。 | ## EncodingFormat @@ -52,24 +56,24 @@ buffer数组的列表。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 默认值 | 描述 | -| ------------| ---------| -----------| -| FORMAT_DER | 0 | DER格式。 | -| FORMAT_PEM | 1 | PEM格式。 | +| 名称 | 默认值 | 描述 | +| ---------- | ------ | --------- | +| FORMAT_DER | 0 | DER格式。 | +| FORMAT_PEM | 1 | PEM格式。 | ## EncodingBlob -带编码格式的证书二进制数组。 +证书链数据,在证书链校验时,作为入参传入。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| -------------- | -------------- | ---- | ---- | ----------------------------------| -| data | Uint8Array | 是 | 是 | 传入的数据中,包含的证书数量。 | -| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | +| 名称 | 类型 | 可读 | 可写 | 描述 | +| -------------- | --------------------------------- | ---- | ---- | ------------------------------ | +| data | Uint8Array | 是 | 是 | 传入的数据中,包含的证书数量。 | +| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | ## CertChainData @@ -80,11 +84,11 @@ buffer数组的列表。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| -------------- | -------------- | ---- | ---- | ------------------------------------------------------------ | -| data | Uint8Array | 是 | 是 | 证书数据,按照长度(2字节)-数据的形式传入,如:08ABCDEFGH07ABCDEFG,第一本证书,前2个字节表示证书的长度为8字节,后面附加8字节的证书数据;第2本证书前2个字节表示证书的长度为7字节,后面附加7字节的证书数据。 | -| count | number | 是 | 是 | 传入的数据中,包含的证书数量。 | -| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | +| 名称 | 类型 | 可读 | 可写 | 描述 | +| -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ | +| data | Uint8Array | 是 | 是 | 证书数据,按照长度(2字节)-数据的形式传入,如:08ABCDEFGH07ABCDEFG,第一本证书,前2个字节表示证书的长度为8字节,后面附加8字节的证书数据;第2本证书前2个字节表示证书的长度为7字节,后面附加7字节的证书数据。 | +| count | number | 是 | 是 | 传入的数据中,包含的证书数量。 | +| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | ## cryptoFramework.createMac @@ -107,6 +111,12 @@ createMac(algName : string) : Mac | ---- | --------------------------------------- | | Mac | 返回由输入算法指定生成的[Mac](#mac)对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------ | +| 17620001 | memory error | + **示例:** ```javascript @@ -114,6 +124,7 @@ 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); @@ -124,9 +135,9 @@ try { Mac类,调用Mac方法可以进行MAC(Message Authentication Code)加密计算。调用前,需要通过[createMac](#cryptoframeworkcreatemac)构造Mac实例。 -### **属性** +### 属性 -**系统能力:**SystemCapability.Security.CryptoFramework +**系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 说明 | | ------- | ------ | ---- | ---- | -------------------- | @@ -142,10 +153,16 @@ init(key : SymKey, callback : AsyncCallback\) : void; **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| key | SymKey | 是 | 共享对称密钥 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ------------ | +| key | SymKey | 是 | 共享对称密钥 | +| callback | AsyncCallback\ | 是 | 回调函数 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | **示例:** @@ -172,8 +189,6 @@ symKeyGenerator.convertKey(KeyBlob, (err, symKey) => { }); ``` - - ### init init(key : SymKey) : Promise\; @@ -190,10 +205,16 @@ init(key : SymKey) : Promise\; **返回值:** -| 类型 | 说明 | -| --------------- | ------------ | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -203,9 +224,7 @@ 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); @@ -229,10 +248,18 @@ update(input : DataBlob, callback : AsyncCallback\) : void; **系统能力:** SystemCapability.Security.CryptoFramework -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ---------- | -| input | DataBlob | 是 | 传入的消息 | -| callback | AsyncCallback\ | 是 | 回调函数 | +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------- | +| input | DataBlob | 是 | 传入的消息 | +| callback | AsyncCallback\ | 是 | 回调函数 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | **示例:** @@ -244,7 +271,6 @@ 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"); @@ -274,16 +300,26 @@ update(input : DataBlob) : Promise\; **系统能力:** SystemCapability.Security.CryptoFramework +**参数:** + | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | input | DataBlob | 是 | 传入的消息 | **返回值:** -| 类型 | 说明 | -| --------------- | ----------- | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | + +**示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -291,14 +327,11 @@ 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 => { @@ -314,8 +347,6 @@ promiseConvertKey.then(symKey => { ``` - - ### doFinal doFinal(callback : AsyncCallback\) : void; @@ -324,10 +355,19 @@ doFinal(callback : AsyncCallback\) : void; **系统能力:** SystemCapability.Security.CryptoFramework -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------- | +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | -------- | | callback | AsyncCallback\ | 是 | 回调函数 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17620001 | memory error | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -338,7 +378,6 @@ 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"); @@ -377,10 +416,17 @@ doFinal() : Promise\ **返回值:** -| 类型 | 说明 | -| ------------------- | ----------- | +| 类型 | 说明 | +| ------------------ | ----------- | | Promise\ | Promise对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17620001 | memory error | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -393,7 +439,6 @@ try { 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"); @@ -429,6 +474,12 @@ getMacLength() : number | ------ | ------------------------- | | number | 返回mac计算结果的字节长度 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -441,7 +492,6 @@ try { 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"); @@ -459,7 +509,7 @@ promiseConvertKey.then(symKey => { }).then(macOutput => { console.error("[Promise]: HMAC result: " + macOutput.data); let macLen = mac.getMacLength(); - AlertDialog.show({message: "MAC len: " + macLen}); + console.error("MAC len: " + macLen); }).catch(error => { console.error("[Promise]: error: " + error.message); }); @@ -485,6 +535,12 @@ createMd(algName : string) : Md | ---- | ------------------------------------- | | Md | 返回由输入算法指定生成的[Md](#md)对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------ | +| 17620001 | memory error | + **示例:** ```javascript @@ -492,6 +548,7 @@ 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); @@ -502,9 +559,9 @@ try { Md类,调用Md方法可以进行MD(Message Digest)摘要计算。调用前,需要通过[createMd](#cryptoframeworkcreatemd)构造Md实例。 -### **属性** +### 属性 -**系统能力:**SystemCapability.Security.CryptoFramework +**系统能力:** SystemCapability.Security.CryptoFramework | 名称 | 类型 | 可读 | 可写 | 说明 | | ------- | ------ | ---- | ---- | -------------------- | @@ -518,16 +575,18 @@ update(input : DataBlob, callback : AsyncCallback\) : void; **系统能力:** SystemCapability.Security.CryptoFramework -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------ | -| input | DataBlob | 是 | 传入的消息 | -| callback | AsyncCallback\ | 是 | 回调函数 | +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------- | +| input | DataBlob | 是 | 传入的消息 | +| callback | AsyncCallback\ | 是 | 回调函数 | -**返回值:** +**错误码:** -| 类型 | 说明 | -| --------------- | ------------ | -| Promise\ | Promise对象 | +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | **示例:** @@ -564,10 +623,16 @@ update(input : DataBlob) : Promise\; **返回值:** -| 类型 | 说明 | -| --------------- | ------------ | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -598,10 +663,17 @@ digest(callback : AsyncCallback\) : void **系统能力:** SystemCapability.Security.CryptoFramework -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------------------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | -------- | | callback | AsyncCallback\ | 是 | 回调函数 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17620001 | memory error | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -640,10 +712,17 @@ digest() : Promise\ **返回值:** -| 类型 | 说明 | -| ------------------- | ----------- | +| 类型 | 说明 | +| ------------------ | ----------- | | Promise\ | Promise对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17620001 | memory error | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -683,6 +762,12 @@ getMdLength() : number | ------ | ------------------------ | | number | 返回md计算结果的字节长度 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -704,7 +789,7 @@ promiseMdUpdate.then(() => { }).then(mdOutput => { console.error("[Promise]: MD result: " + mdOutput.data); let mdLen = md.getMdLength(); - AlertDialog.show({message: "MD len: " + mdLen}); + console.error("MD len: " + mdLen); }).catch(error => { console.error("[Promise]: error: " + error.message); }); @@ -724,6 +809,12 @@ createRandom() : Random | ------ | --------------------------------------------- | | Random | 返回由输入算法指定生成的[Random](#random)对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------ | +| 17620001 | memory error | + **示例:** ```javascript @@ -748,10 +839,19 @@ generateRandom(len : number, callback: AsyncCallback\) : void; **系统能力:** SystemCapability.Security.CryptoFramework -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------------------- | ---- | -------------------- | -| len | number | 是 | 表示生成随机数的长度 | -| callback | AsyncCallback\ | 是 | 回调函数 | +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------ | ---- | -------------------- | +| len | number | 是 | 表示生成随机数的长度 | +| callback | AsyncCallback\ | 是 | 回调函数 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17620001 | memory error | +| 17630001 | crypto operation error | **示例:** @@ -781,16 +881,25 @@ generateRandom(len : number) : Promise\; **系统能力:** SystemCapability.Security.CryptoFramework +**参数:** + | 参数名 | 类型 | 必填 | 说明 | | ------ | ------ | ---- | -------------------- | | len | number | 是 | 表示生成随机数的长度 | **返回值:** -| 类型 | 说明 | -| ------------------- | ----------- | +| 类型 | 说明 | +| ------------------ | ----------- | | Promise\ | Promise对象 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ---------------------- | +| 17620001 | memory error | +| 17630001 | crypto operation error | + **示例:** ```javascript @@ -819,10 +928,16 @@ setSeed(seed : DataBlob, callback : AsyncCallback\) : void; **系统能力:** SystemCapability.Security.CryptoFramework -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------- | ---- | ------------ | -| seed | DataBlob | 是 | 设置的种子 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | ---------- | +| seed | DataBlob | 是 | 设置的种子 | +| callback | AsyncCallback\ | 是 | 回调函数 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------ | +| 17620001 | memory error | **示例:** @@ -860,10 +975,20 @@ setSeed(seed : DataBlob) : Promise\; **系统能力:** SystemCapability.Security.CryptoFramework +**参数:** + | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | | seed | DataBlob | 是 | 设置的种子 | +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------ | +| 17620001 | memory error | + +**示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -888,47 +1013,59 @@ promiseGenerateRand.then(randData => { ## ParamsSpec -加解密参数,在进行对称加解密时需要构造其子类对象,并将子类对象传入[init()](#init-2)方法。适用于需要iv等参数的对称加解密模式(对于无iv等参数的模式如ECB模式,不需要构造其子类对象)。 +加解密参数,在进行对称加解密时需要构造其子类对象,并将子类对象传入[init()](#init-2)方法。
适用于需要iv等参数的对称加解密模式(对于无iv等参数的模式如ECB模式,无需构造,在[init()](#init-2)中传入null即可)。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------- | +| 名称 | 类型 | 可读 | 可写 | 描述 | +| -------- | ------ | ---- | ---- | ----------------------- | | algoName | string | 是 | 是 | 指明对称加解密参数的算法模式。可选值如下:
- "IvParamsSpec": 适用于CBC\|CTR\|OFB\|CFB模式
- "GcmParamsSpec": 适用于GCM模式
- "CcmParamsSpec": 适用于CCM模式 | +> **说明:** +> 由于[init()](#init-2)的params参数是ParamsSpec类型(父类),而实际需要传入具体的子类对象(如IvParamsSpec),因此在构造子类对象时应设置其父类ParamsSpec的algoName参数,使算法库在init()时知道传入的是哪种子类对象。 + ## IvParamsSpec -适用于CBC、CTR、OFB、CFB模式,仅使用iv的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数。 +加解密参数[ParamsSpec](#paramsspec)的子类,用于在对称加解密时作为[init()](#init-2)方法的参数。
适用于CBC、CTR、OFB、CFB这些仅使用iv作为参数的加解密模式。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------- | -| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv。常见取值如下:
- AES的CBC\|CTR\|OFB\|CFB模式:iv长度为16字节
- 3DES的CBC\|OFB\|CFB模式:iv长度为8字节| +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ---- | --------------------- | ---- | ---- | ------------------------------------------------------------ | +| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv。常见取值如下:
- AES的CBC\|CTR\|OFB\|CFB模式:iv长度为16字节
- 3DES的CBC\|OFB\|CFB模式:iv长度为8字节 | + +> **说明:** +> 传入[init()](#init-2)方法前需要指定其algoName属性(来源于父类[ParamsSpec](#paramsspec))。 ## GcmParamsSpec -适用于GCM模式的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数。 +加解密参数[ParamsSpec](#paramsspec)的子类,用于在对称加解密时作为[init()](#init-2)方法的参数。
适用于GCM模式。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------- | -| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为12字节| -| aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节| -| authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为16字节。
采用GCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),将其末尾16字节作为解密时[GcmParamsSpec](#gcmparamsspec)中的authTag | +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | --------------------- | ---- | ---- | ------------------------------------------------------------ | +| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为12字节 | +| aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节 | +| authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为16字节。
采用GCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),取出其末尾16字节作为解密时[init()](#init-2)方法的入参[GcmParamsSpec](#gcmparamsspec)中的的authTag | + +> **说明:** +> 传入[init()](#init-2)方法前需要指定其algoName属性(来源于父类[ParamsSpec](#paramsspec))。 ## CcmParamsSpec -适用于CCM模式的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数。 +加解密参数[ParamsSpec](#paramsspec)的子类,用于在对称加解密时作为[init()](#init-2)方法的参数。
适用于CCM模式。 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | -------- | ---- | ---- | -------------------------------| +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | --------------------- | ---- | ---- | ------------------------------------------------------------ | | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为7字节 | | aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节 | -| authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为12字节。
采用CCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),将其末尾12字节作为解密时[CcmParamsSpec](#ccmparamsspec)中的authTag | +| authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为12字节。
采用CCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),取出其末尾12字节作为解密时[init()](#init-2)方法的入参[CcmParamsSpec](#ccmparamsspec)中的authTag | + +> **说明:** +> 传入[init()](#init-2)方法前需要指定其algoName属性(来源于父类[ParamsSpec](#paramsspec))。 ## CryptoMode @@ -936,23 +1073,23 @@ promiseGenerateRand.then(randData => { **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 值 | 描述 | -| ------------ | -------- | -------------------------------- | -| ENCRYPT_MODE | 0 | 表示进行加密操作 | -| DECRYPT_MODE | 1 | 表示进行解密操作 | +| 名称 | 值 | 描述 | +| ------------ | ---- | ---------------- | +| ENCRYPT_MODE | 0 | 表示进行加密操作 | +| DECRYPT_MODE | 1 | 表示进行解密操作 | ## Key -密钥(父类),在运行密码算法(如加解密)时需要提前生成其子类对象,并传入[Cipher](#cipher)实例的[init()](#init-2)方法。密钥可以通过密钥生成器来生成。 +密钥(父类),在运行密码算法(如加解密)时需要提前生成其子类对象,并传入[Cipher](#cipher)实例的[init()](#init-2)方法。
密钥可以通过密钥生成器来生成。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------- | -| format | string | 是 | 否 | 密钥的格式。| -| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | ------ | ---- | ---- | ---------------------------- | +| format | string | 是 | 否 | 密钥的格式。 | +| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。 | ### getEncoded @@ -964,13 +1101,14 @@ getEncoded() : DataBlob **返回值:** -| 类型 |描述 | -| ------- | ----------- | -| [DataBlob](#datablob) | 用于查看密钥的具体内容。| +| 类型 | 描述 | +| --------------------- | ------------------------ | +| [DataBlob](#datablob) | 用于查看密钥的具体内容。 | **示例:** ```js +import cryptoFramework from "@ohos.security.cryptoFramework" function uint8ArrayToShowStr(uint8Array) { return Array.prototype.map .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) @@ -984,19 +1122,20 @@ console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); ## SymKey -对称密钥,是[Key](#key)的子类,在对称加解密时需要将其对象传入[Cipher](#cipher)实例的[init()](#init-2)方法使用。对称密钥可以通过对称密钥生成器[SymKeyGenerator](#symkeygenerator)来生成。 +对称密钥,是[Key](#key)的子类,在对称加解密时需要将其对象传入[Cipher](#cipher)实例的[init()](#init-2)方法使用。
对称密钥可以通过对称密钥生成器[SymKeyGenerator](#symkeygenerator)来生成。 ### clearMem clearMem() : void -以同步方法,将系统底层内存中的的密钥内容清零。 +以同步方法,将系统底层内存中的的密钥内容清零。建议在不再使用对称密钥实例时,调用本函数,避免内存中密钥数据存留过久。 **系统能力:** SystemCapability.Security.CryptoFramework **示例:** ```js +import cryptoFramework from "@ohos.security.cryptoFramework" function uint8ArrayToShowStr(uint8Array) { return Array.prototype.map .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) @@ -1013,16 +1152,16 @@ console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); // 输出全 ## PubKey -公钥,是Key的子类,在非对称加解密、验签、密钥协商时需要将其对象作为输入使用。公钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 +公钥,是Key的子类,在非对称加解密、验签、密钥协商时需要将其对象作为输入使用。
公钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------- | -| format | string | 是 | 否 | 密钥的格式。| -| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | ------ | ---- | ---- | ---------------------------- | +| format | string | 是 | 否 | 密钥的格式。 | +| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。 | ### getEncoded @@ -1035,9 +1174,9 @@ getEncoded() : DataBlob **返回值:** -| 类型 |描述 | -| ------- | ----------- | -| [DataBlob](#datablob) | 用于查看密钥的具体内容。| +| 类型 | 描述 | +| --------------------- | ------------------------ | +| [DataBlob](#datablob) | 用于查看密钥的具体内容。 | **示例:** @@ -1050,16 +1189,16 @@ console.info("key encoded:" + Uint8ArrayToShowStr(encodedKey.data)); ## PriKey -私钥,是Key的子类,在非对称加解密、签名、密钥协商时需要将其作为输入使用。私钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 +私钥,是Key的子类,在非对称加解密、签名、密钥协商时需要将其作为输入使用。
私钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------- | -| format | string | 是 | 否 | 密钥的格式。| -| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | ------ | ---- | ---- | ---------------------------- | +| format | string | 是 | 否 | 密钥的格式。 | +| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。 | ### getEncoded @@ -1071,9 +1210,9 @@ getEncoded() : DataBlob **返回值:** -| 类型 |描述 | -| ------- | ----------- | -| [DataBlob](#datablob) | 用于查看密钥的具体内容。| +| 类型 | 描述 | +| --------------------- | ------------------------ | +| [DataBlob](#datablob) | 用于查看密钥的具体内容。 | **示例:** @@ -1102,19 +1241,19 @@ key.clearMem(); createSymKeyGenerator(algName : string) : SymKeyGenerator -通过指定算法名称的字符串,获取相应的对称密钥生成器实例。支持的对称密钥参数详见框架概述“[密钥生成规格](../../security/cryptoFramework-overview.md#密钥生成规格)”一节中“生成密钥的字符串”。 +通过指定算法名称的字符串,获取相应的对称密钥生成器实例。
支持的规格详见框架概述“[密钥生成规格](../../security/cryptoFramework-overview.md#密钥生成规格)”一节。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ----------------------------- | -| algName | string | 是 | 待生成对称密钥生成器的算法名称。 | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------------------------------------------------------ | +| algName | string | 是 | 待生成对称密钥生成器的算法名称。
具体取值详见框架概述“[密钥生成规格](../../security/cryptoFramework-overview.md#密钥生成规格)”一节中的“字符串参数”。 | **返回值:** -| 类型 | 说明 | +| 类型 | 说明 | | ----------------------------------- | -------------------------- | | [SymKeyGenerator](#symkeygenerator) | 返回对称密钥生成器的对象。 | @@ -1127,29 +1266,35 @@ let symKeyGenerator = cryptoFramework.createSymKeyGenerator('3DES192'); ## SymKeyGenerator -对称密钥生成器。在使用该类的方法前,需要先使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)方法构建一个symKeyGenerator实例。 +对称密钥生成器。
在使用该类的方法前,需要先使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)方法构建一个symKeyGenerator实例。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | ---- | ---- | ---------------------------- | +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | ------ | ---- | ---- | ------------------------------ | | algName | string | 是 | 否 | 对称密钥生成器指定的算法名称。 | ### generateSymKey generateSymKey(callback : AsyncCallback\) : void -异步获取对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。 +异步获取对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。
必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数。
目前支持使用OpenSSL的RAND_priv_bytes()作为底层能力生成随机密钥。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | ----------------- | ---- | ------------------- | -| callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数,用于获取对称密钥。 | +| 名称 | 类型 | 必填 | 说明 | +| -------- | --------------------------------- | ---- | ------------------------------------------------------------ | +| callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数。当生成对称密钥成功,err为undefined,data为获取到的SymKey;否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------- | +| 17620001 | memory error. | **示例:** @@ -1158,11 +1303,11 @@ 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); + if (err) { + console.error(`Generate symKey failed, ${err.code}, ${err.message}`); + } else { + console.info(`Generate symKey success, algName: ${symKey.algName}`); + } }) ``` @@ -1170,15 +1315,21 @@ symKeyGenerator.generateSymKey((err, symKey) => { generateSymKey() : Promise\ -异步获取该对称密钥生成器随机生成的密钥,通过Promise获取结果。 +异步获取该对称密钥生成器随机生成的密钥,通过Promise获取结果。
必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数。
目前支持使用OpenSSL的RAND_priv_bytes()作为底层能力生成随机密钥。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** -| 类型 | 说明 | -| --------------------- | ------------------------------- | -| Promise\<[SymKey](#symkey)> | 使用Promise的方式获取对称密钥。 | +| 类型 | 说明 | +| --------------------------- | --------------------------------- | +| Promise\<[SymKey](#symkey)> | Promise对象,返回对称密钥SymKey。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------- | +| 17620001 | memory error. | **示例:** @@ -1186,8 +1337,11 @@ generateSymKey() : Promise\ 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); +symKeyGenerator.generateSymKey() +.then(symKey => { + console.info(`Generate symKey success, algName: ${symKey.algName}`); +}, error => { + console.error(`Generate symKey failed, ${error.code}, ${error.message}`); }) ``` @@ -1195,16 +1349,22 @@ symKeyGenerator.generateSymKey().then((symKey) => { convertKey(key : DataBlob, callback : AsyncCallback\) : void -异步获取指定数据生成对称密钥,通过注册回调函数获取结果。 +异步根据指定数据生成对称密钥,通过注册回调函数获取结果。
必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | ----------------- | ---- | ---------------------- | -| key | [DataBlob](#datablob) | 是 | 指定的对称密钥材料。 | -| callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数,用于获取对称密钥。 | +| 名称 | 类型 | 必填 | 说明 | +| -------- | --------------------------------- | ---- | ------------------------------------------------------------ | +| key | [DataBlob](#datablob) | 是 | 指定的对称密钥材料。 | +| callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数。当生成对称密钥成功,err为undefined,data为获取到的SymKey;否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------- | +| 17620001 | memory error. | **示例:** @@ -1223,12 +1383,12 @@ function genKeyMaterialBlob() { 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); +symKeyGenerator.convertKey(keyMaterialBlob, (err, symKey) => { + if (err) { + console.error(`Convert symKey failed, ${err.code}, ${err.message}`); + } else { + console.info(`Convert symKey success, algName: ${symKey.algName}`); + } }) ``` @@ -1236,21 +1396,27 @@ symKeyGenerator.convertKey(keyMaterial, (err, symKey) => { convertKey(key : DataBlob) : Promise\ -异步获取指定数据生成对称密钥,通过Promise获取结果。 +异步根据指定数据生成对称密钥,通过Promise获取结果。
必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| ---- | -------- | ---- | -------------------- | +| 名称 | 类型 | 必填 | 说明 | +| ---- | --------------------- | ---- | -------------------- | | key | [DataBlob](#datablob) | 是 | 指定的密钥材料数据。 | **返回值:** -| 类型 | 说明 | -| --------------------- | ------------------------------- | -| Promise\<[SymKey](#symkey)> | 使用Promise的方式获取对称密钥。 | +| 类型 | 说明 | +| --------------------------- | --------------------------------- | +| Promise\<[SymKey](#symkey)> | Promise对象,返回对称密钥SymKey。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------- | +| 17620001 | memory error. | **示例:** @@ -1269,8 +1435,11 @@ function genKeyMaterialBlob() { let symAlgoName = '3DES192'; let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let keyMaterialBlob = genKeyMaterialBlob(); -symKeyGenerator.convertKey(keyMaterial).then((symKey) => { - console.log('Convert symKey success, algName:' + symKey.algName); +symKeyGenerator.convertKey(keyMaterialBlob) +.then(symKey => { + console.info(`Convert symKey success, algName: ${symKey.algName}`); +}, error => { + console.error(`Convert symKey failed, ${error.code}, ${error.message}`); }) ``` @@ -1289,8 +1458,8 @@ createAsyKeyGenerator(algName : string) : AsyKeyGenerator **返回值:** -| 类型 | 说明 | -| --------------- | -------------------------- | +| 类型 | 说明 | +| --------------- | ---------------------------- | | asyKeyGenerator | 返回非对称密钥生成器的对象。 | **示例:** @@ -1309,23 +1478,22 @@ let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| -------------- | -------------- | ---- | ---- | ----------------------------------| -| algName | string | 是 | 否 | 非对称密钥生成器指定的算法名称。 | - - +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | ------ | ---- | ---- | -------------------------------- | +| algName | string | 是 | 否 | 非对称密钥生成器指定的算法名称。 | ### generateKeyPair generateKeyPair(callback : AsyncCallback\) : void; + 异步获取非对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ---------------------------- | +| 名称 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ---- | ------------------------------ | | callback | AsyncCallback\ | 是 | 回调函数,用于获取非对称密钥。 | **示例:** @@ -1347,14 +1515,15 @@ asyKeyGenerator.generateKeyPair((err, keyPair) => { ### generateKeyPair generateKeyPair() : Promise\ + 异步获取该非对称密钥生成器随机生成的密钥,通过Promise获取结果。 **系统能力:** SystemCapability.Security.CryptoFramework **返回值:** -| 类型 | 说明 | -| --------------------- | ------------------------------- | +| 类型 | 说明 | +| ----------------- | --------------------------------- | | Promise\ | 使用Promise的方式获取非对称密钥。 | **示例:** @@ -1374,16 +1543,17 @@ keyGenPromise.then( keyPair => { ### convertKey convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\) : void + 异步获取指定数据生成非对称密钥,通过注册回调函数获取结果。详情请看下方**密钥转换说明** **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | -------------------------- | ---- | ---------------------------- | -| pubKey | DataBlob | 否 | 指定的公钥材料。 | -| priKey | DataBlob | 否 | 指定的私钥材料。 | +| 名称 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ---- | ------------------------------ | +| pubKey | DataBlob | 否 | 指定的公钥材料。 | +| priKey | DataBlob | 否 | 指定的私钥材料。 | | callback | AsyncCallback\ | 是 | 回调函数,用于获取非对称密钥。 | **示例:** @@ -1404,21 +1574,22 @@ asyKeyGenerator.convertKey(pubKey, priKey, (err, keyPair) => { ### convertKey convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\ + 异步获取指定数据生成非对称密钥,通过Promise获取结果。详情请看下方**密钥转换说明** **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| ---- | -------- | ---- | -------------------- | -| pubKey | DataBlob | 否 | 指定的公钥材料。 | -| priKey | DataBlob | 否 | 指定的私钥材料。 | +| 名称 | 类型 | 必填 | 说明 | +| ------ | -------- | ---- | ---------------- | +| pubKey | DataBlob | 否 | 指定的公钥材料。 | +| priKey | DataBlob | 否 | 指定的私钥材料。 | **返回值:** -| 类型 | 说明 | -| --------------------- | ------------------------------- | +| 类型 | 说明 | +| ----------------- | --------------------------------- | | Promise\ | 使用Promise的方式获取非对称密钥。 | **示例:** @@ -1444,20 +1615,25 @@ keyGenPromise.then( keyPair => { ## cryptoFramework.createCipher createCipher(transformation : string) : Cipher -通过指定算法名称,获取相应的[Cipher](#cipher)实例。支持的算法名参数详见框架概述“[加解密规格](../../security/cryptoFramework-overview.md#加解密规格)”一节中的“指定算法名称字符串”。 + +通过指定算法名称,获取相应的[Cipher](#cipher)实例。
支持的规格详见框架概述“[加解密规格](../../security/cryptoFramework-overview.md#加解密规格)”一节。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------------- | ------ | -------- | ------------------------------------------------------------ | -| transformation | string | 是 | 待生成Cipher的算法名称、加密模式以及填充方法的组合。输入可以为"RSA1024\|PKCS1", "RSA1024\|PKCS1_OAEP\|SHA256\|SHA256"等 | +| 参数名 | 类型 | 必填 | 说明 | +| -------------- | ------ | ---- | ------------------------------------------------------------ | +| transformation | string | 是 | 待生成Cipher的算法名称(含密钥长度)、加密模式以及填充方法的组合。
具体取值详见框架概述“[加解密规格](../../security/cryptoFramework-overview.md#加解密规格)”一节中的“字符串参数”。 | + +> **说明:** +> 1. 目前对称加解密中,PKCS5和PKCS7的实现相同,其padding长度和分组长度保持一致(即PKCS5和PKCS7在3DES中均按照8字节填充,在AES中均按照16字节填充),另有NoPadding表示不填充。
开发者需要自行了解密码学不同分组模式的差异,以便选择合适的参数规格。例如选择ECB和CBC模式时,建议启用填充,否则必须确保明文长度是分组大小的整数倍;选择其他模式时,可以不启用填充,此时密文长度和明文长度一致(即可能不是分组大小的整数倍)。 +> 2. 使用RSA进行非对称加解密时,必须创建两个Cipher对象分别进行加密和解密操作,而不能对同一个Cipher对象进行加解密。对称加解密没有此要求(即只要算法规格一样,可以对同一个Cipher对象进行加解密操作)。 **返回值:** -| 类型 | 说明 | -| ------ | ------------------------ | +| 类型 | 说明 | +| ----------------- | ------------------------ | | [Cipher](#cipher) | 返回加解密生成器的对象。 | **示例:** @@ -1472,39 +1648,51 @@ try { 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)方法,可以实现对称加密/对称解密/非对称加密/非对称解密。完整的加解密流程示例可参考开发指导中的“[使用加解密操作](../../security/cryptoFramework-guidelines.md#使用加解密操作)”一节。 +提供加解密的算法操作功能,按序调用本类中的[init()](#init-2)、[update()](#update-4)、[doFinal()](#dofinal-2)方法,可以实现对称加密/对称解密/非对称加密/非对称解密。
完整的加解密流程示例可参考开发指导中的“[使用加解密操作](../../security/cryptoFramework-guidelines.md#使用加解密操作)”一节。 + +一次完整的加/解密流程在对称加密和非对称加密中略有不同: + +- 对称加解密:init为必选,update为可选(且允许多次update加/解密大数据),doFinal为必选;doFinal结束后可以重新init开始新一轮加/解密流程。 +- RSA非对称加解密:init为必选,不支持update操作,doFinal为必选(允许连续多次doFinal加/解密大数据);doFinal后不支持重新init。 ### 属性 **系统能力:** SystemCapability.Security.CryptoFramework -| 名称 | 类型 | 可读 | 可写 | 描述 | -| ------- | ------ | -------- | ----------- | ---------------------------- | +| 名称 | 类型 | 可读 | 可写 | 描述 | +| ------- | ------ | ---- | ---- | ---------------------------- | | algName | string | 是 | 否 | 加解密生成器指定的算法名称。 | ### init init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallback\) : void -初始化加解密的[cipher](#cipher)对象,通过注册回调函数获取结果。 +初始化加解密的[cipher](#cipher)对象,通过注册回调函数获取结果。
必须在使用[createCipher](#cryptoframeworkcreatecipher)创建[Cipher](#cipher)实例后,才能使用本函数。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | ------------------------ | ------- | ------------------------ | -| opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | -| key | [Key](#key) | 是 | 指定加密或解密的密钥。 | -| params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数。 | -| callback | AsyncCallback\ | 是 | 回调函数。 | +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | ------------------------------------------------------------ | +| opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | +| key | [Key](#key) | 是 | 指定加密或解密的密钥。 | +| params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数,对于ECB等没有参数的算法模式,可以传入null。 | +| callback | AsyncCallback\ | 是 | 回调函数。当初始化成功,err为undefined,否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | --------------------------------------------------------- | +| 17620001 | memory error. | +| 17620002 | runtime error. | +| 17630001 | crypto operation error.| **示例:** @@ -1512,13 +1700,14 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallba 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.error(`Failed to init cipher, ${err.code}, ${err.message}`); + } else { + console.info(`Init cipher success`); + // 此处进行update等后续操作 } - console.log('Init cipher success'); - // 此处进行update等后续操作 }) ``` @@ -1526,23 +1715,31 @@ cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null, (err, ) => { init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\ -初始化加解密的cipher对象,通过Promise获取结果。 +初始化加解密的cipher对象,通过Promise获取结果。
必须在使用[createCipher](#cryptoframeworkcreatecipher)创建[Cipher](#cipher)实例后,才能使用本函数。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| ------ | ---------- | ---- | ---------------------- | -| opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | -| key | [Key](#key) | 是 | 指定加密或解密的密钥。 | +| 名称 | 类型 | 必填 | 说明 | +| ------ | ------------------------- | ---- | ------------------------------------------------------------ | +| opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | +| key | [Key](#key) | 是 | 指定加密或解密的密钥。 | | params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数,对于ECB等没有参数的算法模式,可以传入null。 | **返回值:** -| 类型 | 说明 | -| ------------------- | --------------------------- | -| Promise\ | 使用Promise的方式获取结果。 | +| 类型 | 说明 | +| -------------- | -------------------------------------- | +| Promise\ | Promise对象。无返回结果的Promise对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------------------------------------- | +| 17620001 | memory error. | +| 17620002 | runtime error. | +| 17630001 | crypto operation error.| **示例:** @@ -1550,9 +1747,12 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\ 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'); +cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null) +.then(() => { + console.info(`Init cipher success`); // 此处进行update等后续操作 +}, error => { + console.error(`Failed to init cipher, ${error.code}, ${error.message}`); }) ``` @@ -1560,16 +1760,29 @@ cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null).then(() => { update(data : DataBlob, callback : AsyncCallback\) : void -分段更新加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。(根据数据量,可不调用update或调用多次update) +分段更新加密或者解密数据操作,通过注册回调函数获取加/解密数据。
必须在对[Cipher](#cipher)实例使用[init()](init-2)初始化后,才能使用本函数。 + +> **说明:** +> 1. 在进行对称加解密操作的时候,如果开发者对各个分组模式不够熟悉,建议对每次update和doFinal的结果都判断是否为null,并在结果不为null时取出其中的数据进行拼接,形成完整的密文/明文。这是因为选择的分组模式等各项规格都可能对update和[doFinal](#dofinal-2)结果产生影响。
(例如对于ECB和CBC模式,不论update传入的数据是否为分组长度的整数倍,都会以分组作为基本单位进行加/解密,并输出本次update新产生的加/解密分组结果。
可以理解为,update只要凑满一个新的分组就会有输出,如果没有凑满则此次update输出为null,把当前还没被加/解密的数据留着,等下一次update/doFinal传入数据的时候,拼接起来继续凑分组。
最后doFinal的时候,会把剩下的还没加/解密的数据,根据[createCipher](#cryptoframeworkcreatecipher)时设置的padding模式进行填充,补齐到分组的整数倍长度,再输出剩余加解密结果。
而对于可以将分组密码转化为流模式实现的模式,还可能出现密文长度和明文长度相同的情况等。) +> 2. 根据数据量,可以不调用update(即[init](#init-2)完成后直接调用[doFinal](#dofinal-2))或多次调用update。
算法库目前没有对update(单次或累计)的数据量设置大小限制,建议对于大数据量的对称加解密,采用多次update的方式传入数据。 +> 3. RSA非对称加解密不支持update操作。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------ | -| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | -| callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数,用于获取加密或者解密的数据结果。 | +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | +| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。data不能为null,也不允许传入{data : Uint8Array(空) } | +| callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数。当更新加/解密数据成功,err为undefined,data为此次更新的加/解密结果DataBlob;否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ------------------------------------------- | +| 17620001 | memory error. | +| 17620002 | runtime error. | +| 17630001 | crypto operation error. | **示例:** @@ -1589,11 +1802,14 @@ let cipher; // 此处省略生成cipher实例的过程 let plainText = {data : stringToUint8Array('this is test!')}; cipher.update(plainText, (err, output) => { // 加密过程举例 if (err) { - console.error('Failed to update cipher'); - return; + console.error(`Failed to update cipher`); + } else { + console.info(`Update cipher success`); + if (output != null) { + // 拼接output.data到密文 + } + // 此处进行doFinal等后续操作 } - console.log('Update cipher success'); - // 此处进行doFinal等后续操作 }) ``` @@ -1601,21 +1817,34 @@ cipher.update(plainText, (err, output) => { // 加密过程举例 update(data : DataBlob) : Promise\ -分段更新加密或者解密数据操作,通过Promise获取结果。(根据数据量,可不调用update或调用多次update) +分段更新加密或者解密数据操作,通过通过Promise获取加/解密数据。
必须在对[Cipher](#cipher)实例使用[init()](init-2)初始化后,才能使用本函数。 + +> **说明:** +> 1. 在进行对称加解密操作的时候,如果开发者对各个分组模式不够熟悉,建议对每次update和doFinal的结果都判断是否为null,并在结果不为null时取出其中的数据进行拼接,形成完整的密文/明文。这是因为选择的分组模式等各项规格都可能对update和[doFinal](#dofinal-2)结果产生影响。
(例如对于ECB和CBC模式,不论update传入的数据是否为分组长度的整数倍,都会以分组作为基本单位进行加/解密,并输出本次update新产生的加/解密分组结果。
可以理解为,update只要凑满一个新的分组就会有输出,如果没有凑满则此次update输出为null,把当前还没被加/解密的数据留着,等下一次update/doFinal传入数据的时候,拼接起来继续凑分组。
最后doFinal的时候,会把剩下的还没加/解密的数据,根据[createCipher](#cryptoframeworkcreatecipher)时设置的padding模式进行填充,补齐到分组的整数倍长度,再输出剩余加解密结果。
而对于可以将分组密码转化为流模式实现的模式,还可能出现密文长度和明文长度相同的情况等。) +> 2. 根据数据量,可以不调用update(即[init](#init-2)完成后直接调用[doFinal](#dofinal-2))或多次调用update。
算法库目前没有对update(单次或累计)的数据量设置大小限制,建议对于大数据量的对称加解密,可以采用多次update的方式传入数据。 +> 3. RSA非对称加解密不支持update操作。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| ---- | -------- | ---- | -------------------- | -| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | +| 名称 | 类型 | 必填 | 说明 | +| ---- | --------------------- | ---- | -------------------- | +| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。data不能为null,也不允许传入{data : Uint8Array(空) } | **返回值:** -| 类型 | 说明 | -| ----------------------- | --------------------------- | -| Promise\<[DataBlob](#datablob)> | 使用Promise的方式获取结果。 | +| 类型 | 说明 | +| ------------------------------- | ------------------------------------------------ | +| Promise\<[DataBlob](#datablob)> | Promise对象,返回此次更新的加/解密结果DataBlob。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 17620001 | memory error. | +| 17620002 | runtime error. | +| 17630001 | crypto operation error. | **示例:** @@ -1633,9 +1862,15 @@ function stringToUint8Array(str) { let cipher; // 此处省略生成cipher实例的过程 // 此处省略init()过程 let plainText = {data : stringToUint8Array('this is test!')}; -cipher.update(data).then((output) => { - console.log('Update cipher success'); +cipher.update(plainText) +.then((output) => { + console.info(`Update cipher success.`); + if (output != null) { + // 拼接output.data到密文 + } // 此处进行doFinal等后续操作 +}, error => { + console.info(`Update cipher failed.`); }) ``` @@ -1643,16 +1878,33 @@ cipher.update(data).then((output) => { doFinal(data : DataBlob, callback : AsyncCallback\) : void -最后结束加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。如果在本次加解密过程中已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。
根据对称加解密的模式不同,doFinal的输出可能不同:
对于GCM和CCM模式的对称加密,doFinal的结果是剩余密文和authTag的拼接,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag(因此如果doFinal的data参数传入null,则doFinal的结果就是authTag)。在doFinal完成后需要将authTag暂存,填入解密时的[GcmParamsSpec](#gcmparamsspec)或[CcmParamsSpec](#ccmparamsspec)。
对于其他模式的对称加解密,根据不同的模式特点,存在两种情况(1)update输出一部分加解密结果,doFinal输出剩余加解密结果;(2)加解密结果全部由update输出,doFinal输出空。 +(1)在对称加解密中,doFinal加/解密(分组模式产生的)剩余数据和本次传入的数据,最后结束加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。
如果数据量较小,可以在doFinal中一次性传入数据,而不使用update;如果在本次加解密流程中,已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。
根据对称加解密的模式不同,doFinal的输出有如下区别: + +- 对于GCM和CCM模式的对称加密:一次加密流程中,如果将每一次update和doFinal的结果拼接起来,会得到“密文+authTag”,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag,而其余部分均为密文。(也就是说,如果doFinal的data参数传入null,则doFinal的结果就是authTag)
authTag需要填入解密时的[GcmParamsSpec](#gcmparamsspec)或[CcmParamsSpec](#ccmparamsspec);密文则作为解密时的入参data。 +- 对于其他模式的对称加解密、GCM和CCM模式的对称解密:一次加/解密流程中,每一次update和doFinal的结果拼接起来,得到完整的明文/密文。 + +(2)在RSA非对称加解密中,doFinal加/解密本次传入的数据,通过注册回调函数获取加密或者解密数据。如果数据量较大,可以多次调用doFinal,拼接结果得到完整的明文/密文。 + +> **说明:** +> 1. 对称加解密中,调用doFinal标志着一次加解密流程已经完成,即[Cipher](#cipher)实例的状态被清除,因此当后续开启新一轮加解密流程时,需要重新调用[init()](init-2)并传入完整的参数列表进行初始化
(比如即使是对同一个Cipher实例,采用同样的对称密钥,进行加密然后解密,则解密中调用init的时候仍需填写params参数,而不能直接省略为null)。 +> 2. 如果遇到解密失败,需检查加解密数据和[init](#init-2)时的参数是否匹配,包括GCM模式下加密得到的authTag是否填入解密时的GcmParamsSpec等。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | ---------------------------- | ---- | ------------------------------------------ | -| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | -| callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数,用于获取加密或者解密的数据结果。 | +| 名称 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------- | ---- | ------------------------------------------------------------ | +| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。在对称加解密中允许为null,但不允许传入{data : Uint8Array(空) }。 | +| callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数。当最终加/解密数据成功,err为undefined,data为剩余数据的加/解密结果DataBlob;否则为错误对象。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | ----------------------- | +| 17620001 | memory error. | +| 17620002 | runtime error. | +| 17630001 | crypto operation error. | **示例:** @@ -1664,10 +1916,13 @@ let data; // 此处省略准备待加密/解密数据的过程 // 此处省略init()和update()过程 cipher.doFinal(data, (err, output) => { if (err) { - console.error('Failed to final cipher'); - return; + console.error(`Failed to finalize cipher, ${err.code}, ${err.message}`); + } else { + console.info(`Finalize cipher success`); + if (output != null) { + // 拼接output.data得到完整的明文/密文(及authTag) + } } - console.log('Final cipher success'); }) ``` @@ -1675,21 +1930,38 @@ cipher.doFinal(data, (err, output) => { doFinal(data : DataBlob) : Promise\ -最后结束加密或者解密数据操作,通过Promise获取结果。如果在本次加解密过程中已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。
根据对称加解密的模式不同,doFinal的输出可能不同:
对于GCM和CCM模式的对称加密,doFinal的结果是剩余密文和authTag的拼接,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag(因此如果doFinal的data参数传入null,则doFinal的结果就是authTag)。在doFinal完成后需要将authTag暂存,填入解密时的[GcmParamsSpec](#gcmparamsspec)或[CcmParamsSpec](#ccmparamsspec)。
对于其他模式的对称加解密,根据不同的模式特点,存在两种情况(1)update输出一部分加解密结果,doFinal输出剩余加解密结果;(2)加解密结果全部由update输出,doFinal输出空。 +(1)在对称加解密中,doFinal加/解密(分组模式产生的)剩余数据和本次传入的数据,最后结束加密或者解密数据操作,通过Promise获取加密或者解密数据。
如果数据量较小,可以在doFinal中一次性传入数据,而不使用update;如果在本次加解密流程中,已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。
根据对称加解密的模式不同,doFinal的输出有如下区别: + +- 对于GCM和CCM模式的对称加密:一次加密流程中,如果将每一次update和doFinal的结果拼接起来,会得到“密文+authTag”,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag,而其余部分均为密文。(也就是说,如果doFinal的data参数传入null,则doFinal的结果就是authTag)
authTag需要填入解密时的[GcmParamsSpec](#gcmparamsspec)或[CcmParamsSpec](#ccmparamsspec);密文则作为解密时的入参data。 +- 对于其他模式的对称加解密、GCM和CCM模式的对称解密:一次加/解密流程中,每一次update和doFinal的结果拼接起来,得到完整的明文/密文。 + +(2)在RSA非对称加解密中,doFinal加/解密本次传入的数据,通过Promise获取加密或者解密数据。如果数据量较大,可以多次调用doFinal,拼接结果得到完整的明文/密文。 + +> **说明:** +> 1. 对称加解密中,调用doFinal标志着一次加解密流程已经完成,即[Cipher](#cipher)实例的状态被清除,因此当后续开启新一轮加解密流程时,需要重新调用[init()](init-2)并传入完整的参数列表进行初始化
(比如即使是对同一个Cipher实例,采用同样的对称密钥,进行加密然后解密,则解密中调用init的时候仍需填写params参数,而不能直接省略为null)。 +> 2. 如果遇到解密失败,需检查加解密数据和[init](#init-2)时的参数是否匹配,包括GCM模式下加密得到的authTag是否填入解密时的GcmParamsSpec等。 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 名称 | 类型 | 必填 | 说明 | -| ---- | -------- | ---- | -------------------- | -| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | +| 名称 | 类型 | 必填 | 说明 | +| ---- | --------------------- | ---- | -------------------- | +| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。data参数允许为null,但不允许传入{data : Uint8Array(空) } | **返回值:** -| 类型 | 说明 | -| ----------------------- | --------------------------- | -| Promise\<[DataBlob](#datablob)> | 使用Promise的方式获取结果。 | +| 类型 | 说明 | +| ------------------------------- | ------------------------------------------------ | +| Promise\<[DataBlob](#datablob)> | Promise对象,返回剩余数据的加/解密结果DataBlob。 | + +**错误码:** + +| 错误码ID | 错误信息 | +| -------- | -------------------------------------------- | +| 17620001 | memory error. | +| 17620002 | runtime error. | +| 17630001 | crypto operation error. | **示例:** @@ -1699,12 +1971,18 @@ import cryptoFramework from '@ohos.security.cryptoFramework'; let cipher; // 此处省略生成cipher实例的过程 let data; // 此处省略准备待加密/解密数据的过程 // 此处省略init()和update()过程 -cipher.doFinal(data).then((output) => { - console.log('Final cipher success'); +cipher.doFinal(data) +.then(output => { + console.info(`Finalize cipher success`); + if (output != null) { + // 拼接output.data得到完整的明文/密文(及authTag) + } +}, error => { + console.error(`Failed to finalize cipher, ${error.code}, ${error.message}`); }) ``` -**callback示例:** +**使用RSA加密的callback完整示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -1722,7 +2000,7 @@ rsaGenerator.generateKeyPair(function (err, keyPair) { }); ``` -**promise示例:** +**使用RSA加密的promise完整示例:** ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -1741,6 +2019,8 @@ keyGenPromise.then(rsaKeyPair => { }); ``` +> **说明:** +> 更多加解密流程的完整示例可参考开发指导中的“[使用加解密操作](../../security/cryptoFramework-guidelines.md#使用加解密操作)”一节。 ## cryptoFramework.createSign @@ -1758,9 +2038,9 @@ Sign实例生成 **返回值**: -| 类型 | 说明 | -| ---- | ------------------------------ | -| Sign | 返回由输入算法指定生成的Sign对象 | +| 类型 | 说明 | +| ---- | -------------------------------- | +| Sign | 返回由输入算法指定生成的Sign对象 | **示例:** @@ -1786,10 +2066,10 @@ init(priKey : PriKey, callback : AsyncCallback\) : void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| priKey | Key |是| 用于Sign的初始化 | -| callback | AsyncCallback\ | 是 | 回调函数的 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------------- | +| priKey | Key | 是 | 用于Sign的初始化 | +| callback | AsyncCallback\ | 是 | 回调函数的 | ### init @@ -1801,14 +2081,14 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\ **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| priKey | Key |是| 用于Sign的初始化 | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---- | ---- | ---------------- | +| priKey | Key | 是 | 用于Sign的初始化 | **返回值:** -| 类型 | 说明 | -| ------------- | ----------- | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | ### update @@ -1821,10 +2101,10 @@ update(data : DataBlob, callback : AsyncCallback\) : void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| data | DataBlob | 是 | 传入的消息 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------- | +| data | DataBlob | 是 | 传入的消息 | +| callback | AsyncCallback\ | 是 | 回调函数 | ### update @@ -1838,12 +2118,12 @@ update(data : DataBlob) : Promise\; | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | -| data | DataBlob | 是 | 传入的消息 | +| data | DataBlob | 是 | 传入的消息 | **返回值:** -| 类型 | 说明 | -| ------------- | ----------- | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | ### sign @@ -1856,10 +2136,10 @@ sign(data : DataBlob, callback : AsyncCallback\) : void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| data | DataBlob | 是 | 传入的消息 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------- | +| data | DataBlob | 是 | 传入的消息 | +| callback | AsyncCallback\ | 是 | 回调函数 | ### sign @@ -1873,15 +2153,16 @@ sign(data : DataBlob) : Promise\ | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | -| data | DataBlob | 是 | 传入的消息 | +| data | DataBlob | 是 | 传入的消息 | **返回值:** -| 类型 | 说明 | -| ------------- | ----------- | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | **callback示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -1902,6 +2183,7 @@ rsaGenerator.generateKeyPair(function (err, keyPair) { ``` **promise示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -1938,9 +2220,9 @@ Verify实例生成 **返回值**: -| 类型 | 说明 | -| ---- | ------------------------------ | -| Verify | 返回由输入算法指定生成的Verify对象 | +| 类型 | 说明 | +| ------ | ---------------------------------- | +| Verify | 返回由输入算法指定生成的Verify对象 | **示例:** @@ -1951,6 +2233,7 @@ let verifyer1 = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256"); let verifyer2 = cryptoFramework.createVerify("RSA1024|PKCS1_OAEP|SHA256|MGF1_SHA256") ``` + ## Verify Verify类,使用Verify方法之前需要创建该类的实例进行操作,通过createVerify(algName : string) : Verify方法构造此实例。 @@ -1959,34 +2242,35 @@ Verify类,使用Verify方法之前需要创建该类的实例进行操作, init(pubKey : PubKey, callback : AsyncCallback\) : void -传入私钥初始化Verify对象,Callback形式 +传入公钥初始化Verify对象,Callback形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| pubKey | Key |是| 公钥对象,用于Verify的初始化 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------------------------- | +| pubKey | Key | 是 | 公钥对象,用于Verify的初始化 | +| callback | AsyncCallback\ | 是 | 回调函数 | ### init + init(pubKey : PubKey) : Promise\ -传入私钥初始化Verify对象,Promise形式 +传入公钥初始化Verify对象,Promise形式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| pubKey | Key |是|公钥对象,用于Verify的初始化 | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ---- | ---- | ---------------------------- | +| pubKey | Key | 是 | 公钥对象,用于Verify的初始化 | **返回值:** -| 类型 | 说明 | -| --------------- | ------------ | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | ### update @@ -1999,10 +2283,10 @@ update(data : DataBlob, callback : AsyncCallback\) : void **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| data | DataBlob | 是 | 传入的消息 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ---------- | +| data | DataBlob | 是 | 传入的消息 | +| callback | AsyncCallback\ | 是 | 回调函数 | ### update @@ -2016,52 +2300,53 @@ update(data : DataBlob) : Promise\; | 参数名 | 类型 | 必填 | 说明 | | ------ | -------- | ---- | ---------- | -| data | DataBlob | 是 | 传入的消息 | +| data | DataBlob | 是 | 传入的消息 | **返回值:** -| 类型 | 说明 | -| ------------- | ----------- | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | ### verify verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\) : void -对数据进行签名,返回签名结果,callback方式 +对数据进行验签,返回验签结果,callback方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| data | DataBlob | 是 | 传入的消息 | -| signatureData | DataBlob | 是 | 签名数据 | -| callback | AsyncCallback\ | 是 | 回调函数 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------- | -------------------- | ---- | ---------- | +| data | DataBlob | 是 | 传入的消息 | +| signatureData | DataBlob | 是 | 签名数据 | +| callback | AsyncCallback\ | 是 | 回调函数 | ### verify verify(data : DataBlob, signatureData : DataBlob) : Promise\ -对数据进行签名,返回签名结果,promise方式 +对数据进行验签,返回验签结果,promise方式 **系统能力:** SystemCapability.Security.CryptoFramework **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------ | -------- | ---- | ---------- | -| data | DataBlob | 是 | 传入的消息 | -| signatureData | DataBlob| 是 | 签名数据 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------- | -------- | ---- | ---------- | +| data | DataBlob | 是 | 传入的消息 | +| signatureData | DataBlob | 是 | 签名数据 | **返回值:** -| 类型 | 说明 | -| --------------- | ------------ | -| Promise\ | 异步返回值,代表验签是否通过| +| 类型 | 说明 | +| ----------------- | ---------------------------- | +| Promise\ | 异步返回值,代表验签是否通过 | **callback示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -2076,6 +2361,7 @@ verifyer.init(globalKeyPair.pubKey, function (err, data) { ``` **promise示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -2089,6 +2375,7 @@ verifyInitPromise.then(() => { console.log("Verify result is " + res); }); ``` + ## cryptoFramework.createKeyAgreement createKeyAgreement(algName : string) : KeyAgreement @@ -2099,15 +2386,15 @@ KeyAgreement实例生成 **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ------ | ---- | ------------------------------------------------------------ | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ------ | ---- | ------------------------------- | | algName | string | 是 | 指定密钥协商算法:目前仅支持ECC | **返回值**: -| 类型 | 说明 | -| ---- | ------------------------------ | -| KeyAgreement | 返回由输入算法指定生成的KeyAgreement对象 | +| 类型 | 说明 | +| ------------ | ---------------------------------------- | +| KeyAgreement | 返回由输入算法指定生成的KeyAgreement对象 | **示例:** @@ -2132,13 +2419,14 @@ generateSecret(priKey : PriKey, pubKey : PubKey, callback : AsyncCallback\ | 是 | 异步接受共享秘密的回调 | ### generateSecret + generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\ 基于传入的私钥与公钥进行密钥协商,返回共享秘密,Promise形式 @@ -2147,18 +2435,19 @@ generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\ **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------- | ---- | ------------------ | -| priKey | PriKey |是| 设置密钥协商的私钥输入 | -| pubKey | PubKey |是| 设置密钥协商的公钥输入 | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------ | ---- | ---------------------- | +| priKey | PriKey | 是 | 设置密钥协商的私钥输入 | +| pubKey | PubKey | 是 | 设置密钥协商的公钥输入 | **返回值:** -| 类型 | 说明 | -| --------------- | ------------ | +| 类型 | 说明 | +| ------------------ | -------- | | Promise\ | 共享秘密 | **callback示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -2173,6 +2462,7 @@ keyAgreement.generateSecret(globalKeyPair.priKey, globalKeyPair.pubKey, function ``` **promise示例:** + ```javascript import cryptoFramework from "@ohos.security.cryptoFramework" @@ -2184,6 +2474,7 @@ keyAgreementPromise.then((secret) => { console.error("keyAgreement error."); }); ``` + ## cryptoFramework.createX509Cert createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\) : void @@ -2194,10 +2485,10 @@ createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\) : v **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | ------------------ | -| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | -| callback | AsyncCallback\ | 否 | 回调函数。表示X509证书对象 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------- | ---- | -------------------------- | +| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | +| callback | AsyncCallback\ | 否 | 回调函数。表示X509证书对象 | **示例**: @@ -2231,8 +2522,8 @@ createX509Cert(inStream : EncodingBlob) : Promise\ **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------ | ---- | ------------------ | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------- | ---- | ------------------ | | inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | **返回值**: @@ -2274,10 +2565,10 @@ verify(key : PubKey, callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | ------------------ | -| key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 | -| callback | AsyncCallback\) | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,不为null表示失败 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------- | ---- | ------------------------------------------------------------ | +| key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 | +| callback | AsyncCallback\) | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,不为null表示失败 | **示例**: @@ -2320,14 +2611,14 @@ verify(key : PubKey) : Promise\ **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | ------------------ | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------- | ---- | ------------------ | | key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 | **返回值**: -| 类型 | 说明 | -| ---- | ------------------------------------------------------------ | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | **示例**: @@ -2366,8 +2657,8 @@ getEncoded(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------- | ---- | -------------------------------- | | callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 否 | 回调函数。表示X509证书序列化数据 | @@ -2409,8 +2700,8 @@ getEncoded() : Promise\ **返回值**: -| 类型 | 说明 | -| ------------ | ---------------------- | +| 类型 | 说明 | +| --------------------------------------- | ---------------------- | | Promise\<[EncodingBlob](#encodingblob)> | 表示X509证书序列化数据 | **示例**: @@ -2447,8 +2738,8 @@ getPublicKey(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------- | ---- | -------------------------- | | callback | AsyncCallback | 否 | 回调函数,X509证书公钥对象 | @@ -2528,9 +2819,9 @@ checkValidityWithDate(date: string, callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | -| date | string | 是 | 日期 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| date | string | 是 | 日期 | | callback | AsyncCallback\ | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否检查成功,error为null表示成功,不为null表示失败 | @@ -2690,8 +2981,8 @@ getIssuerName() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | ---------------------- | +| 类型 | 说明 | +| --------------------- | ---------------------- | | [DataBlob](#datablob) | 表示X509证书颁发者名称 | **示例**: @@ -2726,8 +3017,8 @@ getSubjectName() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | -------------------- | +| 类型 | 说明 | +| --------------------- | -------------------- | | [DataBlob](#datablob) | 表示X509证书主体名称 | **示例**: @@ -2834,8 +3125,8 @@ getSignature() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | -------------------- | +| 类型 | 说明 | +| --------------------- | -------------------- | | [DataBlob](#datablob) | 表示X509证书签名数据 | **示例**: @@ -2942,8 +3233,8 @@ getSignatureAlgParams() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | ------------------------ | +| 类型 | 说明 | +| --------------------- | ------------------------ | | [DataBlob](#datablob) | 表示X509证书签名算法参数 | **示例**: @@ -2978,8 +3269,8 @@ getKeyUsage() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | -------------------- | +| 类型 | 说明 | +| --------------------- | -------------------- | | [DataBlob](#datablob) | 表示X509证书秘钥用途 | **示例**: @@ -3014,8 +3305,8 @@ getExtKeyUsage() : DataArray **返回值**: -| 类型 | 说明 | -| --------- | ------------------------ | +| 类型 | 说明 | +| ----------------------- | ------------------------ | | [DataArray](#dataarray) | 表示X509证书扩展秘钥用途 | **示例**: @@ -3086,8 +3377,8 @@ getSubjectAltNames() : DataArray **返回值**: -| 类型 | 说明 | -| --------- | ------------------------ | +| 类型 | 说明 | +| ----------------------- | ------------------------ | | [DataArray](#dataarray) | 表示X509证书主体可选名称 | **示例**: @@ -3122,8 +3413,8 @@ getIssuerAltNames() : DataArray **返回值**: -| 类型 | 说明 | -| --------- | -------------------------- | +| 类型 | 说明 | +| ----------------------- | -------------------------- | | [DataArray](#dataarray) | 表示X509证书颁发者可选名称 | **示例**: @@ -3158,10 +3449,10 @@ createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\) : voi **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------------------------- | -| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | -| callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销列表对象 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------- | ---- | ------------------------------ | +| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | +| callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销列表对象 | **示例**: @@ -3195,14 +3486,14 @@ createX509Crl(inStream : EncodingBlob) : Promise\ **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------ | ---- | -------------------------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------- | ---- | -------------------------- | | inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | **返回值**: -| 类型 | 说明 | -| ------- | -------------------- | +| 类型 | 说明 | +| ----------------- | -------------------- | | Promise\ | 表示证书吊销列表对象 | **示例**: @@ -3238,10 +3529,10 @@ isRevoked(cert : X509Cert, callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------------------- | -| cert | [X509Cert](#x509cert) | 是 | 表示被检查的证书对象 | -| callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销状态,true表示已吊销,false表示未吊销 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------- | ---- | ----------------------------------------------------------- | +| cert | [X509Cert](#x509cert) | 是 | 表示被检查的证书对象 | +| callback | AsyncCallback\ | 否 | 回调函数。表示证书吊销状态,true表示已吊销,false表示未吊销 | **示例**: @@ -3290,8 +3581,8 @@ isRevoked(cert : X509Cert) : Promise\ **返回值**: -| 类型 | 说明 | -| ------- | ------------------------------------------------- | +| 类型 | 说明 | +| ----------------- | ------------------------------------------------- | | Promise\ | 表示证书吊销状态,true表示已吊销,false表示未吊销 | **示例**: @@ -3366,9 +3657,9 @@ getEncoded(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | -| callback | AsyncCallback\ | 否 | 回调函数,表示X509证书吊销列表的序列化数据 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------ | +| callback | AsyncCallback\ | 否 | 回调函数,表示X509证书吊销列表的序列化数据 | **示例**: @@ -3409,8 +3700,8 @@ getEncoded() : Promise\ **返回值**: -| 类型 | 说明 | -| ------------ | -------------------------------- | +| 类型 | 说明 | +| ---------------------- | -------------------------------- | | Promise\ | 表示X509证书吊销列表的序列化数据 | **示例**: @@ -3447,10 +3738,10 @@ verify(key : PubKey, callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | ---------------------- | -| key | PubKey | 是 | 表示用于验签的公钥对象 | -| callback | AsyncCallback\ | 否 | 回调函数,使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------- | ---- | ------------------------------------------------------------ | +| key | PubKey | 是 | 表示用于验签的公钥对象 | +| callback | AsyncCallback\ | 否 | 回调函数,使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败。 | **示例**: @@ -3493,14 +3784,14 @@ verify(key : PubKey) : Promise\ **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ------ | ---- | ---------------------- | +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ----------------- | ---- | ---------------------- | | key | [PubKey](#pubkey) | 是 | 表示用于验签的公钥对象 | **返回值**: -| 类型 | 说明 | -| ---- | ------------------------------------------------------------ | +| 类型 | 说明 | +| -------------- | ------------------------------------------------------------ | | Promise\ | 使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败 | **示例**: @@ -3575,8 +3866,8 @@ getIssuerName() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | ------------------------------ | +| 类型 | 说明 | +| --------------------- | ------------------------------ | | [DataBlob](#datablob) | 表示X509证书吊销列表颁发者名称 | **示例**: @@ -3683,10 +3974,10 @@ getRevokedCert(serialNumber : number, callback : AsyncCallback\) : **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| ------------ | ------------- | ---- | -------------- | -| serialNumber | number | 是 | 表示证书序列号 | -| callback | AsyncCallback\ | 否 | 回调函数。表示被吊销X509证书对象 | +| 参数名 | 类型 | 必填 | 说明 | +| ------------ | ---------------------------- | ---- | -------------------------------- | +| serialNumber | number | 是 | 表示证书序列号 | +| callback | AsyncCallback\ | 否 | 回调函数。表示被吊销X509证书对象 | **示例**: @@ -3735,8 +4026,8 @@ getRevokedCert(serialNumber : number) : Promise\ **返回值**: -| 类型 | 说明 | -| ------------ | ---------------------- | +| 类型 | 说明 | +| ---------------------- | ---------------------- | | Promise\ | 表示被吊销X509证书对象 | **示例**: @@ -3775,10 +4066,10 @@ getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\) **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | ------------ | -| cert | X509Cert | 是 | 表示证书对象 | -| callback | AsyncCallback\ | 否 | 回调函数,表示被吊销X509证书对象 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------- | +| cert | X509Cert | 是 | 表示证书对象 | +| callback | AsyncCallback\ | 否 | 回调函数,表示被吊销X509证书对象 | **示例**: @@ -3827,8 +4118,8 @@ getRevokedCertWithCert(cert : X509Cert) : Promise\ **返回值**: -| 类型 | 说明 | -| ------------ | ---------------------- | +| 类型 | 说明 | +| ---------------------- | ---------------------- | | Promise\ | 表示被吊销X509证书对象 | **示例**: @@ -3867,8 +4158,8 @@ getRevokedCerts(callback : AsyncCallback>) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------- | ---- | -------------------------------- | | callback | AsyncCallback> | 否 | 回调函数。表示被吊销X509证书列表 | @@ -3910,9 +4201,9 @@ getRevokedCerts() : Promise> **返回值**: -| 类型 | 说明 | -| ------------------- | ---------------------- | -|Promise> | 表示被吊销X509证书列表 | +| 类型 | 说明 | +| ----------------------------- | ---------------------- | +| Promise> | 表示被吊销X509证书列表 | **示例**: @@ -3948,8 +4239,8 @@ getTbsInfo(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------- | ---- | ------------------------------------------- | | callback | AsyncCallback\<[DataBlob](#datablob)> | 否 | 回调函数。表示证书吊销列表的tbsCertList信息 | @@ -3991,8 +4282,8 @@ getTbsInfo() : Promise\ **返回值**: -| 类型 | 说明 | -| -------- | --------------------------------- | +| 类型 | 说明 | +| ------------------------------- | --------------------------------- | | Promise\<[DataBlob](#datablob)> | 表示证书吊销列表的tbsCertList信息 | **示例**: @@ -4029,8 +4320,8 @@ getSignature() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | ------------------------------ | +| 类型 | 说明 | +| --------------------- | ------------------------------ | | [DataBlob](#datablob) | 表示X509证书吊销列表的签名数据 | **示例**: @@ -4137,8 +4428,8 @@ getSignatureAlgParams() : DataBlob **返回值**: -| 类型 | 说明 | -| -------- | ---------------------------------- | +| 类型 | 说明 | +| --------------------- | ---------------------------------- | | [DataBlob](#datablob) | 表示X509证书吊销列表签名的算法参数 | **示例**: @@ -4206,10 +4497,10 @@ validate(certChain : CertChainData, callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------------- | ---- | ------------------------ | -| certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据 | -| callback | AsyncCallback\ | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------------------- | ---- | ------------------------------------------------------------ | +| certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据 | +| callback | AsyncCallback\ | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 | **示例**: @@ -4248,14 +4539,14 @@ validate(certChain : CertChainData) : Promise\ **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| --------- | ------------- | ---- | ------------------------ | +| 参数名 | 类型 | 必填 | 说明 | +| --------- | ------------------------------- | ---- | -------------------------- | | certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据。 | **返回值**: -| 类型 | 说明 | -| ---- | ------------------------------------------------------------ | +| 类型 | 说明 | +| -------------- | ----------- | | Promise\ | Promise对象 | **示例**: @@ -4318,8 +4609,8 @@ getEncoded(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------- | ---- | ------------------------------------ | | callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 否 | 回调函数。表示被吊销证书的序列化数据 | @@ -4349,8 +4640,8 @@ getEncoded() : Promise\ **返回值**: -| 类型 | 说明 | -| ------------ | -------------------------- | +| 类型 | 说明 | +| --------------------------------------- | -------------------------- | | Promise\<[EncodingBlob](#encodingblob)> | 表示被吊销证书的序列化数据 | **示例**: @@ -4401,8 +4692,8 @@ getCertIssuer(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------------- | ---- | ------------------------------------ | | callback | AsyncCallback\<[DataBlob](#datablob)> | 否 | 回调函数。表示被吊销证书的颁发者信息 | @@ -4432,8 +4723,8 @@ getCertIssuer() : Promise\ **返回值**: -| 类型 | 说明 | -| -------- | -------------------------- | +| 类型 | 说明 | +| ------------------------------- | -------------------------- | | Promise\<[DataBlob](#datablob)> | 表示被吊销证书的颁发者信息 | **示例**: @@ -4460,8 +4751,8 @@ getRevocationDate(callback : AsyncCallback\) : void **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ------------- | ---- | -------- | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------- | ---- | ------------------------------ | | callback | AsyncCallback\ | 否 | 回调函数。表示证书被吊销的日期 | @@ -4491,8 +4782,8 @@ getRevocationDate() : Promise\ **返回值**: -| 类型 | 说明 | -| ------ | -------------------- | +| 类型 | 说明 | +| ---------------- | -------------------- | | Promise\ | 表示证书被吊销的日期 | **示例**: diff --git a/zh-cn/application-dev/security/cryptoFramework-guidelines.md b/zh-cn/application-dev/security/cryptoFramework-guidelines.md index a282c7b7c6113719ca57af818846887e20ce5f19..0ff0c041763272f945df48f488979d51f9498165 100644 --- a/zh-cn/application-dev/security/cryptoFramework-guidelines.md +++ b/zh-cn/application-dev/security/cryptoFramework-guidelines.md @@ -262,14 +262,14 @@ function stringToUint8Array(str) { return new Uint8Array(arr); } -// 字节流转成可理解的字符串 +// 字节流以16进制输出 function uint8ArrayToShowStr(uint8Array) { return Array.prototype.map .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .join(''); } -// 字节流以16进制输出 +// 字节流转成可理解的字符串 function uint8ArrayToString(array) { let arrayString = ''; for (let i = 0; i < array.length; i++) { @@ -381,14 +381,14 @@ function stringToUint8Array(str) { return new Uint8Array(arr); } -// 字节流转成可理解的字符串 +// 字节流以16进制输出 function uint8ArrayToShowStr(uint8Array) { return Array.prototype.map .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .join(''); } -// 字节流以16进制输出 +// 字节流转成可理解的字符串 function uint8ArrayToString(array) { let arrayString = ''; for (let i = 0; i < array.length; i++) { @@ -922,7 +922,7 @@ Mac(message authentication code)可以对消息进行完整性校验,通过使 | 实例名 | 接口名 | 描述 | | --------------- | ------------------------------------------------------------ | --------------------------------------------------- | -| cryptoFramework | function createMd(algName : string) : Md; | 指定摘要算法,生成消息认证码实例Mac | +| cryptoFramework | function createMac(algName : string) : Mac; | 指定摘要算法,生成消息认证码实例Mac | | Mac | init(key : SymKey, callback : AsyncCallback\) : void; | 接收输入对称密钥,通过Callback的方式,异步初始化MAC | | Mac | init(key : SymKey) : Promise\; | 接收输入对称密钥,通过Promise的方式,异步初始化MAC | | Mac | update(input : DataBlob, callback : AsyncCallback\) : void; | 接受输入数据,通过Callback的方式,异步更新MAC | diff --git a/zh-cn/application-dev/security/cryptoFramework-overview.md b/zh-cn/application-dev/security/cryptoFramework-overview.md index 8334ea9255f3c38a07382f9496d6fa808fa4441e..b1cae2e44127e3d42721e3963c1198c07f161de5 100644 --- a/zh-cn/application-dev/security/cryptoFramework-overview.md +++ b/zh-cn/application-dev/security/cryptoFramework-overview.md @@ -36,7 +36,7 @@ - PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充; - PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充; - > **说明:** ECB、CBC加密模式,明文长度不是128位整数倍,必须使用填充方法补足; + > **说明:** ECB、CBC加密模式,明文长度不是128位整数倍,必须使用填充方法补足。
由于需要填充至分组大小,所以实际算法库中的PKCS5和PKCS7都是以分组大小作为填充长度的,即AES加密填充至16字节。 - **对称3DES加解密** 该算法的加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。 @@ -46,7 +46,7 @@ - PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充; - PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充; - > **说明:** ECB、CBC加密模式,明文长度不是64位整数倍,必须使用填充方法补足 + > **说明:** ECB、CBC加密模式,明文长度不是64位整数倍,必须使用填充方法补足。
由于需要填充至分组大小,所以实际算法库中的PKCS5和PKCS7都是以分组大小作为填充长度的,即3DES加密填充至8字节。 - **非对称RSA加解密** @@ -116,19 +116,21 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息 支持的对称密钥生成参数: -|对称密钥算法|密钥长度|生成密钥的字符串参数| +|对称密钥算法|密钥长度(bit)|字符串参数| |---|---|---| |3DES|192|3DES192| |AES|128|AES128| |AES|192|AES192| |AES|256|AES256| + > **说明**:“字符串参数”是“对称密钥算法”和“密钥长度”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。 + **非对称密钥生成规格** - **RSA密钥生成** 支持的非对称密钥生成参数: - |非对称密钥算法|密钥长度|素数个数|生成密钥的字符串参数| + |非对称密钥算法|密钥长度(bit)|素数个数|字符串参数| |---|---|---|---| |RSA|512|2|RSA512\|PRIMES_2| |RSA|768|2|RSA768\|PRIMES_2| @@ -165,7 +167,7 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息 支持的对称加密算法: -|对称加解密算法|分组模式|指定算法名称字符串| +|对称加解密算法|分组模式| 字符串参数 | |---|---|---| |3DES|ECB|3DES192\|ECB\|[NoPadding\|PKCS5\|PKCS7]| |3DES|CBC|3DES192\|CBC\|[NoPadding\|PKCS5\|PKCS7]| @@ -179,7 +181,9 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息 |AES|GCM|AES[128\|192\|256]\|GCM\|[NoPadding\|PKCS5\|PKCS7]| |AES|CCM|AES[128\|192\|256]\|CCM\|[NoPadding\|PKCS5\|PKCS7]| -> **说明:** []中只能任选一项 +> **说明:** +> 1. []中只能任选一项。 +> 2. “字符串参数”是“对称加解密算法(含密钥长度)”、“分组模式”、“填充模式”拼接而成,用于在创建对称加解密实例时,指定对称加解密算法规格。 **非对称RSA加解密**