Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
cae55bfc
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看板
提交
cae55bfc
编写于
2月 06, 2000
作者:
U
Ulf Möller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve bntest slightly, and fix another bug in the BN library.
上级
0fad6cb7
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
137 addition
and
80 deletion
+137
-80
CHANGES
CHANGES
+7
-0
crypto/bn/bn_ctx.c
crypto/bn/bn_ctx.c
+1
-1
crypto/bn/bn_recp.c
crypto/bn/bn_recp.c
+1
-0
crypto/bn/bntest.c
crypto/bn/bntest.c
+113
-68
doc/crypto/BN_mod_mul_reciprocal.pod
doc/crypto/BN_mod_mul_reciprocal.pod
+10
-3
test/Makefile.ssl
test/Makefile.ssl
+5
-8
未找到文件。
CHANGES
浏览文件 @
cae55bfc
...
...
@@ -4,6 +4,13 @@
Changes between 0.9.4 and 0.9.5 [xx XXX 2000]
*) Bug fix for BN_div_recp() for numerators with an even number of
bits.
[Ulf Möller]
*) More tests in bntest.c, and changed test_bn output.
[Ulf Möller]
*) ./config recognizes MacOS X now.
[Andy Polyakov]
...
...
crypto/bn/bn_ctx.c
浏览文件 @
cae55bfc
...
...
@@ -119,7 +119,7 @@ BIGNUM *BN_CTX_get(BN_CTX *ctx)
if
(
!
ctx
->
too_many
)
{
BNerr
(
BN_F_BN_CTX_GET
,
BN_R_TOO_MANY_TEMPORARY_VARIABLES
);
/* disable error code until
SSL
_CTX_end is called: */
/* disable error code until
BN
_CTX_end is called: */
ctx
->
too_many
=
1
;
}
return
NULL
;
...
...
crypto/bn/bn_recp.c
浏览文件 @
cae55bfc
...
...
@@ -158,6 +158,7 @@ int BN_div_recp(BIGNUM *dv, BIGNUM *rem, BIGNUM *m, BN_RECP_CTX *recp,
*
*/
i
=
BN_num_bits
(
m
);
if
(
i
%
2
)
i
--
;
j
=
recp
->
num_bits
*
2
;
if
(
j
>
i
)
...
...
crypto/bn/bntest.c
浏览文件 @
cae55bfc
...
...
@@ -72,6 +72,10 @@
#include "../bio/bss_file.c"
#endif
const
num0
=
100
;
/* number of tests */
const
num1
=
50
;
/* additional tests for some functions */
const
num2
=
5
;
/* number of tests for slow functions */
int
test_add
(
BIO
*
bp
);
int
test_sub
(
BIO
*
bp
);
int
test_lshift1
(
BIO
*
bp
);
...
...
@@ -100,6 +104,16 @@ static unsigned char lst[]="\xC6\x4F\x43\x04\x2A\xEA\xCA\x6E\x58\x36\x80\x5B\xE8
static
const
char
rnd_seed
[]
=
"string to make the random number generator think it has entropy"
;
void
message
(
BIO
*
out
,
char
*
m
)
{
fprintf
(
stderr
,
"test %s
\n
"
,
m
);
#if 1
BIO_puts
(
out
,
"print
\"
test "
);
BIO_puts
(
out
,
m
);
BIO_puts
(
out
,
"
\\
n
\"\n
"
);
#endif
}
int
main
(
int
argc
,
char
*
argv
[])
{
BN_CTX
*
ctx
;
...
...
@@ -149,68 +163,68 @@ int main(int argc, char *argv[])
if
(
!
results
)
BIO_puts
(
out
,
"obase=16
\n
ibase=16
\n
"
);
fprintf
(
stderr
,
"test BN_add
\n
"
);
message
(
out
,
"BN_add
"
);
if
(
!
test_add
(
out
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_sub
\n
"
);
message
(
out
,
"BN_sub
"
);
if
(
!
test_sub
(
out
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_lshift1
\n
"
);
message
(
out
,
"BN_lshift1
"
);
if
(
!
test_lshift1
(
out
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_lshift (fixed)
\n
"
);
message
(
out
,
"BN_lshift (fixed)
"
);
if
(
!
test_lshift
(
out
,
ctx
,
BN_bin2bn
(
lst
,
sizeof
(
lst
)
-
1
,
NULL
)))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_lshift
\n
"
);
message
(
out
,
"BN_lshift
"
);
if
(
!
test_lshift
(
out
,
ctx
,
NULL
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_rshift1
\n
"
);
message
(
out
,
"BN_rshift1
"
);
if
(
!
test_rshift1
(
out
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_rshift
\n
"
);
message
(
out
,
"BN_rshift
"
);
if
(
!
test_rshift
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_sqr
\n
"
);
message
(
out
,
"BN_sqr
"
);
if
(
!
test_sqr
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_mul
\n
"
);
message
(
out
,
"BN_mul
"
);
if
(
!
test_mul
(
out
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_div
\n
"
);
message
(
out
,
"BN_div
"
);
if
(
!
test_div
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_div_recp
\n
"
);
message
(
out
,
"BN_div_recp
"
);
if
(
!
test_div_recp
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_mod
\n
"
);
message
(
out
,
"BN_mod
"
);
if
(
!
test_mod
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_mod_mul
\n
"
);
message
(
out
,
"BN_mod_mul
"
);
if
(
!
test_mod_mul
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_mont
\n
"
);
message
(
out
,
"BN_mont
"
);
if
(
!
test_mont
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_mod_exp
\n
"
);
message
(
out
,
"BN_mod_exp
"
);
if
(
!
test_mod_exp
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
fprintf
(
stderr
,
"test BN_exp
\n
"
);
message
(
out
,
"BN_exp
"
);
if
(
!
test_exp
(
out
,
ctx
))
goto
err
;
fflush
(
stdout
);
...
...
@@ -222,7 +236,7 @@ int main(int argc, char *argv[])
err:
BIO_puts
(
out
,
"1
\n
"
);
/* make sure bc fails if we are piping to it */
ERR_load_crypto_strings
();
ERR_print_errors
(
out
);
ERR_print_errors
_fp
(
stderr
);
exit
(
1
);
return
(
1
);
}
...
...
@@ -238,7 +252,7 @@ int test_add(BIO *bp)
BN_init
(
&
c
);
BN_rand
(
&
a
,
512
,
0
,
0
);
for
(
i
=
0
;
i
<
10
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_rand
(
&
b
,
450
+
i
,
0
,
0
);
a
.
neg
=
rand_neg
();
...
...
@@ -265,7 +279,7 @@ int test_add(BIO *bp)
BN_add
(
&
c
,
&
c
,
&
a
);
if
(
!
BN_is_zero
(
&
c
))
{
BIO_puts
(
bp
,
"Add test failed!
\n
"
);
fprintf
(
stderr
,
"Add test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -285,12 +299,21 @@ int test_sub(BIO *bp)
BN_init
(
&
b
);
BN_init
(
&
c
);
BN_rand
(
&
a
,
512
,
0
,
0
);
for
(
i
=
0
;
i
<
100
;
i
++
)
for
(
i
=
0
;
i
<
num0
+
num1
;
i
++
)
{
BN_rand
(
&
b
,
400
+
i
,
0
,
0
);
a
.
neg
=
rand_neg
();
b
.
neg
=
rand_neg
();
if
(
i
<
num1
)
{
BN_rand
(
&
a
,
512
,
0
,
0
);
BN_copy
(
&
b
,
&
a
);
if
(
BN_set_bit
(
&
a
,
i
)
==
0
)
return
(
0
);
BN_add_word
(
&
b
,
i
);
}
else
{
BN_rand
(
&
b
,
400
+
i
-
num1
,
0
,
0
);
a
.
neg
=
rand_neg
();
b
.
neg
=
rand_neg
();
}
if
(
bp
==
NULL
)
for
(
j
=
0
;
j
<
10000
;
j
++
)
BN_sub
(
&
c
,
&
a
,
&
b
);
...
...
@@ -311,7 +334,7 @@ int test_sub(BIO *bp)
BN_sub
(
&
c
,
&
c
,
&
a
);
if
(
!
BN_is_zero
(
&
c
))
{
BIO_puts
(
bp
,
"Subtract test failed!
\n
"
);
fprintf
(
stderr
,
"Subtract test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -333,10 +356,17 @@ int test_div(BIO *bp, BN_CTX *ctx)
BN_init
(
&
d
);
BN_init
(
&
e
);
BN_rand
(
&
a
,
400
,
0
,
0
);
for
(
i
=
0
;
i
<
100
;
i
++
)
for
(
i
=
0
;
i
<
num0
+
num1
;
i
++
)
{
BN_rand
(
&
b
,
50
+
i
,
0
,
0
);
if
(
i
<
num1
)
{
BN_rand
(
&
a
,
400
,
0
,
0
);
BN_copy
(
&
b
,
&
a
);
BN_lshift
(
&
a
,
&
a
,
i
);
BN_add_word
(
&
a
,
i
);
}
else
BN_rand
(
&
b
,
50
+
3
*
(
i
-
num1
),
0
,
0
);
a
.
neg
=
rand_neg
();
b
.
neg
=
rand_neg
();
if
(
bp
==
NULL
)
...
...
@@ -370,7 +400,7 @@ int test_div(BIO *bp, BN_CTX *ctx)
BN_sub
(
&
d
,
&
d
,
&
a
);
if
(
!
BN_is_zero
(
&
d
))
{
BIO_puts
(
bp
,
"Division test failed!
\n
"
);
fprintf
(
stderr
,
"Division test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -396,10 +426,17 @@ int test_div_recp(BIO *bp, BN_CTX *ctx)
BN_init
(
&
d
);
BN_init
(
&
e
);
BN_rand
(
&
a
,
400
,
0
,
0
);
for
(
i
=
0
;
i
<
100
;
i
++
)
for
(
i
=
0
;
i
<
num0
+
num1
;
i
++
)
{
BN_rand
(
&
b
,
50
+
i
,
0
,
0
);
if
(
i
<
num1
)
{
BN_rand
(
&
a
,
400
,
0
,
0
);
BN_copy
(
&
b
,
&
a
);
BN_lshift
(
&
a
,
&
a
,
i
);
BN_add_word
(
&
a
,
i
);
}
else
BN_rand
(
&
b
,
50
+
3
*
(
i
-
num1
),
0
,
0
);
a
.
neg
=
rand_neg
();
b
.
neg
=
rand_neg
();
BN_RECP_CTX_set
(
&
recp
,
&
b
,
ctx
);
...
...
@@ -434,7 +471,12 @@ int test_div_recp(BIO *bp, BN_CTX *ctx)
BN_sub
(
&
d
,
&
d
,
&
a
);
if
(
!
BN_is_zero
(
&
d
))
{
BIO_puts
(
bp
,
"Reciprocal division test failed!
\n
"
);
fprintf
(
stderr
,
"Reciprocal division test failed!
\n
"
);
fprintf
(
stderr
,
"a="
);
BN_print_fp
(
stderr
,
&
a
);
fprintf
(
stderr
,
"
\n
b="
);
BN_print_fp
(
stderr
,
&
b
);
fprintf
(
stderr
,
"
\n
"
);
return
0
;
}
}
...
...
@@ -461,11 +503,15 @@ int test_mul(BIO *bp)
BN_init
(
&
d
);
BN_init
(
&
e
);
BN_rand
(
&
a
,
200
,
0
,
0
);
for
(
i
=
0
;
i
<
100
;
i
++
)
for
(
i
=
0
;
i
<
num0
+
num1
;
i
++
)
{
BN_rand
(
&
b
,
250
+
i
,
0
,
0
);
BN_rand
(
&
b
,
200
,
0
,
0
);
if
(
i
<
num1
)
{
BN_rand
(
&
a
,
100
,
0
,
0
);
BN_rand
(
&
b
,
100
,
0
,
0
);
}
else
BN_rand
(
&
b
,
i
-
num1
,
0
,
0
);
a
.
neg
=
rand_neg
();
b
.
neg
=
rand_neg
();
if
(
bp
==
NULL
)
...
...
@@ -488,7 +534,7 @@ int test_mul(BIO *bp)
BN_sub
(
&
d
,
&
d
,
&
b
);
if
(
!
BN_is_zero
(
&
d
)
||
!
BN_is_zero
(
&
e
))
{
BIO_puts
(
bp
,
"Multiplication test failed!
\n
"
);
fprintf
(
stderr
,
"Multiplication test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -512,7 +558,7 @@ int test_sqr(BIO *bp, BN_CTX *ctx)
BN_init
(
&
d
);
BN_init
(
&
e
);
for
(
i
=
0
;
i
<
4
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_rand
(
&
a
,
40
+
i
*
10
,
0
,
0
);
a
.
neg
=
rand_neg
();
...
...
@@ -536,7 +582,7 @@ int test_sqr(BIO *bp, BN_CTX *ctx)
BN_sub
(
&
d
,
&
d
,
&
a
);
if
(
!
BN_is_zero
(
&
d
)
||
!
BN_is_zero
(
&
e
))
{
BIO_puts
(
bp
,
"Square test failed!
\n
"
);
fprintf
(
stderr
,
"Square test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -567,7 +613,7 @@ int test_mont(BIO *bp, BN_CTX *ctx)
BN_rand
(
&
a
,
100
,
0
,
0
);
/**/
BN_rand
(
&
b
,
100
,
0
,
0
);
/**/
for
(
i
=
0
;
i
<
10
;
i
++
)
for
(
i
=
0
;
i
<
num2
;
i
++
)
{
int
bits
=
(
100
%
BN_BITS2
+
1
)
*
BN_BITS2
*
i
*
BN_BITS2
;
...
...
@@ -608,7 +654,7 @@ BN_num_bits(mont->N));
BN_sub
(
&
d
,
&
d
,
&
A
);
if
(
!
BN_is_zero
(
&
d
))
{
BIO_puts
(
bp
,
"Montgomery multiplication test failed!
\n
"
);
fprintf
(
stderr
,
"Montgomery multiplication test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -636,7 +682,7 @@ int test_mod(BIO *bp, BN_CTX *ctx)
e
=
BN_new
();
BN_rand
(
a
,
1024
,
0
,
0
);
/**/
for
(
i
=
0
;
i
<
2
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_rand
(
b
,
450
+
i
*
10
,
0
,
0
);
/**/
a
->
neg
=
rand_neg
();
...
...
@@ -661,7 +707,7 @@ int test_mod(BIO *bp, BN_CTX *ctx)
BN_sub
(
e
,
e
,
c
);
if
(
!
BN_is_zero
(
e
))
{
BIO_puts
(
bp
,
"Modulo test failed!
\n
"
);
fprintf
(
stderr
,
"Modulo test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -685,9 +731,8 @@ int test_mod_mul(BIO *bp, BN_CTX *ctx)
e
=
BN_new
();
BN_rand
(
c
,
1024
,
0
,
0
);
/**/
for
(
i
=
0
;
i
<
1
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_rand
(
a
,
475
+
i
*
10
,
0
,
0
);
/**/
BN_rand
(
b
,
425
+
i
*
10
,
0
,
0
);
/**/
a
->
neg
=
rand_neg
();
b
->
neg
=
rand_neg
();
...
...
@@ -723,7 +768,7 @@ int test_mod_mul(BIO *bp, BN_CTX *ctx)
BN_div
(
a
,
b
,
d
,
c
,
ctx
);
if
(
!
BN_is_zero
(
b
))
{
BIO_puts
(
bp
,
"Modulo multiply test failed!
\n
"
);
fprintf
(
stderr
,
"Modulo multiply test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -747,7 +792,7 @@ int test_mod_exp(BIO *bp, BN_CTX *ctx)
e
=
BN_new
();
BN_rand
(
c
,
30
,
0
,
1
);
/* must be odd for montgomery */
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
num2
;
i
++
)
{
BN_rand
(
a
,
20
+
i
*
5
,
0
,
0
);
/**/
BN_rand
(
b
,
2
+
i
,
0
,
0
);
/**/
...
...
@@ -774,7 +819,7 @@ int test_mod_exp(BIO *bp, BN_CTX *ctx)
BN_div
(
a
,
b
,
e
,
c
,
ctx
);
if
(
!
BN_is_zero
(
b
))
{
BIO_puts
(
bp
,
"Modulo exponentiation test failed!
\n
"
);
fprintf
(
stderr
,
"Modulo exponentiation test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -798,7 +843,7 @@ int test_exp(BIO *bp, BN_CTX *ctx)
one
=
BN_new
();
BN_one
(
one
);
for
(
i
=
0
;
i
<
6
;
i
++
)
for
(
i
=
0
;
i
<
num2
;
i
++
)
{
BN_rand
(
a
,
20
+
i
*
5
,
0
,
0
);
/**/
BN_rand
(
b
,
2
+
i
,
0
,
0
);
/**/
...
...
@@ -824,7 +869,7 @@ int test_exp(BIO *bp, BN_CTX *ctx)
BN_sub
(
e
,
e
,
d
);
if
(
!
BN_is_zero
(
e
))
{
BIO_puts
(
bp
,
"Exponentiation test failed!
\n
"
);
fprintf
(
stderr
,
"Exponentiation test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -854,7 +899,7 @@ int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)
BN_rand
(
a
,
200
,
0
,
0
);
/**/
a
->
neg
=
rand_neg
();
}
for
(
i
=
0
;
i
<
7
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_lshift
(
b
,
a
,
i
+
1
);
BN_add
(
c
,
c
,
c
);
...
...
@@ -874,16 +919,16 @@ int test_lshift(BIO *bp,BN_CTX *ctx,BIGNUM *a_)
BN_sub
(
d
,
d
,
b
);
if
(
!
BN_is_zero
(
d
))
{
BIO_puts
(
bp
,
"Left shift test failed!
\n
"
);
BIO_puts
(
bp
,
"a="
);
BN_print
(
bp
,
a
);
BIO_puts
(
bp
,
"
\n
b="
);
BN_print
(
bp
,
b
);
BIO_puts
(
bp
,
"
\n
c="
);
BN_print
(
bp
,
c
);
BIO_puts
(
bp
,
"
\n
d="
);
BN_print
(
bp
,
d
);
BIO_puts
(
bp
,
"
\n
"
);
fprintf
(
stderr
,
"Left shift test failed!
\n
"
);
fprintf
(
stderr
,
"a="
);
BN_print
_fp
(
stderr
,
a
);
fprintf
(
stderr
,
"
\n
b="
);
BN_print
_fp
(
stderr
,
b
);
fprintf
(
stderr
,
"
\n
c="
);
BN_print
_fp
(
stderr
,
c
);
fprintf
(
stderr
,
"
\n
d="
);
BN_print
_fp
(
stderr
,
d
);
fprintf
(
stderr
,
"
\n
"
);
return
0
;
}
}
...
...
@@ -905,7 +950,7 @@ int test_lshift1(BIO *bp)
BN_rand
(
a
,
200
,
0
,
0
);
/**/
a
->
neg
=
rand_neg
();
for
(
i
=
0
;
i
<
7
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_lshift1
(
b
,
a
);
if
(
bp
!=
NULL
)
...
...
@@ -923,7 +968,7 @@ int test_lshift1(BIO *bp)
BN_sub
(
a
,
b
,
c
);
if
(
!
BN_is_zero
(
a
))
{
BIO_puts
(
bp
,
"Left shift one test failed!
\n
"
);
fprintf
(
stderr
,
"Left shift one test failed!
\n
"
);
return
0
;
}
...
...
@@ -949,7 +994,7 @@ int test_rshift(BIO *bp,BN_CTX *ctx)
BN_rand
(
a
,
200
,
0
,
0
);
/**/
a
->
neg
=
rand_neg
();
for
(
i
=
0
;
i
<
7
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_rshift
(
b
,
a
,
i
+
1
);
BN_add
(
c
,
c
,
c
);
...
...
@@ -969,7 +1014,7 @@ int test_rshift(BIO *bp,BN_CTX *ctx)
BN_sub
(
d
,
d
,
b
);
if
(
!
BN_is_zero
(
d
))
{
BIO_puts
(
bp
,
"Right shift test failed!
\n
"
);
fprintf
(
stderr
,
"Right shift test failed!
\n
"
);
return
0
;
}
}
...
...
@@ -992,7 +1037,7 @@ int test_rshift1(BIO *bp)
BN_rand
(
a
,
200
,
0
,
0
);
/**/
a
->
neg
=
rand_neg
();
for
(
i
=
0
;
i
<
7
0
;
i
++
)
for
(
i
=
0
;
i
<
num
0
;
i
++
)
{
BN_rshift1
(
b
,
a
);
if
(
bp
!=
NULL
)
...
...
@@ -1010,7 +1055,7 @@ int test_rshift1(BIO *bp)
BN_sub
(
c
,
c
,
b
);
if
(
!
BN_is_zero
(
c
)
&&
!
BN_is_one
(
c
))
{
BIO_puts
(
bp
,
"Right shift one test failed!
\n
"
);
fprintf
(
stderr
,
"Right shift one test failed!
\n
"
);
return
0
;
}
BN_copy
(
a
,
b
);
...
...
doc/crypto/BN_mod_mul_reciprocal.pod
浏览文件 @
cae55bfc
...
...
@@ -16,6 +16,9 @@ reciprocal
int BN_RECP_CTX_set(BN_RECP_CTX *recp, const BIGNUM *m, BN_CTX *ctx);
int BN_div_recp(BIGNUM *dv, BIGNUM *rem, BIGNUM *a, BN_RECP_CTX *recp,
BN_CTX *ctx);
int BN_mod_mul_reciprocal(BIGNUM *r, BIGNUM *a, BIGNUM *b,
BN_RECP_CTX *recp, BN_CTX *ctx);
...
...
@@ -33,9 +36,13 @@ BN_RECP_CTX_init() initializes an existing uninitialized B<BN_RECP>.
BN_RECP_CTX_free() frees the components of the B<BN_RECP>, and, if it
was created by BN_RECP_CTX_new(), also the structure itself.
BN_RECP_CTX_set() computes 1/B<m> and shifts it left by
BN_num_bits(B<m>)+1 to make it an integer. The result and the
number of bits it was shifted left are stored in B<recp>.
BN_RECP_CTX_set() stores B<m> in B<recp> and sets it up for computing
1/B<m> and shifting it left by BN_num_bits(B<m>)+1 to make it an
integer. The result and the number of bits it was shifted left will
later be stored in B<recp>.
BN_div_recp() divides B<a> by B<m> using B<recp>. It places the quotient
in B<dv> and the remainder in B<rem>.
The B<BN_RECP_CTX> structure is defined as follows:
...
...
test/Makefile.ssl
浏览文件 @
cae55bfc
...
...
@@ -13,6 +13,7 @@ INSTALLTOP= /usr/local/ssl
MAKEFILE
=
Makefile.ssl
MAKE
=
make
-f
$(MAKEFILE)
MAKEDEPEND
=
$(TOP)
/util/domd
$(TOP)
PERL
=
perl
PEX_LIBS
=
EX_LIBS
=
#-lnsl -lsocket
...
...
@@ -180,14 +181,10 @@ test_pkcs7:
test_bn
:
@
echo
starting big number library
test
, could take a
while
...
# This *should* work:
# @(./$(BNTEST)|bc) | awk '{ \
# Some broken bc's treat the pipe as a terminal :-(
# By using a temporary file, errors detected by awk may be farther away from
# the test that caused them; but even with the pipe there'd be some distance.
@(./$(BNTEST)
>tmp.bntest;
echo
quit
>>tmp.bntest;
bc
tmp.bntest)
|
awk
'{
\
if
($$0
!=
"0"
)
{
print
"error"
;
exit
(
1
)
;
}
\
if
(((
NR+1
)
%64
)
==
0
)
print NR+1,
" tests done"
;
}
'
@
./
$(BNTEST)
>
tmp.bntest
@
echo
quit
>>
tmp.bntest
@
echo
"running bc"
@
bc tmp.bntest 2>&1 |
$(PERL)
-e
'while (<STDIN>) {if (/^test (.*)/) {print STDERR "\nverify $$1";} elsif (!/^0$$/) {die "\nFailed! bc: $$_";} print STDERR "."; $$i++;} print STDERR "\n$$i tests passed\n"'
@
echo
'test a^b%c implementations'
./
$(EXPTEST)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录