Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
e516ba90
D
Docs
项目概览
OpenHarmony
/
Docs
1 年多 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
e516ba90
编写于
4月 06, 2023
作者:
F
fuzikun
提交者:
符子坤
4月 06, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed
ef261d15
from
https://gitee.com/fuzikun/docs/pulls/16916
optimize ecc examples Signed-off-by:
N
fuzikun
<
fuzikun@huawei.com
>
上级
4df1ccff
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
30 addition
and
18 deletion
+30
-18
zh-cn/application-dev/security/cryptoFramework-guidelines.md
zh-cn/application-dev/security/cryptoFramework-guidelines.md
+30
-18
未找到文件。
zh-cn/application-dev/security/cryptoFramework-guidelines.md
浏览文件 @
e516ba90
...
...
@@ -129,12 +129,14 @@ function convertAsyKey() {
2.
调用convertKey方法,传入公钥二进制和私钥二进制(二者非必选项,可只传入其中一个),转换为KeyPair对象。
```
javascript
import
cryptoFramework
from
"
@ohos.security.cryptoFramework
"
function
convertEccAsyKey
()
{
let
pubKeyArray
=
new
Uint8Array
([
48
,
89
,
48
,
19
,
6
,
7
,
42
,
134
,
72
,
206
,
61
,
2
,
1
,
6
,
8
,
42
,
134
,
72
,
206
,
61
,
3
,
1
,
7
,
3
,
66
,
0
,
4
,
83
,
96
,
142
,
9
,
86
,
214
,
126
,
106
,
247
,
233
,
92
,
125
,
4
,
128
,
138
,
105
,
246
,
162
,
215
,
71
,
81
,
58
,
202
,
121
,
26
,
105
,
211
,
55
,
130
,
45
,
236
,
143
,
55
,
16
,
248
,
75
,
167
,
160
,
167
,
106
,
2
,
152
,
243
,
44
,
68
,
66
,
0
,
167
,
99
,
92
,
235
,
215
,
159
,
239
,
28
,
106
,
124
,
171
,
34
,
145
,
124
,
174
,
57
,
92
]);
let
priKeyArray
=
new
Uint8Array
([
48
,
49
,
2
,
1
,
1
,
4
,
32
,
115
,
56
,
137
,
35
,
207
,
0
,
60
,
191
,
90
,
61
,
136
,
105
,
210
,
16
,
27
,
4
,
171
,
57
,
10
,
61
,
123
,
40
,
189
,
28
,
34
,
207
,
236
,
22
,
45
,
223
,
10
,
189
,
160
,
10
,
6
,
8
,
42
,
134
,
72
,
206
,
61
,
3
,
1
,
7
]);
let
pubKeyBlob
=
{
data
:
pubKeyArray
};
let
priKeyBlob
=
{
data
:
priKeyArray
};
let
generator
=
cryptoFrame
W
ork
.
createAsyKeyGenerator
(
"
ECC256
"
);
let
generator
=
cryptoFrame
w
ork
.
createAsyKeyGenerator
(
"
ECC256
"
);
generator
.
convertKey
(
pubKeyBlob
,
priKeyBlob
,
(
error
,
data
)
=>
{
if
(
error
)
{
AlertDialog
.
show
({
message
:
"
Convert keypair fail
"
});
...
...
@@ -1287,41 +1289,51 @@ function LoopMdPromise(algName, loopSize) {
**开发步骤**
1.
生成ECC密钥。通过createAsyKeyGenerator接口创建AsyKeyGenerator对象,并生成ECC非对称密钥
。
2.
基于ECC密钥的私钥及公钥执行ECDH操作
。
1.
通过createKeyAgreement接口创建KeyAgreement对象,用于后续的密钥协商操作
。
2.
调用KeyAgreement对象提供的generateSecret方法,传入对端的ECC公钥对象,以及本地生成的ECC私钥对象
。
```
javascript
import
cryptoFramework
from
"
@ohos.security.cryptoFramework
"
let
globalKeyPair
;
let
globalSelfPriKey
;
let
globalPeerPubKey
;
function
ecdhPromise
()
{
let
peerPubKeyArray
=
new
Uint8Array
([
48
,
89
,
48
,
19
,
6
,
7
,
42
,
134
,
72
,
206
,
61
,
2
,
1
,
6
,
8
,
42
,
134
,
72
,
206
,
61
,
3
,
1
,
7
,
3
,
66
,
0
,
4
,
83
,
96
,
142
,
9
,
86
,
214
,
126
,
106
,
247
,
233
,
92
,
125
,
4
,
128
,
138
,
105
,
246
,
162
,
215
,
71
,
81
,
58
,
202
,
121
,
26
,
105
,
211
,
55
,
130
,
45
,
236
,
143
,
55
,
16
,
248
,
75
,
167
,
160
,
167
,
106
,
2
,
152
,
243
,
44
,
68
,
66
,
0
,
167
,
99
,
92
,
235
,
215
,
159
,
239
,
28
,
106
,
124
,
171
,
34
,
145
,
124
,
174
,
57
,
92
]);
let
peerPubKeyBlob
=
{
data
:
peerPubKeyArray
};
let
eccGenerator
=
cryptoFramework
.
createAsyKeyGenerator
(
"
ECC256
"
);
let
eccKeyAgreement
=
cryptoFramework
.
createKeyAgreement
(
"
ECC256
"
);
let
keyGenPromise
=
eccGenerator
.
generateKeyPair
();
keyGenPromise
.
then
(
keyPair
=>
{
globalKeyPair
=
keyPair
;
return
eccKeyAgreement
.
generateSecret
(
keyPair
.
priKey
,
keyPair
.
pubKey
);
eccGenerator
.
convertKey
(
peerPubKeyBlob
,
null
).
then
((
peerKeyPair
)
=>
{
globalPeerPubKey
=
peerKeyPair
.
pubKey
;
return
eccGenerator
.
generateKeyPair
();
}).
then
((
keyPair
)
=>
{
globalSelfPriKey
=
keyPair
.
priKey
;
return
eccKeyAgreement
.
generateSecret
(
globalSelfPriKey
,
globalPeerPubKey
);
}).
then
((
secret
)
=>
{
console
.
info
(
"
ecdh output is
"
+
secret
.
data
);
console
.
info
(
"
ecdh
promise
output is
"
+
secret
.
data
);
}).
catch
((
error
)
=>
{
console
.
error
(
"
ecdh error.
"
);
});
}
function
ecdhCallback
()
{
let
peerPubKeyArray
=
new
Uint8Array
([
48
,
89
,
48
,
19
,
6
,
7
,
42
,
134
,
72
,
206
,
61
,
2
,
1
,
6
,
8
,
42
,
134
,
72
,
206
,
61
,
3
,
1
,
7
,
3
,
66
,
0
,
4
,
83
,
96
,
142
,
9
,
86
,
214
,
126
,
106
,
247
,
233
,
92
,
125
,
4
,
128
,
138
,
105
,
246
,
162
,
215
,
71
,
81
,
58
,
202
,
121
,
26
,
105
,
211
,
55
,
130
,
45
,
236
,
143
,
55
,
16
,
248
,
75
,
167
,
160
,
167
,
106
,
2
,
152
,
243
,
44
,
68
,
66
,
0
,
167
,
99
,
92
,
235
,
215
,
159
,
239
,
28
,
106
,
124
,
171
,
34
,
145
,
124
,
174
,
57
,
92
]);
let
peerPubKeyBlob
=
{
data
:
peerPubKeyArray
};
let
eccGenerator
=
cryptoFramework
.
createAsyKeyGenerator
(
"
ECC256
"
);
let
eccKeyAgreement
=
cryptoFramework
.
createKeyAgreement
(
"
ECC256
"
);
eccGenerator
.
generateKeyPair
(
function
(
err
,
keyPair
)
{
globalKeyPair
=
keyPair
;
eccKeyAgreement
.
generateSecret
(
keyPair
.
priKey
,
keyPair
.
pubKey
,
function
(
err
,
secret
)
{
if
(
err
)
{
console
.
error
(
"
ecdh error.
"
);
return
;
}
console
.
info
(
"
ecdh output is
"
+
secret
.
data
);
eccGenerator
.
convertKey
(
peerPubKeyBlob
,
null
,
function
(
err
,
peerKeyPair
)
{
globalPeerPubKey
=
peerKeyPair
.
pubKey
;
eccGenerator
.
generateKeyPair
(
function
(
err
,
keyPair
)
{
globalSelfPriKey
=
keyPair
.
priKey
;
eccKeyAgreement
.
generateSecret
(
globalSelfPriKey
,
globalPeerPubKey
,
function
(
err
,
secret
)
{
if
(
err
)
{
console
.
error
(
"
ecdh error.
"
);
return
;
}
console
.
info
(
"
ecdh callback output is
"
+
secret
.
data
);
});
});
})
;
})
}
```
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录