Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
d166ed8c
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看板
提交
d166ed8c
编写于
6月 18, 2016
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
check return values for EVP_Digest*() APIs
Reviewed-by:
N
Richard Levitte
<
levitte@openssl.org
>
上级
1fc431ba
变更
24
隐藏空白更改
内联
并排
Showing
24 changed file
with
362 addition
and
213 deletion
+362
-213
apps/passwd.c
apps/passwd.c
+53
-32
apps/speed.c
apps/speed.c
+28
-15
apps/ts.c
apps/ts.c
+14
-9
crypto/dh/dh_kdf.c
crypto/dh/dh_kdf.c
+2
-2
crypto/ec/ecdh_kdf.c
crypto/ec/ecdh_kdf.c
+2
-1
crypto/rand/md_rand.c
crypto/rand/md_rand.c
+9
-6
crypto/srp/srp_lib.c
crypto/srp/srp_lib.c
+26
-19
crypto/srp/srp_vfy.c
crypto/srp/srp_vfy.c
+6
-4
include/openssl/evp.h
include/openssl/evp.h
+7
-7
ssl/record/ssl3_record.c
ssl/record/ssl3_record.c
+6
-3
ssl/s3_cbc.c
ssl/s3_cbc.c
+4
-4
ssl/s3_enc.c
ssl/s3_enc.c
+22
-18
ssl/ssl_locl.h
ssl/ssl_locl.h
+4
-4
ssl/statem/statem_clnt.c
ssl/statem/statem_clnt.c
+6
-3
ssl/statem/statem_dtls.c
ssl/statem/statem_dtls.c
+4
-2
ssl/statem/statem_lib.c
ssl/statem/statem_lib.c
+18
-5
test/md2test.c
test/md2test.c
+5
-2
test/md4test.c
test/md4test.c
+5
-1
test/md5test.c
test/md5test.c
+5
-1
test/mdc2test.c
test/mdc2test.c
+18
-11
test/rmdtest.c
test/rmdtest.c
+5
-2
test/sha1test.c
test/sha1test.c
+24
-6
test/sha256t.c
test/sha256t.c
+43
-27
test/sha512t.c
test/sha512t.c
+46
-29
未找到文件。
apps/passwd.c
浏览文件 @
d166ed8c
...
...
@@ -287,7 +287,7 @@ static char *md5crypt(const char *passwd, const char *magic, const char *salt)
char
*
salt_out
;
int
n
;
unsigned
int
i
;
EVP_MD_CTX
*
md
,
*
md2
;
EVP_MD_CTX
*
md
=
NULL
,
*
md2
=
NULL
;
size_t
passwd_len
,
salt_len
;
passwd_len
=
strlen
(
passwd
);
...
...
@@ -303,49 +303,65 @@ static char *md5crypt(const char *passwd, const char *magic, const char *salt)
assert
(
salt_len
<=
8
);
md
=
EVP_MD_CTX_new
();
if
(
md
==
NULL
)
return
NULL
;
EVP_DigestInit_ex
(
md
,
EVP_md5
(),
NULL
);
EVP_DigestUpdate
(
md
,
passwd
,
passwd_len
);
EVP_DigestUpdate
(
md
,
"$"
,
1
);
EVP_DigestUpdate
(
md
,
magic
,
strlen
(
magic
));
EVP_DigestUpdate
(
md
,
"$"
,
1
);
EVP_DigestUpdate
(
md
,
salt_out
,
salt_len
);
if
(
md
==
NULL
||
!
EVP_DigestInit_ex
(
md
,
EVP_md5
(),
NULL
)
||
!
EVP_DigestUpdate
(
md
,
passwd
,
passwd_len
)
||
!
EVP_DigestUpdate
(
md
,
"$"
,
1
)
||
!
EVP_DigestUpdate
(
md
,
magic
,
strlen
(
magic
))
||
!
EVP_DigestUpdate
(
md
,
"$"
,
1
)
||
!
EVP_DigestUpdate
(
md
,
salt_out
,
salt_len
))
md2
=
EVP_MD_CTX_new
();
if
(
md2
==
NULL
)
return
NULL
;
EVP_DigestInit_ex
(
md2
,
EVP_md5
(),
NULL
);
EVP_DigestUpdate
(
md2
,
passwd
,
passwd_len
);
EVP_DigestUpdate
(
md2
,
salt_out
,
salt_len
);
EVP_DigestUpdate
(
md2
,
passwd
,
passwd_len
);
EVP_DigestFinal_ex
(
md2
,
buf
,
NULL
);
for
(
i
=
passwd_len
;
i
>
sizeof
buf
;
i
-=
sizeof
buf
)
EVP_DigestUpdate
(
md
,
buf
,
sizeof
buf
);
EVP_DigestUpdate
(
md
,
buf
,
i
);
if
(
md2
==
NULL
||
!
EVP_DigestInit_ex
(
md2
,
EVP_md5
(),
NULL
)
||
!
EVP_DigestUpdate
(
md2
,
passwd
,
passwd_len
)
||
!
EVP_DigestUpdate
(
md2
,
salt_out
,
salt_len
)
||
!
EVP_DigestUpdate
(
md2
,
passwd
,
passwd_len
)
||
!
EVP_DigestFinal_ex
(
md2
,
buf
,
NULL
))
goto
err
;
for
(
i
=
passwd_len
;
i
>
sizeof
buf
;
i
-=
sizeof
buf
)
{
if
(
!
EVP_DigestUpdate
(
md
,
buf
,
sizeof
buf
))
goto
err
;
}
if
(
!
EVP_DigestUpdate
(
md
,
buf
,
i
))
goto
err
;
n
=
passwd_len
;
while
(
n
)
{
EVP_DigestUpdate
(
md
,
(
n
&
1
)
?
"
\0
"
:
passwd
,
1
);
if
(
!
EVP_DigestUpdate
(
md
,
(
n
&
1
)
?
"
\0
"
:
passwd
,
1
))
goto
err
;
n
>>=
1
;
}
EVP_DigestFinal_ex
(
md
,
buf
,
NULL
);
if
(
!
EVP_DigestFinal_ex
(
md
,
buf
,
NULL
))
return
NULL
;
for
(
i
=
0
;
i
<
1000
;
i
++
)
{
EVP_DigestInit_ex
(
md2
,
EVP_md5
(),
NULL
);
EVP_DigestUpdate
(
md2
,
(
i
&
1
)
?
(
unsigned
const
char
*
)
passwd
:
buf
,
(
i
&
1
)
?
passwd_len
:
sizeof
buf
);
if
(
i
%
3
)
EVP_DigestUpdate
(
md2
,
salt_out
,
salt_len
);
if
(
i
%
7
)
EVP_DigestUpdate
(
md2
,
passwd
,
passwd_len
);
EVP_DigestUpdate
(
md2
,
(
i
&
1
)
?
buf
:
(
unsigned
const
char
*
)
passwd
,
(
i
&
1
)
?
sizeof
buf
:
passwd_len
);
EVP_DigestFinal_ex
(
md2
,
buf
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
md2
,
EVP_md5
(),
NULL
))
goto
err
;
if
(
!
EVP_DigestUpdate
(
md2
,
(
i
&
1
)
?
(
unsigned
const
char
*
)
passwd
:
buf
,
(
i
&
1
)
?
passwd_len
:
sizeof
buf
))
goto
err
;
if
(
i
%
3
)
{
if
(
!
EVP_DigestUpdate
(
md2
,
salt_out
,
salt_len
))
goto
err
;
}
if
(
i
%
7
)
{
if
(
!
EVP_DigestUpdate
(
md2
,
passwd
,
passwd_len
))
goto
err
;
}
if
(
!
EVP_DigestUpdate
(
md2
,
(
i
&
1
)
?
buf
:
(
unsigned
const
char
*
)
passwd
,
(
i
&
1
)
?
sizeof
buf
:
passwd_len
))
goto
err
;
if
(
!
EVP_DigestFinal_ex
(
md2
,
buf
,
NULL
))
goto
err
;
}
EVP_MD_CTX_free
(
md2
);
EVP_MD_CTX_free
(
md
);
md2
=
NULL
;
md
=
NULL
;
{
/* transform buf into output string */
...
...
@@ -386,6 +402,11 @@ static char *md5crypt(const char *passwd, const char *magic, const char *salt)
}
return
out_buf
;
err:
EVP_MD_CTX_free
(
md2
);
EVP_MD_CTX_free
(
md
);
return
NULL
;
}
# endif
...
...
apps/speed.c
浏览文件 @
d166ed8c
...
...
@@ -601,9 +601,11 @@ static int EVP_Digest_MD2_loop(void *args)
unsigned
char
*
buf
=
tempargs
->
buf
;
unsigned
char
md2
[
MD2_DIGEST_LENGTH
];
int
count
;
for
(
count
=
0
;
COND
(
c
[
D_MD2
][
testnum
]);
count
++
)
EVP_Digest
(
buf
,
(
unsigned
long
)
lengths
[
testnum
],
&
(
md2
[
0
]),
NULL
,
EVP_md2
(),
NULL
);
for
(
count
=
0
;
COND
(
c
[
D_MD2
][
testnum
]);
count
++
)
{
if
(
!
EVP_Digest
(
buf
,
(
unsigned
long
)
lengths
[
testnum
],
&
(
md2
[
0
]),
NULL
,
EVP_md2
(),
NULL
))
return
-
1
;
}
return
count
;
}
#endif
...
...
@@ -615,9 +617,11 @@ static int EVP_Digest_MDC2_loop(void *args)
unsigned
char
*
buf
=
tempargs
->
buf
;
unsigned
char
mdc2
[
MDC2_DIGEST_LENGTH
];
int
count
;
for
(
count
=
0
;
COND
(
c
[
D_MDC2
][
testnum
]);
count
++
)
EVP_Digest
(
buf
,
(
unsigned
long
)
lengths
[
testnum
],
&
(
mdc2
[
0
]),
NULL
,
EVP_mdc2
(),
NULL
);
for
(
count
=
0
;
COND
(
c
[
D_MDC2
][
testnum
]);
count
++
)
{
if
(
!
EVP_Digest
(
buf
,
(
unsigned
long
)
lengths
[
testnum
],
&
(
mdc2
[
0
]),
NULL
,
EVP_mdc2
(),
NULL
))
return
-
1
;
}
return
count
;
}
#endif
...
...
@@ -629,9 +633,11 @@ static int EVP_Digest_MD4_loop(void *args)
unsigned
char
*
buf
=
tempargs
->
buf
;
unsigned
char
md4
[
MD4_DIGEST_LENGTH
];
int
count
;
for
(
count
=
0
;
COND
(
c
[
D_MD4
][
testnum
]);
count
++
)
EVP_Digest
(
&
(
buf
[
0
]),
(
unsigned
long
)
lengths
[
testnum
],
&
(
md4
[
0
]),
NULL
,
EVP_md4
(),
NULL
);
for
(
count
=
0
;
COND
(
c
[
D_MD4
][
testnum
]);
count
++
)
{
if
(
!
EVP_Digest
(
&
(
buf
[
0
]),
(
unsigned
long
)
lengths
[
testnum
],
&
(
md4
[
0
]),
NULL
,
EVP_md4
(),
NULL
))
return
-
1
;
}
return
count
;
}
#endif
...
...
@@ -717,9 +723,11 @@ static int EVP_Digest_RMD160_loop(void *args)
unsigned
char
*
buf
=
tempargs
->
buf
;
unsigned
char
rmd160
[
RIPEMD160_DIGEST_LENGTH
];
int
count
;
for
(
count
=
0
;
COND
(
c
[
D_RMD160
][
testnum
]);
count
++
)
EVP_Digest
(
buf
,
(
unsigned
long
)
lengths
[
testnum
],
&
(
rmd160
[
0
]),
NULL
,
EVP_ripemd160
(),
NULL
);
for
(
count
=
0
;
COND
(
c
[
D_RMD160
][
testnum
]);
count
++
)
{
if
(
!
EVP_Digest
(
buf
,
(
unsigned
long
)
lengths
[
testnum
],
&
(
rmd160
[
0
]),
NULL
,
EVP_ripemd160
(),
NULL
))
return
-
1
;
}
return
count
;
}
#endif
...
...
@@ -888,9 +896,10 @@ static int EVP_Digest_loop(void *args)
unsigned
char
md
[
EVP_MAX_MD_SIZE
];
int
count
;
for
(
count
=
0
;
COND
(
save_count
*
4
*
lengths
[
0
]
/
lengths
[
testnum
]);
count
++
)
EVP_Digest
(
buf
,
lengths
[
testnum
],
&
(
md
[
0
]),
NULL
,
evp_md
,
NULL
);
COND
(
save_count
*
4
*
lengths
[
0
]
/
lengths
[
testnum
]);
count
++
)
{
if
(
!
EVP_Digest
(
buf
,
lengths
[
testnum
],
&
(
md
[
0
]),
NULL
,
evp_md
,
NULL
))
return
-
1
;
}
return
count
;
}
...
...
@@ -2845,6 +2854,10 @@ static void pkey_print_message(const char *str, const char *str2, long num,
static
void
print_result
(
int
alg
,
int
run_no
,
int
count
,
double
time_used
)
{
if
(
count
==
-
1
)
{
BIO_puts
(
bio_err
,
"EVP error!
\n
"
);
exit
(
1
);
}
BIO_printf
(
bio_err
,
mr
?
"+R:%d:%s:%f
\n
"
:
"%d %s's in %.2fs
\n
"
,
count
,
names
[
alg
],
time_used
);
...
...
apps/ts.c
浏览文件 @
d166ed8c
...
...
@@ -492,28 +492,30 @@ static int create_digest(BIO *input, char *digest, const EVP_MD *md,
unsigned
char
**
md_value
)
{
int
md_value_len
;
int
rv
=
0
;
EVP_MD_CTX
*
md_ctx
=
NULL
;
md_value_len
=
EVP_MD_size
(
md
);
if
(
md_value_len
<
0
)
return
0
;
if
(
input
)
{
EVP_MD_CTX
*
md_ctx
=
EVP_MD_CTX_new
();
unsigned
char
buffer
[
4096
];
int
length
;
md_ctx
=
EVP_MD_CTX_new
();
if
(
md_ctx
==
NULL
)
return
0
;
*
md_value
=
app_malloc
(
md_value_len
,
"digest buffer"
);
EVP_DigestInit
(
md_ctx
,
md
);
if
(
!
EVP_DigestInit
(
md_ctx
,
md
))
goto
err
;
while
((
length
=
BIO_read
(
input
,
buffer
,
sizeof
(
buffer
)))
>
0
)
{
EVP_DigestUpdate
(
md_ctx
,
buffer
,
length
);
}
if
(
!
EVP_DigestFinal
(
md_ctx
,
*
md_value
,
NULL
))
{
EVP_MD_CTX_free
(
md_ctx
);
return
0
;
if
(
!
EVP_DigestUpdate
(
md_ctx
,
buffer
,
length
))
goto
err
;
}
EVP_MD_CTX_free
(
md_ctx
);
if
(
!
EVP_DigestFinal
(
md_ctx
,
*
md_value
,
NULL
))
goto
err
;
md_value_len
=
EVP_MD_size
(
md
);
}
else
{
long
digest_len
;
*
md_value
=
OPENSSL_hexstr2buf
(
digest
,
&
digest_len
);
...
...
@@ -525,7 +527,10 @@ static int create_digest(BIO *input, char *digest, const EVP_MD *md,
return
0
;
}
}
return
md_value_len
;
rv
=
md_value_len
;
err:
EVP_MD_CTX_free
(
md_ctx
);
return
rv
;
}
static
ASN1_INTEGER
*
create_nonce
(
int
bits
)
...
...
crypto/dh/dh_kdf.c
浏览文件 @
d166ed8c
...
...
@@ -117,8 +117,8 @@ int DH_KDF_X9_42(unsigned char *out, size_t outlen,
goto
err
;
for
(
i
=
1
;;
i
++
)
{
unsigned
char
mtmp
[
EVP_MAX_MD_SIZE
];
EVP_DigestInit_ex
(
mctx
,
md
,
NULL
);
if
(
!
EVP_DigestUpdate
(
mctx
,
Z
,
Zlen
))
if
(
!
EVP_DigestInit_ex
(
mctx
,
md
,
NULL
)
||
!
EVP_DigestUpdate
(
mctx
,
Z
,
Zlen
))
goto
err
;
ctr
[
3
]
=
i
&
0xFF
;
ctr
[
2
]
=
(
i
>>
8
)
&
0xFF
;
...
...
crypto/ec/ecdh_kdf.c
浏览文件 @
d166ed8c
...
...
@@ -34,7 +34,8 @@ int ECDH_KDF_X9_62(unsigned char *out, size_t outlen,
mdlen
=
EVP_MD_size
(
md
);
for
(
i
=
1
;;
i
++
)
{
unsigned
char
mtmp
[
EVP_MAX_MD_SIZE
];
EVP_DigestInit_ex
(
mctx
,
md
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
mctx
,
md
,
NULL
))
goto
err
;
ctr
[
3
]
=
i
&
0xFF
;
ctr
[
2
]
=
(
i
>>
8
)
&
0xFF
;
ctr
[
1
]
=
(
i
>>
16
)
&
0xFF
;
...
...
crypto/rand/md_rand.c
浏览文件 @
d166ed8c
...
...
@@ -60,7 +60,7 @@ static CRYPTO_THREAD_ID locking_threadid;
int
rand_predictable
=
0
;
#endif
static
void
rand_hw_seed
(
EVP_MD_CTX
*
ctx
);
static
int
rand_hw_seed
(
EVP_MD_CTX
*
ctx
);
static
void
rand_cleanup
(
void
);
static
int
rand_seed
(
const
void
*
buf
,
int
num
);
...
...
@@ -446,7 +446,8 @@ static int rand_bytes(unsigned char *buf, int num, int pseudo)
if
(
!
MD_Update
(
m
,
(
unsigned
char
*
)
&
tv
,
sizeof
tv
))
goto
err
;
curr_time
=
0
;
rand_hw_seed
(
m
);
if
(
!
rand_hw_seed
(
m
))
goto
err
;
}
if
(
!
MD_Update
(
m
,
local_md
,
MD_DIGEST_LENGTH
))
goto
err
;
...
...
@@ -597,18 +598,20 @@ static int rand_status(void)
size_t
OPENSSL_ia32_rdrand
(
void
);
extern
unsigned
int
OPENSSL_ia32cap_P
[];
static
void
rand_hw_seed
(
EVP_MD_CTX
*
ctx
)
static
int
rand_hw_seed
(
EVP_MD_CTX
*
ctx
)
{
int
i
;
if
(
!
(
OPENSSL_ia32cap_P
[
1
]
&
(
1
<<
(
62
-
32
))))
return
;
return
1
;
for
(
i
=
0
;
i
<
RDRAND_CALLS
;
i
++
)
{
size_t
rnd
;
rnd
=
OPENSSL_ia32_rdrand
();
if
(
rnd
==
0
)
return
;
MD_Update
(
ctx
,
(
unsigned
char
*
)
&
rnd
,
sizeof
(
size_t
));
return
1
;
if
(
!
MD_Update
(
ctx
,
(
unsigned
char
*
)
&
rnd
,
sizeof
(
size_t
)))
return
0
;
}
return
1
;
}
/* XOR an existing buffer with random data */
...
...
crypto/srp/srp_lib.c
浏览文件 @
d166ed8c
...
...
@@ -35,17 +35,20 @@ static BIGNUM *srp_Calc_k(const BIGNUM *N, const BIGNUM *g)
goto
err
;
BN_bn2bin
(
N
,
tmp
);
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
);
EVP_DigestUpdate
(
ctxt
,
tmp
,
longN
);
if
(
!
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
)
||
!
EVP_DigestUpdate
(
ctxt
,
tmp
,
longN
))
goto
err
;
memset
(
tmp
,
0
,
longN
);
longg
=
BN_bn2bin
(
g
,
tmp
);
/* use the zeros behind to pad on left */
EVP_DigestUpdate
(
ctxt
,
tmp
+
longg
,
longN
-
longg
);
EVP_DigestUpdate
(
ctxt
,
tmp
,
longg
);
if
(
!
EVP_DigestUpdate
(
ctxt
,
tmp
+
longg
,
longN
-
longg
)
||
!
EVP_DigestUpdate
(
ctxt
,
tmp
,
longg
))
goto
err
;
OPENSSL_free
(
tmp
);
EVP_DigestFinal_ex
(
ctxt
,
digest
,
NULL
);
if
(
!
EVP_DigestFinal_ex
(
ctxt
,
digest
,
NULL
))
goto
err
;
res
=
BN_bin2bn
(
digest
,
sizeof
(
digest
),
NULL
);
err:
EVP_MD_CTX_free
(
ctxt
);
...
...
@@ -77,11 +80,13 @@ BIGNUM *SRP_Calc_u(const BIGNUM *A, const BIGNUM *B, const BIGNUM *N)
memset
(
cAB
,
0
,
longN
);
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
);
EVP_DigestUpdate
(
ctxt
,
cAB
+
BN_bn2bin
(
A
,
cAB
+
longN
),
longN
);
EVP_DigestUpdate
(
ctxt
,
cAB
+
BN_bn2bin
(
B
,
cAB
+
longN
),
longN
);
if
(
!
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
)
||
!
EVP_DigestUpdate
(
ctxt
,
cAB
+
BN_bn2bin
(
A
,
cAB
+
longN
),
longN
)
||
!
EVP_DigestUpdate
(
ctxt
,
cAB
+
BN_bn2bin
(
B
,
cAB
+
longN
),
longN
))
goto
err
;
OPENSSL_free
(
cAB
);
EVP_DigestFinal_ex
(
ctxt
,
cu
,
NULL
);
if
(
!
EVP_DigestFinal_ex
(
ctxt
,
cu
,
NULL
))
goto
err
;
if
((
u
=
BN_bin2bn
(
cu
,
sizeof
(
cu
),
NULL
))
==
NULL
)
goto
err
;
...
...
@@ -173,18 +178,20 @@ BIGNUM *SRP_Calc_x(const BIGNUM *s, const char *user, const char *pass)
if
((
cs
=
OPENSSL_malloc
(
BN_num_bytes
(
s
)))
==
NULL
)
goto
err
;
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
);
EVP_DigestUpdate
(
ctxt
,
user
,
strlen
(
user
));
EVP_DigestUpdate
(
ctxt
,
":"
,
1
);
EVP_DigestUpdate
(
ctxt
,
pass
,
strlen
(
pass
));
EVP_DigestFinal_ex
(
ctxt
,
dig
,
NULL
);
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
)
;
if
(
!
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
)
||
!
EVP_DigestUpdate
(
ctxt
,
user
,
strlen
(
user
))
||
!
EVP_DigestUpdate
(
ctxt
,
":"
,
1
)
||
!
EVP_DigestUpdate
(
ctxt
,
pass
,
strlen
(
pass
))
||
!
EVP_DigestFinal_ex
(
ctxt
,
dig
,
NULL
)
||
!
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
))
goto
err
;
BN_bn2bin
(
s
,
cs
);
EVP_DigestUpdate
(
ctxt
,
cs
,
BN_num_bytes
(
s
));
if
(
!
EVP_DigestUpdate
(
ctxt
,
cs
,
BN_num_bytes
(
s
)))
goto
err
;
OPENSSL_free
(
cs
);
EVP_DigestUpdate
(
ctxt
,
dig
,
sizeof
(
dig
));
EVP_DigestFinal_ex
(
ctxt
,
dig
,
NULL
);
if
(
!
EVP_DigestUpdate
(
ctxt
,
dig
,
sizeof
(
dig
))
||
!
EVP_DigestFinal_ex
(
ctxt
,
dig
,
NULL
))
goto
err
;
res
=
BN_bin2bn
(
dig
,
sizeof
(
dig
),
NULL
);
err:
...
...
crypto/srp/srp_vfy.c
浏览文件 @
d166ed8c
...
...
@@ -500,10 +500,12 @@ SRP_user_pwd *SRP_VBASE_get1_by_user(SRP_VBASE *vb, char *username)
if
(
RAND_bytes
(
digv
,
SHA_DIGEST_LENGTH
)
<=
0
)
goto
err
;
ctxt
=
EVP_MD_CTX_new
();
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
);
EVP_DigestUpdate
(
ctxt
,
vb
->
seed_key
,
strlen
(
vb
->
seed_key
));
EVP_DigestUpdate
(
ctxt
,
username
,
strlen
(
username
));
EVP_DigestFinal_ex
(
ctxt
,
digs
,
NULL
);
if
(
ctxt
==
NULL
||
!
EVP_DigestInit_ex
(
ctxt
,
EVP_sha1
(),
NULL
)
||
!
EVP_DigestUpdate
(
ctxt
,
vb
->
seed_key
,
strlen
(
vb
->
seed_key
))
||
!
EVP_DigestUpdate
(
ctxt
,
username
,
strlen
(
username
))
||
!
EVP_DigestFinal_ex
(
ctxt
,
digs
,
NULL
))
goto
err
;
EVP_MD_CTX_free
(
ctxt
);
ctxt
=
NULL
;
if
(
SRP_user_pwd_set_sv_BN
(
user
,
...
...
include/openssl/evp.h
浏览文件 @
d166ed8c
...
...
@@ -500,22 +500,22 @@ void EVP_MD_CTX_free(EVP_MD_CTX *ctx);
# define EVP_MD_CTX_create() EVP_MD_CTX_new()
# define EVP_MD_CTX_init(ctx) EVP_MD_CTX_reset((ctx))
# define EVP_MD_CTX_destroy(ctx) EVP_MD_CTX_free((ctx))
/*__owur*/
int
EVP_MD_CTX_copy_ex
(
EVP_MD_CTX
*
out
,
const
EVP_MD_CTX
*
in
);
__owur
int
EVP_MD_CTX_copy_ex
(
EVP_MD_CTX
*
out
,
const
EVP_MD_CTX
*
in
);
void
EVP_MD_CTX_set_flags
(
EVP_MD_CTX
*
ctx
,
int
flags
);
void
EVP_MD_CTX_clear_flags
(
EVP_MD_CTX
*
ctx
,
int
flags
);
int
EVP_MD_CTX_test_flags
(
const
EVP_MD_CTX
*
ctx
,
int
flags
);
/*__owur*/
int
EVP_DigestInit_ex
(
EVP_MD_CTX
*
ctx
,
const
EVP_MD
*
type
,
__owur
int
EVP_DigestInit_ex
(
EVP_MD_CTX
*
ctx
,
const
EVP_MD
*
type
,
ENGINE
*
impl
);
/*__owur*/
int
EVP_DigestUpdate
(
EVP_MD_CTX
*
ctx
,
const
void
*
d
,
__owur
int
EVP_DigestUpdate
(
EVP_MD_CTX
*
ctx
,
const
void
*
d
,
size_t
cnt
);
/*__owur*/
int
EVP_DigestFinal_ex
(
EVP_MD_CTX
*
ctx
,
unsigned
char
*
md
,
__owur
int
EVP_DigestFinal_ex
(
EVP_MD_CTX
*
ctx
,
unsigned
char
*
md
,
unsigned
int
*
s
);
/*__owur*/
int
EVP_Digest
(
const
void
*
data
,
size_t
count
,
__owur
int
EVP_Digest
(
const
void
*
data
,
size_t
count
,
unsigned
char
*
md
,
unsigned
int
*
size
,
const
EVP_MD
*
type
,
ENGINE
*
impl
);
/*__owur*/
int
EVP_MD_CTX_copy
(
EVP_MD_CTX
*
out
,
const
EVP_MD_CTX
*
in
);
/*__owur*/
int
EVP_DigestInit
(
EVP_MD_CTX
*
ctx
,
const
EVP_MD
*
type
);
__owur
int
EVP_MD_CTX_copy
(
EVP_MD_CTX
*
out
,
const
EVP_MD_CTX
*
in
);
__owur
int
EVP_DigestInit
(
EVP_MD_CTX
*
ctx
,
const
EVP_MD
*
type
);
__owur
int
EVP_DigestFinal
(
EVP_MD_CTX
*
ctx
,
unsigned
char
*
md
,
unsigned
int
*
s
);
...
...
ssl/record/ssl3_record.c
浏览文件 @
d166ed8c
...
...
@@ -1015,9 +1015,12 @@ int tls1_mac(SSL *ssl, SSL3_RECORD *rec, unsigned char *md, int send)
return
-
1
;
}
if
(
!
send
&&
!
SSL_USE_ETM
(
ssl
)
&&
FIPS_mode
())
tls_fips_digest_extra
(
ssl
->
enc_read_ctx
,
mac_ctx
,
rec
->
input
,
rec
->
length
,
rec
->
orig_len
);
if
(
!
tls_fips_digest_extra
(
ssl
->
enc_read_ctx
,
mac_ctx
,
rec
->
input
,
rec
->
length
,
rec
->
orig_len
))
{
EVP_MD_CTX_free
(
hmac
);
return
-
1
;
}
}
EVP_MD_CTX_free
(
hmac
);
...
...
ssl/s3_cbc.c
浏览文件 @
d166ed8c
...
...
@@ -490,13 +490,13 @@ err:
* digesting additional data.
*/
void
tls_fips_digest_extra
(
const
EVP_CIPHER_CTX
*
cipher_ctx
,
int
tls_fips_digest_extra
(
const
EVP_CIPHER_CTX
*
cipher_ctx
,
EVP_MD_CTX
*
mac_ctx
,
const
unsigned
char
*
data
,
size_t
data_len
,
size_t
orig_len
)
{
size_t
block_size
,
digest_pad
,
blocks_data
,
blocks_orig
;
if
(
EVP_CIPHER_CTX_mode
(
cipher_ctx
)
!=
EVP_CIPH_CBC_MODE
)
return
;
return
1
;
block_size
=
EVP_MD_CTX_block_size
(
mac_ctx
);
/*-
* We are in FIPS mode if we get this far so we know we have only SHA*
...
...
@@ -526,6 +526,6 @@ void tls_fips_digest_extra(const EVP_CIPHER_CTX *cipher_ctx,
* The "data" pointer should always have enough space to perform this
* operation as it is large enough for a maximum length TLS buffer.
*/
EVP_DigestSignUpdate
(
mac_ctx
,
data
,
(
blocks_orig
-
blocks_data
+
1
)
*
block_size
);
return
EVP_DigestSignUpdate
(
mac_ctx
,
data
,
(
blocks_orig
-
blocks_data
+
1
)
*
block_size
);
}
ssl/s3_enc.c
浏览文件 @
d166ed8c
...
...
@@ -70,23 +70,26 @@ static int ssl3_generate_key_block(SSL *s, unsigned char *km, int num)
for
(
j
=
0
;
j
<
k
;
j
++
)
buf
[
j
]
=
c
;
c
++
;
EVP_DigestInit_ex
(
s1
,
EVP_sha1
(),
NULL
);
EVP_DigestUpdate
(
s1
,
buf
,
k
);
EVP_DigestUpdate
(
s1
,
s
->
session
->
master_key
,
s
->
session
->
master_key_length
);
EVP_DigestUpdate
(
s1
,
s
->
s3
->
server_random
,
SSL3_RANDOM_SIZE
);
EVP_DigestUpdate
(
s1
,
s
->
s3
->
client_random
,
SSL3_RANDOM_SIZE
);
EVP_DigestFinal_ex
(
s1
,
smd
,
NULL
);
EVP_DigestInit_ex
(
m5
,
EVP_md5
(),
NULL
);
EVP_DigestUpdate
(
m5
,
s
->
session
->
master_key
,
s
->
session
->
master_key_length
);
EVP_DigestUpdate
(
m5
,
smd
,
SHA_DIGEST_LENGTH
)
;
if
(
!
EVP_DigestInit_ex
(
s1
,
EVP_sha1
(),
NULL
)
||
!
EVP_DigestUpdate
(
s1
,
buf
,
k
)
||
!
EVP_DigestUpdate
(
s1
,
s
->
session
->
master_key
,
s
->
session
->
master_key_length
)
||
!
EVP_DigestUpdate
(
s1
,
s
->
s3
->
server_random
,
SSL3_RANDOM_SIZE
)
||
!
EVP_DigestUpdate
(
s1
,
s
->
s3
->
client_random
,
SSL3_RANDOM_SIZE
)
||
!
EVP_DigestFinal_ex
(
s1
,
smd
,
NULL
)
||
!
EVP_DigestInit_ex
(
m5
,
EVP_md5
(),
NULL
)
||
!
EVP_DigestUpdate
(
m5
,
s
->
session
->
master_key
,
s
->
session
->
master_key_length
)
||
!
EVP_DigestUpdate
(
m5
,
smd
,
SHA_DIGEST_LENGTH
))
goto
err
;
if
((
int
)(
i
+
MD5_DIGEST_LENGTH
)
>
num
)
{
EVP_DigestFinal_ex
(
m5
,
smd
,
NULL
);
if
(
!
EVP_DigestFinal_ex
(
m5
,
smd
,
NULL
))
goto
err
;
memcpy
(
km
,
smd
,
(
num
-
i
));
}
else
EVP_DigestFinal_ex
(
m5
,
km
,
NULL
);
}
else
{
if
(
!
EVP_DigestFinal_ex
(
m5
,
km
,
NULL
))
goto
err
;
}
km
+=
MD5_DIGEST_LENGTH
;
}
...
...
@@ -353,12 +356,13 @@ void ssl3_free_digest_list(SSL *s)
s
->
s3
->
handshake_dgst
=
NULL
;
}
void
ssl3_finish_mac
(
SSL
*
s
,
const
unsigned
char
*
buf
,
int
len
)
int
ssl3_finish_mac
(
SSL
*
s
,
const
unsigned
char
*
buf
,
int
len
)
{
if
(
s
->
s3
->
handshake_dgst
==
NULL
)
BIO_write
(
s
->
s3
->
handshake_buffer
,
(
void
*
)
buf
,
len
);
/* Note: this writes to a memory BIO so a failure is a fatal error */
return
BIO_write
(
s
->
s3
->
handshake_buffer
,
(
void
*
)
buf
,
len
)
==
len
;
else
EVP_DigestUpdate
(
s
->
s3
->
handshake_dgst
,
buf
,
len
);
return
EVP_DigestUpdate
(
s
->
s3
->
handshake_dgst
,
buf
,
len
);
}
int
ssl3_digest_cached_records
(
SSL
*
s
,
int
keep
)
...
...
ssl/ssl_locl.h
浏览文件 @
d166ed8c
...
...
@@ -1875,7 +1875,7 @@ int ssl3_renegotiate_check(SSL *ssl);
__owur
int
ssl3_dispatch_alert
(
SSL
*
s
);
__owur
int
ssl3_final_finish_mac
(
SSL
*
s
,
const
char
*
sender
,
int
slen
,
unsigned
char
*
p
);
void
ssl3_finish_mac
(
SSL
*
s
,
const
unsigned
char
*
buf
,
int
len
);
__owur
int
ssl3_finish_mac
(
SSL
*
s
,
const
unsigned
char
*
buf
,
int
len
);
void
ssl3_free_digest_list
(
SSL
*
s
);
__owur
unsigned
long
ssl3_output_cert_chain
(
SSL
*
s
,
CERT_PKEY
*
cpk
);
__owur
const
SSL_CIPHER
*
ssl3_choose_cipher
(
SSL
*
ssl
,
...
...
@@ -2085,9 +2085,9 @@ __owur int ssl3_cbc_digest_record(const EVP_MD_CTX *ctx,
const
unsigned
char
*
mac_secret
,
unsigned
mac_secret_length
,
char
is_sslv3
);
void
tls_fips_digest_extra
(
const
EVP_CIPHER_CTX
*
cipher_ctx
,
EVP_MD_CTX
*
mac_ctx
,
const
unsigned
char
*
data
,
size_t
data_len
,
size_t
orig_len
);
__owur
int
tls_fips_digest_extra
(
const
EVP_CIPHER_CTX
*
cipher_ctx
,
EVP_MD_CTX
*
mac_ctx
,
const
unsigned
char
*
data
,
size_t
data_len
,
size_t
orig_len
);
__owur
int
srp_generate_server_master_secret
(
SSL
*
s
);
__owur
int
srp_generate_client_master_secret
(
SSL
*
s
);
...
...
ssl/statem/statem_clnt.c
浏览文件 @
d166ed8c
...
...
@@ -1890,9 +1890,12 @@ MSG_PROCESS_RETURN tls_process_new_session_ticket(SSL *s, PACKET *pkt)
* elsewhere in OpenSSL. The session ID is set to the SHA256 (or SHA1 is
* SHA256 is disabled) hash of the ticket.
*/
EVP_Digest
(
s
->
session
->
tlsext_tick
,
ticklen
,
s
->
session
->
session_id
,
&
s
->
session
->
session_id_length
,
EVP_sha256
(),
NULL
);
if
(
!
EVP_Digest
(
s
->
session
->
tlsext_tick
,
ticklen
,
s
->
session
->
session_id
,
&
s
->
session
->
session_id_length
,
EVP_sha256
(),
NULL
))
{
SSLerr
(
SSL_F_TLS_PROCESS_NEW_SESSION_TICKET
,
ERR_R_EVP_LIB
);
goto
err
;
}
return
MSG_PROCESS_CONTINUE_READING
;
f_err:
ssl3_send_alert
(
s
,
SSL3_AL_FATAL
,
al
);
...
...
ssl/statem/statem_dtls.c
浏览文件 @
d166ed8c
...
...
@@ -294,7 +294,8 @@ int dtls1_do_write(SSL *s, int type)
xlen
=
ret
-
DTLS1_HM_HEADER_LENGTH
;
}
ssl3_finish_mac
(
s
,
p
,
xlen
);
if
(
!
ssl3_finish_mac
(
s
,
p
,
xlen
))
return
-
1
;
}
if
(
ret
==
s
->
init_num
)
{
...
...
@@ -375,7 +376,8 @@ int dtls_get_message(SSL *s, int *mt, unsigned long *len)
msg_len
+=
DTLS1_HM_HEADER_LENGTH
;
}
ssl3_finish_mac
(
s
,
p
,
msg_len
);
if
(
!
ssl3_finish_mac
(
s
,
p
,
msg_len
))
return
0
;
if
(
s
->
msg_callback
)
s
->
msg_callback
(
0
,
s
->
version
,
SSL3_RT_HANDSHAKE
,
p
,
msg_len
,
s
,
s
->
msg_callback_arg
);
...
...
ssl/statem/statem_lib.c
浏览文件 @
d166ed8c
...
...
@@ -40,8 +40,10 @@ int ssl3_do_write(SSL *s, int type)
* should not be done for 'Hello Request's, but in that case we'll
* ignore the result anyway
*/
ssl3_finish_mac
(
s
,
(
unsigned
char
*
)
&
s
->
init_buf
->
data
[
s
->
init_off
],
ret
);
if
(
!
ssl3_finish_mac
(
s
,
(
unsigned
char
*
)
&
s
->
init_buf
->
data
[
s
->
init_off
],
ret
))
return
-
1
;
if
(
ret
==
s
->
init_num
)
{
if
(
s
->
msg_callback
)
...
...
@@ -481,13 +483,24 @@ int tls_get_message_body(SSL *s, unsigned long *len)
/* Feed this message into MAC computation. */
if
(
RECORD_LAYER_is_sslv2_record
(
&
s
->
rlayer
))
{
ssl3_finish_mac
(
s
,
(
unsigned
char
*
)
s
->
init_buf
->
data
,
s
->
init_num
);
if
(
!
ssl3_finish_mac
(
s
,
(
unsigned
char
*
)
s
->
init_buf
->
data
,
s
->
init_num
))
{
SSLerr
(
SSL_F_TLS_GET_MESSAGE_BODY
,
ERR_R_EVP_LIB
);
ssl3_send_alert
(
s
,
SSL3_AL_FATAL
,
SSL_AD_INTERNAL_ERROR
);
*
len
=
0
;
return
0
;
}
if
(
s
->
msg_callback
)
s
->
msg_callback
(
0
,
SSL2_VERSION
,
0
,
s
->
init_buf
->
data
,
(
size_t
)
s
->
init_num
,
s
,
s
->
msg_callback_arg
);
}
else
{
ssl3_finish_mac
(
s
,
(
unsigned
char
*
)
s
->
init_buf
->
data
,
s
->
init_num
+
SSL3_HM_HEADER_LENGTH
);
if
(
!
ssl3_finish_mac
(
s
,
(
unsigned
char
*
)
s
->
init_buf
->
data
,
s
->
init_num
+
SSL3_HM_HEADER_LENGTH
))
{
SSLerr
(
SSL_F_TLS_GET_MESSAGE_BODY
,
ERR_R_EVP_LIB
);
ssl3_send_alert
(
s
,
SSL3_AL_FATAL
,
SSL_AD_INTERNAL_ERROR
);
*
len
=
0
;
return
0
;
}
if
(
s
->
msg_callback
)
s
->
msg_callback
(
0
,
s
->
version
,
SSL3_RT_HANDSHAKE
,
s
->
init_buf
->
data
,
(
size_t
)
s
->
init_num
+
SSL3_HM_HEADER_LENGTH
,
s
,
...
...
test/md2test.c
浏览文件 @
d166ed8c
...
...
@@ -60,8 +60,11 @@ int main(int argc, char *argv[])
R
=
ret
;
i
=
1
;
while
(
*
P
!=
NULL
)
{
EVP_Digest
((
unsigned
char
*
)
*
P
,
strlen
(
*
P
),
md
,
NULL
,
EVP_md2
(),
NULL
);
if
(
!
EVP_Digest
((
unsigned
char
*
)
*
P
,
strlen
(
*
P
),
md
,
NULL
,
EVP_md2
(),
NULL
))
{
printf
(
"EVP Digest error.
\n
"
);
EXIT
(
1
);
}
p
=
pt
(
md
);
if
(
strcmp
(
p
,
*
R
)
!=
0
)
{
printf
(
"error calculating MD2 on '%s'
\n
"
,
*
P
);
...
...
test/md4test.c
浏览文件 @
d166ed8c
...
...
@@ -56,7 +56,11 @@ int main(int argc, char *argv[])
R
=
ret
;
i
=
1
;
while
(
*
P
!=
NULL
)
{
EVP_Digest
(
&
(
P
[
0
][
0
]),
strlen
((
char
*
)
*
P
),
md
,
NULL
,
EVP_md4
(),
NULL
);
if
(
!
EVP_Digest
(
&
(
P
[
0
][
0
]),
strlen
((
char
*
)
*
P
),
md
,
NULL
,
EVP_md4
(),
NULL
))
{
printf
(
"EVP Digest error.
\n
"
);
EXIT
(
1
);
}
p
=
pt
(
md
);
if
(
strcmp
(
p
,
(
char
*
)
*
R
)
!=
0
)
{
printf
(
"error calculating MD4 on '%s'
\n
"
,
*
P
);
...
...
test/md5test.c
浏览文件 @
d166ed8c
...
...
@@ -56,7 +56,11 @@ int main(int argc, char *argv[])
R
=
ret
;
i
=
1
;
while
(
*
P
!=
NULL
)
{
EVP_Digest
(
&
(
P
[
0
][
0
]),
strlen
((
char
*
)
*
P
),
md
,
NULL
,
EVP_md5
(),
NULL
);
if
(
!
EVP_Digest
(
&
(
P
[
0
][
0
]),
strlen
((
char
*
)
*
P
),
md
,
NULL
,
EVP_md5
(),
NULL
))
{
printf
(
"EVP Digest error.
\n
"
);
EXIT
(
1
);
}
p
=
pt
(
md
);
if
(
strcmp
(
p
,
(
char
*
)
*
R
)
!=
0
)
{
printf
(
"error calculating MD5 on '%s'
\n
"
,
*
P
);
...
...
test/mdc2test.c
浏览文件 @
d166ed8c
...
...
@@ -43,7 +43,7 @@ static unsigned char pad2[16] = {
int
main
(
int
argc
,
char
*
argv
[])
{
int
ret
=
0
;
int
ret
=
1
;
unsigned
char
md
[
MDC2_DIGEST_LENGTH
];
int
i
;
EVP_MD_CTX
*
c
;
...
...
@@ -54,9 +54,11 @@ int main(int argc, char *argv[])
# endif
c
=
EVP_MD_CTX_new
();
EVP_DigestInit_ex
(
c
,
EVP_mdc2
(),
NULL
);
EVP_DigestUpdate
(
c
,
(
unsigned
char
*
)
text
,
strlen
(
text
));
EVP_DigestFinal_ex
(
c
,
&
(
md
[
0
]),
NULL
);
if
(
c
==
NULL
||
!
EVP_DigestInit_ex
(
c
,
EVP_mdc2
(),
NULL
)
||
!
EVP_DigestUpdate
(
c
,
(
unsigned
char
*
)
text
,
strlen
(
text
))
||
!
EVP_DigestFinal_ex
(
c
,
&
(
md
[
0
]),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
pad1
,
MDC2_DIGEST_LENGTH
)
!=
0
)
{
for
(
i
=
0
;
i
<
MDC2_DIGEST_LENGTH
;
i
++
)
...
...
@@ -65,15 +67,18 @@ int main(int argc, char *argv[])
for
(
i
=
0
;
i
<
MDC2_DIGEST_LENGTH
;
i
++
)
printf
(
"%02X"
,
pad1
[
i
]);
printf
(
" <- correct
\n
"
);
ret
=
1
;
}
else
goto
err
;
}
else
{
printf
(
"pad1 - ok
\n
"
);
}
EVP_DigestInit_ex
(
c
,
EVP_mdc2
(),
NULL
);
if
(
!
EVP_DigestInit_ex
(
c
,
EVP_mdc2
(),
NULL
))
goto
err
;
/* FIXME: use a ctl function? */
((
MDC2_CTX
*
)
EVP_MD_CTX_md_data
(
c
))
->
pad_type
=
2
;
EVP_DigestUpdate
(
c
,
(
unsigned
char
*
)
text
,
strlen
(
text
));
EVP_DigestFinal_ex
(
c
,
&
(
md
[
0
]),
NULL
);
if
(
!
EVP_DigestUpdate
(
c
,
(
unsigned
char
*
)
text
,
strlen
(
text
))
||
!
EVP_DigestFinal_ex
(
c
,
&
(
md
[
0
]),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
pad2
,
MDC2_DIGEST_LENGTH
)
!=
0
)
{
for
(
i
=
0
;
i
<
MDC2_DIGEST_LENGTH
;
i
++
)
...
...
@@ -82,10 +87,12 @@ int main(int argc, char *argv[])
for
(
i
=
0
;
i
<
MDC2_DIGEST_LENGTH
;
i
++
)
printf
(
"%02X"
,
pad2
[
i
]);
printf
(
" <- correct
\n
"
);
ret
=
1
;
}
else
}
else
{
printf
(
"pad2 - ok
\n
"
);
ret
=
0
;
}
err:
EVP_MD_CTX_free
(
c
);
EXIT
(
ret
);
}
...
...
test/rmdtest.c
浏览文件 @
d166ed8c
...
...
@@ -63,8 +63,11 @@ int main(int argc, char *argv[])
# ifdef CHARSET_EBCDIC
ebcdic2ascii
(
test
[
i
],
test
[
i
],
strlen
(
test
[
i
]));
# endif
EVP_Digest
(
test
[
i
],
strlen
(
test
[
i
]),
md
,
NULL
,
EVP_ripemd160
(),
NULL
);
if
(
!
EVP_Digest
(
test
[
i
],
strlen
(
test
[
i
]),
md
,
NULL
,
EVP_ripemd160
(),
NULL
))
{
printf
(
"EVP Digest error.
\n
"
);
EXIT
(
1
);
}
p
=
pt
(
md
);
if
(
strcmp
(
p
,
(
char
*
)
*
R
)
!=
0
)
{
printf
(
"error calculating RIPEMD160 on '%s'
\n
"
,
test
[
i
]);
...
...
test/sha1test.c
浏览文件 @
d166ed8c
...
...
@@ -48,7 +48,12 @@ int main(int argc, char *argv[])
# ifdef CHARSET_EBCDIC
ebcdic2ascii
(
test
[
i
],
test
[
i
],
strlen
(
test
[
i
]));
# endif
EVP_Digest
(
test
[
i
],
strlen
(
test
[
i
]),
md
,
NULL
,
EVP_sha1
(),
NULL
);
if
(
!
EVP_Digest
(
test
[
i
],
strlen
(
test
[
i
]),
md
,
NULL
,
EVP_sha1
(),
NULL
))
{
printf
(
"EVP_Digest() error
\n
"
);
err
++
;
goto
err
;
}
p
=
pt
(
md
);
if
(
strcmp
(
p
,
(
char
*
)
*
R
)
!=
0
)
{
printf
(
"error calculating SHA1 on '%s'
\n
"
,
test
[
i
]);
...
...
@@ -63,10 +68,23 @@ int main(int argc, char *argv[])
#ifdef CHARSET_EBCDIC
ebcdic2ascii
(
buf
,
buf
,
1000
);
#endif
/* CHARSET_EBCDIC */
EVP_DigestInit_ex
(
c
,
EVP_sha1
(),
NULL
);
for
(
i
=
0
;
i
<
1000
;
i
++
)
EVP_DigestUpdate
(
c
,
buf
,
1000
);
EVP_DigestFinal_ex
(
c
,
md
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
c
,
EVP_sha1
(),
NULL
))
{
printf
(
"EVP_DigestInit_ex() error
\n
"
);
err
++
;
goto
err
;
}
for
(
i
=
0
;
i
<
1000
;
i
++
)
{
if
(
!
EVP_DigestUpdate
(
c
,
buf
,
1000
))
{
printf
(
"EVP_DigestUpdate() error
\n
"
);
err
++
;
goto
err
;
}
}
if
(
!
EVP_DigestFinal_ex
(
c
,
md
,
NULL
))
{
printf
(
"EVP_DigestFinal() error
\n
"
);
err
++
;
goto
err
;
}
p
=
pt
(
md
);
r
=
bigret
;
...
...
@@ -76,7 +94,7 @@ int main(int argc, char *argv[])
err
++
;
}
else
printf
(
"test 3 ok
\n
"
);
err:
EVP_MD_CTX_free
(
c
);
EXIT
(
err
);
return
(
0
);
...
...
test/sha256t.c
浏览文件 @
d166ed8c
...
...
@@ -64,7 +64,8 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"Testing SHA-256 "
);
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha256
(),
NULL
);
if
(
!
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha256
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_b1
,
sizeof
(
app_b1
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 1 of 3 failed.
\n
"
);
...
...
@@ -73,9 +74,10 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"."
);
fflush
(
stdout
);
EVP_Digest
(
"abcdbcde"
"cdefdefg"
"efghfghi"
"ghijhijk"
"ijkljklm"
"klmnlmno"
"mnopnopq"
,
56
,
md
,
NULL
,
EVP_sha256
(),
NULL
);
if
(
!
EVP_Digest
(
"abcdbcde"
"cdefdefg"
"efghfghi"
"ghijhijk"
"ijkljklm"
"klmnlmno"
"mnopnopq"
,
56
,
md
,
NULL
,
EVP_sha256
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_b2
,
sizeof
(
app_b2
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 2 of 3 failed.
\n
"
);
...
...
@@ -90,19 +92,23 @@ int main(int argc, char **argv)
fprintf
(
stderr
,
"
\n
TEST 3 of 3 failed. (malloc failure)
\n
"
);
return
1
;
}
EVP_DigestInit_ex
(
evp
,
EVP_sha256
(),
NULL
);
for
(
i
=
0
;
i
<
1000000
;
i
+=
288
)
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
288
?
1000000
-
i
:
288
);
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
evp
,
EVP_sha256
(),
NULL
))
goto
err
;
for
(
i
=
0
;
i
<
1000000
;
i
+=
288
)
{
if
(
!
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
288
?
1000000
-
i
:
288
))
goto
err
;
}
if
(
!
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_b3
,
sizeof
(
app_b3
)))
{
fflush
(
stdout
);
...
...
@@ -117,7 +123,8 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"Testing SHA-224 "
);
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha224
(),
NULL
);
if
(
!
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha224
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
addenum_1
,
sizeof
(
addenum_1
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 1 of 3 failed.
\n
"
);
...
...
@@ -126,9 +133,10 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"."
);
fflush
(
stdout
);
EVP_Digest
(
"abcdbcde"
"cdefdefg"
"efghfghi"
"ghijhijk"
"ijkljklm"
"klmnlmno"
"mnopnopq"
,
56
,
md
,
NULL
,
EVP_sha224
(),
NULL
);
if
(
!
EVP_Digest
(
"abcdbcde"
"cdefdefg"
"efghfghi"
"ghijhijk"
"ijkljklm"
"klmnlmno"
"mnopnopq"
,
56
,
md
,
NULL
,
EVP_sha224
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
addenum_2
,
sizeof
(
addenum_2
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 2 of 3 failed.
\n
"
);
...
...
@@ -138,12 +146,16 @@ int main(int argc, char **argv)
fflush
(
stdout
);
EVP_MD_CTX_reset
(
evp
);
EVP_DigestInit_ex
(
evp
,
EVP_sha224
(),
NULL
);
for
(
i
=
0
;
i
<
1000000
;
i
+=
64
)
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
64
?
1000000
-
i
:
64
);
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
evp
,
EVP_sha224
(),
NULL
))
goto
err
;
for
(
i
=
0
;
i
<
1000000
;
i
+=
64
)
{
if
(
!
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
64
?
1000000
-
i
:
64
))
goto
err
;
}
if
(
!
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
))
goto
err
;
EVP_MD_CTX_free
(
evp
);
if
(
memcmp
(
md
,
addenum_3
,
sizeof
(
addenum_3
)))
{
...
...
@@ -158,4 +170,8 @@ int main(int argc, char **argv)
fflush
(
stdout
);
return
0
;
err:
fprintf
(
stderr
,
"Fatal EVP error!
\n
"
);
return
1
;
}
test/sha512t.c
浏览文件 @
d166ed8c
...
...
@@ -83,7 +83,8 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"Testing SHA-512 "
);
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha512
(),
NULL
);
if
(
!
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha512
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_c1
,
sizeof
(
app_c1
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 1 of 3 failed.
\n
"
);
...
...
@@ -92,10 +93,11 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"."
);
fflush
(
stdout
);
EVP_Digest
(
"abcdefgh"
"bcdefghi"
"cdefghij"
"defghijk"
"efghijkl"
"fghijklm"
"ghijklmn"
"hijklmno"
"ijklmnop"
"jklmnopq"
"klmnopqr"
"lmnopqrs"
"mnopqrst"
"nopqrstu"
,
112
,
md
,
NULL
,
EVP_sha512
(),
NULL
);
if
(
!
EVP_Digest
(
"abcdefgh"
"bcdefghi"
"cdefghij"
"defghijk"
"efghijkl"
"fghijklm"
"ghijklmn"
"hijklmno"
"ijklmnop"
"jklmnopq"
"klmnopqr"
"lmnopqrs"
"mnopqrst"
"nopqrstu"
,
112
,
md
,
NULL
,
EVP_sha512
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_c2
,
sizeof
(
app_c2
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 2 of 3 failed.
\n
"
);
...
...
@@ -110,19 +112,23 @@ int main(int argc, char **argv)
fprintf
(
stderr
,
"
\n
TEST 3 of 3 failed. (malloc failure)
\n
"
);
return
1
;
}
EVP_DigestInit_ex
(
evp
,
EVP_sha512
(),
NULL
);
for
(
i
=
0
;
i
<
1000000
;
i
+=
288
)
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
288
?
1000000
-
i
:
288
);
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
evp
,
EVP_sha512
(),
NULL
))
goto
err
;
for
(
i
=
0
;
i
<
1000000
;
i
+=
288
)
{
if
(
!
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
288
?
1000000
-
i
:
288
))
goto
err
;
}
if
(
!
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
))
goto
err
;
EVP_MD_CTX_reset
(
evp
);
if
(
memcmp
(
md
,
app_c3
,
sizeof
(
app_c3
)))
{
...
...
@@ -138,7 +144,8 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"Testing SHA-384 "
);
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha384
(),
NULL
);
if
(
!
EVP_Digest
(
"abc"
,
3
,
md
,
NULL
,
EVP_sha384
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_d1
,
sizeof
(
app_d1
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 1 of 3 failed.
\n
"
);
...
...
@@ -147,10 +154,11 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"."
);
fflush
(
stdout
);
EVP_Digest
(
"abcdefgh"
"bcdefghi"
"cdefghij"
"defghijk"
"efghijkl"
"fghijklm"
"ghijklmn"
"hijklmno"
"ijklmnop"
"jklmnopq"
"klmnopqr"
"lmnopqrs"
"mnopqrst"
"nopqrstu"
,
112
,
md
,
NULL
,
EVP_sha384
(),
NULL
);
if
(
!
EVP_Digest
(
"abcdefgh"
"bcdefghi"
"cdefghij"
"defghijk"
"efghijkl"
"fghijklm"
"ghijklmn"
"hijklmno"
"ijklmnop"
"jklmnopq"
"klmnopqr"
"lmnopqrs"
"mnopqrst"
"nopqrstu"
,
112
,
md
,
NULL
,
EVP_sha384
(),
NULL
))
goto
err
;
if
(
memcmp
(
md
,
app_d2
,
sizeof
(
app_d2
)))
{
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
TEST 2 of 3 failed.
\n
"
);
...
...
@@ -159,12 +167,16 @@ int main(int argc, char **argv)
fprintf
(
stdout
,
"."
);
fflush
(
stdout
);
EVP_DigestInit_ex
(
evp
,
EVP_sha384
(),
NULL
);
for
(
i
=
0
;
i
<
1000000
;
i
+=
64
)
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
64
?
1000000
-
i
:
64
);
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
);
if
(
!
EVP_DigestInit_ex
(
evp
,
EVP_sha384
(),
NULL
))
goto
err
;
for
(
i
=
0
;
i
<
1000000
;
i
+=
64
)
{
if
(
!
EVP_DigestUpdate
(
evp
,
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
"aaaaaaaa"
,
(
1000000
-
i
)
<
64
?
1000000
-
i
:
64
))
goto
err
;
}
if
(
!
EVP_DigestFinal_ex
(
evp
,
md
,
NULL
))
goto
err
;
EVP_MD_CTX_free
(
evp
);
if
(
memcmp
(
md
,
app_d3
,
sizeof
(
app_d3
)))
{
...
...
@@ -179,4 +191,9 @@ int main(int argc, char **argv)
fflush
(
stdout
);
return
0
;
err:
fflush
(
stdout
);
fprintf
(
stderr
,
"
\n
Fatal EVP error!
\n
"
);
return
1
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录