Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
4897dc40
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
9 个月 前同步成功
通知
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 搜索 >>
提交
4897dc40
编写于
8月 26, 2001
作者:
B
Ben Laurie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Test digests.
上级
35e33f0e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
100 addition
and
21 deletion
+100
-21
crypto/evp/evp.h
crypto/evp/evp.h
+3
-0
crypto/evp/evp_test.c
crypto/evp/evp_test.c
+86
-20
crypto/evp/evptests.txt
crypto/evp/evptests.txt
+11
-1
未找到文件。
crypto/evp/evp.h
浏览文件 @
4897dc40
...
...
@@ -377,6 +377,8 @@ typedef int (EVP_PBE_KEYGEN)(EVP_CIPHER_CTX *ctx, const char *pass, int passlen,
#define EVP_get_cipherbyobj(a) EVP_get_cipherbynid(OBJ_obj2nid(a))
#define EVP_MD_type(e) ((e)->type)
#define EVP_MD_nid(e) EVP_MD_type(e)
#define EVP_MD_name(e) OBJ_nid2sn(EVP_MD_nid(e))
#define EVP_MD_pkey_type(e) ((e)->pkey_type)
#define EVP_MD_size(e) ((e)->md_size)
#define EVP_MD_block_size(e) ((e)->block_size)
...
...
@@ -559,6 +561,7 @@ const EVP_CIPHER *EVP_desx_cbc(void);
# ifdef OPENSSL_OPENBSD_DEV_CRYPTO
const
EVP_CIPHER
*
EVP_dev_crypto_des_ede3_cbc
(
void
);
const
EVP_CIPHER
*
EVP_dev_crypto_rc4
(
void
);
const
EVP_MD
*
EVP_dev_crypto_md5
(
void
);
# endif
#endif
#ifndef OPENSSL_NO_RC4
...
...
crypto/evp/evp_test.c
浏览文件 @
4897dc40
...
...
@@ -104,7 +104,6 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
hexdump
(
stdout
,
"Plaintext"
,
plaintext
,
pn
);
hexdump
(
stdout
,
"Ciphertext"
,
ciphertext
,
cn
);
if
(
kn
!=
c
->
key_len
)
{
fprintf
(
stderr
,
"Key length doesn't match, got %d expected %d
\n
"
,
kn
,
...
...
@@ -148,7 +147,7 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
if
(
!
EVP_DecryptInit
(
&
ctx
,
c
,
key
,
iv
))
{
fprintf
(
stderr
,
"DecryptInit failed
\n
"
);
exit
(
1
0
);
exit
(
1
1
);
}
EVP_CIPHER_CTX_set_padding
(
&
ctx
,
0
);
...
...
@@ -181,6 +180,86 @@ static void test1(const EVP_CIPHER *c,const unsigned char *key,int kn,
printf
(
"
\n
"
);
}
static
int
test_cipher
(
const
char
*
cipher
,
const
unsigned
char
*
key
,
int
kn
,
const
unsigned
char
*
iv
,
int
in
,
const
unsigned
char
*
plaintext
,
int
pn
,
const
unsigned
char
*
ciphertext
,
int
cn
)
{
const
EVP_CIPHER
*
c
;
ENGINE
*
e
;
c
=
EVP_get_cipherbyname
(
cipher
);
if
(
!
c
)
return
0
;
test1
(
c
,
key
,
kn
,
iv
,
in
,
plaintext
,
pn
,
ciphertext
,
cn
);
for
(
e
=
ENGINE_get_first
()
;
e
;
e
=
ENGINE_get_next
(
e
))
{
c
=
ENGINE_get_cipher_by_name
(
e
,
cipher
);
if
(
!
c
)
continue
;
printf
(
"Testing engine %s
\n
"
,
ENGINE_get_name
(
e
));
test1
(
c
,
key
,
kn
,
iv
,
in
,
plaintext
,
pn
,
ciphertext
,
cn
);
}
return
1
;
}
static
int
test_digest
(
const
char
*
digest
,
const
unsigned
char
*
plaintext
,
int
pn
,
const
unsigned
char
*
ciphertext
,
int
cn
)
{
const
EVP_MD
*
d
;
EVP_MD_CTX
ctx
;
unsigned
char
md
[
EVP_MAX_MD_SIZE
];
unsigned
int
mdn
;
d
=
EVP_get_digestbyname
(
digest
);
if
(
!
d
)
return
0
;
printf
(
"Testing digest %s
\n
"
,
EVP_MD_name
(
d
));
hexdump
(
stdout
,
"Plaintext"
,
plaintext
,
pn
);
hexdump
(
stdout
,
"Digest"
,
ciphertext
,
cn
);
EVP_MD_CTX_init
(
&
ctx
);
if
(
!
EVP_DigestInit
(
&
ctx
,
d
))
{
fprintf
(
stderr
,
"DigestInit failed
\n
"
);
exit
(
100
);
}
if
(
!
EVP_DigestUpdate
(
&
ctx
,
plaintext
,
pn
))
{
fprintf
(
stderr
,
"DigestUpdate failed
\n
"
);
exit
(
101
);
}
if
(
!
EVP_DigestFinal
(
&
ctx
,
md
,
&
mdn
))
{
fprintf
(
stderr
,
"DigestUpdate failed
\n
"
);
exit
(
101
);
}
if
(
mdn
!=
cn
)
{
fprintf
(
stderr
,
"Digest length mismatch, got %d expected %d
\n
"
,
mdn
,
cn
);
exit
(
102
);
}
if
(
memcmp
(
md
,
ciphertext
,
cn
))
{
fprintf
(
stderr
,
"Digest mismatch
\n
"
);
hexdump
(
stderr
,
"Got"
,
md
,
cn
);
hexdump
(
stderr
,
"Expected"
,
ciphertext
,
cn
);
exit
(
103
);
}
printf
(
"
\n
"
);
return
1
;
}
int
main
(
int
argc
,
char
**
argv
)
{
const
char
*
szTestFile
;
...
...
@@ -202,6 +281,7 @@ int main(int argc,char **argv)
}
OpenSSL_add_all_ciphers
();
OpenSSL_add_all_digests
();
ENGINE_load_builtin_engines
();
for
(
;
;
)
...
...
@@ -210,9 +290,7 @@ int main(int argc,char **argv)
char
*
p
;
char
*
cipher
;
unsigned
char
*
iv
,
*
key
,
*
plaintext
,
*
ciphertext
;
const
EVP_CIPHER
*
c
;
int
kn
,
in
,
pn
,
cn
;
ENGINE
*
e
;
if
(
!
fgets
((
char
*
)
line
,
sizeof
line
,
f
))
break
;
...
...
@@ -225,28 +303,16 @@ int main(int argc,char **argv)
plaintext
=
ustrsep
(
&
p
,
":"
);
ciphertext
=
ustrsep
(
&
p
,
"
\n
"
);
c
=
EVP_get_cipherbyname
(
cipher
);
if
(
!
c
)
{
fprintf
(
stderr
,
"Can't find cipher %s!
\n
"
,
cipher
);
exit
(
3
);
}
kn
=
convert
(
key
);
in
=
convert
(
iv
);
pn
=
convert
(
plaintext
);
cn
=
convert
(
ciphertext
);
test1
(
c
,
key
,
kn
,
iv
,
in
,
plaintext
,
pn
,
ciphertext
,
cn
);
for
(
e
=
ENGINE_get_first
()
;
e
;
e
=
ENGINE_get_next
(
e
))
if
(
!
test_cipher
(
cipher
,
key
,
kn
,
iv
,
in
,
plaintext
,
pn
,
ciphertext
,
cn
)
&&
!
test_digest
(
cipher
,
plaintext
,
pn
,
ciphertext
,
cn
))
{
c
=
ENGINE_get_cipher_by_name
(
e
,
cipher
);
if
(
!
c
)
continue
;
printf
(
"Testing engine %s
\n
"
,
ENGINE_get_name
(
e
));
test1
(
c
,
key
,
kn
,
iv
,
in
,
plaintext
,
pn
,
ciphertext
,
cn
);
fprintf
(
stderr
,
"Can't find %s
\n
"
,
cipher
);
exit
(
3
);
}
}
...
...
crypto/evp/evptests.txt
浏览文件 @
4897dc40
#cipher:key:iv:input:output
#digest:::input:output
# MD5 tests (from md5test.c)
MD5::::d41d8cd98f00b204e9800998ecf8427e
MD5:::61:0cc175b9c0f1b6a831c399e269772661
MD5:::616263:900150983cd24fb0d6963f7d28e17f72
MD5:::6d65737361676520646967657374:f96b697d7cb7938d525a2f31aaf161d0
MD5:::6162636465666768696a6b6c6d6e6f707172737475767778797a:c3fcd3d76192e4007dfb496cca67e13b
MD5:::4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a30313233343536373839:d174ab98d277d9f5a5611c2c9f419d9f
MD5:::3132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930313233343536373839303132333435363738393031323334353637383930:57edf4a22be3c955ac49da2e2107b67a
# AES 128 ECB tests (from NIST test vectors, encrypt)
AES-128-ECB:00000000000000000000000000000000::00000000000000000000000000000000:C34C052CC0DA8D73451AFE5F03BE297F
#
AES-128-ECB:00000000000000000000000000000000::00000000000000000000000000000000:C34C052CC0DA8D73451AFE5F03BE297F
# AES 128 ECB tests (from NIST test vectors, decrypt)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录