Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
b3310161
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
1 年多 前同步成功
通知
10
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看板
提交
b3310161
编写于
2月 12, 2011
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
New option to disable characteristic two fields in EC code.
上级
afb41913
变更
19
隐藏空白更改
内联
并排
Showing
19 changed file
with
98 addition
and
30 deletion
+98
-30
CHANGES
CHANGES
+3
-0
crypto/bn/bn_gf2m.c
crypto/bn/bn_gf2m.c
+3
-0
crypto/bn/bntest.c
crypto/bn/bntest.c
+4
-4
crypto/ec/ec.h
crypto/ec/ec.h
+10
-6
crypto/ec/ec2_mult.c
crypto/ec/ec2_mult.c
+4
-0
crypto/ec/ec2_smpl.c
crypto/ec/ec2_smpl.c
+4
-0
crypto/ec/ec_asn1.c
crypto/ec/ec_asn1.c
+19
-5
crypto/ec/ec_curve.c
crypto/ec/ec_curve.c
+13
-1
crypto/ec/ec_cvt.c
crypto/ec/ec_cvt.c
+2
-1
crypto/ec/ec_err.c
crypto/ec/ec_err.c
+1
-0
crypto/ec/ec_key.c
crypto/ec/ec_key.c
+2
-1
crypto/ec/ec_lib.c
crypto/ec/ec_lib.c
+8
-8
crypto/ec/eck_prn.c
crypto/ec/eck_prn.c
+2
-1
crypto/ec/ectest.c
crypto/ec/ectest.c
+5
-1
crypto/ecdh/ecdhtest.c
crypto/ecdh/ecdhtest.c
+6
-0
crypto/ecdh/ech_ossl.c
crypto/ecdh/ech_ossl.c
+2
-0
crypto/ecdsa/ecdsatest.c
crypto/ecdsa/ecdsatest.c
+2
-1
crypto/ecdsa/ecs_ossl.c
crypto/ecdsa/ecs_ossl.c
+4
-1
ssl/ssltest.c
ssl/ssltest.c
+4
-0
未找到文件。
CHANGES
浏览文件 @
b3310161
...
...
@@ -4,6 +4,9 @@
Changes between 1.0.1 and 1.1.0 [xx XXX xxxx]
*) New build option no-ec2m to disable characteristic 2 code.
[Steve Henson]
*) New build option "fipscanisteronly". This only builds fipscanister.o
and (currently) associated fips utilities. Uses the file Makefile.fips
instead of Makefile.org as the prototype.
...
...
crypto/bn/bn_gf2m.c
浏览文件 @
b3310161
...
...
@@ -94,6 +94,8 @@
#include "cryptlib.h"
#include "bn_lcl.h"
#ifndef OPENSSL_NO_EC2M
/* Maximum number of iterations before BN_GF2m_mod_solve_quad_arr should fail. */
#define MAX_ITERATIONS 50
...
...
@@ -1032,3 +1034,4 @@ int BN_GF2m_arr2poly(const int p[], BIGNUM *a)
return
1
;
}
#endif
crypto/bn/bntest.c
浏览文件 @
b3310161
...
...
@@ -262,7 +262,7 @@ int main(int argc, char *argv[])
message
(
out
,
"BN_mod_sqrt"
);
if
(
!
test_sqrt
(
out
,
ctx
))
goto
err
;
(
void
)
BIO_flush
(
out
);
#ifndef OPENSSL_NO_EC2M
message
(
out
,
"BN_GF2m_add"
);
if
(
!
test_gf2m_add
(
out
))
goto
err
;
(
void
)
BIO_flush
(
out
);
...
...
@@ -298,7 +298,7 @@ int main(int argc, char *argv[])
message
(
out
,
"BN_GF2m_mod_solve_quad"
);
if
(
!
test_gf2m_mod_solve_quad
(
out
,
ctx
))
goto
err
;
(
void
)
BIO_flush
(
out
);
#endif
BN_CTX_free
(
ctx
);
BIO_free
(
out
);
...
...
@@ -1061,7 +1061,7 @@ int test_exp(BIO *bp, BN_CTX *ctx)
BN_free
(
one
);
return
(
1
);
}
#ifndef OPENSSL_NO_EC2M
int
test_gf2m_add
(
BIO
*
bp
)
{
BIGNUM
a
,
b
,
c
;
...
...
@@ -1636,7 +1636,7 @@ int test_gf2m_mod_solve_quad(BIO *bp,BN_CTX *ctx)
BN_free
(
e
);
return
ret
;
}
#endif
static
int
genprime_cb
(
int
p
,
int
n
,
BN_GENCB
*
arg
)
{
char
c
=
'*'
;
...
...
crypto/ec/ec.h
浏览文件 @
b3310161
...
...
@@ -160,7 +160,7 @@ const EC_METHOD *EC_GFp_nistp224_method(void);
#endif
#endif
#ifndef OPENSSL_NO_EC2M
/********************************************************************/
/* EC_METHOD for curves over GF(2^m) */
/********************************************************************/
...
...
@@ -170,6 +170,8 @@ const EC_METHOD *EC_GFp_nistp224_method(void);
*/
const
EC_METHOD
*
EC_GF2m_simple_method
(
void
);
#endif
/********************************************************************/
/* EC_GROUP functions */
...
...
@@ -291,6 +293,7 @@ int EC_GROUP_set_curve_GFp(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, co
*/
int
EC_GROUP_get_curve_GFp
(
const
EC_GROUP
*
group
,
BIGNUM
*
p
,
BIGNUM
*
a
,
BIGNUM
*
b
,
BN_CTX
*
ctx
);
#ifndef OPENSSL_NO_EC2M
/** Sets the parameter of a ec over GF2m defined by y^2 + x*y = x^3 + a*x^2 + b
* \param group EC_GROUP object
* \param p BIGNUM with the polynomial defining the underlying field
...
...
@@ -310,7 +313,7 @@ int EC_GROUP_set_curve_GF2m(EC_GROUP *group, const BIGNUM *p, const BIGNUM *a, c
* \return 1 on success and 0 if an error occured
*/
int
EC_GROUP_get_curve_GF2m
(
const
EC_GROUP
*
group
,
BIGNUM
*
p
,
BIGNUM
*
a
,
BIGNUM
*
b
,
BN_CTX
*
ctx
);
#endif
/** Returns the number of bits needed to represent a field element
* \param group EC_GROUP object
* \return number of bits needed to represent a field element
...
...
@@ -351,7 +354,7 @@ int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b, BN_CTX *ctx);
* \return newly created EC_GROUP object with the specified parameters
*/
EC_GROUP
*
EC_GROUP_new_curve_GFp
(
const
BIGNUM
*
p
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
,
BN_CTX
*
ctx
);
#ifndef OPENSSL_NO_EC2M
/** Creates a new EC_GROUP object with the specified parameters defined
* over GF2m (defined by the equation y^2 + x*y = x^3 + a*x^2 + b)
* \param p BIGNUM with the polynomial defining the underlying field
...
...
@@ -361,7 +364,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM
* \return newly created EC_GROUP object with the specified parameters
*/
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
...
...
@@ -490,7 +493,7 @@ int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
*/
int
EC_POINT_set_compressed_coordinates_GFp
(
const
EC_GROUP
*
group
,
EC_POINT
*
p
,
const
BIGNUM
*
x
,
int
y_bit
,
BN_CTX
*
ctx
);
#ifndef OPENSSL_NO_EC2M
/** Sets the affine coordinates of a EC_POINT over GF2m
* \param group underlying EC_GROUP object
* \param p EC_POINT object
...
...
@@ -523,7 +526,7 @@ int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group,
*/
int
EC_POINT_set_compressed_coordinates_GF2m
(
const
EC_GROUP
*
group
,
EC_POINT
*
p
,
const
BIGNUM
*
x
,
int
y_bit
,
BN_CTX
*
ctx
);
#endif
/** Encodes a EC_POINT object to a octet string
* \param group underlying EC_GROUP object
* \param p EC_POINT object
...
...
@@ -1084,6 +1087,7 @@ void ERR_load_EC_strings(void);
#define EC_R_DISCRIMINANT_IS_ZERO 118
#define EC_R_EC_GROUP_NEW_BY_NAME_FAILURE 119
#define EC_R_FIELD_TOO_LARGE 143
#define EC_R_GF2M_NOT_SUPPORTED 147
#define EC_R_GROUP2PKPARAMETERS_FAILURE 120
#define EC_R_I2D_ECPKPARAMETERS_FAILURE 121
#define EC_R_INCOMPATIBLE_OBJECTS 101
...
...
crypto/ec/ec2_mult.c
浏览文件 @
b3310161
...
...
@@ -71,6 +71,8 @@
#include "ec_lcl.h"
#ifndef OPENSSL_NO_EC2M
/* Compute the x-coordinate x/z for the point 2*(x/z) in Montgomery projective
* coordinates.
...
...
@@ -384,3 +386,5 @@ int ec_GF2m_have_precompute_mult(const EC_GROUP *group)
{
return
ec_wNAF_have_precompute_mult
(
group
);
}
#endif
crypto/ec/ec2_smpl.c
浏览文件 @
b3310161
...
...
@@ -71,6 +71,8 @@
#include "ec_lcl.h"
#ifndef OPENSSL_NO_EC2M
const
EC_METHOD
*
EC_GF2m_simple_method
(
void
)
{
...
...
@@ -1040,3 +1042,5 @@ int ec_GF2m_simple_field_div(const EC_GROUP *group, BIGNUM *r, const BIGNUM *a,
{
return
BN_GF2m_mod_div
(
r
,
a
,
b
,
&
group
->
field
,
ctx
);
}
#endif
crypto/ec/ec_asn1.c
浏览文件 @
b3310161
...
...
@@ -83,7 +83,7 @@ int EC_GROUP_get_basis_type(const EC_GROUP *group)
/* everything else is currently not supported */
return
0
;
}
#ifndef OPENSSL_NO_EC2M
int
EC_GROUP_get_trinomial_basis
(
const
EC_GROUP
*
group
,
unsigned
int
*
k
)
{
if
(
group
==
NULL
)
...
...
@@ -101,7 +101,6 @@ int EC_GROUP_get_trinomial_basis(const EC_GROUP *group, unsigned int *k)
return
1
;
}
int
EC_GROUP_get_pentanomial_basis
(
const
EC_GROUP
*
group
,
unsigned
int
*
k1
,
unsigned
int
*
k2
,
unsigned
int
*
k3
)
{
...
...
@@ -124,7 +123,7 @@ int EC_GROUP_get_pentanomial_basis(const EC_GROUP *group, unsigned int *k1,
return
1
;
}
#endif
/* some structures needed for the asn1 encoding */
...
...
@@ -340,6 +339,12 @@ static int ec_asn1_group2fieldid(const EC_GROUP *group, X9_62_FIELDID *field)
}
}
else
/* nid == NID_X9_62_characteristic_two_field */
#ifdef OPENSSL_NO_EC2M
{
ECerr
(
EC_F_EC_ASN1_GROUP2FIELDID
,
EC_R_GF2M_NOT_SUPPORTED
);
goto
err
;
}
#else
{
int
field_type
;
X9_62_CHARACTERISTIC_TWO
*
char_two
;
...
...
@@ -419,6 +424,7 @@ static int ec_asn1_group2fieldid(const EC_GROUP *group, X9_62_FIELDID *field)
}
}
}
#endif
ok
=
1
;
...
...
@@ -456,6 +462,7 @@ static int ec_asn1_group2curve(const EC_GROUP *group, X9_62_CURVE *curve)
goto
err
;
}
}
#ifndef OPENSSL_NO_EC2M
else
/* nid == NID_X9_62_characteristic_two_field */
{
if
(
!
EC_GROUP_get_curve_GF2m
(
group
,
NULL
,
tmp_1
,
tmp_2
,
NULL
))
...
...
@@ -464,7 +471,7 @@ static int ec_asn1_group2curve(const EC_GROUP *group, X9_62_CURVE *curve)
goto
err
;
}
}
#endif
len_1
=
(
size_t
)
BN_num_bytes
(
tmp_1
);
len_2
=
(
size_t
)
BN_num_bytes
(
tmp_2
);
...
...
@@ -775,8 +782,13 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
/* get the field parameters */
tmp
=
OBJ_obj2nid
(
params
->
fieldID
->
fieldType
);
if
(
tmp
==
NID_X9_62_characteristic_two_field
)
#ifdef OPENSSL_NO_EC2M
{
ECerr
(
EC_F_EC_ASN1_PARAMETERS2GROUP
,
EC_R_GF2M_NOT_SUPPORTED
);
goto
err
;
}
#else
{
X9_62_CHARACTERISTIC_TWO
*
char_two
;
...
...
@@ -862,6 +874,7 @@ static EC_GROUP *ec_asn1_parameters2group(const ECPARAMETERS *params)
/* create the EC_GROUP structure */
ret
=
EC_GROUP_new_curve_GF2m
(
p
,
a
,
b
,
NULL
);
}
#endif
else
if
(
tmp
==
NID_X9_62_prime_field
)
{
/* we have a curve over a prime field */
...
...
@@ -1065,6 +1078,7 @@ EC_GROUP *d2i_ECPKParameters(EC_GROUP **a, const unsigned char **in, long len)
if
((
group
=
ec_asn1_pkparameters2group
(
params
))
==
NULL
)
{
ECerr
(
EC_F_D2I_ECPKPARAMETERS
,
EC_R_PKPARAMETERS2GROUP_FAILURE
);
ECPKPARAMETERS_free
(
params
);
return
NULL
;
}
...
...
crypto/ec/ec_curve.c
浏览文件 @
b3310161
...
...
@@ -703,6 +703,8 @@ static const struct { EC_CURVE_DATA h; unsigned char data[0+28*6]; }
0x13
,
0xDD
,
0x29
,
0x45
,
0x5C
,
0x5C
,
0x2A
,
0x3D
}
};
#ifndef OPENSSL_NO_EC2M
/* characteristic two curves */
static
const
struct
{
EC_CURVE_DATA
h
;
unsigned
char
data
[
20
+
15
*
6
];
}
_EC_SECG_CHAR2_113R1
=
{
...
...
@@ -1817,6 +1819,8 @@ static const struct { EC_CURVE_DATA h; unsigned char data[0+24*6]; }
0xBA
,
0xFC
,
0xA7
,
0x5E
}
};
#endif
typedef
struct
_ec_list_element_st
{
int
nid
;
const
EC_CURVE_DATA
*
data
;
...
...
@@ -1855,6 +1859,7 @@ static const ec_list_element curve_list[] = {
{
NID_X9_62_prime239v2
,
&
_EC_X9_62_PRIME_239V2
.
h
,
0
,
"X9.62 curve over a 239 bit prime field"
},
{
NID_X9_62_prime239v3
,
&
_EC_X9_62_PRIME_239V3
.
h
,
0
,
"X9.62 curve over a 239 bit prime field"
},
{
NID_X9_62_prime256v1
,
&
_EC_X9_62_PRIME_256V1
.
h
,
0
,
"X9.62/SECG curve over a 256 bit prime field"
},
#ifndef OPENSSL_NO_EC2M
/* characteristic two field curves */
/* NIST/SECG curves */
{
NID_sect113r1
,
&
_EC_SECG_CHAR2_113R1
.
h
,
0
,
"SECG curve over a 113 bit binary field"
},
...
...
@@ -1898,18 +1903,23 @@ static const ec_list_element curve_list[] = {
{
NID_wap_wsg_idm_ecid_wtls3
,
&
_EC_NIST_CHAR2_163K
.
h
,
0
,
"NIST/SECG/WTLS curve over a 163 bit binary field"
},
{
NID_wap_wsg_idm_ecid_wtls4
,
&
_EC_SECG_CHAR2_113R1
.
h
,
0
,
"SECG curve over a 113 bit binary field"
},
{
NID_wap_wsg_idm_ecid_wtls5
,
&
_EC_X9_62_CHAR2_163V1
.
h
,
0
,
"X9.62 curve over a 163 bit binary field"
},
#endif
{
NID_wap_wsg_idm_ecid_wtls6
,
&
_EC_SECG_PRIME_112R1
.
h
,
0
,
"SECG/WTLS curve over a 112 bit prime field"
},
{
NID_wap_wsg_idm_ecid_wtls7
,
&
_EC_SECG_PRIME_160R2
.
h
,
0
,
"SECG/WTLS curve over a 160 bit prime field"
},
{
NID_wap_wsg_idm_ecid_wtls8
,
&
_EC_WTLS_8
.
h
,
0
,
"WTLS curve over a 112 bit prime field"
},
{
NID_wap_wsg_idm_ecid_wtls9
,
&
_EC_WTLS_9
.
h
,
0
,
"WTLS curve over a 160 bit prime field"
},
#ifndef OPENSSL_NO_EC2M
{
NID_wap_wsg_idm_ecid_wtls10
,
&
_EC_NIST_CHAR2_233K
.
h
,
0
,
"NIST/SECG/WTLS curve over a 233 bit binary field"
},
{
NID_wap_wsg_idm_ecid_wtls11
,
&
_EC_NIST_CHAR2_233B
.
h
,
0
,
"NIST/SECG/WTLS curve over a 233 bit binary field"
},
#endif
{
NID_wap_wsg_idm_ecid_wtls12
,
&
_EC_WTLS_12
.
h
,
0
,
"WTLS curvs over a 224 bit prime field"
},
#ifndef OPENSSL_NO_EC2M
/* IPSec curves */
{
NID_ipsec3
,
&
_EC_IPSEC_155_ID3
.
h
,
0
,
"
\n\t
IPSec/IKE/Oakley curve #3 over a 155 bit binary field.
\n
"
"
\t
Not suitable for ECDSA.
\n\t
Questionable extension field!"
},
{
NID_ipsec4
,
&
_EC_IPSEC_185_ID4
.
h
,
0
,
"
\n\t
IPSec/IKE/Oakley curve #4 over a 185 bit binary field.
\n
"
"
\t
Not suitable for ECDSA.
\n\t
Questionable extension field!"
},
#endif
};
#define curve_list_length (sizeof(curve_list)/sizeof(ec_list_element))
...
...
@@ -1964,6 +1974,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
goto
err
;
}
}
#ifndef OPENSSL_NO_EC2M
else
/* field_type == NID_X9_62_characteristic_two_field */
{
if
((
group
=
EC_GROUP_new_curve_GF2m
(
p
,
a
,
b
,
ctx
))
==
NULL
)
...
...
@@ -1972,6 +1983,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
goto
err
;
}
}
#endif
if
((
P
=
EC_POINT_new
(
group
))
==
NULL
)
{
...
...
@@ -1985,7 +1997,7 @@ static EC_GROUP *ec_group_new_from_data(const ec_list_element curve)
ECerr
(
EC_F_EC_GROUP_NEW_FROM_DATA
,
ERR_R_BN_LIB
);
goto
err
;
}
if
(
!
EC_POINT_set_affine_coordinates_GF
2m
(
group
,
P
,
x
,
y
,
ctx
))
if
(
!
EC_POINT_set_affine_coordinates_GF
p
(
group
,
P
,
x
,
y
,
ctx
))
{
ECerr
(
EC_F_EC_GROUP_NEW_FROM_DATA
,
ERR_R_EC_LIB
);
goto
err
;
...
...
crypto/ec/ec_cvt.c
浏览文件 @
b3310161
...
...
@@ -122,7 +122,7 @@ EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p, const BIGNUM *a, const BIGNUM
return
ret
;
}
#ifndef OPENSSL_NO_EC2M
EC_GROUP
*
EC_GROUP_new_curve_GF2m
(
const
BIGNUM
*
p
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
,
BN_CTX
*
ctx
)
{
const
EC_METHOD
*
meth
;
...
...
@@ -142,3 +142,4 @@ EC_GROUP *EC_GROUP_new_curve_GF2m(const BIGNUM *p, const BIGNUM *a, const BIGNUM
return
ret
;
}
#endif
crypto/ec/ec_err.c
浏览文件 @
b3310161
...
...
@@ -213,6 +213,7 @@ static ERR_STRING_DATA EC_str_reasons[]=
{
ERR_REASON
(
EC_R_DISCRIMINANT_IS_ZERO
)
,
"discriminant is zero"
},
{
ERR_REASON
(
EC_R_EC_GROUP_NEW_BY_NAME_FAILURE
),
"ec group new by name failure"
},
{
ERR_REASON
(
EC_R_FIELD_TOO_LARGE
)
,
"field too large"
},
{
ERR_REASON
(
EC_R_GF2M_NOT_SUPPORTED
)
,
"gf2m not supported"
},
{
ERR_REASON
(
EC_R_GROUP2PKPARAMETERS_FAILURE
),
"group2pkparameters failure"
},
{
ERR_REASON
(
EC_R_I2D_ECPKPARAMETERS_FAILURE
),
"i2d ecpkparameters failure"
},
{
ERR_REASON
(
EC_R_INCOMPATIBLE_OBJECTS
)
,
"incompatible objects"
},
...
...
crypto/ec/ec_key.c
浏览文件 @
b3310161
...
...
@@ -400,7 +400,7 @@ int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y)
tx
=
BN_CTX_get
(
ctx
);
ty
=
BN_CTX_get
(
ctx
);
#ifndef OPENSSL_NO_EC2M
if
(
is_char_two
)
{
if
(
!
EC_POINT_set_affine_coordinates_GF2m
(
key
->
group
,
point
,
...
...
@@ -411,6 +411,7 @@ int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key, BIGNUM *x, BIGNUM *y)
goto
err
;
}
else
#endif
{
if
(
!
EC_POINT_set_affine_coordinates_GFp
(
key
->
group
,
point
,
x
,
y
,
ctx
))
...
...
crypto/ec/ec_lib.c
浏览文件 @
b3310161
...
...
@@ -425,7 +425,7 @@ int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM *
return
group
->
meth
->
group_get_curve
(
group
,
p
,
a
,
b
,
ctx
);
}
#ifndef OPENSSL_NO_EC2M
int
EC_GROUP_set_curve_GF2m
(
EC_GROUP
*
group
,
const
BIGNUM
*
p
,
const
BIGNUM
*
a
,
const
BIGNUM
*
b
,
BN_CTX
*
ctx
)
{
if
(
group
->
meth
->
group_set_curve
==
0
)
...
...
@@ -446,7 +446,7 @@ int EC_GROUP_get_curve_GF2m(const EC_GROUP *group, BIGNUM *p, BIGNUM *a, BIGNUM
}
return
group
->
meth
->
group_get_curve
(
group
,
p
,
a
,
b
,
ctx
);
}
#endif
int
EC_GROUP_get_degree
(
const
EC_GROUP
*
group
)
{
...
...
@@ -856,7 +856,7 @@ int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group, EC_POINT *point,
return
group
->
meth
->
point_set_affine_coordinates
(
group
,
point
,
x
,
y
,
ctx
);
}
#ifndef OPENSSL_NO_EC2M
int
EC_POINT_set_affine_coordinates_GF2m
(
const
EC_GROUP
*
group
,
EC_POINT
*
point
,
const
BIGNUM
*
x
,
const
BIGNUM
*
y
,
BN_CTX
*
ctx
)
{
...
...
@@ -872,7 +872,7 @@ int EC_POINT_set_affine_coordinates_GF2m(const EC_GROUP *group, EC_POINT *point,
}
return
group
->
meth
->
point_set_affine_coordinates
(
group
,
point
,
x
,
y
,
ctx
);
}
#endif
int
EC_POINT_get_affine_coordinates_GFp
(
const
EC_GROUP
*
group
,
const
EC_POINT
*
point
,
BIGNUM
*
x
,
BIGNUM
*
y
,
BN_CTX
*
ctx
)
...
...
@@ -890,7 +890,7 @@ int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group, const EC_POINT *p
return
group
->
meth
->
point_get_affine_coordinates
(
group
,
point
,
x
,
y
,
ctx
);
}
#ifndef OPENSSL_NO_EC2M
int
EC_POINT_get_affine_coordinates_GF2m
(
const
EC_GROUP
*
group
,
const
EC_POINT
*
point
,
BIGNUM
*
x
,
BIGNUM
*
y
,
BN_CTX
*
ctx
)
{
...
...
@@ -906,7 +906,7 @@ int EC_POINT_get_affine_coordinates_GF2m(const EC_GROUP *group, const EC_POINT *
}
return
group
->
meth
->
point_get_affine_coordinates
(
group
,
point
,
x
,
y
,
ctx
);
}
#endif
int
EC_POINT_set_compressed_coordinates_GFp
(
const
EC_GROUP
*
group
,
EC_POINT
*
point
,
const
BIGNUM
*
x
,
int
y_bit
,
BN_CTX
*
ctx
)
...
...
@@ -924,7 +924,7 @@ int EC_POINT_set_compressed_coordinates_GFp(const EC_GROUP *group, EC_POINT *poi
return
group
->
meth
->
point_set_compressed_coordinates
(
group
,
point
,
x
,
y_bit
,
ctx
);
}
#ifndef OPENSSL_NO_EC2M
int
EC_POINT_set_compressed_coordinates_GF2m
(
const
EC_GROUP
*
group
,
EC_POINT
*
point
,
const
BIGNUM
*
x
,
int
y_bit
,
BN_CTX
*
ctx
)
{
...
...
@@ -940,7 +940,7 @@ int EC_POINT_set_compressed_coordinates_GF2m(const EC_GROUP *group, EC_POINT *po
}
return
group
->
meth
->
point_set_compressed_coordinates
(
group
,
point
,
x
,
y_bit
,
ctx
);
}
#endif
size_t
EC_POINT_point2oct
(
const
EC_GROUP
*
group
,
const
EC_POINT
*
point
,
point_conversion_form_t
form
,
unsigned
char
*
buf
,
size_t
len
,
BN_CTX
*
ctx
)
...
...
crypto/ec/eck_prn.c
浏览文件 @
b3310161
...
...
@@ -207,7 +207,7 @@ int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off)
reason
=
ERR_R_MALLOC_FAILURE
;
goto
err
;
}
#ifndef OPENSSL_NO_EC2M
if
(
is_char_two
)
{
if
(
!
EC_GROUP_get_curve_GF2m
(
x
,
p
,
a
,
b
,
ctx
))
...
...
@@ -217,6 +217,7 @@ int ECPKParameters_print(BIO *bp, const EC_GROUP *x, int off)
}
}
else
/* prime field */
#endif
{
if
(
!
EC_GROUP_get_curve_GFp
(
x
,
p
,
a
,
b
,
ctx
))
{
...
...
crypto/ec/ectest.c
浏览文件 @
b3310161
...
...
@@ -776,9 +776,10 @@ static void prime_field_tests(void)
if (!(_variable = EC_GROUP_new(EC_GROUP_method_of(group)))) ABORT; \
if (!EC_GROUP_copy(_variable, group)) ABORT; \
#ifndef OPENSSL_NO_EC2M
static
void
char2_field_tests
(
void
)
{
{
BN_CTX
*
ctx
=
NULL
;
BIGNUM
*
p
,
*
a
,
*
b
;
EC_GROUP
*
group
;
...
...
@@ -1210,6 +1211,7 @@ static void char2_field_tests(void)
if
(
C2_B571
)
EC_GROUP_free
(
C2_B571
);
}
#endif
static
void
internal_curve_test
(
void
)
{
...
...
@@ -1391,7 +1393,9 @@ int main(int argc, char *argv[])
prime_field_tests
();
puts
(
""
);
#ifndef OPENSSL_NO_EC2M
char2_field_tests
();
#endif
#ifdef EC_NISTP224_64_GCC_128
nistp224_test
();
#endif
...
...
crypto/ecdh/ecdhtest.c
浏览文件 @
b3310161
...
...
@@ -158,11 +158,13 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out)
if
(
!
EC_POINT_get_affine_coordinates_GFp
(
group
,
EC_KEY_get0_public_key
(
a
),
x_a
,
y_a
,
ctx
))
goto
err
;
}
#ifndef OPENSSL_NO_EC2M
else
{
if
(
!
EC_POINT_get_affine_coordinates_GF2m
(
group
,
EC_KEY_get0_public_key
(
a
),
x_a
,
y_a
,
ctx
))
goto
err
;
}
#endif
#ifdef NOISY
BIO_puts
(
out
,
" pri 1="
);
BN_print
(
out
,
a
->
priv_key
);
...
...
@@ -183,11 +185,13 @@ static int test_ecdh_curve(int nid, const char *text, BN_CTX *ctx, BIO *out)
if
(
!
EC_POINT_get_affine_coordinates_GFp
(
group
,
EC_KEY_get0_public_key
(
b
),
x_b
,
y_b
,
ctx
))
goto
err
;
}
#ifndef OPENSSL_NO_EC2M
else
{
if
(
!
EC_POINT_get_affine_coordinates_GF2m
(
group
,
EC_KEY_get0_public_key
(
b
),
x_b
,
y_b
,
ctx
))
goto
err
;
}
#endif
#ifdef NOISY
BIO_puts
(
out
,
" pri 2="
);
...
...
@@ -324,6 +328,7 @@ int main(int argc, char *argv[])
if
(
!
test_ecdh_curve
(
NID_X9_62_prime256v1
,
"NIST Prime-Curve P-256"
,
ctx
,
out
))
goto
err
;
if
(
!
test_ecdh_curve
(
NID_secp384r1
,
"NIST Prime-Curve P-384"
,
ctx
,
out
))
goto
err
;
if
(
!
test_ecdh_curve
(
NID_secp521r1
,
"NIST Prime-Curve P-521"
,
ctx
,
out
))
goto
err
;
#ifndef OPENSSL_NO_EC2M
/* NIST BINARY CURVES TESTS */
if
(
!
test_ecdh_curve
(
NID_sect163k1
,
"NIST Binary-Curve K-163"
,
ctx
,
out
))
goto
err
;
if
(
!
test_ecdh_curve
(
NID_sect163r2
,
"NIST Binary-Curve B-163"
,
ctx
,
out
))
goto
err
;
...
...
@@ -335,6 +340,7 @@ int main(int argc, char *argv[])
if
(
!
test_ecdh_curve
(
NID_sect409r1
,
"NIST Binary-Curve B-409"
,
ctx
,
out
))
goto
err
;
if
(
!
test_ecdh_curve
(
NID_sect571k1
,
"NIST Binary-Curve K-571"
,
ctx
,
out
))
goto
err
;
if
(
!
test_ecdh_curve
(
NID_sect571r1
,
"NIST Binary-Curve B-571"
,
ctx
,
out
))
goto
err
;
#endif
ret
=
0
;
...
...
crypto/ecdh/ech_ossl.c
浏览文件 @
b3310161
...
...
@@ -157,6 +157,7 @@ static int ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
goto
err
;
}
}
#ifndef OPENSSL_NO_EC2M
else
{
if
(
!
EC_POINT_get_affine_coordinates_GF2m
(
group
,
tmp
,
x
,
y
,
ctx
))
...
...
@@ -165,6 +166,7 @@ static int ecdh_compute_key(void *out, size_t outlen, const EC_POINT *pub_key,
goto
err
;
}
}
#endif
buflen
=
(
EC_GROUP_get_degree
(
group
)
+
7
)
/
8
;
len
=
BN_num_bytes
(
x
);
...
...
crypto/ecdsa/ecdsatest.c
浏览文件 @
b3310161
...
...
@@ -263,6 +263,7 @@ int x9_62_tests(BIO *out)
"3238135532097973577080787768312505059318910517550078427819"
"78505179448783"
))
goto
x962_err
;
#ifndef OPENSSL_NO_EC2M
if
(
!
x9_62_test_internal
(
out
,
NID_X9_62_c2tnb191v1
,
"87194383164871543355722284926904419997237591535066528048"
,
"308992691965804947361541664549085895292153777025772063598"
))
...
...
@@ -273,7 +274,7 @@ int x9_62_tests(BIO *out)
"1970303740007316867383349976549972270528498040721988191026"
"49413465737174"
))
goto
x962_err
;
#endif
ret
=
1
;
x962_err:
if
(
!
restore_rand
())
...
...
crypto/ecdsa/ecs_ossl.c
浏览文件 @
b3310161
...
...
@@ -159,6 +159,7 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
goto
err
;
}
}
#ifndef OPENSSL_NO_EC2M
else
/* NID_X9_62_characteristic_two_field */
{
if
(
!
EC_POINT_get_affine_coordinates_GF2m
(
group
,
...
...
@@ -168,6 +169,7 @@ static int ecdsa_sign_setup(EC_KEY *eckey, BN_CTX *ctx_in, BIGNUM **kinvp,
goto
err
;
}
}
#endif
if
(
!
BN_nnmod
(
r
,
X
,
order
,
ctx
))
{
ECDSAerr
(
ECDSA_F_ECDSA_SIGN_SETUP
,
ERR_R_BN_LIB
);
...
...
@@ -446,6 +448,7 @@ static int ecdsa_do_verify(const unsigned char *dgst, int dgst_len,
goto
err
;
}
}
#ifndef OPENSSL_NO_EC2M
else
/* NID_X9_62_characteristic_two_field */
{
if
(
!
EC_POINT_get_affine_coordinates_GF2m
(
group
,
...
...
@@ -455,7 +458,7 @@ static int ecdsa_do_verify(const unsigned char *dgst, int dgst_len,
goto
err
;
}
}
#endif
if
(
!
BN_nnmod
(
u1
,
X
,
order
,
ctx
))
{
ECDSAerr
(
ECDSA_F_ECDSA_DO_VERIFY
,
ERR_R_BN_LIB
);
...
...
ssl/ssltest.c
浏览文件 @
b3310161
...
...
@@ -931,7 +931,11 @@ bad:
}
}
else
#ifdef OPENSSL_NO_EC2M
nid
=
NID_X9_62_prime256v1
;
#else
nid
=
NID_sect163r2
;
#endif
ecdh
=
EC_KEY_new_by_curve_name
(
nid
);
if
(
ecdh
==
NULL
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录