Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
8f829124
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
接近 2 年 前同步成功
通知
12
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看板
提交
8f829124
编写于
5月 12, 2011
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Process signature algorithms during TLS v1.2 client authentication.
Make sure message is long enough for signature algorithms.
上级
f76b1baf
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
27 addition
and
11 deletion
+27
-11
ssl/s3_clnt.c
ssl/s3_clnt.c
+19
-9
ssl/ssl.h
ssl/ssl.h
+1
-0
ssl/ssl_err.c
ssl/ssl_err.c
+1
-0
ssl/ssl_locl.h
ssl/ssl_locl.h
+1
-0
ssl/t1_lib.c
ssl/t1_lib.c
+5
-2
未找到文件。
ssl/s3_clnt.c
浏览文件 @
8f829124
...
...
@@ -1793,7 +1793,7 @@ int ssl3_get_certificate_request(SSL *s)
{
int
ok
,
ret
=
0
;
unsigned
long
n
,
nc
,
l
;
unsigned
int
llen
,
sigalglen
,
ctype_num
,
i
;
unsigned
int
llen
,
ctype_num
,
i
;
X509_NAME
*
xn
=
NULL
;
const
unsigned
char
*
p
,
*
q
;
unsigned
char
*
d
;
...
...
@@ -1852,14 +1852,24 @@ int ssl3_get_certificate_request(SSL *s)
/* HACK! For now just skip over signatature algorithms */
if
(
s
->
version
>=
TLS1_2_VERSION
)
{
n2s
(
p
,
sigalglen
);
p
+=
sigalglen
;
sigalglen
+=
2
;
n2s
(
p
,
llen
);
/* Check we have enough room for signature algorithms and
* following length value.
*/
if
((
unsigned
long
)(
p
-
d
+
llen
+
2
)
>
n
)
{
ssl3_send_alert
(
s
,
SSL3_AL_FATAL
,
SSL_AD_DECODE_ERROR
);
SSLerr
(
SSL_F_SSL3_GET_CERTIFICATE_REQUEST
,
SSL_R_DATA_LENGTH_TOO_LONG
);
goto
err
;
}
if
((
llen
&
1
)
||
!
tls1_process_sigalgs
(
s
,
p
,
llen
))
{
ssl3_send_alert
(
s
,
SSL3_AL_FATAL
,
SSL_AD_DECODE_ERROR
);
SSLerr
(
SSL_F_SSL3_GET_CERTIFICATE_REQUEST
,
SSL_R_SIGNATURE_ALGORITHMS_ERROR
);
goto
err
;
}
p
+=
llen
;
}
else
sigalglen
=
0
;
/* get the CA RDNs */
n2s
(
p
,
llen
);
...
...
@@ -1872,7 +1882,7 @@ fclose(out);
}
#endif
if
((
llen
+
ctype_num
+
sigalglen
+
2
+
1
)
!=
n
)
if
((
unsigned
long
)(
p
-
d
+
llen
)
!=
n
)
{
ssl3_send_alert
(
s
,
SSL3_AL_FATAL
,
SSL_AD_DECODE_ERROR
);
SSLerr
(
SSL_F_SSL3_GET_CERTIFICATE_REQUEST
,
SSL_R_LENGTH_MISMATCH
);
...
...
ssl/ssl.h
浏览文件 @
8f829124
...
...
@@ -2433,6 +2433,7 @@ void ERR_load_SSL_strings(void);
#define SSL_R_SERVERHELLO_TLSEXT 275
#define SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED 277
#define SSL_R_SHORT_READ 219
#define SSL_R_SIGNATURE_ALGORITHMS_ERROR 359
#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
#define SSL_R_SRP_A_CALC 356
#define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
...
...
ssl/ssl_err.c
浏览文件 @
8f829124
...
...
@@ -476,6 +476,7 @@ static ERR_STRING_DATA SSL_str_reasons[]=
{
ERR_REASON
(
SSL_R_SERVERHELLO_TLSEXT
)
,
"serverhello tlsext"
},
{
ERR_REASON
(
SSL_R_SESSION_ID_CONTEXT_UNINITIALIZED
),
"session id context uninitialized"
},
{
ERR_REASON
(
SSL_R_SHORT_READ
)
,
"short read"
},
{
ERR_REASON
(
SSL_R_SIGNATURE_ALGORITHMS_ERROR
),
"signature algorithms error"
},
{
ERR_REASON
(
SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE
),
"signature for non signing certificate"
},
{
ERR_REASON
(
SSL_R_SRP_A_CALC
)
,
"error with the srp params"
},
{
ERR_REASON
(
SSL_R_SSL23_DOING_SESSION_ID_REUSE
),
"ssl23 doing session id reuse"
},
...
...
ssl/ssl_locl.h
浏览文件 @
8f829124
...
...
@@ -1095,4 +1095,5 @@ int ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, int *len,
int
ssl_parse_clienthello_renegotiate_ext
(
SSL
*
s
,
unsigned
char
*
d
,
int
len
,
int
*
al
);
long
ssl_get_algorithm2
(
SSL
*
s
);
int
tls1_process_sigalgs
(
SSL
*
s
,
const
unsigned
char
*
data
,
int
dsize
);
#endif
ssl/t1_lib.c
浏览文件 @
8f829124
...
...
@@ -122,7 +122,6 @@ const char tls1_version_str[]="TLSv1" OPENSSL_VERSION_PTEXT;
static
int
tls_decrypt_ticket
(
SSL
*
s
,
const
unsigned
char
*
tick
,
int
ticklen
,
const
unsigned
char
*
sess_id
,
int
sesslen
,
SSL_SESSION
**
psess
);
static
int
tls1_process_sigalgs
(
SSL
*
s
,
const
unsigned
char
*
data
,
int
dsize
);
#endif
SSL3_ENC_METHOD
TLSv1_enc_data
=
{
...
...
@@ -2090,7 +2089,7 @@ const EVP_MD *tls12_get_hash(unsigned char hash_alg)
/* Set preferred digest for each key type */
static
int
tls1_process_sigalgs
(
SSL
*
s
,
const
unsigned
char
*
data
,
int
dsize
)
int
tls1_process_sigalgs
(
SSL
*
s
,
const
unsigned
char
*
data
,
int
dsize
)
{
int
i
,
idx
;
const
EVP_MD
*
md
;
...
...
@@ -2098,6 +2097,9 @@ static int tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize)
/* Extension ignored for TLS versions below 1.2 */
if
(
s
->
version
<
TLS1_2_VERSION
)
return
1
;
/* Should never happen */
if
(
!
c
)
return
0
;
c
->
pkeys
[
SSL_PKEY_DSA_SIGN
].
digest
=
NULL
;
c
->
pkeys
[
SSL_PKEY_RSA_SIGN
].
digest
=
NULL
;
...
...
@@ -2142,6 +2144,7 @@ static int tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize)
}
/* Set any remaining keys to default values. NOTE: if alg is not
* supported it stays as NULL.
*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录