Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
6ba71a71
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看板
提交
6ba71a71
编写于
12月 27, 2008
作者:
B
Ben Laurie
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Handle the unlikely event that BIO_get_mem_data() returns -ve.
上级
4ded7b44
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
59 addition
and
37 deletion
+59
-37
ssl/s3_clnt.c
ssl/s3_clnt.c
+2
-1
ssl/s3_enc.c
ssl/s3_enc.c
+39
-27
ssl/s3_srvr.c
ssl/s3_srvr.c
+4
-2
ssl/ssl.h
ssl/ssl.h
+3
-1
ssl/ssl_err.c
ssl/ssl_err.c
+3
-1
ssl/ssl_locl.h
ssl/ssl_locl.h
+1
-1
ssl/t1_enc.c
ssl/t1_enc.c
+7
-4
未找到文件。
ssl/s3_clnt.c
浏览文件 @
6ba71a71
...
...
@@ -871,7 +871,8 @@ int ssl3_get_server_hello(SSL *s)
}
}
s
->
s3
->
tmp
.
new_cipher
=
c
;
ssl3_digest_cached_records
(
s
);
if
(
!
ssl3_digest_cached_records
(
s
))
goto
f_err
;
/* lets get the compression algorithm */
/* COMPRESSION */
...
...
ssl/s3_enc.c
浏览文件 @
6ba71a71
...
...
@@ -580,37 +580,47 @@ void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len)
}
}
}
void
ssl3_digest_cached_records
(
SSL
*
s
)
int
ssl3_digest_cached_records
(
SSL
*
s
)
{
int
i
;
long
mask
;
const
EVP_MD
*
md
;
long
hdatalen
;
void
*
hdata
;
/* Allocate handshake_dgst array */
ssl3_free_digest_list
(
s
);
s
->
s3
->
handshake_dgst
=
OPENSSL_malloc
(
SSL_MAX_DIGEST
*
sizeof
(
EVP_MD_CTX
*
));
memset
(
s
->
s3
->
handshake_dgst
,
0
,
SSL_MAX_DIGEST
*
sizeof
(
EVP_MD_CTX
*
));
hdatalen
=
BIO_get_mem_data
(
s
->
s3
->
handshake_buffer
,
&
hdata
);
/* Loop through bitso of algorithm2 field and create MD_CTX-es */
for
(
i
=
0
;
ssl_get_handshake_digest
(
i
,
&
mask
,
&
md
);
i
++
)
int
i
;
long
mask
;
const
EVP_MD
*
md
;
long
hdatalen
;
void
*
hdata
;
/* Allocate handshake_dgst array */
ssl3_free_digest_list
(
s
);
s
->
s3
->
handshake_dgst
=
OPENSSL_malloc
(
SSL_MAX_DIGEST
*
sizeof
(
EVP_MD_CTX
*
));
memset
(
s
->
s3
->
handshake_dgst
,
0
,
SSL_MAX_DIGEST
*
sizeof
(
EVP_MD_CTX
*
));
hdatalen
=
BIO_get_mem_data
(
s
->
s3
->
handshake_buffer
,
&
hdata
);
if
(
hdatalen
<=
0
)
{
SSLerr
(
SSL_F_DIGEST_CACHED_RECORDS
,
SSL_R_BAD_HANDSHAKE_LENGTH
);
return
0
;
}
/* Loop through bitso of algorithm2 field and create MD_CTX-es */
for
(
i
=
0
;
ssl_get_handshake_digest
(
i
,
&
mask
,
&
md
);
i
++
)
{
if
((
mask
&
s
->
s3
->
tmp
.
new_cipher
->
algorithm2
)
&&
md
)
{
if
((
mask
&
s
->
s3
->
tmp
.
new_cipher
->
algorithm2
)
&&
md
)
{
s
->
s3
->
handshake_dgst
[
i
]
=
EVP_MD_CTX_create
();
EVP_DigestInit_ex
(
s
->
s3
->
handshake_dgst
[
i
],
md
,
NULL
);
EVP_DigestUpdate
(
s
->
s3
->
handshake_dgst
[
i
],
hdata
,
hdatalen
);
}
else
{
s
->
s3
->
handshake_dgst
[
i
]
=
NULL
;
}
s
->
s3
->
handshake_dgst
[
i
]
=
EVP_MD_CTX_create
();
EVP_DigestInit_ex
(
s
->
s3
->
handshake_dgst
[
i
],
md
,
NULL
);
EVP_DigestUpdate
(
s
->
s3
->
handshake_dgst
[
i
],
hdata
,
hdatalen
);
}
else
{
s
->
s3
->
handshake_dgst
[
i
]
=
NULL
;
}
/* Free handshake_buffer BIO */
BIO_free
(
s
->
s3
->
handshake_buffer
);
s
->
s3
->
handshake_buffer
=
NULL
;
}
/* Free handshake_buffer BIO */
BIO_free
(
s
->
s3
->
handshake_buffer
);
s
->
s3
->
handshake_buffer
=
NULL
;
return
1
;
}
int
ssl3_cert_verify_mac
(
SSL
*
s
,
int
md_nid
,
unsigned
char
*
p
)
{
return
(
ssl3_handshake_mac
(
s
,
md_nid
,
NULL
,
0
,
p
));
...
...
@@ -632,8 +642,10 @@ static int ssl3_handshake_mac(SSL *s, int md_nid,
unsigned
int
i
;
unsigned
char
md_buf
[
EVP_MAX_MD_SIZE
];
EVP_MD_CTX
ctx
,
*
d
=
NULL
;
if
(
s
->
s3
->
handshake_buffer
)
ssl3_digest_cached_records
(
s
);
if
(
!
ssl3_digest_cached_records
(
s
))
return
0
;
/* Search for djgest of specified type in the handshake_dgst
* array*/
...
...
ssl/s3_srvr.c
浏览文件 @
6ba71a71
...
...
@@ -531,7 +531,8 @@ int ssl3_accept(SSL *s)
* should be generalized. But it is next step
*/
if
(
s
->
s3
->
handshake_buffer
)
ssl3_digest_cached_records
(
s
);
if
(
!
ssl3_digest_cached_records
(
s
))
return
-
1
;
for
(
dgst_num
=
0
;
dgst_num
<
SSL_MAX_DIGEST
;
dgst_num
++
)
if
(
s
->
s3
->
handshake_dgst
[
dgst_num
])
{
...
...
@@ -1158,7 +1159,8 @@ int ssl3_get_client_hello(SSL *s)
s
->
s3
->
tmp
.
new_cipher
=
s
->
session
->
cipher
;
}
ssl3_digest_cached_records
(
s
);
if
(
!
ssl3_digest_cached_records
(
s
))
goto
f_err
;
/* we now have the following setup.
* client_random
...
...
ssl/ssl.h
浏览文件 @
6ba71a71
...
...
@@ -1784,6 +1784,7 @@ void ERR_load_SSL_strings(void);
#define SSL_F_CLIENT_HELLO 101
#define SSL_F_CLIENT_MASTER_KEY 102
#define SSL_F_D2I_SSL_SESSION 103
#define SSL_F_DIGEST_CACHED_RECORDS 293
#define SSL_F_DO_DTLS1_WRITE 245
#define SSL_F_DO_SSL3_WRITE 104
#define SSL_F_DTLS1_ACCEPT 246
...
...
@@ -1945,6 +1946,7 @@ void ERR_load_SSL_strings(void);
#define SSL_F_SSL_SET_RFD 194
#define SSL_F_SSL_SET_SESSION 195
#define SSL_F_SSL_SET_SESSION_ID_CONTEXT 218
#define SSL_F_SSL_SET_SESSION_TICKET_EXT 294
#define SSL_F_SSL_SET_TRUST 228
#define SSL_F_SSL_SET_WFD 196
#define SSL_F_SSL_SHUTDOWN 224
...
...
@@ -1972,7 +1974,6 @@ void ERR_load_SSL_strings(void);
#define SSL_F_TLS1_PRF 284
#define SSL_F_TLS1_SETUP_KEY_BLOCK 211
#define SSL_F_WRITE_PENDING 212
#define SSL_F_SSL_SET_SESSION_TICKET_EXT 213
/* Reason codes. */
#define SSL_R_APP_DATA_IN_HANDSHAKE 100
...
...
@@ -1991,6 +1992,7 @@ void ERR_load_SSL_strings(void);
#define SSL_R_BAD_ECC_CERT 304
#define SSL_R_BAD_ECDSA_SIGNATURE 305
#define SSL_R_BAD_ECPOINT 306
#define SSL_R_BAD_HANDSHAKE_LENGTH 332
#define SSL_R_BAD_HELLO_REQUEST 105
#define SSL_R_BAD_LENGTH 271
#define SSL_R_BAD_MAC_DECODE 113
...
...
ssl/ssl_err.c
浏览文件 @
6ba71a71
...
...
@@ -75,6 +75,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
{
ERR_FUNC
(
SSL_F_CLIENT_HELLO
),
"CLIENT_HELLO"
},
{
ERR_FUNC
(
SSL_F_CLIENT_MASTER_KEY
),
"CLIENT_MASTER_KEY"
},
{
ERR_FUNC
(
SSL_F_D2I_SSL_SESSION
),
"d2i_SSL_SESSION"
},
{
ERR_FUNC
(
SSL_F_DIGEST_CACHED_RECORDS
),
"DIGEST_CACHED_RECORDS"
},
{
ERR_FUNC
(
SSL_F_DO_DTLS1_WRITE
),
"DO_DTLS1_WRITE"
},
{
ERR_FUNC
(
SSL_F_DO_SSL3_WRITE
),
"DO_SSL3_WRITE"
},
{
ERR_FUNC
(
SSL_F_DTLS1_ACCEPT
),
"DTLS1_ACCEPT"
},
...
...
@@ -236,6 +237,7 @@ static ERR_STRING_DATA SSL_str_functs[]=
{
ERR_FUNC
(
SSL_F_SSL_SET_RFD
),
"SSL_set_rfd"
},
{
ERR_FUNC
(
SSL_F_SSL_SET_SESSION
),
"SSL_set_session"
},
{
ERR_FUNC
(
SSL_F_SSL_SET_SESSION_ID_CONTEXT
),
"SSL_set_session_id_context"
},
{
ERR_FUNC
(
SSL_F_SSL_SET_SESSION_TICKET_EXT
),
"SSL_set_session_ticket_ext"
},
{
ERR_FUNC
(
SSL_F_SSL_SET_TRUST
),
"SSL_set_trust"
},
{
ERR_FUNC
(
SSL_F_SSL_SET_WFD
),
"SSL_set_wfd"
},
{
ERR_FUNC
(
SSL_F_SSL_SHUTDOWN
),
"SSL_shutdown"
},
...
...
@@ -263,7 +265,6 @@ static ERR_STRING_DATA SSL_str_functs[]=
{
ERR_FUNC
(
SSL_F_TLS1_PRF
),
"tls1_prf"
},
{
ERR_FUNC
(
SSL_F_TLS1_SETUP_KEY_BLOCK
),
"TLS1_SETUP_KEY_BLOCK"
},
{
ERR_FUNC
(
SSL_F_WRITE_PENDING
),
"WRITE_PENDING"
},
{
ERR_FUNC
(
SSL_F_SSL_SET_SESSION_TICKET_EXT
),
"SSL_set_session_ticket_ext"
},
{
0
,
NULL
}
};
...
...
@@ -285,6 +286,7 @@ static ERR_STRING_DATA SSL_str_reasons[]=
{
ERR_REASON
(
SSL_R_BAD_ECC_CERT
)
,
"bad ecc cert"
},
{
ERR_REASON
(
SSL_R_BAD_ECDSA_SIGNATURE
)
,
"bad ecdsa signature"
},
{
ERR_REASON
(
SSL_R_BAD_ECPOINT
)
,
"bad ecpoint"
},
{
ERR_REASON
(
SSL_R_BAD_HANDSHAKE_LENGTH
)
,
"bad handshake length"
},
{
ERR_REASON
(
SSL_R_BAD_HELLO_REQUEST
)
,
"bad hello request"
},
{
ERR_REASON
(
SSL_R_BAD_LENGTH
)
,
"bad length"
},
{
ERR_REASON
(
SSL_R_BAD_MAC_DECODE
)
,
"bad mac decode"
},
...
...
ssl/ssl_locl.h
浏览文件 @
6ba71a71
...
...
@@ -880,7 +880,7 @@ int ssl3_setup_read_buffer(SSL *s);
int
ssl3_setup_write_buffer
(
SSL
*
s
);
int
ssl3_release_read_buffer
(
SSL
*
s
);
int
ssl3_release_write_buffer
(
SSL
*
s
);
void
ssl3_digest_cached_records
(
SSL
*
s
);
int
ssl3_digest_cached_records
(
SSL
*
s
);
int
ssl3_new
(
SSL
*
s
);
void
ssl3_free
(
SSL
*
s
);
int
ssl3_accept
(
SSL
*
s
);
...
...
ssl/t1_enc.c
浏览文件 @
6ba71a71
...
...
@@ -749,7 +749,9 @@ int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *out)
int
i
;
if
(
s
->
s3
->
handshake_buffer
)
ssl3_digest_cached_records
(
s
);
if
(
!
ssl3_digest_cached_records
(
s
))
return
0
;
for
(
i
=
0
;
i
<
SSL_MAX_DIGEST
;
i
++
)
{
if
(
s
->
s3
->
handshake_dgst
[
i
]
&&
EVP_MD_CTX_type
(
s
->
s3
->
handshake_dgst
[
i
])
==
md_nid
)
...
...
@@ -784,10 +786,11 @@ int tls1_final_finish_mac(SSL *s,
q
=
buf
;
EVP_MD_CTX_init
(
&
ctx
);
if
(
s
->
s3
->
handshake_buffer
)
ssl3_digest_cached_records
(
s
);
if
(
!
ssl3_digest_cached_records
(
s
))
return
0
;
EVP_MD_CTX_init
(
&
ctx
);
for
(
idx
=
0
;
ssl_get_handshake_digest
(
idx
,
&
mask
,
&
md
);
idx
++
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录