Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
60b350a3
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
11 个月 前同步成功
通知
8
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
60b350a3
编写于
3月 09, 2016
作者:
R
Rich Salz
提交者:
Rich Salz
3月 09, 2016
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
RT3676: Expose ECgroup i2d functions
Reviewed-by:
N
Dr. Stephen Henson
<
steve@openssl.org
>
上级
c4718849
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
161 addition
and
127 deletion
+161
-127
crypto/ec/ec_asn1.c
crypto/ec/ec_asn1.c
+59
-81
crypto/ec/ec_err.c
crypto/ec/ec_err.c
+7
-4
doc/crypto/EC_GROUP_new.pod
doc/crypto/EC_GROUP_new.pod
+15
-1
include/openssl/ec.h
include/openssl/ec.h
+43
-12
util/libcrypto.num
util/libcrypto.num
+37
-29
未找到文件。
crypto/ec/ec_asn1.c
浏览文件 @
60b350a3
...
...
@@ -250,7 +250,7 @@ ASN1_SEQUENCE(ECPARAMETERS) = {
ASN1_SIMPLE
(
ECPARAMETERS
,
base
,
ASN1_OCTET_STRING
),
ASN1_SIMPLE
(
ECPARAMETERS
,
order
,
ASN1_INTEGER
),
ASN1_OPT
(
ECPARAMETERS
,
cofactor
,
ASN1_INTEGER
)
}
static_
ASN1_SEQUENCE_END
(
ECPARAMETERS
)
}
ASN1_SEQUENCE_END
(
ECPARAMETERS
)
DECLARE_ASN1_ALLOC_FUNCTIONS
(
ECPARAMETERS
)
IMPLEMENT_ASN1_ALLOC_FUNCTIONS
(
ECPARAMETERS
)
...
...
@@ -259,7 +259,7 @@ ASN1_CHOICE(ECPKPARAMETERS) = {
ASN1_SIMPLE
(
ECPKPARAMETERS
,
value
.
named_curve
,
ASN1_OBJECT
),
ASN1_SIMPLE
(
ECPKPARAMETERS
,
value
.
parameters
,
ECPARAMETERS
),
ASN1_SIMPLE
(
ECPKPARAMETERS
,
value
.
implicitlyCA
,
ASN1_NULL
)
}
static_
ASN1_CHOICE_END
(
ECPKPARAMETERS
)
}
ASN1_CHOICE_END
(
ECPKPARAMETERS
)
DECLARE_ASN1_FUNCTIONS_const
(
ECPKPARAMETERS
)
DECLARE_ASN1_ENCODE_FUNCTIONS_const
(
ECPKPARAMETERS
,
ECPKPARAMETERS
)
...
...
@@ -282,28 +282,6 @@ IMPLEMENT_ASN1_FUNCTIONS_const(EC_PRIVATEKEY)
static
int
ec_asn1_group2fieldid
(
const
EC_GROUP
*
,
X9_62_FIELDID
*
);
/* ec_asn1_group2curve() sets the values in a X9_62_CURVE object */
static
int
ec_asn1_group2curve
(
const
EC_GROUP
*
,
X9_62_CURVE
*
);
/*
* ec_asn1_parameters2group() creates a EC_GROUP object from a ECPARAMETERS
* object
*/
static
EC_GROUP
*
ec_asn1_parameters2group
(
const
ECPARAMETERS
*
);
/*
* ec_asn1_group2parameters() creates a ECPARAMETERS object from a EC_GROUP
* object
*/
static
ECPARAMETERS
*
ec_asn1_group2parameters
(
const
EC_GROUP
*
,
ECPARAMETERS
*
);
/*
* ec_asn1_pkparameters2group() creates a EC_GROUP object from a
* ECPKPARAMETERS object
*/
static
EC_GROUP
*
ec_asn1_pkparameters2group
(
const
ECPKPARAMETERS
*
);
/*
* ec_asn1_group2pkparameters() creates a ECPKPARAMETERS object from a
* EC_GROUP object
*/
static
ECPKPARAMETERS
*
ec_asn1_group2pkparameters
(
const
EC_GROUP
*
,
ECPKPARAMETERS
*
);
/* the function definitions */
...
...
@@ -535,8 +513,8 @@ static int ec_asn1_group2curve(const EC_GROUP *group, X9_62_CURVE *curve)
return
(
ok
);
}
static
ECPARAMETERS
*
ec_asn1_group2
parameters
(
const
EC_GROUP
*
group
,
ECPARAMETERS
*
param
)
ECPARAMETERS
*
EC_GROUP_get_ec
parameters
(
const
EC_GROUP
*
group
,
ECPARAMETERS
*
params
)
{
size_t
len
=
0
;
ECPARAMETERS
*
ret
=
NULL
;
...
...
@@ -545,32 +523,32 @@ static ECPARAMETERS *ec_asn1_group2parameters(const EC_GROUP *group,
const
EC_POINT
*
point
=
NULL
;
point_conversion_form_t
form
;
if
(
param
==
NULL
)
{
if
(
param
s
==
NULL
)
{
if
((
ret
=
ECPARAMETERS_new
())
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_MALLOC_FAILURE
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
}
else
ret
=
param
;
ret
=
param
s
;
/* set the version (always one) */
ret
->
version
=
(
long
)
0x1
;
/* set the fieldID */
if
(
!
ec_asn1_group2fieldid
(
group
,
ret
->
fieldID
))
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
/* set the curve */
if
(
!
ec_asn1_group2curve
(
group
,
ret
->
curve
))
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
/* set the base point */
if
((
point
=
EC_GROUP_get0_generator
(
group
))
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
EC_R_UNDEFINED_GENERATOR
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
EC_R_UNDEFINED_GENERATOR
);
goto
err
;
}
...
...
@@ -578,27 +556,27 @@ static ECPARAMETERS *ec_asn1_group2parameters(const EC_GROUP *group,
len
=
EC_POINT_point2buf
(
group
,
point
,
form
,
&
buffer
,
NULL
);
if
(
len
==
0
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
if
(
ret
->
base
==
NULL
&&
(
ret
->
base
=
ASN1_OCTET_STRING_new
())
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_MALLOC_FAILURE
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
if
(
!
ASN1_OCTET_STRING_set
(
ret
->
base
,
buffer
,
len
))
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_ASN1_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_ASN1_LIB
);
goto
err
;
}
/* set the order */
tmp
=
EC_GROUP_get0_order
(
group
);
if
(
tmp
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
ret
->
order
=
BN_to_ASN1_INTEGER
(
tmp
,
ret
->
order
);
if
(
ret
->
order
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_ASN1_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_ASN1_LIB
);
goto
err
;
}
...
...
@@ -607,7 +585,7 @@ static ECPARAMETERS *ec_asn1_group2parameters(const EC_GROUP *group,
if
(
tmp
!=
NULL
)
{
ret
->
cofactor
=
BN_to_ASN1_INTEGER
(
tmp
,
ret
->
cofactor
);
if
(
ret
->
cofactor
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PARAMETERS
,
ERR_R_ASN1_LIB
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PARAMETERS
,
ERR_R_ASN1_LIB
);
goto
err
;
}
}
...
...
@@ -615,21 +593,21 @@ static ECPARAMETERS *ec_asn1_group2parameters(const EC_GROUP *group,
return
ret
;
err:
if
(
!
param
)
if
(
params
==
NULL
)
ECPARAMETERS_free
(
ret
);
OPENSSL_free
(
buffer
);
return
NULL
;
}
ECPKPARAMETERS
*
ec_asn1_group2
pkparameters
(
const
EC_GROUP
*
group
,
ECPKPARAMETERS
*
params
)
ECPKPARAMETERS
*
EC_GROUP_get_ec
pkparameters
(
const
EC_GROUP
*
group
,
ECPKPARAMETERS
*
params
)
{
int
ok
=
1
,
tmp
;
ECPKPARAMETERS
*
ret
=
params
;
if
(
ret
==
NULL
)
{
if
((
ret
=
ECPKPARAMETERS_new
())
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_GROUP2
PKPARAMETERS
,
ERR_R_MALLOC_FAILURE
);
ECerr
(
EC_F_EC_
GROUP_GET_EC
PKPARAMETERS
,
ERR_R_MALLOC_FAILURE
);
return
NULL
;
}
}
else
{
...
...
@@ -655,7 +633,7 @@ ECPKPARAMETERS *ec_asn1_group2pkparameters(const EC_GROUP *group,
/* use the ECPARAMETERS structure */
ret
->
type
=
1
;
if
((
ret
->
value
.
parameters
=
ec_asn1_group2
parameters
(
group
,
NULL
))
==
NULL
)
EC_GROUP_get_ec
parameters
(
group
,
NULL
))
==
NULL
)
ok
=
0
;
}
...
...
@@ -666,7 +644,7 @@ ECPKPARAMETERS *ec_asn1_group2pkparameters(const EC_GROUP *group,
return
ret
;
}
static
EC_GROUP
*
ec_asn1_parameters2group
(
const
ECPARAMETERS
*
params
)
EC_GROUP
*
EC_GROUP_new_from_ecparameters
(
const
ECPARAMETERS
*
params
)
{
int
ok
=
0
,
tmp
;
EC_GROUP
*
ret
=
NULL
;
...
...
@@ -676,7 +654,7 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
if
(
!
params
->
fieldID
||
!
params
->
fieldID
->
fieldType
||
!
params
->
fieldID
->
p
.
ptr
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
...
...
@@ -684,17 +662,17 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
if
(
!
params
->
curve
||
!
params
->
curve
->
a
||
!
params
->
curve
->
a
->
data
||
!
params
->
curve
->
b
||
!
params
->
curve
->
b
->
data
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
a
=
BN_bin2bn
(
params
->
curve
->
a
->
data
,
params
->
curve
->
a
->
length
,
NULL
);
if
(
a
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_BN_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_BN_LIB
);
goto
err
;
}
b
=
BN_bin2bn
(
params
->
curve
->
b
->
data
,
params
->
curve
->
b
->
length
,
NULL
);
if
(
b
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_BN_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_BN_LIB
);
goto
err
;
}
...
...
@@ -703,7 +681,7 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
if
(
tmp
==
NID_X9_62_characteristic_two_field
)
#ifdef OPENSSL_NO_EC2M
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_GF2M_NOT_SUPPORTED
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_GF2M_NOT_SUPPORTED
);
goto
err
;
}
#else
...
...
@@ -714,12 +692,12 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
field_bits
=
char_two
->
m
;
if
(
field_bits
>
OPENSSL_ECC_MAX_FIELD_BITS
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_FIELD_TOO_LARGE
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_FIELD_TOO_LARGE
);
goto
err
;
}
if
((
p
=
BN_new
())
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_MALLOC_FAILURE
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
...
...
@@ -730,14 +708,14 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
long
tmp_long
;
if
(
!
char_two
->
p
.
tpBasis
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
tmp_long
=
ASN1_INTEGER_get
(
char_two
->
p
.
tpBasis
);
if
(
!
(
char_two
->
m
>
tmp_long
&&
tmp_long
>
0
))
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_INVALID_TRINOMIAL_BASIS
);
goto
err
;
}
...
...
@@ -754,14 +732,14 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
penta
=
char_two
->
p
.
ppBasis
;
if
(
!
penta
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
if
(
!
(
char_two
->
m
>
penta
->
k3
&&
penta
->
k3
>
penta
->
k2
&&
penta
->
k2
>
penta
->
k1
&&
penta
->
k1
>
0
))
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_INVALID_PENTANOMIAL_BASIS
);
goto
err
;
}
...
...
@@ -778,11 +756,11 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
if
(
!
BN_set_bit
(
p
,
0
))
goto
err
;
}
else
if
(
tmp
==
NID_X9_62_onBasis
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_NOT_IMPLEMENTED
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_NOT_IMPLEMENTED
);
goto
err
;
}
else
{
/* error */
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
...
...
@@ -794,35 +772,35 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
/* we have a curve over a prime field */
/* extract the prime number */
if
(
!
params
->
fieldID
->
p
.
prime
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
p
=
ASN1_INTEGER_to_BN
(
params
->
fieldID
->
p
.
prime
,
NULL
);
if
(
p
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_ASN1_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_ASN1_LIB
);
goto
err
;
}
if
(
BN_is_negative
(
p
)
||
BN_is_zero
(
p
))
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_INVALID_FIELD
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_INVALID_FIELD
);
goto
err
;
}
field_bits
=
BN_num_bits
(
p
);
if
(
field_bits
>
OPENSSL_ECC_MAX_FIELD_BITS
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_FIELD_TOO_LARGE
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_FIELD_TOO_LARGE
);
goto
err
;
}
/* create the EC_GROUP structure */
ret
=
EC_GROUP_new_curve_GFp
(
p
,
a
,
b
,
NULL
);
}
else
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_INVALID_FIELD
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_INVALID_FIELD
);
goto
err
;
}
if
(
ret
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
...
...
@@ -830,7 +808,7 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
if
(
params
->
curve
->
seed
!=
NULL
)
{
OPENSSL_free
(
ret
->
seed
);
if
((
ret
->
seed
=
OPENSSL_malloc
(
params
->
curve
->
seed
->
length
))
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_MALLOC_FAILURE
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
memcpy
(
ret
->
seed
,
params
->
curve
->
seed
->
data
,
...
...
@@ -839,7 +817,7 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
}
if
(
!
params
->
order
||
!
params
->
base
||
!
params
->
base
->
data
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_ASN1_ERROR
);
goto
err
;
}
...
...
@@ -853,21 +831,21 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
/* extract the ec point */
if
(
!
EC_POINT_oct2point
(
ret
,
point
,
params
->
base
->
data
,
params
->
base
->
length
,
NULL
))
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
/* extract the order */
if
((
a
=
ASN1_INTEGER_to_BN
(
params
->
order
,
a
))
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_ASN1_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_ASN1_LIB
);
goto
err
;
}
if
(
BN_is_negative
(
a
)
||
BN_is_zero
(
a
))
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_INVALID_GROUP_ORDER
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_INVALID_GROUP_ORDER
);
goto
err
;
}
if
(
BN_num_bits
(
a
)
>
(
int
)
field_bits
+
1
)
{
/* Hasse bound */
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
EC_R_INVALID_GROUP_ORDER
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
EC_R_INVALID_GROUP_ORDER
);
goto
err
;
}
...
...
@@ -876,12 +854,12 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
BN_free
(
b
);
b
=
NULL
;
}
else
if
((
b
=
ASN1_INTEGER_to_BN
(
params
->
cofactor
,
b
))
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_ASN1_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_ASN1_LIB
);
goto
err
;
}
/* set the generator, order and cofactor (if present) */
if
(
!
EC_GROUP_set_generator
(
ret
,
point
,
a
,
b
))
{
ECerr
(
EC_F_EC_
ASN1_PARAMETERS2GROUP
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPARAMETERS
,
ERR_R_EC_LIB
);
goto
err
;
}
...
...
@@ -900,36 +878,36 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
return
(
ret
);
}
EC_GROUP
*
ec_asn1_pkparameters2group
(
const
ECPKPARAMETERS
*
params
)
EC_GROUP
*
EC_GROUP_new_from_ecpkparameters
(
const
ECPKPARAMETERS
*
params
)
{
EC_GROUP
*
ret
=
NULL
;
int
tmp
=
0
;
if
(
params
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PKPARAMETERS2GROUP
,
EC_R_MISSING_PARAMETERS
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPKPARAMETERS
,
EC_R_MISSING_PARAMETERS
);
return
NULL
;
}
if
(
params
->
type
==
0
)
{
/* the curve is given by an OID */
tmp
=
OBJ_obj2nid
(
params
->
value
.
named_curve
);
if
((
ret
=
EC_GROUP_new_by_curve_name
(
tmp
))
==
NULL
)
{
ECerr
(
EC_F_EC_
ASN1_PKPARAMETERS2GROUP
,
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPKPARAMETERS
,
EC_R_EC_GROUP_NEW_BY_NAME_FAILURE
);
return
NULL
;
}
EC_GROUP_set_asn1_flag
(
ret
,
OPENSSL_EC_NAMED_CURVE
);
}
else
if
(
params
->
type
==
1
)
{
/* the parameters are given by a
* ECPARAMETERS structure */
ret
=
ec_asn1_parameters2group
(
params
->
value
.
parameters
);
ret
=
EC_GROUP_new_from_ecparameters
(
params
->
value
.
parameters
);
if
(
!
ret
)
{
ECerr
(
EC_F_EC_
ASN1_PKPARAMETERS2GROUP
,
ERR_R_EC_LIB
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPKPARAMETERS
,
ERR_R_EC_LIB
);
return
NULL
;
}
EC_GROUP_set_asn1_flag
(
ret
,
0x0
);
}
else
if
(
params
->
type
==
2
)
{
/* implicitlyCA */
return
NULL
;
}
else
{
ECerr
(
EC_F_EC_
ASN1_PKPARAMETERS2GROUP
,
EC_R_ASN1_ERROR
);
ECerr
(
EC_F_EC_
GROUP_NEW_FROM_ECPKPARAMETERS
,
EC_R_ASN1_ERROR
);
return
NULL
;
}
...
...
@@ -950,7 +928,7 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **a, const unsigned char **in, long len)
return
NULL
;
}
if
((
group
=
ec_asn1_pkparameters2group
(
params
))
==
NULL
)
{
if
((
group
=
EC_GROUP_new_from_ecpkparameters
(
params
))
==
NULL
)
{
ECerr
(
EC_F_D2I_ECPKPARAMETERS
,
EC_R_PKPARAMETERS2GROUP_FAILURE
);
ECPKPARAMETERS_free
(
params
);
return
NULL
;
...
...
@@ -969,7 +947,7 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **a, const unsigned char **in, long len)
int
i2d_ECPKParameters
(
const
EC_GROUP
*
a
,
unsigned
char
**
out
)
{
int
ret
=
0
;
ECPKPARAMETERS
*
tmp
=
ec_asn1_group2
pkparameters
(
a
,
NULL
);
ECPKPARAMETERS
*
tmp
=
EC_GROUP_get_ec
pkparameters
(
a
,
NULL
);
if
(
tmp
==
NULL
)
{
ECerr
(
EC_F_I2D_ECPKPARAMETERS
,
EC_R_GROUP2PKPARAMETERS_FAILURE
);
return
0
;
...
...
@@ -1006,7 +984,7 @@ EC_KEY *d2i_ECPrivateKey(EC_KEY **a, const unsigned char **in, long len)
if
(
priv_key
->
parameters
)
{
EC_GROUP_clear_free
(
ret
->
group
);
ret
->
group
=
ec_asn1_pkparameters2group
(
priv_key
->
parameters
);
ret
->
group
=
EC_GROUP_new_from_ecpkparameters
(
priv_key
->
parameters
);
}
if
(
ret
->
group
==
NULL
)
{
...
...
@@ -1097,7 +1075,7 @@ int i2d_ECPrivateKey(EC_KEY *a, unsigned char **out)
if
(
!
(
a
->
enc_flag
&
EC_PKEY_NO_PARAMETERS
))
{
if
((
priv_key
->
parameters
=
ec_asn1_group2
pkparameters
(
a
->
group
,
EC_GROUP_get_ec
pkparameters
(
a
->
group
,
priv_key
->
parameters
))
==
NULL
)
{
ECerr
(
EC_F_I2D_ECPRIVATEKEY
,
ERR_R_EC_LIB
);
goto
err
;
...
...
crypto/ec/ec_err.c
浏览文件 @
60b350a3
...
...
@@ -107,10 +107,6 @@ static ERR_STRING_DATA EC_str_functs[] = {
{
ERR_FUNC
(
EC_F_ECP_NIST_MOD_521
),
"ECP_NIST_MOD_521"
},
{
ERR_FUNC
(
EC_F_EC_ASN1_GROUP2CURVE
),
"ec_asn1_group2curve"
},
{
ERR_FUNC
(
EC_F_EC_ASN1_GROUP2FIELDID
),
"ec_asn1_group2fieldid"
},
{
ERR_FUNC
(
EC_F_EC_ASN1_GROUP2PARAMETERS
),
"ec_asn1_group2parameters"
},
{
ERR_FUNC
(
EC_F_EC_ASN1_GROUP2PKPARAMETERS
),
"ec_asn1_group2pkparameters"
},
{
ERR_FUNC
(
EC_F_EC_ASN1_PARAMETERS2GROUP
),
"ec_asn1_parameters2group"
},
{
ERR_FUNC
(
EC_F_EC_ASN1_PKPARAMETERS2GROUP
),
"ec_asn1_pkparameters2group"
},
{
ERR_FUNC
(
EC_F_EC_EX_DATA_SET_DATA
),
"EC_EX_DATA_set_data"
},
{
ERR_FUNC
(
EC_F_EC_GF2M_MONTGOMERY_POINT_MULTIPLY
),
"ec_GF2m_montgomery_point_multiply"
},
...
...
@@ -189,6 +185,9 @@ static ERR_STRING_DATA EC_str_functs[] = {
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_CURVE_GF2M
),
"EC_GROUP_get_curve_GF2m"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_CURVE_GFP
),
"EC_GROUP_get_curve_GFp"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_DEGREE
),
"EC_GROUP_get_degree"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_ECPARAMETERS
),
"EC_GROUP_get_ecparameters"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_ECPKPARAMETERS
),
"EC_GROUP_get_ecpkparameters"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_ORDER
),
"EC_GROUP_get_order"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS
),
"EC_GROUP_get_pentanomial_basis"
},
...
...
@@ -197,6 +196,10 @@ static ERR_STRING_DATA EC_str_functs[] = {
{
ERR_FUNC
(
EC_F_EC_GROUP_NEW
),
"EC_GROUP_new"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_NEW_BY_CURVE_NAME
),
"EC_GROUP_new_by_curve_name"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_NEW_FROM_DATA
),
"ec_group_new_from_data"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS
),
"EC_GROUP_new_from_ecparameters"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS
),
"EC_GROUP_new_from_ecpkparameters"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_PRECOMPUTE_MULT
),
"EC_GROUP_precompute_mult"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_SET_CURVE_GF2M
),
"EC_GROUP_set_curve_GF2m"
},
{
ERR_FUNC
(
EC_F_EC_GROUP_SET_CURVE_GFP
),
"EC_GROUP_set_curve_GFp"
},
...
...
doc/crypto/EC_GROUP_new.pod
浏览文件 @
60b350a3
...
...
@@ -2,7 +2,13 @@
=head1 NAME
EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp, EC_GROUP_new_curve_GF2m, EC_GROUP_new_by_curve_name, EC_GROUP_set_curve_GFp, EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m, EC_get_builtin_curves - Functions for creating and destroying B<EC_GROUP> objects.
EC_GROUP_new, EC_GROUP_new_from_ecparameters,
EC_GROUP_new_from_ecpkparameters,
EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp,
EC_GROUP_new_curve_GF2m, EC_GROUP_new_by_curve_name, EC_GROUP_set_curve_GFp,
EC_GROUP_get_curve_GFp, EC_GROUP_set_curve_GF2m, EC_GROUP_get_curve_GF2m,
EC_get_builtin_curves - Functions for creating and destroying B<EC_GROUP>
objects.
=head1 SYNOPSIS
...
...
@@ -10,6 +16,8 @@ EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp, EC_GRO
#include <openssl/bn.h>
EC_GROUP *EC_GROUP_new(const EC_METHOD *meth);
EC_GROUP *EC_GROUP_new_from_ecparameters(const ECPARAMETERS *params)
EC_GROUP *EC_GROUP_new_from_ecpkparameters(const ECPKPARAMETERS *params)
void EC_GROUP_free(EC_GROUP *group);
void EC_GROUP_clear_free(EC_GROUP *group);
...
...
@@ -22,6 +30,9 @@ EC_GROUP_new, EC_GROUP_free, EC_GROUP_clear_free, EC_GROUP_new_curve_GFp, EC_GRO
int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *b, BN_CTX *ctx);
ECPARAMETERS *EC_GROUP_get_ecparameters(const EC_GROUP *group, ECPARAMETERS *params)
ECPKPARAMETERS *EC_GROUP_get_ecpkparameters(const EC_GROUP *group, ECPKPARAMETERS *params)
size_t EC_get_builtin_curves(EC_builtin_curve *r, size_t nitems);
=head1 DESCRIPTION
...
...
@@ -43,6 +54,9 @@ use a trinomial or a pentanomial for this parameter.
A new curve can be constructed by calling EC_GROUP_new, using the implementation provided by B<meth> (see
L<EC_GFp_simple_method(3)>). It is then necessary to call either EC_GROUP_set_curve_GFp or
EC_GROUP_set_curve_GF2m as appropriate to create a curve defined over Fp or over F2^m respectively.
EC_GROUP_new_from_ecparameters() will create a group from the
specified B<params> and
EC_GROUP_new_from_ecpkparameters() will create a group from the specific PK B<params>.
EC_GROUP_set_curve_GFp sets the curve parameters B<p>, B<a> and B<b> for a curve over Fp stored in B<group>.
EC_group_get_curve_GFp obtains the previously set curve parameters.
...
...
include/openssl/ec.h
浏览文件 @
60b350a3
...
...
@@ -115,19 +115,10 @@ typedef enum {
}
point_conversion_form_t
;
typedef
struct
ec_method_st
EC_METHOD
;
typedef
struct
ec_group_st
/*-
EC_METHOD *meth;
-- field definition
-- curve coefficients
-- optional generator with associated information (order, cofactor)
-- optional extra data (precomputed table for fast computation of multiples of generator)
-- ASN1 stuff
*/
EC_GROUP
;
typedef
struct
ec_group_st
EC_GROUP
;
typedef
struct
ec_point_st
EC_POINT
;
typedef
struct
ecpk_parameters_st
ECPKPARAMETERS
;
typedef
struct
ec_parameters_st
ECPARAMETERS
;
/********************************************************************/
/* EC_METHODs for curves over GF(p) */
...
...
@@ -410,6 +401,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a,
EC_GROUP
*
EC_GROUP_new_curve_GF2m
(
const
BIGNUM
*
p
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
,
BN_CTX
*
ctx
);
# endif
/** Creates a EC_GROUP object with a curve specified by a NID
* \param nid NID of the OID of the curve name
* \return newly created EC_GROUP object with specified curve or NULL
...
...
@@ -417,6 +409,38 @@ EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a,
*/
EC_GROUP
*
EC_GROUP_new_by_curve_name
(
int
nid
);
/** Creates a new EC_GROUP object from an ECPARAMETERS object
* \param params pointer to the ECPARAMETERS object
* \return newly created EC_GROUP object with specified curve or NULL
* if an error occurred
*/
EC_GROUP
*
EC_GROUP_new_from_ecparameters
(
const
ECPARAMETERS
*
params
);
/** Creates an ECPARAMETERS object for the the given EC_GROUP object.
* \param group pointer to the EC_GROUP object
* \param params pointer to an existing ECPARAMETERS object or NULL
* \return pointer to the new ECPARAMETERS object or NULL
* if an error occurred.
*/
ECPARAMETERS
*
EC_GROUP_get_ecparameters
(
const
EC_GROUP
*
group
,
ECPARAMETERS
*
params
);
/** Creates a new EC_GROUP object from an ECPKPARAMETERS object
* \param params pointer to an existing ECPKPARAMETERS object, or NULL
* \return newly created EC_GROUP object with specified curve, or NULL
* if an error occurred
*/
EC_GROUP
*
EC_GROUP_new_from_ecpkparameters
(
const
ECPKPARAMETERS
*
params
);
/** Creates an ECPKPARAMETERS object for the the given EC_GROUP object.
* \param group pointer to the EC_GROUP object
* \param params pointer to an existing ECPKPARAMETERS object or NULL
* \return pointer to the new ECPKPARAMETERS object or NULL
* if an error occurred.
*/
ECPKPARAMETERS
*
EC_GROUP_get_ecpkparameters
(
const
EC_GROUP
*
group
,
ECPKPARAMETERS
*
params
);
/********************************************************************/
/* handling of internal curves */
/********************************************************************/
...
...
@@ -740,6 +764,9 @@ int EC_GROUP_have_precompute_mult(const EC_GROUP *group);
/* ASN1 stuff */
/********************************************************************/
DECLARE_ASN1_ITEM
(
ECPKPARAMETERS
)
DECLARE_ASN1_ITEM
(
ECPARAMETERS
)
/*
* EC_GROUP_get_basis_type() returns the NID of the basis type used to
* represent the field elements
...
...
@@ -1489,12 +1516,16 @@ void ERR_load_EC_strings(void);
# define EC_F_EC_GROUP_GET_CURVE_GF2M 172
# define EC_F_EC_GROUP_GET_CURVE_GFP 130
# define EC_F_EC_GROUP_GET_DEGREE 173
# define EC_F_EC_GROUP_GET_ECPARAMETERS 261
# define EC_F_EC_GROUP_GET_ECPKPARAMETERS 262
# define EC_F_EC_GROUP_GET_ORDER 141
# define EC_F_EC_GROUP_GET_PENTANOMIAL_BASIS 193
# define EC_F_EC_GROUP_GET_TRINOMIAL_BASIS 194
# define EC_F_EC_GROUP_NEW 108
# define EC_F_EC_GROUP_NEW_BY_CURVE_NAME 174
# define EC_F_EC_GROUP_NEW_FROM_DATA 175
# define EC_F_EC_GROUP_NEW_FROM_ECPARAMETERS 263
# define EC_F_EC_GROUP_NEW_FROM_ECPKPARAMETERS 264
# define EC_F_EC_GROUP_PRECOMPUTE_MULT 142
# define EC_F_EC_GROUP_SET_CURVE_GF2M 176
# define EC_F_EC_GROUP_SET_CURVE_GFP 109
...
...
util/libcrypto.num
浏览文件 @
60b350a3
...
...
@@ -45,7 +45,7 @@ PKCS7_ISSUER_AND_SERIAL_it 43 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:V
PKCS7_ISSUER_AND_SERIAL_it 43 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
EC_GROUP_method_of 44 1_1_0 EXIST::FUNCTION:EC
RSA_blinding_on 45 1_1_0 EXIST::FUNCTION:RSA
CRYPTO_set_dynlock_lock_callback 46 1_1_0 EXIST::FUNCTION:
CRYPTO_set_dynlock_lock_callback 46 1_1_0
NO
EXIST::FUNCTION:
X509_get0_signature 47 1_1_0 EXIST::FUNCTION:
X509_REVOKED_get0_extensions 48 1_1_0 EXIST::FUNCTION:
NETSCAPE_SPKI_verify 49 1_1_0 EXIST::FUNCTION:
...
...
@@ -168,7 +168,7 @@ CT_POLICY_EVAL_CTX_free 165 1_1_0 EXIST::FUNCTION:
CMS_RecipientInfo_kari_get0_ctx 166 1_1_0 EXIST::FUNCTION:CMS
PKCS7_set_attributes 167 1_1_0 EXIST::FUNCTION:
d2i_POLICYQUALINFO 168 1_1_0 EXIST::FUNCTION:
CRYPTO_add_lock 169 1_1_0 EXIST::FUNCTION:
CRYPTO_add_lock 169 1_1_0
NO
EXIST::FUNCTION:
EVP_MD_type 170 1_1_0 EXIST::FUNCTION:
EVP_PKCS82PKEY 171 1_1_0 EXIST::FUNCTION:
BN_generate_prime_ex 172 1_1_0 EXIST::FUNCTION:
...
...
@@ -391,7 +391,7 @@ X509_VERIFY_PARAM_get0_peername 382 1_1_0 EXIST::FUNCTION:
ASN1_PCTX_get_oid_flags 383 1_1_0 EXIST::FUNCTION:
CONF_free 384 1_1_0 EXIST::FUNCTION:
DSO_get_filename 385 1_1_0 EXIST::FUNCTION:
CRYPTO_set_id_callback 386 1_1_0
EXIST::FUNCTION:DEPRECATEDIN_1_0_0
CRYPTO_set_id_callback 386 1_1_0
NOEXIST::FUNCTION:
i2d_ASN1_SEQUENCE_ANY 387 1_1_0 EXIST::FUNCTION:
OPENSSL_strlcpy 388 1_1_0 EXIST::FUNCTION:
BIO_get_port 389 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_1_1_0
...
...
@@ -456,7 +456,7 @@ X509_get_default_private_dir 447 1_1_0 EXIST::FUNCTION:
X509_STORE_CTX_set0_dane 448 1_1_0 EXIST::FUNCTION:
EVP_des_ecb 449 1_1_0 EXIST::FUNCTION:DES
OCSP_resp_get0 450 1_1_0 EXIST::FUNCTION:
CRYPTO_get_new_lockid 451 1_1_0 EXIST::FUNCTION:
CRYPTO_get_new_lockid 451 1_1_0
NO
EXIST::FUNCTION:
RSA_X931_generate_key_ex 452 1_1_0 EXIST::FUNCTION:RSA
X509_get_serialNumber 453 1_1_0 EXIST::FUNCTION:
BIO_sock_should_retry 454 1_1_0 EXIST::FUNCTION:
...
...
@@ -477,7 +477,7 @@ DSO_set_filename 468 1_1_0 EXIST::FUNCTION:
DH_new 469 1_1_0 EXIST::FUNCTION:DH
OCSP_RESPID_free 470 1_1_0 EXIST::FUNCTION:
PKCS5_pbe2_set 471 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_get_callback 472 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_get_callback 472 1_1_0
NO
EXIST::FUNCTION:
SCT_set_signature_nid 473 1_1_0 EXIST::FUNCTION:
i2d_RSA_PUBKEY_fp 474 1_1_0 EXIST::FUNCTION:RSA,STDIO
PKCS12_BAGS_it 475 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
...
...
@@ -518,7 +518,7 @@ X509_TRUST_get_trust 506 1_1_0 EXIST::FUNCTION:
DES_string_to_key 507 1_1_0 EXIST::FUNCTION:DES
ERR_error_string 508 1_1_0 EXIST::FUNCTION:
BIO_new_connect 509 1_1_0 EXIST::FUNCTION:
CRYPTO_get_lock_name 510 1_1_0 EXIST::FUNCTION:
CRYPTO_get_lock_name 510 1_1_0
NO
EXIST::FUNCTION:
DSA_new_method 511 1_1_0 EXIST::FUNCTION:DSA
OCSP_CERTID_new 512 1_1_0 EXIST::FUNCTION:
X509_CRL_get_signature_nid 513 1_1_0 EXIST::FUNCTION:
...
...
@@ -528,7 +528,7 @@ X509V3_add1_i2d 516 1_1_0 EXIST::FUNCTION:
TS_TST_INFO_set_serial 517 1_1_0 EXIST::FUNCTION:
OCSP_RESPBYTES_new 518 1_1_0 EXIST::FUNCTION:
OCSP_SINGLERESP_delete_ext 519 1_1_0 EXIST::FUNCTION:
CRYPTO_get_dynlock_lock_callback 520 1_1_0 EXIST::FUNCTION:
CRYPTO_get_dynlock_lock_callback 520 1_1_0
NO
EXIST::FUNCTION:
EVP_MD_CTX_test_flags 521 1_1_0 EXIST::FUNCTION:
v3_addr_validate_path 522 1_1_0 EXIST::FUNCTION:RFC3779
BIO_new_fp 523 1_1_0 EXIST::FUNCTION:STDIO
...
...
@@ -587,7 +587,7 @@ d2i_X509 574 1_1_0 EXIST::FUNCTION:
a2i_ASN1_STRING 575 1_1_0 EXIST::FUNCTION:
EC_GROUP_get_mont_data 576 1_1_0 EXIST::FUNCTION:EC
CMAC_CTX_copy 577 1_1_0 EXIST::FUNCTION:
CRYPTO_set_add_lock_callback 578 1_1_0 EXIST::FUNCTION:
CRYPTO_set_add_lock_callback 578 1_1_0
NO
EXIST::FUNCTION:
EVP_camellia_128_cfb128 579 1_1_0 EXIST::FUNCTION:CAMELLIA
DH_compute_key_padded 580 1_1_0 EXIST::FUNCTION:DH
ERR_load_CONF_strings 581 1_1_0 EXIST::FUNCTION:
...
...
@@ -644,7 +644,7 @@ PKCS12_set_mac 628 1_1_0 EXIST::FUNCTION:
UI_get0_result_string 629 1_1_0 EXIST::FUNCTION:
TS_RESP_CTX_add_policy 630 1_1_0 EXIST::FUNCTION:
X509_REQ_dup 631 1_1_0 EXIST::FUNCTION:
CRYPTO_get_add_lock_callback 632 1_1_0 EXIST::FUNCTION:
CRYPTO_get_add_lock_callback 632 1_1_0
NO
EXIST::FUNCTION:
d2i_DSA_PUBKEY_fp 633 1_1_0 EXIST::FUNCTION:DSA,STDIO
OCSP_REQ_CTX_nbio_d2i 634 1_1_0 EXIST::FUNCTION:
d2i_X509_REQ_fp 635 1_1_0 EXIST::FUNCTION:STDIO
...
...
@@ -664,7 +664,7 @@ CRYPTO_ccm128_encrypt_ccm64 647 1_1_0 EXIST::FUNCTION:
CRYPTO_secure_malloc_init 648 1_1_0 EXIST::FUNCTION:
DSAparams_dup 649 1_1_0 EXIST::FUNCTION:DSA
PKCS8_PRIV_KEY_INFO_new 650 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_hash 651 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_hash 651 1_1_0
NO
EXIST::FUNCTION:
TS_RESP_verify_token 652 1_1_0 EXIST::FUNCTION:
PEM_read_bio_CMS 653 1_1_0 EXIST::FUNCTION:CMS
PEM_get_EVP_CIPHER_INFO 654 1_1_0 EXIST::FUNCTION:
...
...
@@ -729,7 +729,7 @@ i2s_ASN1_OCTET_STRING 709 1_1_0 EXIST::FUNCTION:
X509_add1_reject_object 710 1_1_0 EXIST::FUNCTION:
ERR_set_mark 711 1_1_0 EXIST::FUNCTION:
d2i_ASN1_VISIBLESTRING 712 1_1_0 EXIST::FUNCTION:
CRYPTO_set_dynlock_create_callback 713 1_1_0 EXIST::FUNCTION:
CRYPTO_set_dynlock_create_callback 713 1_1_0
NO
EXIST::FUNCTION:
X509_NAME_ENTRY_dup 714 1_1_0 EXIST::FUNCTION:
X509_certificate_type 715 1_1_0 EXIST::FUNCTION:
PKCS7_add_signature 716 1_1_0 EXIST::FUNCTION:
...
...
@@ -903,7 +903,7 @@ X509_REQ_INFO_free 878 1_1_0 EXIST::FUNCTION:
CMS_ReceiptRequest_create0 879 1_1_0 EXIST::FUNCTION:CMS
EVP_MD_meth_set_cleanup 880 1_1_0 EXIST::FUNCTION:
EVP_aes_128_xts 881 1_1_0 EXIST::FUNCTION:AES
CRYPTO_set_dynlock_destroy_callback 882 1_1_0 EXIST::FUNCTION:
CRYPTO_set_dynlock_destroy_callback 882 1_1_0
NO
EXIST::FUNCTION:
TS_RESP_verify_signature 883 1_1_0 EXIST::FUNCTION:
ENGINE_set_pkey_meths 884 1_1_0 EXIST::FUNCTION:ENGINE
CMS_EncryptedData_decrypt 885 1_1_0 EXIST::FUNCTION:CMS
...
...
@@ -945,7 +945,7 @@ CT_POLICY_EVAL_CTX_get0_log_store 919 1_1_0 EXIST::FUNCTION:
CONF_set_default_method 920 1_1_0 EXIST::FUNCTION:
ASN1_PCTX_get_nm_flags 921 1_1_0 EXIST::FUNCTION:
X509_add1_ext_i2d 922 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_set_pointer 923 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_set_pointer 923 1_1_0
NO
EXIST::FUNCTION:
i2d_PKCS7_RECIP_INFO 924 1_1_0 EXIST::FUNCTION:
PKCS1_MGF1 925 1_1_0 EXIST::FUNCTION:RSA
BIO_vsnprintf 926 1_1_0 EXIST::FUNCTION:
...
...
@@ -1003,7 +1003,7 @@ ENGINE_get_name 973 1_1_0 EXIST::FUNCTION:ENGINE
CRYPTO_THREAD_read_lock 974 1_1_0 EXIST::FUNCTION:
ASIdentifierChoice_free 975 1_1_0 EXIST::FUNCTION:RFC3779
BIO_dgram_sctp_msg_waiting 976 1_1_0 EXIST::FUNCTION:SCTP
CRYPTO_get_dynlock_value 977 1_1_0 EXIST::FUNCTION:
CRYPTO_get_dynlock_value 977 1_1_0
NO
EXIST::FUNCTION:
BN_is_bit_set 978 1_1_0 EXIST::FUNCTION:
AES_ofb128_encrypt 979 1_1_0 EXIST::FUNCTION:AES
X509_STORE_add_lookup 980 1_1_0 EXIST::FUNCTION:
...
...
@@ -1644,7 +1644,7 @@ ASN1_TBOOLEAN_it 1594 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:
RC2_set_key 1595 1_1_0 EXIST::FUNCTION:RC2
X509_REVOKED_get_ext_by_NID 1596 1_1_0 EXIST::FUNCTION:
RSA_padding_add_none 1597 1_1_0 EXIST::FUNCTION:RSA
CRYPTO_THREADID_cmp 1598 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_cmp 1598 1_1_0
NO
EXIST::FUNCTION:
EVP_rc5_32_12_16_cbc 1599 1_1_0 EXIST::FUNCTION:RC5
PEM_dek_info 1600 1_1_0 EXIST::FUNCTION:
ASN1_SCTX_get_template 1601 1_1_0 EXIST::FUNCTION:
...
...
@@ -1699,7 +1699,7 @@ BN_lshift1 1648 1_1_0 EXIST::FUNCTION:
i2d_EDIPARTYNAME 1649 1_1_0 EXIST::FUNCTION:
X509_policy_tree_get0_policies 1650 1_1_0 EXIST::FUNCTION:
X509at_add1_attr 1651 1_1_0 EXIST::FUNCTION:
CRYPTO_num_locks 1652 1_1_0 EXIST::FUNCTION:
CRYPTO_num_locks 1652 1_1_0
NO
EXIST::FUNCTION:
X509_get_ex_data 1653 1_1_0 EXIST::FUNCTION:
RSA_set_method 1654 1_1_0 EXIST::FUNCTION:RSA
X509_REVOKED_dup 1655 1_1_0 EXIST::FUNCTION:
...
...
@@ -1713,7 +1713,7 @@ BIO_asn1_get_suffix 1662 1_1_0 EXIST::FUNCTION:
X509_VERIFY_PARAM_clear_flags 1663 1_1_0 EXIST::FUNCTION:
X509_NAME_add_entry_by_txt 1664 1_1_0 EXIST::FUNCTION:
DES_ede3_cfb_encrypt 1665 1_1_0 EXIST::FUNCTION:DES
CRYPTO_destroy_dynlockid 1666 1_1_0 EXIST::FUNCTION:
CRYPTO_destroy_dynlockid 1666 1_1_0
NO
EXIST::FUNCTION:
i2d_CMS_bio_stream 1667 1_1_0 EXIST::FUNCTION:CMS
DES_quad_cksum 1668 1_1_0 EXIST::FUNCTION:DES
X509_ATTRIBUTE_create_by_NID 1669 1_1_0 EXIST::FUNCTION:
...
...
@@ -1825,7 +1825,7 @@ ASN1_OCTET_STRING_free 1770 1_1_0 EXIST::FUNCTION:
PKCS7_RECIP_INFO_free 1771 1_1_0 EXIST::FUNCTION:
ASN1_tag2bit 1772 1_1_0 EXIST::FUNCTION:
TS_REQ_add_ext 1773 1_1_0 EXIST::FUNCTION:
CRYPTO_get_new_dynlockid 1774 1_1_0 EXIST::FUNCTION:
CRYPTO_get_new_dynlockid 1774 1_1_0
NO
EXIST::FUNCTION:
RAND_cleanup 1775 1_1_0 EXIST::FUNCTION:
X509_digest 1776 1_1_0 EXIST::FUNCTION:
CRYPTO_THREAD_cleanup_local 1777 1_1_0 EXIST::FUNCTION:
...
...
@@ -2404,7 +2404,7 @@ PEM_read_PKCS7 2324 1_1_0 EXIST::FUNCTION:
DH_get_2048_256 2325 1_1_0 EXIST::FUNCTION:DH
X509at_delete_attr 2326 1_1_0 EXIST::FUNCTION:
PEM_write_bio 2327 1_1_0 EXIST::FUNCTION:
CRYPTO_get_locking_callback 2328 1_1_0 EXIST::FUNCTION:
CRYPTO_get_locking_callback 2328 1_1_0
NO
EXIST::FUNCTION:
CMS_signed_get_attr_by_OBJ 2329 1_1_0 EXIST::FUNCTION:CMS
X509_REVOKED_add_ext 2330 1_1_0 EXIST::FUNCTION:
EVP_CipherUpdate 2331 1_1_0 EXIST::FUNCTION:
...
...
@@ -2476,7 +2476,7 @@ TS_TST_INFO_set_time 2394 1_1_0 EXIST::FUNCTION:
OPENSSL_die 2395 1_1_0 EXIST::FUNCTION:
X509_LOOKUP_by_alias 2396 1_1_0 EXIST::FUNCTION:
EC_KEY_set_conv_form 2397 1_1_0 EXIST::FUNCTION:EC
CRYPTO_lock 2398 1_1_0 EXIST::FUNCTION:
CRYPTO_lock 2398 1_1_0
NO
EXIST::FUNCTION:
X509_TRUST_get_count 2399 1_1_0 EXIST::FUNCTION:
IPAddressOrRange_free 2400 1_1_0 EXIST::FUNCTION:RFC3779
RSA_padding_add_PKCS1_OAEP 2401 1_1_0 EXIST::FUNCTION:RSA
...
...
@@ -2613,7 +2613,7 @@ get_rfc3526_prime_1536 2526 1_1_0 EXIST::FUNCTION:
DSA_sign 2527 1_1_0 EXIST::FUNCTION:DSA
RAND_egd 2528 1_1_0 EXIST::FUNCTION:EGD
ASN1_d2i_bio 2529 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_current 2530 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_current 2530 1_1_0
NO
EXIST::FUNCTION:
X509_REQ_digest 2531 1_1_0 EXIST::FUNCTION:
X509_set_notAfter 2532 1_1_0 EXIST::FUNCTION:
EVP_CIPHER_type 2533 1_1_0 EXIST::FUNCTION:
...
...
@@ -2755,7 +2755,7 @@ EVP_PKEY_assign 2662 1_1_0 EXIST::FUNCTION:
EVP_aes_128_ofb 2663 1_1_0 EXIST::FUNCTION:AES
CMS_data 2664 1_1_0 EXIST::FUNCTION:CMS
X509_load_cert_file 2665 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_cpy 2666 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_cpy 2666 1_1_0
NO
EXIST::FUNCTION:
EC_GFp_nistp521_method 2667 1_1_0 EXIST:!WIN32:FUNCTION:EC,EC_NISTP_64_GCC_128
ECDSA_SIG_free 2668 1_1_0 EXIST::FUNCTION:EC
d2i_PKCS12_BAGS 2669 1_1_0 EXIST::FUNCTION:
...
...
@@ -2926,7 +2926,7 @@ SCT_free 2824 1_1_0 EXIST::FUNCTION:
TS_TST_INFO_get_msg_imprint 2825 1_1_0 EXIST::FUNCTION:
v3_addr_add_range 2826 1_1_0 EXIST::FUNCTION:RFC3779
PKCS12_get_friendlyname 2827 1_1_0 EXIST::FUNCTION:
CRYPTO_get_id_callback 2828 1_1_0
EXIST::FUNCTION:DEPRECATEDIN_1_0_0
CRYPTO_get_id_callback 2828 1_1_0
NOEXIST::FUNCTION:
X509_CRL_add_ext 2829 1_1_0 EXIST::FUNCTION:
X509_REQ_get_signature_nid 2830 1_1_0 EXIST::FUNCTION:
TS_TST_INFO_get_ext 2831 1_1_0 EXIST::FUNCTION:
...
...
@@ -3125,7 +3125,7 @@ BIO_dgram_non_fatal_error 3016 1_1_0 EXIST::FUNCTION:
OCSP_request_is_signed 3017 1_1_0 EXIST::FUNCTION:
i2d_BASIC_CONSTRAINTS 3018 1_1_0 EXIST::FUNCTION:
EC_KEY_get_method 3019 1_1_0 EXIST::FUNCTION:EC
CRYPTO_get_dynlock_destroy_callback 3020 1_1_0 EXIST::FUNCTION:
CRYPTO_get_dynlock_destroy_callback 3020 1_1_0
NO
EXIST::FUNCTION:
EC_POINT_bn2point 3021 1_1_0 EXIST::FUNCTION:EC
PBE2PARAM_it 3022 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
PBE2PARAM_it 3022 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
...
...
@@ -3286,7 +3286,7 @@ HMAC_Init 3173 1_1_0 EXIST::FUNCTION:DEPRECATEDIN_
EVP_MD_CTX_update_fn 3174 1_1_0 EXIST::FUNCTION:
EVP_aes_128_ecb 3175 1_1_0 EXIST::FUNCTION:AES
i2d_PKCS7_bio_stream 3176 1_1_0 EXIST::FUNCTION:
CRYPTO_get_dynlock_create_callback 3177 1_1_0 EXIST::FUNCTION:
CRYPTO_get_dynlock_create_callback 3177 1_1_0
NO
EXIST::FUNCTION:
i2a_ACCESS_DESCRIPTION 3178 1_1_0 EXIST::FUNCTION:
EC_KEY_set_enc_flags 3179 1_1_0 EXIST::FUNCTION:EC
i2d_PUBKEY_fp 3180 1_1_0 EXIST::FUNCTION:STDIO
...
...
@@ -3384,7 +3384,7 @@ PKCS7_set0_type_other 3270 1_1_0 EXIST::FUNCTION:
OCSP_REQUEST_new 3271 1_1_0 EXIST::FUNCTION:
BIO_lookup 3272 1_1_0 EXIST::FUNCTION:
EC_GROUP_get0_cofactor 3273 1_1_0 EXIST::FUNCTION:EC
CRYPTO_THREADID_set_numeric 3274 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_set_numeric 3274 1_1_0
NO
EXIST::FUNCTION:
SCT_print 3275 1_1_0 EXIST::FUNCTION:
X509_PUBKEY_set 3276 1_1_0 EXIST::FUNCTION:
POLICY_CONSTRAINTS_free 3277 1_1_0 EXIST::FUNCTION:
...
...
@@ -3711,7 +3711,7 @@ X509_issuer_and_serial_cmp 3590 1_1_0 EXIST::FUNCTION:
OCSP_response_create 3591 1_1_0 EXIST::FUNCTION:
SHA224 3592 1_1_0 EXIST::FUNCTION:
MD2_options 3593 1_1_0 EXIST::FUNCTION:MD2
CRYPTO_set_locking_callback 3594 1_1_0 EXIST::FUNCTION:
CRYPTO_set_locking_callback 3594 1_1_0
NO
EXIST::FUNCTION:
X509_REQ_it 3595 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
X509_REQ_it 3595 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
RAND_bytes 3596 1_1_0 EXIST::FUNCTION:
...
...
@@ -3745,7 +3745,7 @@ UI_method_get_closer 3623 1_1_0 EXIST::FUNCTION:
ENGINE_get_ex_data 3624 1_1_0 EXIST::FUNCTION:ENGINE
BN_print_fp 3625 1_1_0 EXIST::FUNCTION:STDIO
MD2_Update 3626 1_1_0 EXIST::FUNCTION:MD2
CRYPTO_THREADID_set_callback 3627 1_1_0 EXIST::FUNCTION:
CRYPTO_THREADID_set_callback 3627 1_1_0
NO
EXIST::FUNCTION:
ENGINE_free 3628 1_1_0 EXIST::FUNCTION:ENGINE
d2i_X509_ATTRIBUTE 3629 1_1_0 EXIST::FUNCTION:
TS_RESP_free 3630 1_1_0 EXIST::FUNCTION:
...
...
@@ -3891,7 +3891,7 @@ BIO_ADDRINFO_family 3766 1_1_0 EXIST::FUNCTION:
PEM_write_DHxparams 3767 1_1_0 EXIST::FUNCTION:DH
BN_mod_exp2_mont 3768 1_1_0 EXIST::FUNCTION:
ASN1_PRINTABLE_free 3769 1_1_0 EXIST::FUNCTION:
CRYPTO_thread_id 3770 1_1_0
EXIST::FUNCTION:DEPRECATEDIN_1_0_0
CRYPTO_thread_id 3770 1_1_0
NOEXIST::FUNCTION:
PKCS7_ATTR_SIGN_it 3771 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:
PKCS7_ATTR_SIGN_it 3771 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:
EVP_MD_CTX_copy 3772 1_1_0 EXIST::FUNCTION:
...
...
@@ -4050,3 +4050,11 @@ BN_BLINDING_is_current_thread 3915 1_1_0 EXIST::FUNCTION:
BN_BLINDING_set_current_thread 3916 1_1_0 EXIST::FUNCTION:
BN_BLINDING_lock 3917 1_1_0 EXIST::FUNCTION:
BN_BLINDING_unlock 3918 1_1_0 EXIST::FUNCTION:
EC_GROUP_new_from_ecpkparameters 3919 1_1_0 EXIST::FUNCTION:EC
EC_GROUP_get_ecpkparameters 3920 1_1_0 EXIST::FUNCTION:EC
EC_GROUP_new_from_ecparameters 3921 1_1_0 EXIST::FUNCTION:EC
ECPARAMETERS_it 3922 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:EC
ECPARAMETERS_it 3922 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:EC
ECPKPARAMETERS_it 3923 1_1_0 EXIST:!EXPORT_VAR_AS_FUNCTION:VARIABLE:EC
ECPKPARAMETERS_it 3923 1_1_0 EXIST:EXPORT_VAR_AS_FUNCTION:FUNCTION:EC
EC_GROUP_get_ecparameters 3924 1_1_0 EXIST::FUNCTION:EC
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录