Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
ca04d7a2
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看板
提交
ca04d7a2
编写于
10月 06, 2005
作者:
A
Andy Polyakov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Leave the decision to call/implement bn_sqr_mont to assembler developer.
上级
40a3c123
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
34 addition
and
29 deletion
+34
-29
crypto/bn/bn.h
crypto/bn/bn.h
+1
-2
crypto/bn/bn_asm.c
crypto/bn/bn_asm.c
+26
-19
crypto/bn/bn_mont.c
crypto/bn/bn_mont.c
+7
-8
未找到文件。
crypto/bn/bn.h
浏览文件 @
ca04d7a2
...
...
@@ -729,8 +729,7 @@ int RAND_pseudo_bytes(unsigned char *buf,int num);
bn_pollute(a); \
}
void
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
);
void
bn_sqr_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
);
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
);
BN_ULONG
bn_mul_add_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
int
num
,
BN_ULONG
w
);
BN_ULONG
bn_mul_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
int
num
,
BN_ULONG
w
);
void
bn_sqr_words
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
int
num
);
...
...
crypto/bn/bn_asm.c
浏览文件 @
ca04d7a2
...
...
@@ -831,13 +831,14 @@ void bn_sqr_comba4(BN_ULONG *r, const BN_ULONG *a)
#ifdef OPENSSL_BN_ASM_MONT
/*
* This is essentially reference implementation, which may or may not
* result in performance improvement. E.g. on IA-32 this does give 40%
* faster rsa1024 private key operations and 10% faster rsa4096 ones,
* while on AMD64 it improves rsa1024 sign only by 10% and *worsens*
* rsa4096 sign by 15%. Once again, it's a reference implementation,
* one to be used as start-point for platform-specific assembler.
* result in performance improvement. E.g. on IA-32 this routine was
* observed to give 40% faster rsa1024 private key operations and 10%
* faster rsa4096 ones, while on AMD64 it improves rsa1024 sign only
* by 10% and *worsens* rsa4096 sign by 15%. Once again, it's a
* reference implementation, one to be used as start-point for
* platform-specific assembler.
*/
void
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
{
BN_ULONG
c0
,
c1
,
ml
,
*
tp
;
#ifdef mul64
...
...
@@ -846,6 +847,9 @@ void bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_
volatile
BN_ULONG
*
vp
;
int
i
=
0
,
j
;
#if 0 /* template for platform-specific implementation */
if (ap==bp) return bn_sqr_mont(rp,ap,np,n0,num);
#endif
vp
=
tp
=
alloca
((
num
+
2
)
*
sizeof
(
BN_ULONG
));
tp
[
num
]
=
bn_mul_words
(
tp
,
ap
,
num
,
bp
[
0
]);
...
...
@@ -890,18 +894,22 @@ void bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_
if
(
tp
[
num
]
!=
0
||
c0
==
0
)
{
for
(
i
=
0
;
i
<
num
+
2
;
i
++
)
vp
[
i
]
=
0
;
return
;
return
1
;
}
}
for
(
i
=
0
;
i
<
num
;
i
++
)
rp
[
i
]
=
tp
[
i
],
vp
[
i
]
=
0
;
vp
[
num
]
=
0
;
vp
[
num
+
1
]
=
0
;
return
1
;
}
void
bn_sqr_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
{
bn_mul_mont
(
rp
,
ap
,
ap
,
np
,
n0
,
num
);
}
#else
/*
* Return value of 0 indicates that multiplication/convolution was not
* performed to signal the caller to fall down to alternative/original
* code-path.
*/
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
{
return
0
;
}
#endif
/* OPENSSL_BN_ASM_MONT */
#else
/* !BN_MUL_COMBA */
...
...
@@ -942,7 +950,7 @@ void bn_mul_comba8(BN_ULONG *r, BN_ULONG *a, BN_ULONG *b)
}
#ifdef OPENSSL_BN_ASM_MONT
void
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
{
BN_ULONG
c0
,
c1
,
*
tp
;
volatile
BN_ULONG
*
vp
;
...
...
@@ -972,18 +980,17 @@ void bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp, const BN_
if
(
tp
[
num
]
!=
0
||
c0
==
0
)
{
for
(
i
=
0
;
i
<
num
+
2
;
i
++
)
vp
[
i
]
=
0
;
return
;
return
1
;
}
}
for
(
i
=
0
;
i
<
num
;
i
++
)
rp
[
i
]
=
tp
[
i
],
vp
[
i
]
=
0
;
vp
[
num
]
=
0
;
vp
[
num
+
1
]
=
0
;
return
1
;
}
void
bn_sqr_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
{
bn_mul_mont
(
rp
,
ap
,
ap
,
np
,
n0
,
num
);
}
#else
int
bn_mul_mont
(
BN_ULONG
*
rp
,
const
BN_ULONG
*
ap
,
const
BN_ULONG
*
bp
,
const
BN_ULONG
*
np
,
BN_ULONG
n0
,
int
num
)
{
return
0
;
}
#endif
/* OPENSSL_BN_ASM_MONT */
#endif
/* !BN_MUL_COMBA */
crypto/bn/bn_mont.c
浏览文件 @
ca04d7a2
...
...
@@ -80,14 +80,13 @@ int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
if
(
num
>
1
&&
a
->
top
==
num
&&
b
->
top
==
num
)
{
if
(
bn_wexpand
(
r
,
num
)
==
NULL
)
return
0
;
r
->
neg
=
a
->
neg
^
b
->
neg
;
r
->
top
=
num
;
if
(
a
==
b
)
bn_sqr_mont
(
r
->
d
,
a
->
d
,
mont
->
N
.
d
,
mont
->
n0
,
num
);
else
bn_mul_mont
(
r
->
d
,
a
->
d
,
b
->
d
,
mont
->
N
.
d
,
mont
->
n0
,
num
);
bn_fix_top
(
r
);
return
1
;
if
(
bn_mul_mont
(
r
->
d
,
a
->
d
,
b
->
d
,
mont
->
N
.
d
,
mont
->
n0
,
num
))
{
r
->
neg
=
a
->
neg
^
b
->
neg
;
r
->
top
=
num
;
bn_fix_top
(
r
);
return
1
;
}
}
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录