提交 699afa7b 编写于 作者: X xwb

完善算法库中对称加解密和mac、md、rand的描述,补充错误码

Signed-off-by: Nxwb <xuwanbing1@huawei.com>
上级 1a4f4a76
...@@ -19,7 +19,7 @@ import cryptoFramework from "@ohos.security.cryptoFramework" ...@@ -19,7 +19,7 @@ import cryptoFramework from "@ohos.security.cryptoFramework"
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| --------------------------------------| -------- | ------------------------------| | ------------------------------------- | -------- | ---------------------------- |
| INVALID_PARAMS | 401 | 非法入参。 | | INVALID_PARAMS | 401 | 非法入参。 |
| NOT_SUPPORT | 801 | 操作不支持。 | | NOT_SUPPORT | 801 | 操作不支持。 |
| ERR_OUT_OF_MEMORY | 17620001 | 内存错误。 | | ERR_OUT_OF_MEMORY | 17620001 | 内存错误。 |
...@@ -33,17 +33,21 @@ import cryptoFramework from "@ohos.security.cryptoFramework" ...@@ -33,17 +33,21 @@ import cryptoFramework from "@ohos.security.cryptoFramework"
| ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE | 17630007 | 证书的秘钥用途不含数字签名。 | | ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE | 17630007 | 证书的秘钥用途不含数字签名。 |
## DataBlob ## DataBlob
buffer数组。 buffer数组。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| -------------- | -------------- | ---- | ---- | ----------------| | ---- | ---------- | ---- | ---- | ------ |
| data | Uint8Array | 是 | 是 | 数据。 | | data | Uint8Array | 是 | 是 | 数据。 |
## DataArray ## DataArray
buffer数组的列表。 buffer数组的列表。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| -------------- | -------------- | ---- | ---- | ----------------| | ---- | ---------- | ---- | ---- | ---------- |
| data | Uint8Array | 是 | 是 | 数据列表。 | | data | Uint8Array | 是 | 是 | 数据列表。 |
## EncodingFormat ## EncodingFormat
...@@ -53,21 +57,21 @@ buffer数组的列表。 ...@@ -53,21 +57,21 @@ buffer数组的列表。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ------------| ---------| -----------| | ---------- | ------ | --------- |
| FORMAT_DER | 0 | DER格式。 | | FORMAT_DER | 0 | DER格式。 |
| FORMAT_PEM | 1 | PEM格式。 | | FORMAT_PEM | 1 | PEM格式。 |
## EncodingBlob ## EncodingBlob
带编码格式的证书二进制数组 证书链数据,在证书链校验时,作为入参传入
### 属性 ### 属性
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| -------------- | -------------- | ---- | ---- | ----------------------------------| | -------------- | --------------------------------- | ---- | ---- | ------------------------------ |
| data | Uint8Array | 是 | 是 | 传入的数据中,包含的证书数量。 | | data | Uint8Array | 是 | 是 | 传入的数据中,包含的证书数量。 |
| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | | encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 |
...@@ -81,7 +85,7 @@ buffer数组的列表。 ...@@ -81,7 +85,7 @@ buffer数组的列表。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| -------------- | -------------- | ---- | ---- | ------------------------------------------------------------ | | -------------- | --------------------------------- | ---- | ---- | ------------------------------------------------------------ |
| data | Uint8Array | 是 | 是 | 证书数据,按照长度(2字节)-数据的形式传入,如:08ABCDEFGH07ABCDEFG,第一本证书,前2个字节表示证书的长度为8字节,后面附加8字节的证书数据;第2本证书前2个字节表示证书的长度为7字节,后面附加7字节的证书数据。 | | data | Uint8Array | 是 | 是 | 证书数据,按照长度(2字节)-数据的形式传入,如:08ABCDEFGH07ABCDEFG,第一本证书,前2个字节表示证书的长度为8字节,后面附加8字节的证书数据;第2本证书前2个字节表示证书的长度为7字节,后面附加7字节的证书数据。 |
| count | number | 是 | 是 | 传入的数据中,包含的证书数量。 | | count | number | 是 | 是 | 传入的数据中,包含的证书数量。 |
| encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 | | encodingFormat | [EncodingFormat](#encodingformat) | 是 | 是 | 指明证书编码格式。 |
...@@ -107,6 +111,12 @@ createMac(algName : string) : Mac ...@@ -107,6 +111,12 @@ createMac(algName : string) : Mac
| ---- | --------------------------------------- | | ---- | --------------------------------------- |
| Mac | 返回由输入算法指定生成的[Mac](#mac)对象 | | Mac | 返回由输入算法指定生成的[Mac](#mac)对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------ |
| 17620001 | memory error |
**示例:** **示例:**
```javascript ```javascript
...@@ -114,6 +124,7 @@ import cryptoFramework from "@ohos.security.cryptoFramework" ...@@ -114,6 +124,7 @@ import cryptoFramework from "@ohos.security.cryptoFramework"
var mac; var mac;
try { try {
// 参数选择请参考上述算法支持范围
mac = cryptoFramework.createMac("SHA256"); mac = cryptoFramework.createMac("SHA256");
} catch (error) { } catch (error) {
console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
...@@ -124,9 +135,9 @@ try { ...@@ -124,9 +135,9 @@ try {
Mac类,调用Mac方法可以进行MAC(Message Authentication Code)加密计算。调用前,需要通过[createMac](#cryptoframeworkcreatemac)构造Mac实例。 Mac类,调用Mac方法可以进行MAC(Message Authentication Code)加密计算。调用前,需要通过[createMac](#cryptoframeworkcreatemac)构造Mac实例。
### **属性** ### 属性
**系统能力:**SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 说明 | | 名称 | 类型 | 可读 | 可写 | 说明 |
| ------- | ------ | ---- | ---- | -------------------- | | ------- | ------ | ---- | ---- | -------------------- |
...@@ -143,10 +154,16 @@ init(key : SymKey, callback : AsyncCallback\<void>) : void; ...@@ -143,10 +154,16 @@ init(key : SymKey, callback : AsyncCallback\<void>) : void;
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | -------------------- | ---- | ------------ |
| key | SymKey | 是 | 共享对称密钥 | | key | SymKey | 是 | 共享对称密钥 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -172,8 +189,6 @@ symKeyGenerator.convertKey(KeyBlob, (err, symKey) => { ...@@ -172,8 +189,6 @@ symKeyGenerator.convertKey(KeyBlob, (err, symKey) => {
}); });
``` ```
### init ### init
init(key : SymKey) : Promise\<void>; init(key : SymKey) : Promise\<void>;
...@@ -191,9 +206,15 @@ init(key : SymKey) : Promise\<void>; ...@@ -191,9 +206,15 @@ init(key : SymKey) : Promise\<void>;
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ------------ | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -203,9 +224,7 @@ var mac; ...@@ -203,9 +224,7 @@ var mac;
try { try {
mac = cryptoFramework.createMac("SHA256"); mac = cryptoFramework.createMac("SHA256");
} catch (error) { } 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("[Promise]: error code: " + error.code + ", message is: " + error.message);
} }
console.error("Mac algName is: " + mac.algName); console.error("Mac algName is: " + mac.algName);
...@@ -229,11 +248,19 @@ update(input : DataBlob, callback : AsyncCallback\<void>) : void; ...@@ -229,11 +248,19 @@ update(input : DataBlob, callback : AsyncCallback\<void>) : void;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ---------- | | -------- | -------------------- | ---- | ---------- |
| input | DataBlob | 是 | 传入的消息 | | input | DataBlob | 是 | 传入的消息 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -244,7 +271,6 @@ var mac; ...@@ -244,7 +271,6 @@ var mac;
try { try {
mac = cryptoFramework.createMac("SHA256"); mac = cryptoFramework.createMac("SHA256");
} catch (error) { } 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); console.error("[Callback]: error code: " + error.code + ", message is: " + error.message);
} }
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
...@@ -274,6 +300,8 @@ update(input : DataBlob) : Promise\<void>; ...@@ -274,6 +300,8 @@ update(input : DataBlob) : Promise\<void>;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | -------- | ---- | ---------- | | ------ | -------- | ---- | ---------- |
| input | DataBlob | 是 | 传入的消息 | | input | DataBlob | 是 | 传入的消息 |
...@@ -281,9 +309,17 @@ update(input : DataBlob) : Promise\<void>; ...@@ -281,9 +309,17 @@ update(input : DataBlob) : Promise\<void>;
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ----------- | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -291,14 +327,11 @@ var mac; ...@@ -291,14 +327,11 @@ var mac;
try { try {
mac = cryptoFramework.createMac("SHA256"); mac = cryptoFramework.createMac("SHA256");
} catch (error) { } 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("[Promise]: error code: " + error.code + ", message is: " + error.message);
} }
console.error("Mac algName is: " + mac.algName); console.error("Mac algName is: " + mac.algName);
AlertDialog.show({message: "Mac algName is: " + mac.algName});
var KeyBlob; var KeyBlob;
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob); var promiseConvertKey = symKeyGenerator.convertKey(KeyBlob);
promiseConvertKey.then(symKey => { promiseConvertKey.then(symKey => {
...@@ -314,8 +347,6 @@ promiseConvertKey.then(symKey => { ...@@ -314,8 +347,6 @@ promiseConvertKey.then(symKey => {
``` ```
### doFinal ### doFinal
doFinal(callback : AsyncCallback\<DataBlob>) : void; doFinal(callback : AsyncCallback\<DataBlob>) : void;
...@@ -324,10 +355,19 @@ doFinal(callback : AsyncCallback\<DataBlob>) : void; ...@@ -324,10 +355,19 @@ doFinal(callback : AsyncCallback\<DataBlob>) : void;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | -------- | | -------- | ------------------------ | ---- | -------- |
| callback | AsyncCallback\<DataBlob> | 是 | 回调函数 | | callback | AsyncCallback\<DataBlob> | 是 | 回调函数 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17620001 | memory error |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -338,7 +378,6 @@ var mac; ...@@ -338,7 +378,6 @@ var mac;
try { try {
mac = cryptoFramework.createMac("SHA256"); mac = cryptoFramework.createMac("SHA256");
} catch (error) { } 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); console.error("[Callback]: error code: " + error.code + ", message is: " + error.message);
} }
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
...@@ -378,9 +417,16 @@ doFinal() : Promise\<DataBlob> ...@@ -378,9 +417,16 @@ doFinal() : Promise\<DataBlob>
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | ----------- | | ------------------ | ----------- |
| Promise\<DataBlob> | Promise对象 | | Promise\<DataBlob> | Promise对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17620001 | memory error |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -393,7 +439,6 @@ try { ...@@ -393,7 +439,6 @@ try {
console.error("[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); console.error("Mac algName is: " + mac.algName);
AlertDialog.show({message: "Mac algName is: " + mac.algName});
var KeyBlob; var KeyBlob;
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
...@@ -429,6 +474,12 @@ getMacLength() : number ...@@ -429,6 +474,12 @@ getMacLength() : number
| ------ | ------------------------- | | ------ | ------------------------- |
| number | 返回mac计算结果的字节长度 | | number | 返回mac计算结果的字节长度 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -441,7 +492,6 @@ try { ...@@ -441,7 +492,6 @@ try {
console.error("[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); console.error("Mac algName is: " + mac.algName);
AlertDialog.show({message: "Mac algName is: " + mac.algName});
var KeyBlob; var KeyBlob;
var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128"); var symKeyGenerator = cryptoFramework.createSymKeyGenerator("AES128");
...@@ -459,7 +509,7 @@ promiseConvertKey.then(symKey => { ...@@ -459,7 +509,7 @@ promiseConvertKey.then(symKey => {
}).then(macOutput => { }).then(macOutput => {
console.error("[Promise]: HMAC result: " + macOutput.data); console.error("[Promise]: HMAC result: " + macOutput.data);
let macLen = mac.getMacLength(); let macLen = mac.getMacLength();
AlertDialog.show({message: "MAC len: " + macLen}); console.error("MAC len: " + macLen);
}).catch(error => { }).catch(error => {
console.error("[Promise]: error: " + error.message); console.error("[Promise]: error: " + error.message);
}); });
...@@ -485,6 +535,12 @@ createMd(algName : string) : Md ...@@ -485,6 +535,12 @@ createMd(algName : string) : Md
| ---- | ------------------------------------- | | ---- | ------------------------------------- |
| Md | 返回由输入算法指定生成的[Md](#md)对象 | | Md | 返回由输入算法指定生成的[Md](#md)对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------ |
| 17620001 | memory error |
**示例:** **示例:**
```javascript ```javascript
...@@ -492,6 +548,7 @@ import cryptoFramework from "@ohos.security.cryptoFramework" ...@@ -492,6 +548,7 @@ import cryptoFramework from "@ohos.security.cryptoFramework"
var md; var md;
try { try {
// 参数选择请参考上述算法支持范围
md = cryptoFramework.createMd("SHA256"); md = cryptoFramework.createMd("SHA256");
} catch (error) { } catch (error) {
console.error("[Promise]: error code: " + error.code + ", message is: " + error.message); console.error("[Promise]: error code: " + error.code + ", message is: " + error.message);
...@@ -502,9 +559,9 @@ try { ...@@ -502,9 +559,9 @@ try {
Md类,调用Md方法可以进行MD(Message Digest)摘要计算。调用前,需要通过[createMd](#cryptoframeworkcreatemd)构造Md实例。 Md类,调用Md方法可以进行MD(Message Digest)摘要计算。调用前,需要通过[createMd](#cryptoframeworkcreatemd)构造Md实例。
### **属性** ### 属性
**系统能力:**SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 说明 | | 名称 | 类型 | 可读 | 可写 | 说明 |
| ------- | ------ | ---- | ---- | -------------------- | | ------- | ------ | ---- | ---- | -------------------- |
...@@ -518,16 +575,18 @@ update(input : DataBlob, callback : AsyncCallback\<void>) : void; ...@@ -518,16 +575,18 @@ update(input : DataBlob, callback : AsyncCallback\<void>) : void;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------ | | -------- | -------------------- | ---- | ---------- |
| input | DataBlob | 是 | 传入的消息 | | input | DataBlob | 是 | 传入的消息 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
**返回值:** **错误码:**
| 类型 | 说明 | | 错误码ID | 错误信息 |
| --------------- | ------------ | | -------- | ---------------------- |
| Promise\<void> | Promise对象 | | 17630001 | crypto operation error |
**示例:** **示例:**
...@@ -565,9 +624,15 @@ update(input : DataBlob) : Promise\<void>; ...@@ -565,9 +624,15 @@ update(input : DataBlob) : Promise\<void>;
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ------------ | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -599,9 +664,16 @@ digest(callback : AsyncCallback\<DataBlob>) : void ...@@ -599,9 +664,16 @@ digest(callback : AsyncCallback\<DataBlob>) : void
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | -------------------- | | -------- | ------------------------ | ---- | -------- |
| callback | AsyncCallback\<DataBlob> | 是 | 回调函数 | | callback | AsyncCallback\<DataBlob> | 是 | 回调函数 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17620001 | memory error |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -641,9 +713,16 @@ digest() : Promise\<DataBlob> ...@@ -641,9 +713,16 @@ digest() : Promise\<DataBlob>
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | ----------- | | ------------------ | ----------- |
| Promise\<DataBlob> | Promise对象 | | Promise\<DataBlob> | Promise对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17620001 | memory error |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -683,6 +762,12 @@ getMdLength() : number ...@@ -683,6 +762,12 @@ getMdLength() : number
| ------ | ------------------------ | | ------ | ------------------------ |
| number | 返回md计算结果的字节长度 | | number | 返回md计算结果的字节长度 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -704,7 +789,7 @@ promiseMdUpdate.then(() => { ...@@ -704,7 +789,7 @@ promiseMdUpdate.then(() => {
}).then(mdOutput => { }).then(mdOutput => {
console.error("[Promise]: MD result: " + mdOutput.data); console.error("[Promise]: MD result: " + mdOutput.data);
let mdLen = md.getMdLength(); let mdLen = md.getMdLength();
AlertDialog.show({message: "MD len: " + mdLen}); console.error("MD len: " + mdLen);
}).catch(error => { }).catch(error => {
console.error("[Promise]: error: " + error.message); console.error("[Promise]: error: " + error.message);
}); });
...@@ -724,6 +809,12 @@ createRandom() : Random ...@@ -724,6 +809,12 @@ createRandom() : Random
| ------ | --------------------------------------------- | | ------ | --------------------------------------------- |
| Random | 返回由输入算法指定生成的[Random](#random)对象 | | Random | 返回由输入算法指定生成的[Random](#random)对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------ |
| 17620001 | memory error |
**示例:** **示例:**
```javascript ```javascript
...@@ -748,11 +839,20 @@ generateRandom(len : number, callback: AsyncCallback\<DataBlob>) : void; ...@@ -748,11 +839,20 @@ generateRandom(len : number, callback: AsyncCallback\<DataBlob>) : void;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------------------- | ---- | -------------------- | | -------- | ------------------------ | ---- | -------------------- |
| len | number | 是 | 表示生成随机数的长度 | | len | number | 是 | 表示生成随机数的长度 |
| callback | AsyncCallback\<DataBlob> | 是 | 回调函数 | | callback | AsyncCallback\<DataBlob> | 是 | 回调函数 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17620001 | memory error |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -781,6 +881,8 @@ generateRandom(len : number) : Promise\<DataBlob>; ...@@ -781,6 +881,8 @@ generateRandom(len : number) : Promise\<DataBlob>;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | -------------------- | | ------ | ------ | ---- | -------------------- |
| len | number | 是 | 表示生成随机数的长度 | | len | number | 是 | 表示生成随机数的长度 |
...@@ -788,9 +890,16 @@ generateRandom(len : number) : Promise\<DataBlob>; ...@@ -788,9 +890,16 @@ generateRandom(len : number) : Promise\<DataBlob>;
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | ----------- | | ------------------ | ----------- |
| Promise\<DataBlob> | Promise对象 | | Promise\<DataBlob> | Promise对象 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ---------------------- |
| 17620001 | memory error |
| 17630001 | crypto operation error |
**示例:** **示例:**
```javascript ```javascript
...@@ -820,10 +929,16 @@ setSeed(seed : DataBlob, callback : AsyncCallback\<void>) : void; ...@@ -820,10 +929,16 @@ setSeed(seed : DataBlob, callback : AsyncCallback\<void>) : void;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | -------------------- | ---- | ------------ | | -------- | --------------------- | ---- | ---------- |
| seed | DataBlob | 是 | 设置的种子 | | seed | DataBlob | 是 | 设置的种子 |
| callback | AsyncCallback\<void\> | 是 | 回调函数 | | callback | AsyncCallback\<void\> | 是 | 回调函数 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------ |
| 17620001 | memory error |
**示例:** **示例:**
```javascript ```javascript
...@@ -860,10 +975,20 @@ setSeed(seed : DataBlob) : Promise\<void>; ...@@ -860,10 +975,20 @@ setSeed(seed : DataBlob) : Promise\<void>;
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | -------- | ---- | ---------- | | ------ | -------- | ---- | ---------- |
| seed | DataBlob | 是 | 设置的种子 | | seed | DataBlob | 是 | 设置的种子 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------------ |
| 17620001 | memory error |
**示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -888,47 +1013,59 @@ promiseGenerateRand.then(randData => { ...@@ -888,47 +1013,59 @@ promiseGenerateRand.then(randData => {
## ParamsSpec ## ParamsSpec
加解密参数,在进行对称加解密时需要构造其子类对象,并将子类对象传入[init()](#init-2)方法。适用于需要iv等参数的对称加解密模式(对于无iv等参数的模式如ECB模式,不需要构造其子类对象)。 加解密参数,在进行对称加解密时需要构造其子类对象,并将子类对象传入[init()](#init-2)方法。<br/>适用于需要iv等参数的对称加解密模式(对于无iv等参数的模式如ECB模式,无需构造,在[init()](#init-2)中传入null即可)。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------- | | -------- | ------ | ---- | ---- | ----------------------- |
| algoName | string | 是 | 是 | 指明对称加解密参数的算法模式。可选值如下:<br/>- "IvParamsSpec": 适用于CBC\|CTR\|OFB\|CFB模式<br/>- "GcmParamsSpec": 适用于GCM模式<br/>- "CcmParamsSpec": 适用于CCM模式 | | algoName | string | 是 | 是 | 指明对称加解密参数的算法模式。可选值如下:<br/>- "IvParamsSpec": 适用于CBC\|CTR\|OFB\|CFB模式<br/>- "GcmParamsSpec": 适用于GCM模式<br/>- "CcmParamsSpec": 适用于CCM模式 |
> **说明:**
> 由于[init()](#init-2)的params参数是ParamsSpec类型(父类),而实际需要传入具体的子类对象(如IvParamsSpec),因此在构造子类对象时应设置其父类ParamsSpec的algoName参数,使算法库在init()时知道传入的是哪种子类对象。
## IvParamsSpec ## IvParamsSpec
适用于CBC、CTR、OFB、CFB模式,仅使用iv的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数 加解密参数[ParamsSpec](#paramsspec)的子类,用于在对称加解密时作为[init()](#init-2)方法的参数。<br/>适用于CBC、CTR、OFB、CFB这些仅使用iv作为参数的加解密模式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------- | | ---- | --------------------- | ---- | ---- | ------------------------------------------------------------ |
| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv。常见取值如下:<br/>- AES的CBC\|CTR\|OFB\|CFB模式:iv长度为16字节<br/>- 3DES的CBC\|OFB\|CFB模式:iv长度为8字节| | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv。常见取值如下:<br/>- AES的CBC\|CTR\|OFB\|CFB模式:iv长度为16字节<br/>- 3DES的CBC\|OFB\|CFB模式:iv长度为8字节 |
> **说明:**
> 传入[init()](#init-2)方法前需要指定其algoName属性(来源于父类[ParamsSpec](#paramsspec))。
## GcmParamsSpec ## GcmParamsSpec
适用于GCM模式的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数 加解密参数[ParamsSpec](#paramsspec)的子类,用于在对称加解密时作为[init()](#init-2)方法的参数。<br/>适用于GCM模式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------- | | ------- | --------------------- | ---- | ---- | ------------------------------------------------------------ |
| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为12字节| | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为12字节 |
| aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节| | aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节 |
| authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为16字节。<br/>采用GCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),将其末尾16字节作为解密时[GcmParamsSpec](#gcmparamsspec)中的authTag | | authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为16字节。<br/>采用GCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),取出其末尾16字节作为解密时[init()](#init-2)方法的入参[GcmParamsSpec](#gcmparamsspec)中的的authTag |
> **说明:**
> 传入[init()](#init-2)方法前需要指定其algoName属性(来源于父类[ParamsSpec](#paramsspec))。
## CcmParamsSpec ## CcmParamsSpec
适用于CCM模式的加解密参数,在对称加解密时构造并传入[init()](#init-2)方法作为参数 加解密参数[ParamsSpec](#paramsspec)的子类,用于在对称加解密时作为[init()](#init-2)方法的参数。<br/>适用于CCM模式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | -------- | ---- | ---- | -------------------------------| | ------- | --------------------- | ---- | ---- | ------------------------------------------------------------ |
| iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为7字节 | | iv | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数iv,长度为7字节 |
| aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节 | | aad | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数aad,长度为8字节 |
| authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为12字节。<br/>采用CCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),将其末尾12字节作为解密时[CcmParamsSpec](#ccmparamsspec)中的authTag | | authTag | [DataBlob](#datablob) | 是 | 是 | 指明加解密参数authTag,长度为12字节。<br/>采用CCM模式加密时,需要获取[doFinal()](#dofinal-2)输出的[DataBlob](#datablob),取出其末尾12字节作为解密时[init()](#init-2)方法的入参[CcmParamsSpec](#ccmparamsspec)中的authTag |
> **说明:**
> 传入[init()](#init-2)方法前需要指定其algoName属性(来源于父类[ParamsSpec](#paramsspec))。
## CryptoMode ## CryptoMode
...@@ -937,22 +1074,22 @@ promiseGenerateRand.then(randData => { ...@@ -937,22 +1074,22 @@ promiseGenerateRand.then(randData => {
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 值 | 描述 | | 名称 | 值 | 描述 |
| ------------ | -------- | -------------------------------- | | ------------ | ---- | ---------------- |
| ENCRYPT_MODE | 0 | 表示进行加密操作 | | ENCRYPT_MODE | 0 | 表示进行加密操作 |
| DECRYPT_MODE | 1 | 表示进行解密操作 | | DECRYPT_MODE | 1 | 表示进行解密操作 |
## Key ## Key
密钥(父类),在运行密码算法(如加解密)时需要提前生成其子类对象,并传入[Cipher](#cipher)实例的[init()](#init-2)方法。密钥可以通过密钥生成器来生成。 密钥(父类),在运行密码算法(如加解密)时需要提前生成其子类对象,并传入[Cipher](#cipher)实例的[init()](#init-2)方法。<br/>密钥可以通过密钥生成器来生成。
### 属性 ### 属性
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------- | | ------- | ------ | ---- | ---- | ---------------------------- |
| format | string | 是 | 否 | 密钥的格式。| | format | string | 是 | 否 | 密钥的格式。 |
| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| | algName | string | 是 | 否 | 密钥对应的算法名(含长度)。 |
### getEncoded ### getEncoded
...@@ -964,13 +1101,14 @@ getEncoded() : DataBlob ...@@ -964,13 +1101,14 @@ getEncoded() : DataBlob
**返回值:** **返回值:**
| 类型 |描述 | | 类型 | 描述 |
| ------- | ----------- | | --------------------- | ------------------------ |
| [DataBlob](#datablob) | 用于查看密钥的具体内容。| | [DataBlob](#datablob) | 用于查看密钥的具体内容。 |
**示例:** **示例:**
```js ```js
import cryptoFramework from "@ohos.security.cryptoFramework"
function uint8ArrayToShowStr(uint8Array) { function uint8ArrayToShowStr(uint8Array) {
return Array.prototype.map return Array.prototype.map
.call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
...@@ -984,19 +1122,20 @@ console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); ...@@ -984,19 +1122,20 @@ console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data));
## SymKey ## SymKey
对称密钥,是[Key](#key)的子类,在对称加解密时需要将其对象传入[Cipher](#cipher)实例的[init()](#init-2)方法使用。对称密钥可以通过对称密钥生成器[SymKeyGenerator](#symkeygenerator)来生成。 对称密钥,是[Key](#key)的子类,在对称加解密时需要将其对象传入[Cipher](#cipher)实例的[init()](#init-2)方法使用。<br/>对称密钥可以通过对称密钥生成器[SymKeyGenerator](#symkeygenerator)来生成。
### clearMem ### clearMem
clearMem() : void clearMem() : void
以同步方法,将系统底层内存中的的密钥内容清零。 以同步方法,将系统底层内存中的的密钥内容清零。建议在不再使用对称密钥实例时,调用本函数,避免内存中密钥数据存留过久。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**示例:** **示例:**
```js ```js
import cryptoFramework from "@ohos.security.cryptoFramework"
function uint8ArrayToShowStr(uint8Array) { function uint8ArrayToShowStr(uint8Array) {
return Array.prototype.map return Array.prototype.map
.call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
...@@ -1013,16 +1152,16 @@ console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); // 输出全 ...@@ -1013,16 +1152,16 @@ console.info("key hex:" + uint8ArrayToShowStr(encodedKey.data)); // 输出全
## PubKey ## PubKey
公钥,是Key的子类,在非对称加解密、验签、密钥协商时需要将其对象作为输入使用。公钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 公钥,是Key的子类,在非对称加解密、验签、密钥协商时需要将其对象作为输入使用。<br/>公钥可以通过非对称密钥生成器AsyKeyGenerator来生成。
### 属性 ### 属性
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------- | | ------- | ------ | ---- | ---- | ---------------------------- |
| format | string | 是 | 否 | 密钥的格式。| | format | string | 是 | 否 | 密钥的格式。 |
| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| | algName | string | 是 | 否 | 密钥对应的算法名(含长度)。 |
### getEncoded ### getEncoded
...@@ -1035,9 +1174,9 @@ getEncoded() : DataBlob ...@@ -1035,9 +1174,9 @@ getEncoded() : DataBlob
**返回值:** **返回值:**
| 类型 |描述 | | 类型 | 描述 |
| ------- | ----------- | | --------------------- | ------------------------ |
| [DataBlob](#datablob) | 用于查看密钥的具体内容。| | [DataBlob](#datablob) | 用于查看密钥的具体内容。 |
**示例:** **示例:**
...@@ -1050,16 +1189,16 @@ console.info("key encoded:" + Uint8ArrayToShowStr(encodedKey.data)); ...@@ -1050,16 +1189,16 @@ console.info("key encoded:" + Uint8ArrayToShowStr(encodedKey.data));
## PriKey ## PriKey
私钥,是Key的子类,在非对称加解密、签名、密钥协商时需要将其作为输入使用。私钥可以通过非对称密钥生成器AsyKeyGenerator来生成。 私钥,是Key的子类,在非对称加解密、签名、密钥协商时需要将其作为输入使用。<br/>私钥可以通过非对称密钥生成器AsyKeyGenerator来生成。
### 属性 ### 属性
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------- | | ------- | ------ | ---- | ---- | ---------------------------- |
| format | string | 是 | 否 | 密钥的格式。| | format | string | 是 | 否 | 密钥的格式。 |
| algName | string | 是 | 否 | 密钥对应的算法名(含长度)。| | algName | string | 是 | 否 | 密钥对应的算法名(含长度)。 |
### getEncoded ### getEncoded
...@@ -1071,9 +1210,9 @@ getEncoded() : DataBlob ...@@ -1071,9 +1210,9 @@ getEncoded() : DataBlob
**返回值:** **返回值:**
| 类型 |描述 | | 类型 | 描述 |
| ------- | ----------- | | --------------------- | ------------------------ |
| [DataBlob](#datablob) | 用于查看密钥的具体内容。| | [DataBlob](#datablob) | 用于查看密钥的具体内容。 |
**示例:** **示例:**
...@@ -1102,15 +1241,15 @@ key.clearMem(); ...@@ -1102,15 +1241,15 @@ key.clearMem();
createSymKeyGenerator(algName : string) : SymKeyGenerator createSymKeyGenerator(algName : string) : SymKeyGenerator
通过指定算法名称的字符串,获取相应的对称密钥生成器实例。支持的对称密钥参数详见框架概述“[密钥生成规格](../../security/cryptoFramework-overview.md#密钥生成规格)”一节中“生成密钥的字符串” 通过指定算法名称的字符串,获取相应的对称密钥生成器实例。<br/>支持的规格详见框架概述“[密钥生成规格](../../security/cryptoFramework-overview.md#密钥生成规格)”一节
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ------ | ---- | ----------------------------- | | ------- | ------ | ---- | ------------------------------------------------------------ |
| algName | string | 是 | 待生成对称密钥生成器的算法名称。 | | algName | string | 是 | 待生成对称密钥生成器的算法名称。<br/>具体取值详见框架概述“[密钥生成规格](../../security/cryptoFramework-overview.md#密钥生成规格)”一节中的“字符串参数”。 |
**返回值:** **返回值:**
...@@ -1127,29 +1266,35 @@ let symKeyGenerator = cryptoFramework.createSymKeyGenerator('3DES192'); ...@@ -1127,29 +1266,35 @@ let symKeyGenerator = cryptoFramework.createSymKeyGenerator('3DES192');
## SymKeyGenerator ## SymKeyGenerator
对称密钥生成器。在使用该类的方法前,需要先使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)方法构建一个symKeyGenerator实例。 对称密钥生成器。<br/>在使用该类的方法前,需要先使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)方法构建一个symKeyGenerator实例。
### 属性 ### 属性
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | ---- | ---- | ---------------------------- | | ------- | ------ | ---- | ---- | ------------------------------ |
| algName | string | 是 | 否 | 对称密钥生成器指定的算法名称。 | | algName | string | 是 | 否 | 对称密钥生成器指定的算法名称。 |
### generateSymKey ### generateSymKey
generateSymKey(callback : AsyncCallback\<SymKey>) : void generateSymKey(callback : AsyncCallback\<SymKey>) : void
异步获取对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。 异步获取对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。<br/>必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数。<br/>目前支持使用OpenSSL的RAND_priv_bytes()作为底层能力生成随机密钥。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ----------------- | ---- | ------------------- | | -------- | --------------------------------- | ---- | ------------------------------------------------------------ |
| callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数,用于获取对称密钥。 | | callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数。当生成对称密钥成功,err为undefined,data为获取到的SymKey;否则为错误对象。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 17620001 | memory error. |
**示例:** **示例:**
...@@ -1159,10 +1304,10 @@ let symAlgoName = '3DES192'; ...@@ -1159,10 +1304,10 @@ let symAlgoName = '3DES192';
let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName);
symKeyGenerator.generateSymKey((err, symKey) => { symKeyGenerator.generateSymKey((err, symKey) => {
if (err) { if (err) {
console.error('Failed to generate symKey'); console.error(`Generate symKey failed, ${err.code}, ${err.message}`);
return; } else {
console.info(`Generate symKey success, algName: ${symKey.algName}`);
} }
console.log('Generate symKey success, algName: ' + symKey.algName);
}) })
``` ```
...@@ -1170,15 +1315,21 @@ symKeyGenerator.generateSymKey((err, symKey) => { ...@@ -1170,15 +1315,21 @@ symKeyGenerator.generateSymKey((err, symKey) => {
generateSymKey() : Promise\<SymKey> generateSymKey() : Promise\<SymKey>
异步获取该对称密钥生成器随机生成的密钥,通过Promise获取结果。 异步获取该对称密钥生成器随机生成的密钥,通过Promise获取结果。<br/>必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数。<br/>目前支持使用OpenSSL的RAND_priv_bytes()作为底层能力生成随机密钥。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------------- | ------------------------------- | | --------------------------- | --------------------------------- |
| Promise\<[SymKey](#symkey)> | 使用Promise的方式获取对称密钥。 | | Promise\<[SymKey](#symkey)> | Promise对象,返回对称密钥SymKey。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | ------------- |
| 17620001 | memory error. |
**示例:** **示例:**
...@@ -1186,8 +1337,11 @@ generateSymKey() : Promise\<SymKey> ...@@ -1186,8 +1337,11 @@ generateSymKey() : Promise\<SymKey>
import cryptoFramework from '@ohos.security.cryptoFramework'; import cryptoFramework from '@ohos.security.cryptoFramework';
let symAlgoName = 'AES128'; let symAlgoName = 'AES128';
let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName);
symKeyGenerator.generateSymKey().then((symKey) => { symKeyGenerator.generateSymKey()
console.log('Generate symKey success, algName:' + symKey.algName); .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) => { ...@@ -1195,16 +1349,22 @@ symKeyGenerator.generateSymKey().then((symKey) => {
convertKey(key : DataBlob, callback : AsyncCallback\<SymKey>) : void convertKey(key : DataBlob, callback : AsyncCallback\<SymKey>) : void
异步获取指定数据生成对称密钥,通过注册回调函数获取结果 异步根据指定数据生成对称密钥,通过注册回调函数获取结果。<br/>必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ----------------- | ---- | ---------------------- | | -------- | --------------------------------- | ---- | ------------------------------------------------------------ |
| key | [DataBlob](#datablob) | 是 | 指定的对称密钥材料。 | | key | [DataBlob](#datablob) | 是 | 指定的对称密钥材料。 |
| callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数,用于获取对称密钥。 | | callback | AsyncCallback\<[SymKey](#symkey)> | 是 | 回调函数。当生成对称密钥成功,err为undefined,data为获取到的SymKey;否则为错误对象。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | --------------------------------------------------- |
| 17620001 | memory error. |
**示例:** **示例:**
...@@ -1223,12 +1383,12 @@ function genKeyMaterialBlob() { ...@@ -1223,12 +1383,12 @@ function genKeyMaterialBlob() {
let symAlgoName = '3DES192'; let symAlgoName = '3DES192';
let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName);
let keyMaterialBlob = genKeyMaterialBlob(); let keyMaterialBlob = genKeyMaterialBlob();
symKeyGenerator.convertKey(keyMaterial, (err, symKey) => { symKeyGenerator.convertKey(keyMaterialBlob, (err, symKey) => {
if (err) { if (err) {
console.error('Failed to convert symKey'); console.error(`Convert symKey failed, ${err.code}, ${err.message}`);
return; } else {
console.info(`Convert symKey success, algName: ${symKey.algName}`);
} }
console.log('Convert symKey success, algName:' + symKey.algName);
}) })
``` ```
...@@ -1236,21 +1396,27 @@ symKeyGenerator.convertKey(keyMaterial, (err, symKey) => { ...@@ -1236,21 +1396,27 @@ symKeyGenerator.convertKey(keyMaterial, (err, symKey) => {
convertKey(key : DataBlob) : Promise\<SymKey> convertKey(key : DataBlob) : Promise\<SymKey>
异步获取指定数据生成对称密钥,通过Promise获取结果 异步根据指定数据生成对称密钥,通过Promise获取结果。<br/>必须在使用[createSymKeyGenerator](#cryptoframeworkcreatesymkeygenerator)创建对称密钥生成器后,才能使用本函数
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| ---- | -------- | ---- | -------------------- | | ---- | --------------------- | ---- | -------------------- |
| key | [DataBlob](#datablob) | 是 | 指定的密钥材料数据。 | | key | [DataBlob](#datablob) | 是 | 指定的密钥材料数据。 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------------- | ------------------------------- | | --------------------------- | --------------------------------- |
| Promise\<[SymKey](#symkey)> | 使用Promise的方式获取对称密钥。 | | Promise\<[SymKey](#symkey)> | Promise对象,返回对称密钥SymKey。 |
**错误码:**
| 错误码ID | 错误信息 |
| -------- | --------------------------------------------- |
| 17620001 | memory error. |
**示例:** **示例:**
...@@ -1269,8 +1435,11 @@ function genKeyMaterialBlob() { ...@@ -1269,8 +1435,11 @@ function genKeyMaterialBlob() {
let symAlgoName = '3DES192'; let symAlgoName = '3DES192';
let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName); let symKeyGenerator = cryptoFramework.createSymKeyGenerator(symAlgoName);
let keyMaterialBlob = genKeyMaterialBlob(); let keyMaterialBlob = genKeyMaterialBlob();
symKeyGenerator.convertKey(keyMaterial).then((symKey) => { symKeyGenerator.convertKey(keyMaterialBlob)
console.log('Convert symKey success, algName:' + symKey.algName); .then(symKey => {
console.info(`Convert symKey success, algName: ${symKey.algName}`);
}, error => {
console.error(`Convert symKey failed, ${error.code}, ${error.message}`);
}) })
``` ```
...@@ -1290,7 +1459,7 @@ createAsyKeyGenerator(algName : string) : AsyKeyGenerator ...@@ -1290,7 +1459,7 @@ createAsyKeyGenerator(algName : string) : AsyKeyGenerator
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | -------------------------- | | --------------- | ---------------------------- |
| asyKeyGenerator | 返回非对称密钥生成器的对象。 | | asyKeyGenerator | 返回非对称密钥生成器的对象。 |
**示例:** **示例:**
...@@ -1310,14 +1479,13 @@ let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256"); ...@@ -1310,14 +1479,13 @@ let asyKeyGenerator = cryptoFramework.createAsyKeyGenerator("ECC256");
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| -------------- | -------------- | ---- | ---- | ----------------------------------| | ------- | ------ | ---- | ---- | -------------------------------- |
| algName | string | 是 | 否 | 非对称密钥生成器指定的算法名称。 | | algName | string | 是 | 否 | 非对称密钥生成器指定的算法名称。 |
### generateKeyPair ### generateKeyPair
generateKeyPair(callback : AsyncCallback\<KeyPair>) : void; generateKeyPair(callback : AsyncCallback\<KeyPair>) : void;
异步获取非对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。 异步获取非对称密钥生成器随机生成的密钥,通过注册回调函数获取结果。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
...@@ -1325,7 +1493,7 @@ generateKeyPair(callback : AsyncCallback\<KeyPair>) : void; ...@@ -1325,7 +1493,7 @@ generateKeyPair(callback : AsyncCallback\<KeyPair>) : void;
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | -------------------------- | ---- | ---------------------------- | | -------- | ----------------------- | ---- | ------------------------------ |
| callback | AsyncCallback\<KeyPair> | 是 | 回调函数,用于获取非对称密钥。 | | callback | AsyncCallback\<KeyPair> | 是 | 回调函数,用于获取非对称密钥。 |
**示例:** **示例:**
...@@ -1347,6 +1515,7 @@ asyKeyGenerator.generateKeyPair((err, keyPair) => { ...@@ -1347,6 +1515,7 @@ asyKeyGenerator.generateKeyPair((err, keyPair) => {
### generateKeyPair ### generateKeyPair
generateKeyPair() : Promise\<KeyPair> generateKeyPair() : Promise\<KeyPair>
异步获取该非对称密钥生成器随机生成的密钥,通过Promise获取结果。 异步获取该非对称密钥生成器随机生成的密钥,通过Promise获取结果。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
...@@ -1354,7 +1523,7 @@ generateKeyPair() : Promise\<KeyPair> ...@@ -1354,7 +1523,7 @@ generateKeyPair() : Promise\<KeyPair>
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------------- | ------------------------------- | | ----------------- | --------------------------------- |
| Promise\<KeyPair> | 使用Promise的方式获取非对称密钥。 | | Promise\<KeyPair> | 使用Promise的方式获取非对称密钥。 |
**示例:** **示例:**
...@@ -1374,6 +1543,7 @@ keyGenPromise.then( keyPair => { ...@@ -1374,6 +1543,7 @@ keyGenPromise.then( keyPair => {
### convertKey ### convertKey
convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\<KeyPair\>) : void convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\<KeyPair\>) : void
异步获取指定数据生成非对称密钥,通过注册回调函数获取结果。详情请看下方**密钥转换说明** 异步获取指定数据生成非对称密钥,通过注册回调函数获取结果。详情请看下方**密钥转换说明**
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
...@@ -1381,7 +1551,7 @@ convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\<KeyPa ...@@ -1381,7 +1551,7 @@ convertKey(pubKey : DataBlob, priKey : DataBlob, callback : AsyncCallback\<KeyPa
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | -------------------------- | ---- | ---------------------------- | | -------- | ----------------------- | ---- | ------------------------------ |
| pubKey | DataBlob | 否 | 指定的公钥材料。 | | pubKey | DataBlob | 否 | 指定的公钥材料。 |
| priKey | DataBlob | 否 | 指定的私钥材料。 | | priKey | DataBlob | 否 | 指定的私钥材料。 |
| callback | AsyncCallback\<KeyPair> | 是 | 回调函数,用于获取非对称密钥。 | | callback | AsyncCallback\<KeyPair> | 是 | 回调函数,用于获取非对称密钥。 |
...@@ -1404,6 +1574,7 @@ asyKeyGenerator.convertKey(pubKey, priKey, (err, keyPair) => { ...@@ -1404,6 +1574,7 @@ asyKeyGenerator.convertKey(pubKey, priKey, (err, keyPair) => {
### convertKey ### convertKey
convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\<KeyPair> convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\<KeyPair>
异步获取指定数据生成非对称密钥,通过Promise获取结果。详情请看下方**密钥转换说明** 异步获取指定数据生成非对称密钥,通过Promise获取结果。详情请看下方**密钥转换说明**
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
...@@ -1411,14 +1582,14 @@ convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\<KeyPair> ...@@ -1411,14 +1582,14 @@ convertKey(pubKey : DataBlob, priKey : DataBlob) : Promise\<KeyPair>
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| ---- | -------- | ---- | -------------------- | | ------ | -------- | ---- | ---------------- |
| pubKey | DataBlob | 否 | 指定的公钥材料。 | | pubKey | DataBlob | 否 | 指定的公钥材料。 |
| priKey | DataBlob | 否 | 指定的私钥材料。 | | priKey | DataBlob | 否 | 指定的私钥材料。 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------------- | ------------------------------- | | ----------------- | --------------------------------- |
| Promise\<KeyPair> | 使用Promise的方式获取非对称密钥。 | | Promise\<KeyPair> | 使用Promise的方式获取非对称密钥。 |
**示例:** **示例:**
...@@ -1444,20 +1615,25 @@ keyGenPromise.then( keyPair => { ...@@ -1444,20 +1615,25 @@ keyGenPromise.then( keyPair => {
## cryptoFramework.createCipher ## cryptoFramework.createCipher
createCipher(transformation : string) : Cipher createCipher(transformation : string) : Cipher
通过指定算法名称,获取相应的[Cipher](#cipher)实例。支持的算法名参数详见框架概述“[加解密规格](../../security/cryptoFramework-overview.md#加解密规格)”一节中的“指定算法名称字符串”。
通过指定算法名称,获取相应的[Cipher](#cipher)实例。<br/>支持的规格详见框架概述“[加解密规格](../../security/cryptoFramework-overview.md#加解密规格)”一节。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------------- | ------ | -------- | ------------------------------------------------------------ | | -------------- | ------ | ---- | ------------------------------------------------------------ |
| transformation | string | 是 | 待生成Cipher的算法名称、加密模式以及填充方法的组合。输入可以为"RSA1024\|PKCS1", "RSA1024\|PKCS1_OAEP\|SHA256\|SHA256"等 | | transformation | string | 是 | 待生成Cipher的算法名称(含密钥长度)、加密模式以及填充方法的组合。<br/>具体取值详见框架概述“[加解密规格](../../security/cryptoFramework-overview.md#加解密规格)”一节中的“字符串参数”。 |
> **说明:**
> 1. 目前对称加解密中,PKCS5和PKCS7的实现相同,其padding长度和分组长度保持一致(即PKCS5和PKCS7在3DES中均按照8字节填充,在AES中均按照16字节填充),另有NoPadding表示不填充。<br/>开发者需要自行了解密码学不同分组模式的差异,以便选择合适的参数规格。例如选择ECB和CBC模式时,建议启用填充,否则必须确保明文长度是分组大小的整数倍;选择其他模式时,可以不启用填充,此时密文长度和明文长度一致(即可能不是分组大小的整数倍)。
> 2. 使用RSA进行非对称加解密时,必须创建两个Cipher对象分别进行加密和解密操作,而不能对同一个Cipher对象进行加解密。对称加解密没有此要求(即只要算法规格一样,可以对同一个Cipher对象进行加解密操作)。
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------ | ------------------------ | | ----------------- | ------------------------ |
| [Cipher](#cipher) | 返回加解密生成器的对象。 | | [Cipher](#cipher) | 返回加解密生成器的对象。 |
**示例:** **示例:**
...@@ -1472,13 +1648,17 @@ try { ...@@ -1472,13 +1648,17 @@ try {
console.info(`cipher algName: ${cipher.algName}`); console.info(`cipher algName: ${cipher.algName}`);
} catch (error) { } catch (error) {
console.error(`createCipher failed, ${error.code}, ${error.message}`); console.error(`createCipher failed, ${error.code}, ${error.message}`);
return;
} }
``` ```
## Cipher ## Cipher
提供加解密的算法操作功能,按序调用本类中的[init()](#init-2)[update()](#update-4)[doFinal()](#dofinal-2)方法,可以实现对称加密/对称解密/非对称加密/非对称解密。完整的加解密流程示例可参考开发指导中的“[使用加解密操作](../../security/cryptoFramework-guidelines.md#使用加解密操作)”一节。 提供加解密的算法操作功能,按序调用本类中的[init()](#init-2)[update()](#update-4)[doFinal()](#dofinal-2)方法,可以实现对称加密/对称解密/非对称加密/非对称解密。<br/>完整的加解密流程示例可参考开发指导中的“[使用加解密操作](../../security/cryptoFramework-guidelines.md#使用加解密操作)”一节。
一次完整的加/解密流程在对称加密和非对称加密中略有不同:
- 对称加解密:init为必选,update为可选(且允许多次update加/解密大数据),doFinal为必选;doFinal结束后可以重新init开始新一轮加/解密流程。
- RSA非对称加解密:init为必选,不支持update操作,doFinal为必选(允许连续多次doFinal加/解密大数据);doFinal后不支持重新init。
### 属性 ### 属性
...@@ -1486,25 +1666,33 @@ try { ...@@ -1486,25 +1666,33 @@ try {
| 名称 | 类型 | 可读 | 可写 | 描述 | | 名称 | 类型 | 可读 | 可写 | 描述 |
| ------- | ------ | -------- | ----------- | ---------------------------- | | ------- | ------ | ---- | ---- | ---------------------------- |
| algName | string | 是 | 否 | 加解密生成器指定的算法名称。 | | algName | string | 是 | 否 | 加解密生成器指定的算法名称。 |
### init ### init
init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallback\<void>) : void init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallback\<void>) : void
初始化加解密的[cipher](#cipher)对象,通过注册回调函数获取结果。 初始化加解密的[cipher](#cipher)对象,通过注册回调函数获取结果。<br/>必须在使用[createCipher](#cryptoframeworkcreatecipher)创建[Cipher](#cipher)实例后,才能使用本函数。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ------------------------ | ------- | ------------------------ | | -------- | ------------------------- | ---- | ------------------------------------------------------------ |
| opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | | opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 |
| key | [Key](#key) | 是 | 指定加密或解密的密钥。 | | key | [Key](#key) | 是 | 指定加密或解密的密钥。 |
| params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数。 | | params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数,对于ECB等没有参数的算法模式,可以传入null。 |
| callback | AsyncCallback\<void> | 是 | 回调函数。 | | callback | AsyncCallback\<void> | 是 | 回调函数。当初始化成功,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 ...@@ -1512,13 +1700,14 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec, callback : AsyncCallba
import cryptoFramework from '@ohos.security.cryptoFramework'; import cryptoFramework from '@ohos.security.cryptoFramework';
let symKey; // 此处省略生成对称密钥的过程 let symKey; // 此处省略生成对称密钥的过程
let cipher; // 此处省略生成cipher实例的过程 let cipher; // 此处省略生成cipher实例的过程
cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null, (err, ) => { cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null, (err, ) => {
if (err) { if (err) {
console.error('Failed to init cipher'); console.error(`Failed to init cipher, ${err.code}, ${err.message}`);
return; } else {
} console.info(`Init cipher success`);
console.log('Init cipher success');
// 此处进行update等后续操作 // 此处进行update等后续操作
}
}) })
``` ```
...@@ -1526,14 +1715,14 @@ cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null, (err, ) => { ...@@ -1526,14 +1715,14 @@ cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null, (err, ) => {
init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void> init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void>
初始化加解密的cipher对象,通过Promise获取结果。 初始化加解密的cipher对象,通过Promise获取结果。<br/>必须在使用[createCipher](#cryptoframeworkcreatecipher)创建[Cipher](#cipher)实例后,才能使用本函数。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| ------ | ---------- | ---- | ---------------------- | | ------ | ------------------------- | ---- | ------------------------------------------------------------ |
| opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 | | opMode | [CryptoMode](#cryptomode) | 是 | 加密或者解密模式。 |
| key | [Key](#key) | 是 | 指定加密或解密的密钥。 | | key | [Key](#key) | 是 | 指定加密或解密的密钥。 |
| params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数,对于ECB等没有参数的算法模式,可以传入null。 | | params | [ParamsSpec](#paramsspec) | 是 | 指定加密或解密的参数,对于ECB等没有参数的算法模式,可以传入null。 |
...@@ -1541,8 +1730,16 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void> ...@@ -1541,8 +1730,16 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void>
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | --------------------------- | | -------------- | -------------------------------------- |
| Promise\<void> | 使用Promise的方式获取结果。 | | Promise\<void> | 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\<void> ...@@ -1550,9 +1747,12 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void>
import cryptoFramework from '@ohos.security.cryptoFramework'; import cryptoFramework from '@ohos.security.cryptoFramework';
let symKey; // 此处省略生成对称密钥的过程 let symKey; // 此处省略生成对称密钥的过程
let cipher; // 此处省略生成cipher实例的过程 let cipher; // 此处省略生成cipher实例的过程
cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null).then(() => { cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null)
console.log('Init cipher success'); .then(() => {
console.info(`Init cipher success`);
// 此处进行update等后续操作 // 此处进行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(() => { ...@@ -1560,16 +1760,29 @@ cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, symKey, null).then(() => {
update(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void update(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void
分段更新加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。(根据数据量,可不调用update或调用多次update) 分段更新加密或者解密数据操作,通过注册回调函数获取加/解密数据。 <br/>必须在对[Cipher](#cipher)实例使用[init()](init-2)初始化后,才能使用本函数。
> **说明:**
> 1. 在进行对称加解密操作的时候,如果开发者对各个分组模式不够熟悉,建议对每次update和doFinal的结果都判断是否为null,并在结果不为null时取出其中的数据进行拼接,形成完整的密文/明文。这是因为选择的分组模式等各项规格都可能对update和[doFinal](#dofinal-2)结果产生影响。<br/>(例如对于ECB和CBC模式,不论update传入的数据是否为分组长度的整数倍,都会以分组作为基本单位进行加/解密,并输出本次update新产生的加/解密分组结果。<br/>可以理解为,update只要凑满一个新的分组就会有输出,如果没有凑满则此次update输出为null,把当前还没被加/解密的数据留着,等下一次update/doFinal传入数据的时候,拼接起来继续凑分组。<br/>最后doFinal的时候,会把剩下的还没加/解密的数据,根据[createCipher](#cryptoframeworkcreatecipher)时设置的padding模式进行填充,补齐到分组的整数倍长度,再输出剩余加解密结果。<br/>而对于可以将分组密码转化为流模式实现的模式,还可能出现密文长度和明文长度相同的情况等。)
> 2. 根据数据量,可以不调用update(即[init](#init-2)完成后直接调用[doFinal](#dofinal-2))或多次调用update。<br/>算法库目前没有对update(单次或累计)的数据量设置大小限制,建议对于大数据量的对称加解密,采用多次update的方式传入数据。
> 3. RSA非对称加解密不支持update操作。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ---------------------------- | ---- | ------------------------------------------ | | -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | | data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。data不能为null,也不允许传入{data : Uint8Array(空) } |
| callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数,用于获取加密或者解密的数据结果。 | | 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实例的过程 ...@@ -1589,11 +1802,14 @@ let cipher; // 此处省略生成cipher实例的过程
let plainText = {data : stringToUint8Array('this is test!')}; let plainText = {data : stringToUint8Array('this is test!')};
cipher.update(plainText, (err, output) => { // 加密过程举例 cipher.update(plainText, (err, output) => { // 加密过程举例
if (err) { if (err) {
console.error('Failed to update cipher'); console.error(`Failed to update cipher`);
return; } else {
console.info(`Update cipher success`);
if (output != null) {
// 拼接output.data到密文
} }
console.log('Update cipher success');
// 此处进行doFinal等后续操作 // 此处进行doFinal等后续操作
}
}) })
``` ```
...@@ -1601,21 +1817,34 @@ cipher.update(plainText, (err, output) => { // 加密过程举例 ...@@ -1601,21 +1817,34 @@ cipher.update(plainText, (err, output) => { // 加密过程举例
update(data : DataBlob) : Promise\<DataBlob> update(data : DataBlob) : Promise\<DataBlob>
分段更新加密或者解密数据操作,通过Promise获取结果。(根据数据量,可不调用update或调用多次update) 分段更新加密或者解密数据操作,通过通过Promise获取加/解密数据。<br/>必须在对[Cipher](#cipher)实例使用[init()](init-2)初始化后,才能使用本函数。
> **说明:**
> 1. 在进行对称加解密操作的时候,如果开发者对各个分组模式不够熟悉,建议对每次update和doFinal的结果都判断是否为null,并在结果不为null时取出其中的数据进行拼接,形成完整的密文/明文。这是因为选择的分组模式等各项规格都可能对update和[doFinal](#dofinal-2)结果产生影响。<br/>(例如对于ECB和CBC模式,不论update传入的数据是否为分组长度的整数倍,都会以分组作为基本单位进行加/解密,并输出本次update新产生的加/解密分组结果。<br/>可以理解为,update只要凑满一个新的分组就会有输出,如果没有凑满则此次update输出为null,把当前还没被加/解密的数据留着,等下一次update/doFinal传入数据的时候,拼接起来继续凑分组。<br/>最后doFinal的时候,会把剩下的还没加/解密的数据,根据[createCipher](#cryptoframeworkcreatecipher)时设置的padding模式进行填充,补齐到分组的整数倍长度,再输出剩余加解密结果。<br/>而对于可以将分组密码转化为流模式实现的模式,还可能出现密文长度和明文长度相同的情况等。)
> 2. 根据数据量,可以不调用update(即[init](#init-2)完成后直接调用[doFinal](#dofinal-2))或多次调用update。<br/>算法库目前没有对update(单次或累计)的数据量设置大小限制,建议对于大数据量的对称加解密,可以采用多次update的方式传入数据。
> 3. RSA非对称加解密不支持update操作。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** 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) { ...@@ -1633,9 +1862,15 @@ function stringToUint8Array(str) {
let cipher; // 此处省略生成cipher实例的过程 let cipher; // 此处省略生成cipher实例的过程
// 此处省略init()过程 // 此处省略init()过程
let plainText = {data : stringToUint8Array('this is test!')}; let plainText = {data : stringToUint8Array('this is test!')};
cipher.update(data).then((output) => { cipher.update(plainText)
console.log('Update cipher success'); .then((output) => {
console.info(`Update cipher success.`);
if (output != null) {
// 拼接output.data到密文
}
// 此处进行doFinal等后续操作 // 此处进行doFinal等后续操作
}, error => {
console.info(`Update cipher failed.`);
}) })
``` ```
...@@ -1643,16 +1878,33 @@ cipher.update(data).then((output) => { ...@@ -1643,16 +1878,33 @@ cipher.update(data).then((output) => {
doFinal(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void doFinal(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void
最后结束加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。如果在本次加解密过程中已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。<br/>根据对称加解密的模式不同,doFinal的输出可能不同:<br/>对于GCM和CCM模式的对称加密,doFinal的结果是剩余密文和authTag的拼接,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag(因此如果doFinal的data参数传入null,则doFinal的结果就是authTag)。在doFinal完成后需要将authTag暂存,填入解密时的[GcmParamsSpec](#gcmparamsspec)[CcmParamsSpec](#ccmparamsspec)<br/>对于其他模式的对称加解密,根据不同的模式特点,存在两种情况(1)update输出一部分加解密结果,doFinal输出剩余加解密结果;(2)加解密结果全部由update输出,doFinal输出空。 (1)在对称加解密中,doFinal加/解密(分组模式产生的)剩余数据和本次传入的数据,最后结束加密或者解密数据操作,通过注册回调函数获取加密或者解密数据。<br/>如果数据量较小,可以在doFinal中一次性传入数据,而不使用update;如果在本次加解密流程中,已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。<br/>根据对称加解密的模式不同,doFinal的输出有如下区别:
- 对于GCM和CCM模式的对称加密:一次加密流程中,如果将每一次update和doFinal的结果拼接起来,会得到“密文+authTag”,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag,而其余部分均为密文。(也就是说,如果doFinal的data参数传入null,则doFinal的结果就是authTag)<br/>authTag需要填入解密时的[GcmParamsSpec](#gcmparamsspec)[CcmParamsSpec](#ccmparamsspec);密文则作为解密时的入参data。
- 对于其他模式的对称加解密、GCM和CCM模式的对称解密:一次加/解密流程中,每一次update和doFinal的结果拼接起来,得到完整的明文/密文。
(2)在RSA非对称加解密中,doFinal加/解密本次传入的数据,通过注册回调函数获取加密或者解密数据。如果数据量较大,可以多次调用doFinal,拼接结果得到完整的明文/密文。
> **说明:**
> 1. 对称加解密中,调用doFinal标志着一次加解密流程已经完成,即[Cipher](#cipher)实例的状态被清除,因此当后续开启新一轮加解密流程时,需要重新调用[init()](init-2)并传入完整的参数列表进行初始化<br/>(比如即使是对同一个Cipher实例,采用同样的对称密钥,进行加密然后解密,则解密中调用init的时候仍需填写params参数,而不能直接省略为null)。
> 2. 如果遇到解密失败,需检查加解密数据和[init](#init-2)时的参数是否匹配,包括GCM模式下加密得到的authTag是否填入解密时的GcmParamsSpec等。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| -------- | ---------------------------- | ---- | ------------------------------------------ | | -------- | ------------------------------------- | ---- | ------------------------------------------------------------ |
| data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。 | | data | [DataBlob](#datablob) | 是 | 加密或者解密的数据。在对称加解密中允许为null,但不允许传入{data : Uint8Array(空) }。 |
| callback | AsyncCallback\<[DataBlob](#datablob)> | 是 | 回调函数,用于获取加密或者解密的数据结果。 | | 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; // 此处省略准备待加密/解密数据的过程 ...@@ -1664,10 +1916,13 @@ let data; // 此处省略准备待加密/解密数据的过程
// 此处省略init()和update()过程 // 此处省略init()和update()过程
cipher.doFinal(data, (err, output) => { cipher.doFinal(data, (err, output) => {
if (err) { if (err) {
console.error('Failed to final cipher'); console.error(`Failed to finalize cipher, ${err.code}, ${err.message}`);
return; } 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) => { ...@@ -1675,21 +1930,38 @@ cipher.doFinal(data, (err, output) => {
doFinal(data : DataBlob) : Promise\<DataBlob> doFinal(data : DataBlob) : Promise\<DataBlob>
最后结束加密或者解密数据操作,通过Promise获取结果。如果在本次加解密过程中已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。<br/>根据对称加解密的模式不同,doFinal的输出可能不同:<br/>对于GCM和CCM模式的对称加密,doFinal的结果是剩余密文和authTag的拼接,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag(因此如果doFinal的data参数传入null,则doFinal的结果就是authTag)。在doFinal完成后需要将authTag暂存,填入解密时的[GcmParamsSpec](#gcmparamsspec)[CcmParamsSpec](#ccmparamsspec)<br/>对于其他模式的对称加解密,根据不同的模式特点,存在两种情况(1)update输出一部分加解密结果,doFinal输出剩余加解密结果;(2)加解密结果全部由update输出,doFinal输出空。 (1)在对称加解密中,doFinal加/解密(分组模式产生的)剩余数据和本次传入的数据,最后结束加密或者解密数据操作,通过Promise获取加密或者解密数据。<br/>如果数据量较小,可以在doFinal中一次性传入数据,而不使用update;如果在本次加解密流程中,已经使用[update](#update-4)传入过数据,可以在doFinal的data参数处传入null。<br/>根据对称加解密的模式不同,doFinal的输出有如下区别:
- 对于GCM和CCM模式的对称加密:一次加密流程中,如果将每一次update和doFinal的结果拼接起来,会得到“密文+authTag”,即末尾的16字节(GCM模式)或12字节(CCM模式)是authTag,而其余部分均为密文。(也就是说,如果doFinal的data参数传入null,则doFinal的结果就是authTag)<br/>authTag需要填入解密时的[GcmParamsSpec](#gcmparamsspec)[CcmParamsSpec](#ccmparamsspec);密文则作为解密时的入参data。
- 对于其他模式的对称加解密、GCM和CCM模式的对称解密:一次加/解密流程中,每一次update和doFinal的结果拼接起来,得到完整的明文/密文。
(2)在RSA非对称加解密中,doFinal加/解密本次传入的数据,通过Promise获取加密或者解密数据。如果数据量较大,可以多次调用doFinal,拼接结果得到完整的明文/密文。
> **说明:**
> 1. 对称加解密中,调用doFinal标志着一次加解密流程已经完成,即[Cipher](#cipher)实例的状态被清除,因此当后续开启新一轮加解密流程时,需要重新调用[init()](init-2)并传入完整的参数列表进行初始化<br/>(比如即使是对同一个Cipher实例,采用同样的对称密钥,进行加密然后解密,则解密中调用init的时候仍需填写params参数,而不能直接省略为null)。
> 2. 如果遇到解密失败,需检查加解密数据和[init](#init-2)时的参数是否匹配,包括GCM模式下加密得到的authTag是否填入解密时的GcmParamsSpec等。
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** 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'; ...@@ -1699,12 +1971,18 @@ import cryptoFramework from '@ohos.security.cryptoFramework';
let cipher; // 此处省略生成cipher实例的过程 let cipher; // 此处省略生成cipher实例的过程
let data; // 此处省略准备待加密/解密数据的过程 let data; // 此处省略准备待加密/解密数据的过程
// 此处省略init()和update()过程 // 此处省略init()和update()过程
cipher.doFinal(data).then((output) => { cipher.doFinal(data)
console.log('Final cipher success'); .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 ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -1722,7 +2000,7 @@ rsaGenerator.generateKeyPair(function (err, keyPair) { ...@@ -1722,7 +2000,7 @@ rsaGenerator.generateKeyPair(function (err, keyPair) {
}); });
``` ```
**promise示例:** **使用RSA加密的promise完整示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -1741,6 +2019,8 @@ keyGenPromise.then(rsaKeyPair => { ...@@ -1741,6 +2019,8 @@ keyGenPromise.then(rsaKeyPair => {
}); });
``` ```
> **说明:**
> 更多加解密流程的完整示例可参考开发指导中的“[使用加解密操作](../../security/cryptoFramework-guidelines.md#使用加解密操作)”一节。
## cryptoFramework.createSign ## cryptoFramework.createSign
...@@ -1759,7 +2039,7 @@ Sign实例生成 ...@@ -1759,7 +2039,7 @@ Sign实例生成
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ---- | ------------------------------ | | ---- | -------------------------------- |
| Sign | 返回由输入算法指定生成的Sign对象 | | Sign | 返回由输入算法指定生成的Sign对象 |
**示例:** **示例:**
...@@ -1787,8 +2067,8 @@ init(priKey : PriKey, callback : AsyncCallback\<void>) : void ...@@ -1787,8 +2067,8 @@ init(priKey : PriKey, callback : AsyncCallback\<void>) : void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | -------------------- | ---- | ---------------- |
| priKey | Key |是| 用于Sign的初始化 | | priKey | Key | 是 | 用于Sign的初始化 |
| callback | AsyncCallback\<void> | 是 | 回调函数的 | | callback | AsyncCallback\<void> | 是 | 回调函数的 |
### init ### init
...@@ -1802,13 +2082,13 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void> ...@@ -1802,13 +2082,13 @@ init(opMode : CryptoMode, key : Key, params : ParamsSpec) : Promise\<void>
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | ------ | ---- | ---- | ---------------- |
| priKey | Key |是| 用于Sign的初始化 | | priKey | Key | 是 | 用于Sign的初始化 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------- | ----------- | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
### update ### update
...@@ -1822,7 +2102,7 @@ update(data : DataBlob, callback : AsyncCallback\<void>) : void ...@@ -1822,7 +2102,7 @@ update(data : DataBlob, callback : AsyncCallback\<void>) : void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | -------------------- | ---- | ---------- |
| data | DataBlob | 是 | 传入的消息 | | data | DataBlob | 是 | 传入的消息 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
...@@ -1843,7 +2123,7 @@ update(data : DataBlob) : Promise\<void>; ...@@ -1843,7 +2123,7 @@ update(data : DataBlob) : Promise\<void>;
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------- | ----------- | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
### sign ### sign
...@@ -1857,7 +2137,7 @@ sign(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void ...@@ -1857,7 +2137,7 @@ sign(data : DataBlob, callback : AsyncCallback\<DataBlob>) : void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | -------------------- | ---- | ---------- |
| data | DataBlob | 是 | 传入的消息 | | data | DataBlob | 是 | 传入的消息 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
...@@ -1878,10 +2158,11 @@ sign(data : DataBlob) : Promise\<DataBlob> ...@@ -1878,10 +2158,11 @@ sign(data : DataBlob) : Promise\<DataBlob>
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------- | ----------- | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
**callback示例:** **callback示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -1902,6 +2183,7 @@ rsaGenerator.generateKeyPair(function (err, keyPair) { ...@@ -1902,6 +2183,7 @@ rsaGenerator.generateKeyPair(function (err, keyPair) {
``` ```
**promise示例:** **promise示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -1939,7 +2221,7 @@ Verify实例生成 ...@@ -1939,7 +2221,7 @@ Verify实例生成
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ---- | ------------------------------ | | ------ | ---------------------------------- |
| Verify | 返回由输入算法指定生成的Verify对象 | | Verify | 返回由输入算法指定生成的Verify对象 |
**示例:** **示例:**
...@@ -1951,6 +2233,7 @@ let verifyer1 = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256"); ...@@ -1951,6 +2233,7 @@ let verifyer1 = cryptoFramework.createVerify("RSA1024|PKCS1|SHA256");
let verifyer2 = cryptoFramework.createVerify("RSA1024|PKCS1_OAEP|SHA256|MGF1_SHA256") let verifyer2 = cryptoFramework.createVerify("RSA1024|PKCS1_OAEP|SHA256|MGF1_SHA256")
``` ```
## Verify ## Verify
Verify类,使用Verify方法之前需要创建该类的实例进行操作,通过createVerify(algName : string) : Verify方法构造此实例。 Verify类,使用Verify方法之前需要创建该类的实例进行操作,通过createVerify(algName : string) : Verify方法构造此实例。
...@@ -1959,34 +2242,35 @@ Verify类,使用Verify方法之前需要创建该类的实例进行操作, ...@@ -1959,34 +2242,35 @@ Verify类,使用Verify方法之前需要创建该类的实例进行操作,
init(pubKey : PubKey, callback : AsyncCallback\<void>) : void init(pubKey : PubKey, callback : AsyncCallback\<void>) : void
传入钥初始化Verify对象,Callback形式 传入钥初始化Verify对象,Callback形式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | -------------------- | ---- | ---------------------------- |
| pubKey | Key |是| 公钥对象,用于Verify的初始化 | | pubKey | Key | 是 | 公钥对象,用于Verify的初始化 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
### init ### init
init(pubKey : PubKey) : Promise\<void> init(pubKey : PubKey) : Promise\<void>
传入钥初始化Verify对象,Promise形式 传入钥初始化Verify对象,Promise形式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | ------ | ---- | ---- | ---------------------------- |
| pubKey | Key |是|公钥对象,用于Verify的初始化 | | pubKey | Key | 是 | 公钥对象,用于Verify的初始化 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ------------ | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
### update ### update
...@@ -2000,7 +2284,7 @@ update(data : DataBlob, callback : AsyncCallback\<void>) : void ...@@ -2000,7 +2284,7 @@ update(data : DataBlob, callback : AsyncCallback\<void>) : void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | -------------------- | ---- | ---------- |
| data | DataBlob | 是 | 传入的消息 | | data | DataBlob | 是 | 传入的消息 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
...@@ -2021,21 +2305,21 @@ update(data : DataBlob) : Promise\<void>; ...@@ -2021,21 +2305,21 @@ update(data : DataBlob) : Promise\<void>;
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| ------------- | ----------- | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
### verify ### verify
verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\<boolean>) : void verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\<boolean>) : void
对数据进行签名,返回签名结果,callback方式 对数据进行验签,返回验签结果,callback方式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | ------------- | -------------------- | ---- | ---------- |
| data | DataBlob | 是 | 传入的消息 | | data | DataBlob | 是 | 传入的消息 |
| signatureData | DataBlob | 是 | 签名数据 | | signatureData | DataBlob | 是 | 签名数据 |
| callback | AsyncCallback\<void> | 是 | 回调函数 | | callback | AsyncCallback\<void> | 是 | 回调函数 |
...@@ -2044,24 +2328,25 @@ verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\<bool ...@@ -2044,24 +2328,25 @@ verify(data : DataBlob, signatureData : DataBlob, callback : AsyncCallback\<bool
verify(data : DataBlob, signatureData : DataBlob) : Promise\<boolean> verify(data : DataBlob, signatureData : DataBlob) : Promise\<boolean>
对数据进行签名,返回签名结果,promise方式 对数据进行验签,返回验签结果,promise方式
**系统能力:** SystemCapability.Security.CryptoFramework **系统能力:** SystemCapability.Security.CryptoFramework
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | -------- | ---- | ---------- | | ------------- | -------- | ---- | ---------- |
| data | DataBlob | 是 | 传入的消息 | | data | DataBlob | 是 | 传入的消息 |
| signatureData | DataBlob| 是 | 签名数据 | | signatureData | DataBlob | 是 | 签名数据 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ------------ | | ----------------- | ---------------------------- |
| Promise\<boolean> | 异步返回值,代表验签是否通过| | Promise\<boolean> | 异步返回值,代表验签是否通过 |
**callback示例:** **callback示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -2076,6 +2361,7 @@ verifyer.init(globalKeyPair.pubKey, function (err, data) { ...@@ -2076,6 +2361,7 @@ verifyer.init(globalKeyPair.pubKey, function (err, data) {
``` ```
**promise示例:** **promise示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -2089,6 +2375,7 @@ verifyInitPromise.then(() => { ...@@ -2089,6 +2375,7 @@ verifyInitPromise.then(() => {
console.log("Verify result is " + res); console.log("Verify result is " + res);
}); });
``` ```
## cryptoFramework.createKeyAgreement ## cryptoFramework.createKeyAgreement
createKeyAgreement(algName : string) : KeyAgreement createKeyAgreement(algName : string) : KeyAgreement
...@@ -2100,13 +2387,13 @@ KeyAgreement实例生成 ...@@ -2100,13 +2387,13 @@ KeyAgreement实例生成
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------- | ------ | ---- | ------------------------------------------------------------ | | ------- | ------ | ---- | ------------------------------- |
| algName | string | 是 | 指定密钥协商算法:目前仅支持ECC | | algName | string | 是 | 指定密钥协商算法:目前仅支持ECC |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ---- | ------------------------------ | | ------------ | ---------------------------------------- |
| KeyAgreement | 返回由输入算法指定生成的KeyAgreement对象 | | KeyAgreement | 返回由输入算法指定生成的KeyAgreement对象 |
**示例:** **示例:**
...@@ -2133,12 +2420,13 @@ generateSecret(priKey : PriKey, pubKey : PubKey, callback : AsyncCallback\<DataB ...@@ -2133,12 +2420,13 @@ generateSecret(priKey : PriKey, pubKey : PubKey, callback : AsyncCallback\<DataB
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | -------- | ------------------------ | ---- | ---------------------- |
| priKey | PriKey |是| 设置密钥协商的私钥输入 | | priKey | PriKey | 是 | 设置密钥协商的私钥输入 |
| pubKey | PubKey |是| 设置密钥协商的公钥输入 | | pubKey | PubKey | 是 | 设置密钥协商的公钥输入 |
| callback | AsyncCallback\<DataBlob> | 是 | 异步接受共享秘密的回调 | | callback | AsyncCallback\<DataBlob> | 是 | 异步接受共享秘密的回调 |
### generateSecret ### generateSecret
generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\<DataBlob> generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\<DataBlob>
基于传入的私钥与公钥进行密钥协商,返回共享秘密,Promise形式 基于传入的私钥与公钥进行密钥协商,返回共享秘密,Promise形式
...@@ -2148,17 +2436,18 @@ generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\<DataBlob> ...@@ -2148,17 +2436,18 @@ generateSecret(priKey : PriKey, pubKey : PubKey) : Promise\<DataBlob>
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | --------------------- | ---- | ------------------ | | ------ | ------ | ---- | ---------------------- |
| priKey | PriKey |是| 设置密钥协商的私钥输入 | | priKey | PriKey | 是 | 设置密钥协商的私钥输入 |
| pubKey | PubKey |是| 设置密钥协商的公钥输入 | | pubKey | PubKey | 是 | 设置密钥协商的公钥输入 |
**返回值:** **返回值:**
| 类型 | 说明 | | 类型 | 说明 |
| --------------- | ------------ | | ------------------ | -------- |
| Promise\<DataBlob> | 共享秘密 | | Promise\<DataBlob> | 共享秘密 |
**callback示例:** **callback示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -2173,6 +2462,7 @@ keyAgreement.generateSecret(globalKeyPair.priKey, globalKeyPair.pubKey, function ...@@ -2173,6 +2462,7 @@ keyAgreement.generateSecret(globalKeyPair.priKey, globalKeyPair.pubKey, function
``` ```
**promise示例:** **promise示例:**
```javascript ```javascript
import cryptoFramework from "@ohos.security.cryptoFramework" import cryptoFramework from "@ohos.security.cryptoFramework"
...@@ -2184,6 +2474,7 @@ keyAgreementPromise.then((secret) => { ...@@ -2184,6 +2474,7 @@ keyAgreementPromise.then((secret) => {
console.error("keyAgreement error."); console.error("keyAgreement error.");
}); });
``` ```
## cryptoFramework.createX509Cert ## cryptoFramework.createX509Cert
createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : void createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : void
...@@ -2195,7 +2486,7 @@ createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : v ...@@ -2195,7 +2486,7 @@ createX509Cert(inStream : EncodingBlob, callback : AsyncCallback\<X509Cert>) : v
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ------------------ | | -------- | ----------------------------- | ---- | -------------------------- |
| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | | inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 |
| callback | AsyncCallback\<X509Cert> | 否 | 回调函数。表示X509证书对象 | | callback | AsyncCallback\<X509Cert> | 否 | 回调函数。表示X509证书对象 |
...@@ -2232,7 +2523,7 @@ createX509Cert(inStream : EncodingBlob) : Promise\<X509Cert> ...@@ -2232,7 +2523,7 @@ createX509Cert(inStream : EncodingBlob) : Promise\<X509Cert>
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------ | ---- | ------------------ | | -------- | ----------------------------- | ---- | ------------------ |
| inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 | | inStream | [EncodingBlob](#encodingblob) | 是 | X509证书序列化数据 |
**返回值** **返回值**
...@@ -2275,7 +2566,7 @@ verify(key : PubKey, callback : AsyncCallback\<void>) : void ...@@ -2275,7 +2566,7 @@ verify(key : PubKey, callback : AsyncCallback\<void>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ------------------ | | -------- | --------------------- | ---- | ------------------------------------------------------------ |
| key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 | | key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 |
| callback | AsyncCallback\<void>) | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,不为null表示失败 | | callback | AsyncCallback\<void>) | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,不为null表示失败 |
...@@ -2321,13 +2612,13 @@ verify(key : PubKey) : Promise\<void> ...@@ -2321,13 +2612,13 @@ verify(key : PubKey) : Promise\<void>
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ------------------ | | ------ | ----------------- | ---- | ------------------ |
| key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 | | key | [PubKey](#pubkey) | 是 | 用于验签的公钥对象 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ---- | ------------------------------------------------------------ | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
**示例** **示例**
...@@ -2367,7 +2658,7 @@ getEncoded(callback : AsyncCallback\<EncodingBlob>) : void ...@@ -2367,7 +2658,7 @@ getEncoded(callback : AsyncCallback\<EncodingBlob>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | --------------------------------------------- | ---- | -------------------------------- |
| callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 否 | 回调函数。表示X509证书序列化数据 | | callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 否 | 回调函数。表示X509证书序列化数据 |
...@@ -2410,7 +2701,7 @@ getEncoded() : Promise\<EncodingBlob> ...@@ -2410,7 +2701,7 @@ getEncoded() : Promise\<EncodingBlob>
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------------ | ---------------------- | | --------------------------------------- | ---------------------- |
| Promise\<[EncodingBlob](#encodingblob)> | 表示X509证书序列化数据 | | Promise\<[EncodingBlob](#encodingblob)> | 表示X509证书序列化数据 |
**示例** **示例**
...@@ -2448,7 +2739,7 @@ getPublicKey(callback : AsyncCallback\<PubKey>) : void ...@@ -2448,7 +2739,7 @@ getPublicKey(callback : AsyncCallback\<PubKey>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | ------------- | ---- | -------------------------- |
| callback | AsyncCallback | 否 | 回调函数,X509证书公钥对象 | | callback | AsyncCallback | 否 | 回调函数,X509证书公钥对象 |
...@@ -2529,7 +2820,7 @@ checkValidityWithDate(date: string, callback : AsyncCallback\<void>) : void ...@@ -2529,7 +2820,7 @@ checkValidityWithDate(date: string, callback : AsyncCallback\<void>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | -------------------- | ---- | ------------------------------------------------------------ |
| date | string | 是 | 日期 | | date | string | 是 | 日期 |
| callback | AsyncCallback\<void> | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否检查成功,error为null表示成功,不为null表示失败 | | callback | AsyncCallback\<void> | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否检查成功,error为null表示成功,不为null表示失败 |
...@@ -2691,7 +2982,7 @@ getIssuerName() : DataBlob ...@@ -2691,7 +2982,7 @@ getIssuerName() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | ---------------------- | | --------------------- | ---------------------- |
| [DataBlob](#datablob) | 表示X509证书颁发者名称 | | [DataBlob](#datablob) | 表示X509证书颁发者名称 |
**示例** **示例**
...@@ -2727,7 +3018,7 @@ getSubjectName() : DataBlob ...@@ -2727,7 +3018,7 @@ getSubjectName() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | -------------------- | | --------------------- | -------------------- |
| [DataBlob](#datablob) | 表示X509证书主体名称 | | [DataBlob](#datablob) | 表示X509证书主体名称 |
**示例** **示例**
...@@ -2835,7 +3126,7 @@ getSignature() : DataBlob ...@@ -2835,7 +3126,7 @@ getSignature() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | -------------------- | | --------------------- | -------------------- |
| [DataBlob](#datablob) | 表示X509证书签名数据 | | [DataBlob](#datablob) | 表示X509证书签名数据 |
**示例** **示例**
...@@ -2943,7 +3234,7 @@ getSignatureAlgParams() : DataBlob ...@@ -2943,7 +3234,7 @@ getSignatureAlgParams() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | ------------------------ | | --------------------- | ------------------------ |
| [DataBlob](#datablob) | 表示X509证书签名算法参数 | | [DataBlob](#datablob) | 表示X509证书签名算法参数 |
**示例** **示例**
...@@ -2979,7 +3270,7 @@ getKeyUsage() : DataBlob ...@@ -2979,7 +3270,7 @@ getKeyUsage() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | -------------------- | | --------------------- | -------------------- |
| [DataBlob](#datablob) | 表示X509证书秘钥用途 | | [DataBlob](#datablob) | 表示X509证书秘钥用途 |
**示例** **示例**
...@@ -3015,7 +3306,7 @@ getExtKeyUsage() : DataArray ...@@ -3015,7 +3306,7 @@ getExtKeyUsage() : DataArray
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| --------- | ------------------------ | | ----------------------- | ------------------------ |
| [DataArray](#dataarray) | 表示X509证书扩展秘钥用途 | | [DataArray](#dataarray) | 表示X509证书扩展秘钥用途 |
**示例** **示例**
...@@ -3087,7 +3378,7 @@ getSubjectAltNames() : DataArray ...@@ -3087,7 +3378,7 @@ getSubjectAltNames() : DataArray
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| --------- | ------------------------ | | ----------------------- | ------------------------ |
| [DataArray](#dataarray) | 表示X509证书主体可选名称 | | [DataArray](#dataarray) | 表示X509证书主体可选名称 |
**示例** **示例**
...@@ -3123,7 +3414,7 @@ getIssuerAltNames() : DataArray ...@@ -3123,7 +3414,7 @@ getIssuerAltNames() : DataArray
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| --------- | -------------------------- | | ----------------------- | -------------------------- |
| [DataArray](#dataarray) | 表示X509证书颁发者可选名称 | | [DataArray](#dataarray) | 表示X509证书颁发者可选名称 |
**示例** **示例**
...@@ -3159,7 +3450,7 @@ createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\<X509Crl>) : voi ...@@ -3159,7 +3450,7 @@ createX509Crl(inStream : EncodingBlob, callback : AsyncCallback\<X509Crl>) : voi
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------------------------- | | -------- | ----------------------------- | ---- | ------------------------------ |
| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | | inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 |
| callback | AsyncCallback\<X509Crl> | 否 | 回调函数。表示证书吊销列表对象 | | callback | AsyncCallback\<X509Crl> | 否 | 回调函数。表示证书吊销列表对象 |
...@@ -3196,13 +3487,13 @@ createX509Crl(inStream : EncodingBlob) : Promise\<X509Crl> ...@@ -3196,13 +3487,13 @@ createX509Crl(inStream : EncodingBlob) : Promise\<X509Crl>
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------ | ---- | -------------------------- | | -------- | ----------------------------- | ---- | -------------------------- |
| inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 | | inStream | [EncodingBlob](#encodingblob) | 是 | 表示证书吊销列表序列化数据 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------- | -------------------- | | ----------------- | -------------------- |
| Promise\<X509Crl> | 表示证书吊销列表对象 | | Promise\<X509Crl> | 表示证书吊销列表对象 |
**示例** **示例**
...@@ -3239,7 +3530,7 @@ isRevoked(cert : X509Cert, callback : AsyncCallback\<boolean>) : void ...@@ -3239,7 +3530,7 @@ isRevoked(cert : X509Cert, callback : AsyncCallback\<boolean>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------------------- | | -------- | ----------------------- | ---- | ----------------------------------------------------------- |
| cert | [X509Cert](#x509cert) | 是 | 表示被检查的证书对象 | | cert | [X509Cert](#x509cert) | 是 | 表示被检查的证书对象 |
| callback | AsyncCallback\<boolean> | 否 | 回调函数。表示证书吊销状态,true表示已吊销,false表示未吊销 | | callback | AsyncCallback\<boolean> | 否 | 回调函数。表示证书吊销状态,true表示已吊销,false表示未吊销 |
...@@ -3291,7 +3582,7 @@ isRevoked(cert : X509Cert) : Promise\<boolean> ...@@ -3291,7 +3582,7 @@ isRevoked(cert : X509Cert) : Promise\<boolean>
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------- | ------------------------------------------------- | | ----------------- | ------------------------------------------------- |
| Promise\<boolean> | 表示证书吊销状态,true表示已吊销,false表示未吊销 | | Promise\<boolean> | 表示证书吊销状态,true表示已吊销,false表示未吊销 |
**示例** **示例**
...@@ -3367,7 +3658,7 @@ getEncoded(callback : AsyncCallback\<EncodingBlob>) : void ...@@ -3367,7 +3658,7 @@ getEncoded(callback : AsyncCallback\<EncodingBlob>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | ---------------------------- | ---- | ------------------------------------------ |
| callback | AsyncCallback\<EncodingBlob> | 否 | 回调函数,表示X509证书吊销列表的序列化数据 | | callback | AsyncCallback\<EncodingBlob> | 否 | 回调函数,表示X509证书吊销列表的序列化数据 |
...@@ -3410,7 +3701,7 @@ getEncoded() : Promise\<EncodingBlob> ...@@ -3410,7 +3701,7 @@ getEncoded() : Promise\<EncodingBlob>
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------------ | -------------------------------- | | ---------------------- | -------------------------------- |
| Promise\<EncodingBlob> | 表示X509证书吊销列表的序列化数据 | | Promise\<EncodingBlob> | 表示X509证书吊销列表的序列化数据 |
**示例** **示例**
...@@ -3448,7 +3739,7 @@ verify(key : PubKey, callback : AsyncCallback\<void>) : void ...@@ -3448,7 +3739,7 @@ verify(key : PubKey, callback : AsyncCallback\<void>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ---------------------- | | -------- | -------------------- | ---- | ------------------------------------------------------------ |
| key | PubKey | 是 | 表示用于验签的公钥对象 | | key | PubKey | 是 | 表示用于验签的公钥对象 |
| callback | AsyncCallback\<void> | 否 | 回调函数,使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败。 | | callback | AsyncCallback\<void> | 否 | 回调函数,使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败。 |
...@@ -3494,13 +3785,13 @@ verify(key : PubKey) : Promise\<void> ...@@ -3494,13 +3785,13 @@ verify(key : PubKey) : Promise\<void>
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------ | ------ | ---- | ---------------------- | | ------ | ----------------- | ---- | ---------------------- |
| key | [PubKey](#pubkey) | 是 | 表示用于验签的公钥对象 | | key | [PubKey](#pubkey) | 是 | 表示用于验签的公钥对象 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ---- | ------------------------------------------------------------ | | -------------- | ------------------------------------------------------------ |
| Promise\<void> | 使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败 | | Promise\<void> | 使用AsyncCallback的第一个error参数判断是否验签成功,error为null表示成功,error不为null表示失败 |
**示例** **示例**
...@@ -3576,7 +3867,7 @@ getIssuerName() : DataBlob ...@@ -3576,7 +3867,7 @@ getIssuerName() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | ------------------------------ | | --------------------- | ------------------------------ |
| [DataBlob](#datablob) | 表示X509证书吊销列表颁发者名称 | | [DataBlob](#datablob) | 表示X509证书吊销列表颁发者名称 |
**示例** **示例**
...@@ -3684,7 +3975,7 @@ getRevokedCert(serialNumber : number, callback : AsyncCallback\<X509CrlEntry>) : ...@@ -3684,7 +3975,7 @@ getRevokedCert(serialNumber : number, callback : AsyncCallback\<X509CrlEntry>) :
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ------------ | ------------- | ---- | -------------- | | ------------ | ---------------------------- | ---- | -------------------------------- |
| serialNumber | number | 是 | 表示证书序列号 | | serialNumber | number | 是 | 表示证书序列号 |
| callback | AsyncCallback\<X509CrlEntry> | 否 | 回调函数。表示被吊销X509证书对象 | | callback | AsyncCallback\<X509CrlEntry> | 否 | 回调函数。表示被吊销X509证书对象 |
...@@ -3736,7 +4027,7 @@ getRevokedCert(serialNumber : number) : Promise\<X509CrlEntry> ...@@ -3736,7 +4027,7 @@ getRevokedCert(serialNumber : number) : Promise\<X509CrlEntry>
**返回值**: **返回值**:
| 类型 | 说明 | | 类型 | 说明 |
| ------------ | ---------------------- | | ---------------------- | ---------------------- |
| Promise\<X509CrlEntry> | 表示被吊销X509证书对象 | | Promise\<X509CrlEntry> | 表示被吊销X509证书对象 |
**示例** **示例**
...@@ -3776,7 +4067,7 @@ getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\<X509CrlEntry>) ...@@ -3776,7 +4067,7 @@ getRevokedCertWithCert(cert : X509Cert, callback : AsyncCallback\<X509CrlEntry>)
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | ------------ | | -------- | ---------------------------- | ---- | ------------------------------- |
| cert | X509Cert | 是 | 表示证书对象 | | cert | X509Cert | 是 | 表示证书对象 |
| callback | AsyncCallback\<X509CrlEntry> | 否 | 回调函数,表示被吊销X509证书对象 | | callback | AsyncCallback\<X509CrlEntry> | 否 | 回调函数,表示被吊销X509证书对象 |
...@@ -3828,7 +4119,7 @@ getRevokedCertWithCert(cert : X509Cert) : Promise\<X509CrlEntry> ...@@ -3828,7 +4119,7 @@ getRevokedCertWithCert(cert : X509Cert) : Promise\<X509CrlEntry>
**返回值**: **返回值**:
| 类型 | 说明 | | 类型 | 说明 |
| ------------ | ---------------------- | | ---------------------- | ---------------------- |
| Promise\<X509CrlEntry> | 表示被吊销X509证书对象 | | Promise\<X509CrlEntry> | 表示被吊销X509证书对象 |
**示例** **示例**
...@@ -3868,7 +4159,7 @@ getRevokedCerts(callback : AsyncCallback<Array\<X509CrlEntry>>) : void ...@@ -3868,7 +4159,7 @@ getRevokedCerts(callback : AsyncCallback<Array\<X509CrlEntry>>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | ----------------------------------- | ---- | -------------------------------- |
| callback | AsyncCallback<Array\<X509CrlEntry>> | 否 | 回调函数。表示被吊销X509证书列表 | | callback | AsyncCallback<Array\<X509CrlEntry>> | 否 | 回调函数。表示被吊销X509证书列表 |
...@@ -3911,8 +4202,8 @@ getRevokedCerts() : Promise<Array\<X509CrlEntry>> ...@@ -3911,8 +4202,8 @@ getRevokedCerts() : Promise<Array\<X509CrlEntry>>
**返回值**: **返回值**:
| 类型 | 说明 | | 类型 | 说明 |
| ------------------- | ---------------------- | | ----------------------------- | ---------------------- |
|Promise<Array\<X509CrlEntry>> | 表示被吊销X509证书列表 | | Promise<Array\<X509CrlEntry>> | 表示被吊销X509证书列表 |
**示例** **示例**
...@@ -3949,7 +4240,7 @@ getTbsInfo(callback : AsyncCallback\<DataBlob>) : void ...@@ -3949,7 +4240,7 @@ getTbsInfo(callback : AsyncCallback\<DataBlob>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | ------------------------------------- | ---- | ------------------------------------------- |
| callback | AsyncCallback\<[DataBlob](#datablob)> | 否 | 回调函数。表示证书吊销列表的tbsCertList信息 | | callback | AsyncCallback\<[DataBlob](#datablob)> | 否 | 回调函数。表示证书吊销列表的tbsCertList信息 |
...@@ -3992,7 +4283,7 @@ getTbsInfo() : Promise\<DataBlob> ...@@ -3992,7 +4283,7 @@ getTbsInfo() : Promise\<DataBlob>
**返回值**: **返回值**:
| 类型 | 说明 | | 类型 | 说明 |
| -------- | --------------------------------- | | ------------------------------- | --------------------------------- |
| Promise\<[DataBlob](#datablob)> | 表示证书吊销列表的tbsCertList信息 | | Promise\<[DataBlob](#datablob)> | 表示证书吊销列表的tbsCertList信息 |
**示例** **示例**
...@@ -4030,7 +4321,7 @@ getSignature() : DataBlob ...@@ -4030,7 +4321,7 @@ getSignature() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | ------------------------------ | | --------------------- | ------------------------------ |
| [DataBlob](#datablob) | 表示X509证书吊销列表的签名数据 | | [DataBlob](#datablob) | 表示X509证书吊销列表的签名数据 |
**示例** **示例**
...@@ -4138,7 +4429,7 @@ getSignatureAlgParams() : DataBlob ...@@ -4138,7 +4429,7 @@ getSignatureAlgParams() : DataBlob
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | ---------------------------------- | | --------------------- | ---------------------------------- |
| [DataBlob](#datablob) | 表示X509证书吊销列表签名的算法参数 | | [DataBlob](#datablob) | 表示X509证书吊销列表签名的算法参数 |
**示例** **示例**
...@@ -4207,7 +4498,7 @@ validate(certChain : CertChainData, callback : AsyncCallback\<void>) : void ...@@ -4207,7 +4498,7 @@ validate(certChain : CertChainData, callback : AsyncCallback\<void>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------- | ---- | ------------------------ | | --------- | ------------------------------- | ---- | ------------------------------------------------------------ |
| certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据 | | certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据 |
| callback | AsyncCallback\<void> | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 | | callback | AsyncCallback\<void> | 否 | 回调函数。使用AsyncCallback的第一个error参数判断是否校验成功,error为null表示成功,error不为null表示失败 |
...@@ -4249,13 +4540,13 @@ validate(certChain : CertChainData) : Promise\<void> ...@@ -4249,13 +4540,13 @@ validate(certChain : CertChainData) : Promise\<void>
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| --------- | ------------- | ---- | ------------------------ | | --------- | ------------------------------- | ---- | -------------------------- |
| certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据。 | | certChain | [CertChainData](#certchaindata) | 是 | 表示X509证书链序列化数据。 |
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ---- | ------------------------------------------------------------ | | -------------- | ----------- |
| Promise\<void> | Promise对象 | | Promise\<void> | Promise对象 |
**示例** **示例**
...@@ -4319,7 +4610,7 @@ getEncoded(callback : AsyncCallback\<EncodingBlob>) : void ...@@ -4319,7 +4610,7 @@ getEncoded(callback : AsyncCallback\<EncodingBlob>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | --------------------------------------------- | ---- | ------------------------------------ |
| callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 否 | 回调函数。表示被吊销证书的序列化数据 | | callback | AsyncCallback\<[EncodingBlob](#encodingblob)> | 否 | 回调函数。表示被吊销证书的序列化数据 |
...@@ -4350,7 +4641,7 @@ getEncoded() : Promise\<EncodingBlob> ...@@ -4350,7 +4641,7 @@ getEncoded() : Promise\<EncodingBlob>
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------------ | -------------------------- | | --------------------------------------- | -------------------------- |
| Promise\<[EncodingBlob](#encodingblob)> | 表示被吊销证书的序列化数据 | | Promise\<[EncodingBlob](#encodingblob)> | 表示被吊销证书的序列化数据 |
**示例** **示例**
...@@ -4402,7 +4693,7 @@ getCertIssuer(callback : AsyncCallback\<DataBlob>) : void ...@@ -4402,7 +4693,7 @@ getCertIssuer(callback : AsyncCallback\<DataBlob>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | ------------------------------------- | ---- | ------------------------------------ |
| callback | AsyncCallback\<[DataBlob](#datablob)> | 否 | 回调函数。表示被吊销证书的颁发者信息 | | callback | AsyncCallback\<[DataBlob](#datablob)> | 否 | 回调函数。表示被吊销证书的颁发者信息 |
...@@ -4433,7 +4724,7 @@ getCertIssuer() : Promise\<DataBlob> ...@@ -4433,7 +4724,7 @@ getCertIssuer() : Promise\<DataBlob>
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| -------- | -------------------------- | | ------------------------------- | -------------------------- |
| Promise\<[DataBlob](#datablob)> | 表示被吊销证书的颁发者信息 | | Promise\<[DataBlob](#datablob)> | 表示被吊销证书的颁发者信息 |
**示例** **示例**
...@@ -4461,7 +4752,7 @@ getRevocationDate(callback : AsyncCallback\<string>) : void ...@@ -4461,7 +4752,7 @@ getRevocationDate(callback : AsyncCallback\<string>) : void
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ------------- | ---- | -------- | | -------- | ---------------------- | ---- | ------------------------------ |
| callback | AsyncCallback\<string> | 否 | 回调函数。表示证书被吊销的日期 | | callback | AsyncCallback\<string> | 否 | 回调函数。表示证书被吊销的日期 |
...@@ -4492,7 +4783,7 @@ getRevocationDate() : Promise\<string> ...@@ -4492,7 +4783,7 @@ getRevocationDate() : Promise\<string>
**返回值** **返回值**
| 类型 | 说明 | | 类型 | 说明 |
| ------ | -------------------- | | ---------------- | -------------------- |
| Promise\<string> | 表示证书被吊销的日期 | | Promise\<string> | 表示证书被吊销的日期 |
**示例** **示例**
......
...@@ -262,14 +262,14 @@ function stringToUint8Array(str) { ...@@ -262,14 +262,14 @@ function stringToUint8Array(str) {
return new Uint8Array(arr); return new Uint8Array(arr);
} }
// 字节流转成可理解的字符串 // 字节流以16进制输出
function uint8ArrayToShowStr(uint8Array) { function uint8ArrayToShowStr(uint8Array) {
return Array.prototype.map return Array.prototype.map
.call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
.join(''); .join('');
} }
// 字节流以16进制输出 // 字节流转成可理解的字符串
function uint8ArrayToString(array) { function uint8ArrayToString(array) {
let arrayString = ''; let arrayString = '';
for (let i = 0; i < array.length; i++) { for (let i = 0; i < array.length; i++) {
...@@ -381,14 +381,14 @@ function stringToUint8Array(str) { ...@@ -381,14 +381,14 @@ function stringToUint8Array(str) {
return new Uint8Array(arr); return new Uint8Array(arr);
} }
// 字节流转成可理解的字符串 // 字节流以16进制输出
function uint8ArrayToShowStr(uint8Array) { function uint8ArrayToShowStr(uint8Array) {
return Array.prototype.map return Array.prototype.map
.call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2)) .call(uint8Array, (x) => ('00' + x.toString(16)).slice(-2))
.join(''); .join('');
} }
// 字节流以16进制输出 // 字节流转成可理解的字符串
function uint8ArrayToString(array) { function uint8ArrayToString(array) {
let arrayString = ''; let arrayString = '';
for (let i = 0; i < array.length; i++) { for (let i = 0; i < array.length; i++) {
...@@ -922,7 +922,7 @@ Mac(message authentication code)可以对消息进行完整性校验,通过使 ...@@ -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\>) : void; | 接收输入对称密钥,通过Callback的方式,异步初始化MAC | | Mac | init(key : SymKey, callback : AsyncCallback\<void\>) : void; | 接收输入对称密钥,通过Callback的方式,异步初始化MAC |
| Mac | init(key : SymKey) : Promise\<void\>; | 接收输入对称密钥,通过Promise的方式,异步初始化MAC | | Mac | init(key : SymKey) : Promise\<void\>; | 接收输入对称密钥,通过Promise的方式,异步初始化MAC |
| Mac | update(input : DataBlob, callback : AsyncCallback\<void\>) : void; | 接受输入数据,通过Callback的方式,异步更新MAC | | Mac | update(input : DataBlob, callback : AsyncCallback\<void\>) : void; | 接受输入数据,通过Callback的方式,异步更新MAC |
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
- PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充; - PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充;
- PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充; - PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充;
> **说明:** ECB、CBC加密模式,明文长度不是128位整数倍,必须使用填充方法补足 > **说明:** ECB、CBC加密模式,明文长度不是128位整数倍,必须使用填充方法补足。<br/>由于需要填充至分组大小,所以实际算法库中的PKCS5和PKCS7都是以分组大小作为填充长度的,即AES加密填充至16字节。
- **对称3DES加解密** - **对称3DES加解密**
该算法的加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。 该算法的加解密过程分别是对明文/密文数据进行三次DES加密或解密,得到相应的密文或明文。
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
- PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充; - PKCS5:填充字符由一个字节序列组成,每个字节填充该填充字节序列的长度,规定是8字节填充;
- PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充; - PKCS7:填充字符和PKCS5填充方法一致,但是可以在1-255字节之间任意填充;
> **说明:** ECB、CBC加密模式,明文长度不是64位整数倍,必须使用填充方法补足 > **说明:** ECB、CBC加密模式,明文长度不是64位整数倍,必须使用填充方法补足。<br/>由于需要填充至分组大小,所以实际算法库中的PKCS5和PKCS7都是以分组大小作为填充长度的,即3DES加密填充至8字节。
- **非对称RSA加解密** - **非对称RSA加解密**
...@@ -116,19 +116,21 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息 ...@@ -116,19 +116,21 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息
支持的对称密钥生成参数: 支持的对称密钥生成参数:
|对称密钥算法|密钥长度|生成密钥的字符串参数| |对称密钥算法|密钥长度(bit)|字符串参数|
|---|---|---| |---|---|---|
|3DES|192|3DES192| |3DES|192|3DES192|
|AES|128|AES128| |AES|128|AES128|
|AES|192|AES192| |AES|192|AES192|
|AES|256|AES256| |AES|256|AES256|
> **说明**:“字符串参数”是“对称密钥算法”和“密钥长度”拼接而成,用于在创建对称密钥生成器时,指定密钥规格。
**非对称密钥生成规格** **非对称密钥生成规格**
- **RSA密钥生成** - **RSA密钥生成**
支持的非对称密钥生成参数: 支持的非对称密钥生成参数:
|非对称密钥算法|密钥长度|素数个数|生成密钥的字符串参数| |非对称密钥算法|密钥长度(bit)|素数个数|字符串参数|
|---|---|---|---| |---|---|---|---|
|RSA|512|2|RSA512\|PRIMES_2| |RSA|512|2|RSA512\|PRIMES_2|
|RSA|768|2|RSA768\|PRIMES_2| |RSA|768|2|RSA768\|PRIMES_2|
...@@ -165,7 +167,7 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息 ...@@ -165,7 +167,7 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息
支持的对称加密算法: 支持的对称加密算法:
|对称加解密算法|分组模式|指定算法名称字符串| |对称加解密算法|分组模式| 字符串参数 |
|---|---|---| |---|---|---|
|3DES|ECB|3DES192\|ECB\|[NoPadding\|PKCS5\|PKCS7]| |3DES|ECB|3DES192\|ECB\|[NoPadding\|PKCS5\|PKCS7]|
|3DES|CBC|3DES192\|CBC\|[NoPadding\|PKCS5\|PKCS7]| |3DES|CBC|3DES192\|CBC\|[NoPadding\|PKCS5\|PKCS7]|
...@@ -179,7 +181,9 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息 ...@@ -179,7 +181,9 @@ HMAC(Hash-based Message Authentication Code)是一种基于密钥的消息
|AES|GCM|AES[128\|192\|256]\|GCM\|[NoPadding\|PKCS5\|PKCS7]| |AES|GCM|AES[128\|192\|256]\|GCM\|[NoPadding\|PKCS5\|PKCS7]|
|AES|CCM|AES[128\|192\|256]\|CCM\|[NoPadding\|PKCS5\|PKCS7]| |AES|CCM|AES[128\|192\|256]\|CCM\|[NoPadding\|PKCS5\|PKCS7]|
> **说明:** []中只能任选一项 > **说明:**
> 1. []中只能任选一项。
> 2. “字符串参数”是“对称加解密算法(含密钥长度)”、“分组模式”、“填充模式”拼接而成,用于在创建对称加解密实例时,指定对称加解密算法规格。
**非对称RSA加解密** **非对称RSA加解密**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册