Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
ac445acf
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
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,发现更多精彩内容 >>
提交
ac445acf
编写于
11月 30, 2000
作者:
B
Bodo Möller
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
bn_modfs.c is no longer needed, a BN_sqrt implementation
exists in bn_sqrt.c now
上级
77ac92d0
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
0 addition
and
151 deletion
+0
-151
crypto/bn/bn_modfs.c
crypto/bn/bn_modfs.c
+0
-131
crypto/bn/bn_modfs.h
crypto/bn/bn_modfs.h
+0
-20
未找到文件。
crypto/bn/bn_modfs.c
已删除
100644 → 0
浏览文件 @
77ac92d0
/*
*
* bn_modfs.c
*
* Some Modular Arithmetic Functions.
*
* Copyright (C) Lenka Fibikova 2000
*
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "bn_modfs.h"
#define MAX_ROUNDS 10
int
BN_mod_sqrt
(
BIGNUM
*
x
,
BIGNUM
*
a
,
BIGNUM
*
p
,
BN_CTX
*
ctx
)
/* x^2 = a (mod p) */
{
int
ret
;
BIGNUM
*
n0
,
*
n1
,
*
r
,
*
b
,
*
m
;
int
max
;
assert
(
x
!=
NULL
&&
a
!=
NULL
&&
p
!=
NULL
&&
ctx
!=
NULL
);
assert
(
BN_cmp
(
a
,
p
)
<
0
);
ret
=
BN_kronecker
(
a
,
p
,
ctx
);
if
(
ret
<
0
||
ret
>
1
)
return
0
;
if
(
ret
==
0
)
{
if
(
!
BN_zero
(
x
))
return
0
;
return
1
;
}
BN_CTX_start
(
ctx
);
n0
=
BN_CTX_get
(
ctx
);
n1
=
BN_CTX_get
(
ctx
);
if
(
n1
==
NULL
)
goto
err
;
if
((
r
=
BN_new
())
==
NULL
)
goto
err
;
if
((
b
=
BN_new
())
==
NULL
)
goto
err
;
if
((
m
=
BN_new
())
==
NULL
)
goto
err
;
if
(
!
BN_zero
(
n0
))
goto
err
;
if
(
!
BN_zero
(
n1
))
goto
err
;
if
(
!
BN_zero
(
r
))
goto
err
;
if
(
!
BN_zero
(
b
))
goto
err
;
if
(
!
BN_zero
(
m
))
goto
err
;
max
=
0
;
do
{
if
(
max
++
>
MAX_ROUNDS
)
goto
err
;
/* if p is not prime could never stop*/
if
(
!
BN_add_word
(
m
,
1
))
goto
err
;
ret
=
BN_kronecker
(
m
,
p
,
ctx
);
if
(
ret
<
-
1
||
ret
>
1
)
goto
err
;
}
while
(
ret
!=
-
1
);
if
(
BN_copy
(
n1
,
p
)
==
NULL
)
goto
err
;
if
(
!
BN_sub_word
(
n1
,
1
))
goto
err
;
while
(
!
BN_is_odd
(
n1
))
{
if
(
!
BN_add_word
(
r
,
1
))
goto
err
;
if
(
!
BN_rshift1
(
n1
,
n1
))
goto
err
;
}
if
(
!
BN_mod_exp_simple
(
n0
,
m
,
n1
,
p
,
ctx
))
goto
err
;
if
(
!
BN_sub_word
(
n1
,
1
))
goto
err
;
if
(
!
BN_rshift1
(
n1
,
n1
))
goto
err
;
if
(
!
BN_mod_exp_simple
(
x
,
a
,
n1
,
p
,
ctx
))
goto
err
;
if
(
!
BN_mod_sqr
(
b
,
x
,
p
,
ctx
))
goto
err
;
if
(
!
BN_mod_mul
(
b
,
b
,
a
,
p
,
ctx
))
goto
err
;
if
(
!
BN_mod_mul
(
x
,
x
,
a
,
p
,
ctx
))
goto
err
;
while
(
!
BN_is_one
(
b
))
{
if
(
!
BN_one
(
m
))
goto
err
;
if
(
!
BN_mod_sqr
(
n1
,
b
,
p
,
ctx
))
goto
err
;
while
(
!
BN_is_one
(
n1
))
{
if
(
!
BN_mod_mul
(
n1
,
n1
,
n1
,
p
,
ctx
))
goto
err
;
if
(
!
BN_add_word
(
m
,
1
))
goto
err
;
}
if
(
!
BN_sub
(
r
,
r
,
m
))
goto
err
;
if
(
!
BN_sub_word
(
r
,
1
))
goto
err
;
if
(
r
->
neg
)
goto
err
;
if
(
BN_copy
(
n1
,
n0
)
==
NULL
)
goto
err
;
while
(
!
BN_is_zero
(
r
))
{
if
(
!
BN_mod_mul
(
n1
,
n1
,
n1
,
p
,
ctx
))
goto
err
;
if
(
!
BN_sub_word
(
r
,
1
))
goto
err
;
}
if
(
!
BN_mod_mul
(
n0
,
n1
,
n1
,
p
,
ctx
))
goto
err
;
if
(
BN_copy
(
r
,
m
)
==
NULL
)
goto
err
;
if
(
!
BN_mod_mul
(
x
,
x
,
n1
,
p
,
ctx
))
goto
err
;
if
(
!
BN_mod_mul
(
b
,
b
,
n0
,
p
,
ctx
))
goto
err
;
}
#ifdef TEST
BN_mod_sqr
(
n0
,
x
,
p
,
ctx
);
if
(
BN_cmp
(
n0
,
a
))
goto
err
;
#endif
if
(
r
!=
NULL
)
BN_clear_free
(
r
);
if
(
b
!=
NULL
)
BN_clear_free
(
b
);
if
(
m
!=
NULL
)
BN_clear_free
(
m
);
BN_CTX_end
(
ctx
);
return
1
;
err:
if
(
r
!=
NULL
)
BN_clear_free
(
r
);
if
(
b
!=
NULL
)
BN_clear_free
(
b
);
if
(
m
!=
NULL
)
BN_clear_free
(
m
);
BN_CTX_end
(
ctx
);
return
0
;
}
crypto/bn/bn_modfs.h
已删除
100644 → 0
浏览文件 @
77ac92d0
/*
*
* bn_modfs.h
*
* Some Modular Arithmetic Functions.
*
* Copyright (C) Lenka Fibikova 2000
*
*
*/
#ifndef HEADER_BN_MODFS_H
#define HEADER_BN_MODFS_H
#include <openssl/bn.h>
int
BN_mod_sqrt
(
BIGNUM
*
x
,
BIGNUM
*
a
,
BIGNUM
*
p
,
BN_CTX
*
ctx
);
#endif
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录