Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
b8a7bd83
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
接近 2 年 前同步成功
通知
12
Star
18
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
b8a7bd83
编写于
7月 15, 2016
作者:
R
Richard Levitte
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix ASN.1 private encode of EC_KEY to not change the input key
RT#4611 Reviewed-by:
N
Stephen Henson
<
steve@openssl.org
>
上级
d166ed8c
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
15 deletion
+9
-15
crypto/ec/ec_ameth.c
crypto/ec/ec_ameth.c
+9
-15
未找到文件。
crypto/ec/ec_ameth.c
浏览文件 @
b8a7bd83
...
...
@@ -16,6 +16,7 @@
#include <openssl/asn1t.h>
#include "internal/asn1_int.h"
#include "internal/evp_int.h"
#include "ec_lcl.h"
#ifndef OPENSSL_NO_CMS
static
int
ecdh_cms_decrypt
(
CMS_RecipientInfo
*
ri
);
...
...
@@ -213,15 +214,13 @@ static int eckey_priv_decode(EVP_PKEY *pkey, PKCS8_PRIV_KEY_INFO *p8)
static
int
eckey_priv_encode
(
PKCS8_PRIV_KEY_INFO
*
p8
,
const
EVP_PKEY
*
pkey
)
{
EC_KEY
*
ec_key
;
EC_KEY
ec_key
=
*
(
pkey
->
pkey
.
ec
)
;
unsigned
char
*
ep
,
*
p
;
int
eplen
,
ptype
;
void
*
pval
;
unsigned
int
tmp_flags
,
old_flags
;
unsigned
int
old_flags
;
ec_key
=
pkey
->
pkey
.
ec
;
if
(
!
eckey_param2type
(
&
ptype
,
&
pval
,
ec_key
))
{
if
(
!
eckey_param2type
(
&
ptype
,
&
pval
,
&
ec_key
))
{
ECerr
(
EC_F_ECKEY_PRIV_ENCODE
,
EC_R_DECODE_ERROR
);
return
0
;
}
...
...
@@ -232,30 +231,25 @@ static int eckey_priv_encode(PKCS8_PRIV_KEY_INFO *p8, const EVP_PKEY *pkey)
* do not include the parameters in the SEC1 private key see PKCS#11
* 12.11
*/
old_flags
=
EC_KEY_get_enc_flags
(
ec_key
);
tmp_flags
=
old_flags
|
EC_PKEY_NO_PARAMETERS
;
EC_KEY_set_enc_flags
(
ec_key
,
tmp_flags
);
eplen
=
i2d_ECPrivateKey
(
ec_key
,
NULL
);
old_flags
=
EC_KEY_get_enc_flags
(
&
ec_key
);
EC_KEY_set_enc_flags
(
&
ec_key
,
old_flags
|
EC_PKEY_NO_PARAMETERS
)
;
eplen
=
i2d_ECPrivateKey
(
&
ec_key
,
NULL
);
if
(
!
eplen
)
{
EC_KEY_set_enc_flags
(
ec_key
,
old_flags
);
ECerr
(
EC_F_ECKEY_PRIV_ENCODE
,
ERR_R_EC_LIB
);
return
0
;
}
ep
=
OPENSSL_malloc
(
eplen
);
if
(
ep
==
NULL
)
{
EC_KEY_set_enc_flags
(
ec_key
,
old_flags
);
ECerr
(
EC_F_ECKEY_PRIV_ENCODE
,
ERR_R_MALLOC_FAILURE
);
return
0
;
}
p
=
ep
;
if
(
!
i2d_ECPrivateKey
(
ec_key
,
&
p
))
{
EC_KEY_set_enc_flags
(
ec_key
,
old_flags
);
if
(
!
i2d_ECPrivateKey
(
&
ec_key
,
&
p
))
{
OPENSSL_free
(
ep
);
ECerr
(
EC_F_ECKEY_PRIV_ENCODE
,
ERR_R_EC_LIB
);
return
0
;
}
/* restore old encoding flags */
EC_KEY_set_enc_flags
(
ec_key
,
old_flags
);
if
(
!
PKCS8_pkey_set0
(
p8
,
OBJ_nid2obj
(
NID_X9_62_id_ecPublicKey
),
0
,
ptype
,
pval
,
ep
,
eplen
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录