Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
5ba4bf35
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
8 个月 前同步成功
通知
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 搜索 >>
提交
5ba4bf35
编写于
7月 09, 2006
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
New functions to enumerate digests and ciphers.
上级
aa93b18c
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
147 addition
and
0 deletion
+147
-0
CHANGES
CHANGES
+6
-0
apps/openssl.c
apps/openssl.c
+55
-0
apps/progs.h
apps/progs.h
+2
-0
apps/progs.pl
apps/progs.pl
+2
-0
crypto/evp/evp.h
crypto/evp/evp.h
+10
-0
crypto/evp/names.c
crypto/evp/names.c
+69
-0
crypto/lhash/lhash.c
crypto/lhash/lhash.c
+3
-0
未找到文件。
CHANGES
浏览文件 @
5ba4bf35
...
...
@@ -4,6 +4,12 @@
Changes between 0.9.8b and 0.9.9 [xx XXX xxxx]
*) New functions EVP_CIPHER_do_all(), EVP_CIPHER_do_all_sorted(),
EVP_MD_do_all() and EVP_MD_do_all_sorted() to enumerate internal
digest and cipher tables. New options added to openssl utility:
list-message-digest-algorithms and list-cipher-algorithms.
[Steve Henson]
*) In addition to the numerical (unsigned long) thread ID, provide
for a pointer (void *) thread ID. This helps accomodate systems
that do not provide an unsigned long thread ID. OpenSSL assumes
...
...
apps/openssl.c
浏览文件 @
5ba4bf35
...
...
@@ -142,6 +142,8 @@ static int MS_CALLBACK cmp(const void *a_void,const void *b_void);
static
LHASH
*
prog_init
(
void
);
static
int
do_cmd
(
LHASH
*
prog
,
int
argc
,
char
*
argv
[]);
static
void
list_pkey
(
BIO
*
out
);
static
void
list_cipher
(
BIO
*
out
);
static
void
list_md
(
BIO
*
out
);
char
*
default_config_file
=
NULL
;
/* Make sure there is only one when MONOLITH is defined */
...
...
@@ -367,9 +369,12 @@ end:
#define LIST_STANDARD_COMMANDS "list-standard-commands"
#define LIST_MESSAGE_DIGEST_COMMANDS "list-message-digest-commands"
#define LIST_MESSAGE_DIGEST_ALGORITHMS "list-message-digest-algorithms"
#define LIST_CIPHER_COMMANDS "list-cipher-commands"
#define LIST_CIPHER_ALGORITHMS "list-cipher-algorithms"
#define LIST_PUBLIC_KEY_ALGORITHMS "list-public-key-algorithms"
static
int
do_cmd
(
LHASH
*
prog
,
int
argc
,
char
*
argv
[])
{
FUNCTION
f
,
*
fp
;
...
...
@@ -411,7 +416,9 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
}
else
if
((
strcmp
(
argv
[
0
],
LIST_STANDARD_COMMANDS
)
==
0
)
||
(
strcmp
(
argv
[
0
],
LIST_MESSAGE_DIGEST_COMMANDS
)
==
0
)
||
(
strcmp
(
argv
[
0
],
LIST_MESSAGE_DIGEST_ALGORITHMS
)
==
0
)
||
(
strcmp
(
argv
[
0
],
LIST_CIPHER_COMMANDS
)
==
0
)
||
(
strcmp
(
argv
[
0
],
LIST_CIPHER_ALGORITHMS
)
==
0
)
||
(
strcmp
(
argv
[
0
],
LIST_PUBLIC_KEY_ALGORITHMS
)
==
0
))
{
int
list_type
;
...
...
@@ -421,8 +428,12 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
list_type
=
FUNC_TYPE_GENERAL
;
else
if
(
strcmp
(
argv
[
0
],
LIST_MESSAGE_DIGEST_COMMANDS
)
==
0
)
list_type
=
FUNC_TYPE_MD
;
else
if
(
strcmp
(
argv
[
0
],
LIST_MESSAGE_DIGEST_ALGORITHMS
)
==
0
)
list_type
=
FUNC_TYPE_MD_ALG
;
else
if
(
strcmp
(
argv
[
0
],
LIST_PUBLIC_KEY_ALGORITHMS
)
==
0
)
list_type
=
FUNC_TYPE_PKEY
;
else
if
(
strcmp
(
argv
[
0
],
LIST_CIPHER_ALGORITHMS
)
==
0
)
list_type
=
FUNC_TYPE_CIPHER_ALG
;
else
/* strcmp(argv[0],LIST_CIPHER_COMMANDS) == 0 */
list_type
=
FUNC_TYPE_CIPHER
;
bio_stdout
=
BIO_new_fp
(
stdout
,
BIO_NOCLOSE
);
...
...
@@ -438,6 +449,10 @@ static int do_cmd(LHASH *prog, int argc, char *argv[])
if
(
list_type
==
FUNC_TYPE_PKEY
)
list_pkey
(
bio_stdout
);
if
(
list_type
==
FUNC_TYPE_MD_ALG
)
list_md
(
bio_stdout
);
if
(
list_type
==
FUNC_TYPE_CIPHER_ALG
)
list_cipher
(
bio_stdout
);
else
{
for
(
fp
=
functions
;
fp
->
name
!=
NULL
;
fp
++
)
...
...
@@ -540,6 +555,46 @@ static void list_pkey(BIO *out)
}
}
static
void
list_cipher_fn
(
const
EVP_CIPHER
*
c
,
const
char
*
from
,
const
char
*
to
,
void
*
arg
)
{
if
(
c
)
BIO_printf
(
arg
,
"%s
\n
"
,
EVP_CIPHER_name
(
c
));
else
{
if
(
!
from
)
from
=
"<undefined>"
;
if
(
!
to
)
to
=
"<undefined>"
;
BIO_printf
(
arg
,
"%s => %s
\n
"
,
from
,
to
);
}
}
static
void
list_cipher
(
BIO
*
out
)
{
EVP_CIPHER_do_all_sorted
(
list_cipher_fn
,
out
);
}
static
void
list_md_fn
(
const
EVP_MD
*
m
,
const
char
*
from
,
const
char
*
to
,
void
*
arg
)
{
if
(
m
)
BIO_printf
(
arg
,
"%s
\n
"
,
EVP_MD_name
(
m
));
else
{
if
(
!
from
)
from
=
"<undefined>"
;
if
(
!
to
)
to
=
"<undefined>"
;
BIO_printf
(
arg
,
"%s => %s
\n
"
,
from
,
to
);
}
}
static
void
list_md
(
BIO
*
out
)
{
EVP_MD_do_all_sorted
(
list_md_fn
,
out
);
}
static
LHASH
*
prog_init
(
void
)
{
LHASH
*
ret
;
...
...
apps/progs.h
浏览文件 @
5ba4bf35
...
...
@@ -50,6 +50,8 @@ extern int ts_main(int argc,char *argv[]);
#define FUNC_TYPE_MD 2
#define FUNC_TYPE_CIPHER 3
#define FUNC_TYPE_PKEY 4
#define FUNC_TYPE_MD_ALG 5
#define FUNC_TYPE_CIPHER_ALG 6
typedef
struct
{
int
type
;
...
...
apps/progs.pl
浏览文件 @
5ba4bf35
...
...
@@ -14,6 +14,8 @@ print <<'EOF';
#define FUNC_TYPE_MD 2
#define FUNC_TYPE_CIPHER 3
#define FUNC_TYPE_PKEY 4
#define FUNC_TYPE_MD_ALG 5
#define FUNC_TYPE_CIPHER_ALG 6
typedef struct {
int type;
...
...
crypto/evp/evp.h
浏览文件 @
5ba4bf35
...
...
@@ -782,6 +782,16 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name);
const
EVP_MD
*
EVP_get_digestbyname
(
const
char
*
name
);
void
EVP_cleanup
(
void
);
void
EVP_CIPHER_do_all
(
void
(
*
fn
)(
const
EVP_CIPHER
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
);
void
EVP_CIPHER_do_all_sorted
(
void
(
*
fn
)(
const
EVP_CIPHER
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
);
void
EVP_MD_do_all
(
void
(
*
fn
)(
const
EVP_MD
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
);
void
EVP_MD_do_all_sorted
(
void
(
*
fn
)(
const
EVP_MD
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
);
int
EVP_PKEY_decrypt_old
(
unsigned
char
*
dec_key
,
const
unsigned
char
*
enc_key
,
int
enc_key_len
,
EVP_PKEY
*
private_key
);
...
...
crypto/evp/names.c
浏览文件 @
5ba4bf35
...
...
@@ -76,6 +76,7 @@ int EVP_add_cipher(const EVP_CIPHER *c)
return
(
r
);
}
int
EVP_add_digest
(
const
EVP_MD
*
md
)
{
int
r
;
...
...
@@ -132,3 +133,71 @@ void EVP_cleanup(void)
OBJ_cleanup
();
}
}
struct
doall_cipher
{
void
*
arg
;
void
(
*
fn
)(
const
EVP_CIPHER
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
arg
);
};
static
void
do_all_cipher_fn
(
const
OBJ_NAME
*
nm
,
void
*
arg
)
{
struct
doall_cipher
*
dc
=
arg
;
if
(
nm
->
alias
)
dc
->
fn
(
NULL
,
nm
->
name
,
nm
->
data
,
dc
->
arg
);
else
dc
->
fn
((
const
EVP_CIPHER
*
)
nm
->
data
,
NULL
,
NULL
,
dc
->
arg
);
}
void
EVP_CIPHER_do_all
(
void
(
*
fn
)(
const
EVP_CIPHER
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
)
{
struct
doall_cipher
dc
;
dc
.
fn
=
fn
;
dc
.
arg
=
arg
;
OBJ_NAME_do_all
(
OBJ_NAME_TYPE_CIPHER_METH
,
do_all_cipher_fn
,
&
dc
);
}
void
EVP_CIPHER_do_all_sorted
(
void
(
*
fn
)(
const
EVP_CIPHER
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
)
{
struct
doall_cipher
dc
;
dc
.
fn
=
fn
;
dc
.
arg
=
arg
;
OBJ_NAME_do_all_sorted
(
OBJ_NAME_TYPE_CIPHER_METH
,
do_all_cipher_fn
,
&
dc
);
}
struct
doall_md
{
void
*
arg
;
void
(
*
fn
)(
const
EVP_MD
*
ciph
,
const
char
*
from
,
const
char
*
to
,
void
*
arg
);
};
static
void
do_all_md_fn
(
const
OBJ_NAME
*
nm
,
void
*
arg
)
{
struct
doall_md
*
dc
=
arg
;
if
(
nm
->
alias
)
dc
->
fn
(
NULL
,
nm
->
name
,
nm
->
data
,
dc
->
arg
);
else
dc
->
fn
((
const
EVP_MD
*
)
nm
->
data
,
NULL
,
NULL
,
dc
->
arg
);
}
void
EVP_MD_do_all
(
void
(
*
fn
)(
const
EVP_MD
*
md
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
)
{
struct
doall_md
dc
;
dc
.
fn
=
fn
;
dc
.
arg
=
arg
;
OBJ_NAME_do_all
(
OBJ_NAME_TYPE_MD_METH
,
do_all_md_fn
,
&
dc
);
}
void
EVP_MD_do_all_sorted
(
void
(
*
fn
)(
const
EVP_MD
*
md
,
const
char
*
from
,
const
char
*
to
,
void
*
x
),
void
*
arg
)
{
struct
doall_md
dc
;
dc
.
fn
=
fn
;
dc
.
arg
=
arg
;
OBJ_NAME_do_all_sorted
(
OBJ_NAME_TYPE_MD_METH
,
do_all_md_fn
,
&
dc
);
}
crypto/lhash/lhash.c
浏览文件 @
5ba4bf35
...
...
@@ -273,6 +273,9 @@ static void doall_util_fn(LHASH *lh, int use_arg, LHASH_DOALL_FN_TYPE func,
int
i
;
LHASH_NODE
*
a
,
*
n
;
if
(
lh
==
NULL
)
return
;
/* reverse the order so we search from 'top to bottom'
* We were having memory leaks otherwise */
for
(
i
=
lh
->
num_nodes
-
1
;
i
>=
0
;
i
--
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录