Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
19f6c524
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
9 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
19f6c524
编写于
5月 22, 2007
作者:
B
Bodo Möller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
上级
8dbdf631
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
49 addition
and
7 deletion
+49
-7
CHANGES
CHANGES
+4
-0
crypto/ec/ec.h
crypto/ec/ec.h
+2
-1
crypto/ec/ec_err.c
crypto/ec/ec_err.c
+1
-0
crypto/ec/ec_mult.c
crypto/ec/ec_mult.c
+31
-3
crypto/ec/ectest.c
crypto/ec/ectest.c
+11
-3
未找到文件。
CHANGES
浏览文件 @
19f6c524
...
...
@@ -501,6 +501,10 @@
Changes between 0.9.8e and 0.9.8f [xx XXX xxxx]
*) Fix crypto/ec/ec_mult.c to work properly with scalars of value 0
(which previously caused an internal error).
[Bodo Moeller]
*) Squeeze another 10% out of IGE mode when in != out.
[Ben Laurie]
...
...
crypto/ec/ec.h
浏览文件 @
19f6c524
...
...
@@ -931,7 +931,7 @@ void ERR_load_EC_strings(void);
#define EC_F_D2I_ECPKPARAMETERS 145
#define EC_F_D2I_ECPRIVATEKEY 146
#define EC_F_DO_EC_KEY_PRINT 221
#define EC_F_ECKEY_PARAM2TYPE
196
#define EC_F_ECKEY_PARAM2TYPE
223
#define EC_F_ECKEY_PARAM_DECODE 212
#define EC_F_ECKEY_PRIV_DECODE 213
#define EC_F_ECKEY_PRIV_ENCODE 214
...
...
@@ -1033,6 +1033,7 @@ void ERR_load_EC_strings(void);
#define EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP 126
#define EC_F_EC_POINT_SET_TO_INFINITY 127
#define EC_F_EC_PRE_COMP_DUP 207
#define EC_F_EC_PRE_COMP_NEW 196
#define EC_F_EC_WNAF_MUL 187
#define EC_F_EC_WNAF_PRECOMPUTE_MULT 188
#define EC_F_I2D_ECPARAMETERS 190
...
...
crypto/ec/ec_err.c
浏览文件 @
19f6c524
...
...
@@ -177,6 +177,7 @@ static ERR_STRING_DATA EC_str_functs[]=
{
ERR_FUNC
(
EC_F_EC_POINT_SET_JPROJECTIVE_COORDINATES_GFP
),
"EC_POINT_set_Jprojective_coordinates_GFp"
},
{
ERR_FUNC
(
EC_F_EC_POINT_SET_TO_INFINITY
),
"EC_POINT_set_to_infinity"
},
{
ERR_FUNC
(
EC_F_EC_PRE_COMP_DUP
),
"EC_PRE_COMP_DUP"
},
{
ERR_FUNC
(
EC_F_EC_PRE_COMP_NEW
),
"EC_PRE_COMP_NEW"
},
{
ERR_FUNC
(
EC_F_EC_WNAF_MUL
),
"ec_wNAF_mul"
},
{
ERR_FUNC
(
EC_F_EC_WNAF_PRECOMPUTE_MULT
),
"ec_wNAF_precompute_mult"
},
{
ERR_FUNC
(
EC_F_I2D_ECPARAMETERS
),
"i2d_ECParameters"
},
...
...
crypto/ec/ec_mult.c
浏览文件 @
19f6c524
...
...
@@ -3,7 +3,7 @@
* Originally written by Bodo Moeller and Nils Larsch for the OpenSSL project.
*/
/* ====================================================================
* Copyright (c) 1998-200
3
The OpenSSL Project. All rights reserved.
* Copyright (c) 1998-200
7
The OpenSSL Project. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
...
...
@@ -104,7 +104,10 @@ static EC_PRE_COMP *ec_pre_comp_new(const EC_GROUP *group)
ret
=
(
EC_PRE_COMP
*
)
OPENSSL_malloc
(
sizeof
(
EC_PRE_COMP
));
if
(
!
ret
)
{
ECerr
(
EC_F_EC_PRE_COMP_NEW
,
ERR_R_MALLOC_FAILURE
);
return
ret
;
}
ret
->
group
=
group
;
ret
->
blocksize
=
8
;
/* default */
ret
->
numblocks
=
0
;
...
...
@@ -194,6 +197,19 @@ static signed char *compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len)
int
bit
,
next_bit
,
mask
;
size_t
len
=
0
,
j
;
if
(
BN_is_zero
(
scalar
))
{
r
=
OPENSSL_malloc
(
1
);
if
(
!
r
)
{
ECerr
(
EC_F_COMPUTE_WNAF
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
r
[
0
]
=
0
;
*
ret_len
=
1
;
return
r
;
}
if
(
w
<=
0
||
w
>
7
)
/* 'signed char' can represent integers with absolute values less than 2^7 */
{
ECerr
(
EC_F_COMPUTE_WNAF
,
ERR_R_INTERNAL_ERROR
);
...
...
@@ -212,7 +228,11 @@ static signed char *compute_wNAF(const BIGNUM *scalar, int w, size_t *ret_len)
r
=
OPENSSL_malloc
(
len
+
1
);
/* modified wNAF may be one digit longer than binary representation
* (*ret_len will be set to the actual length, i.e. at most
* BN_num_bits(scalar) + 1) */
if
(
r
==
NULL
)
goto
err
;
if
(
r
==
NULL
)
{
ECerr
(
EC_F_COMPUTE_WNAF
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
if
(
scalar
->
d
==
NULL
||
scalar
->
top
==
0
)
{
...
...
@@ -425,7 +445,10 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
val_sub
=
OPENSSL_malloc
(
totalnum
*
sizeof
val_sub
[
0
]);
if
(
!
wsize
||
!
wNAF_len
||
!
wNAF
||
!
val_sub
)
{
ECerr
(
EC_F_EC_WNAF_MUL
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
wNAF
[
0
]
=
NULL
;
/* preliminary pivot */
...
...
@@ -538,6 +561,7 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
wNAF
[
i
]
=
OPENSSL_malloc
(
wNAF_len
[
i
]);
if
(
wNAF
[
i
]
==
NULL
)
{
ECerr
(
EC_F_EC_WNAF_MUL
,
ERR_R_MALLOC_FAILURE
);
OPENSSL_free
(
tmp_wNAF
);
goto
err
;
}
...
...
@@ -564,7 +588,11 @@ int ec_wNAF_mul(const EC_GROUP *group, EC_POINT *r, const BIGNUM *scalar,
* 'val_sub[i]' is a pointer to the subarray for the i-th point,
* or to a subarray of 'pre_comp->points' if we already have precomputation. */
val
=
OPENSSL_malloc
((
num_val
+
1
)
*
sizeof
val
[
0
]);
if
(
val
==
NULL
)
goto
err
;
if
(
val
==
NULL
)
{
ECerr
(
EC_F_EC_WNAF_MUL
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
val
[
num_val
]
=
NULL
;
/* pivot element */
/* allocate points for precomputation */
...
...
crypto/ec/ectest.c
浏览文件 @
19f6c524
...
...
@@ -649,13 +649,15 @@ void prime_field_tests()
if
(
!
EC_POINT_is_at_infinity
(
group
,
R
))
ABORT
;
/* R = P + 2Q */
{
const
EC_POINT
*
points
[
3
];
const
BIGNUM
*
scalars
[
3
];
const
EC_POINT
*
points
[
4
];
const
BIGNUM
*
scalars
[
4
];
BIGNUM
scalar3
;
if
(
EC_POINT_is_at_infinity
(
group
,
Q
))
ABORT
;
points
[
0
]
=
Q
;
points
[
1
]
=
Q
;
points
[
2
]
=
Q
;
points
[
3
]
=
Q
;
if
(
!
BN_add
(
y
,
z
,
BN_value_one
()))
ABORT
;
if
(
BN_is_odd
(
y
))
ABORT
;
...
...
@@ -694,10 +696,16 @@ void prime_field_tests()
scalars
[
1
]
=
y
;
scalars
[
2
]
=
z
;
/* z = -(x+y) */
if
(
!
EC_POINTs_mul
(
group
,
P
,
NULL
,
3
,
points
,
scalars
,
ctx
))
ABORT
;
BN_init
(
&
scalar3
);
BN_zero
(
&
scalar3
);
scalars
[
3
]
=
&
scalar3
;
if
(
!
EC_POINTs_mul
(
group
,
P
,
NULL
,
4
,
points
,
scalars
,
ctx
))
ABORT
;
if
(
!
EC_POINT_is_at_infinity
(
group
,
P
))
ABORT
;
fprintf
(
stdout
,
" ok
\n\n
"
);
BN_free
(
&
scalar3
);
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录