Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
btwise
openssl
提交
a4d5269e
O
openssl
项目概览
btwise
/
openssl
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
openssl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
a4d5269e
编写于
4月 27, 2015
作者:
E
Emilia Kasper
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
NISTZ256: don't swallow malloc errors
Reviewed-by:
N
Rich Salz
<
rsalz@openssl.org
>
上级
4446044a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
12 addition
and
12 deletion
+12
-12
crypto/ec/ecp_nistz256.c
crypto/ec/ecp_nistz256.c
+12
-12
未找到文件。
crypto/ec/ecp_nistz256.c
浏览文件 @
a4d5269e
...
...
@@ -553,14 +553,14 @@ static int ecp_nistz256_bignum_to_field_elem(BN_ULONG out[P256_LIMBS],
}
/* r = sum(scalar[i]*point[i]) */
static
void
ecp_nistz256_windowed_mul
(
const
EC_GROUP
*
group
,
static
int
ecp_nistz256_windowed_mul
(
const
EC_GROUP
*
group
,
P256_POINT
*
r
,
const
BIGNUM
**
scalar
,
const
EC_POINT
**
point
,
size_t
num
,
BN_CTX
*
ctx
)
{
size_t
i
;
int
j
;
int
j
,
ret
=
0
;
unsigned
int
idx
;
unsigned
char
(
*
p_str
)[
33
]
=
NULL
;
const
unsigned
int
window_size
=
5
;
...
...
@@ -719,6 +719,7 @@ static void ecp_nistz256_windowed_mul(const EC_GROUP *group,
ecp_nistz256_point_add
(
r
,
r
,
&
temp
[
0
]);
}
ret
=
1
;
err:
if
(
table_storage
)
OPENSSL_free
(
table_storage
);
...
...
@@ -726,6 +727,7 @@ static void ecp_nistz256_windowed_mul(const EC_GROUP *group,
OPENSSL_free
(
p_str
);
if
(
scalars
)
OPENSSL_free
(
scalars
);
return
ret
;
}
/* Coordinates of G, for which we have precomputed tables */
...
...
@@ -1134,6 +1136,8 @@ static int ecp_nistz256_points_mul(const EC_GROUP *group,
const
EC_PRE_COMP
*
pre_comp
=
NULL
;
const
EC_POINT
*
generator
=
NULL
;
BN_CTX
*
new_ctx
=
NULL
;
const
BIGNUM
**
new_scalars
=
NULL
;
const
EC_POINT
**
new_points
=
NULL
;
unsigned
int
idx
=
0
;
const
unsigned
int
window_size
=
7
;
const
unsigned
int
mask
=
(
1
<<
(
window_size
+
1
))
-
1
;
...
...
@@ -1298,9 +1302,6 @@ static int ecp_nistz256_points_mul(const EC_GROUP *group,
* Without a precomputed table for the generator, it has to be
* handled like a normal point.
*/
const
BIGNUM
**
new_scalars
;
const
EC_POINT
**
new_points
;
new_scalars
=
OPENSSL_malloc
((
num
+
1
)
*
sizeof
(
BIGNUM
*
));
if
(
!
new_scalars
)
{
ECerr
(
EC_F_ECP_NISTZ256_POINTS_MUL
,
ERR_R_MALLOC_FAILURE
);
...
...
@@ -1309,7 +1310,6 @@ static int ecp_nistz256_points_mul(const EC_GROUP *group,
new_points
=
OPENSSL_malloc
((
num
+
1
)
*
sizeof
(
EC_POINT
*
));
if
(
!
new_points
)
{
OPENSSL_free
(
new_scalars
);
ECerr
(
EC_F_ECP_NISTZ256_POINTS_MUL
,
ERR_R_MALLOC_FAILURE
);
goto
err
;
}
...
...
@@ -1329,17 +1329,13 @@ static int ecp_nistz256_points_mul(const EC_GROUP *group,
if
(
p_is_infinity
)
out
=
&
p
.
p
;
ecp_nistz256_windowed_mul
(
group
,
out
,
scalars
,
points
,
num
,
ctx
);
if
(
!
ecp_nistz256_windowed_mul
(
group
,
out
,
scalars
,
points
,
num
,
ctx
))
goto
err
;
if
(
!
p_is_infinity
)
ecp_nistz256_point_add
(
&
p
.
p
,
&
p
.
p
,
out
);
}
if
(
no_precomp_for_generator
)
{
OPENSSL_free
(
points
);
OPENSSL_free
(
scalars
);
}
/* Not constant-time, but we're only operating on the public output. */
if
(
!
bn_set_words
(
r
->
X
,
p
.
p
.
X
,
P256_LIMBS
)
||
!
bn_set_words
(
r
->
Y
,
p
.
p
.
Y
,
P256_LIMBS
)
||
...
...
@@ -1354,6 +1350,10 @@ err:
if
(
ctx
)
BN_CTX_end
(
ctx
);
BN_CTX_free
(
new_ctx
);
if
(
new_points
)
OPENSSL_free
(
new_points
);
if
(
new_scalars
)
OPENSSL_free
(
new_scalars
);
return
ret
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录