Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
5997efca
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看板
提交
5997efca
编写于
2月 10, 2012
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Submitted by: Eric Rescorla <ekr@rtfm.com>
Fix encoding of use_srtp extension to be compliant with RFC5764
上级
57559471
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
61 addition
and
10 deletion
+61
-10
ssl/d1_srtp.c
ssl/d1_srtp.c
+59
-10
ssl/ssl.h
ssl/ssl.h
+1
-0
ssl/ssl_err.c
ssl/ssl_err.c
+1
-0
未找到文件。
ssl/d1_srtp.c
浏览文件 @
5997efca
...
...
@@ -278,19 +278,25 @@ int ssl_add_clienthello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int max
return
1
;
}
if
((
ct
*
2
)
>
maxlen
)
if
((
2
+
ct
*
2
+
1
)
>
maxlen
)
{
SSLerr
(
SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT
,
SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG
);
return
1
;
}
/* Add the length */
s2n
(
ct
*
2
,
p
);
for
(
i
=
0
;
i
<
ct
;
i
++
)
{
prof
=
sk_SRTP_PROTECTION_PROFILE_value
(
clnt
,
i
);
s2n
(
prof
->
id
,
p
);
}
/* Add an empty use_mki value */
*
p
++
=
0
;
}
*
len
=
ct
*
2
;
*
len
=
2
+
ct
*
2
+
1
;
return
0
;
}
...
...
@@ -300,23 +306,48 @@ int ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al
{
SRTP_PROTECTION_PROFILE
*
cprof
,
*
sprof
;
STACK_OF
(
SRTP_PROTECTION_PROFILE
)
*
clnt
=
0
,
*
srvr
;
int
ct
;
int
mki_len
;
int
i
,
j
;
int
id
;
int
ret
;
if
(
len
%
2
)
/* Length value + the MKI length */
if
(
len
<
3
)
{
SSLerr
(
SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT
,
SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
);
*
al
=
SSL_AD_DECODE_ERROR
;
return
1
;
}
/* Pull off the length of the cipher suite list */
n2s
(
d
,
ct
);
len
-=
2
;
/* Check that it is even */
if
(
ct
%
2
)
{
SSLerr
(
SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT
,
SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
);
*
al
=
SSL_AD_DECODE_ERROR
;
return
1
;
}
/* Check that lengths are consistent */
if
(
len
<
(
ct
+
1
))
{
SSLerr
(
SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT
,
SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
);
*
al
=
SSL_AD_DECODE_ERROR
;
return
1
;
}
clnt
=
sk_SRTP_PROTECTION_PROFILE_new_null
();
while
(
len
)
while
(
ct
)
{
n2s
(
d
,
id
);
len
-=
2
;
ct
-=
2
;
len
-=
2
;
if
(
!
find_profile_by_num
(
id
,
&
cprof
))
{
...
...
@@ -328,6 +359,17 @@ int ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al
}
}
/* Now extract the MKI value as a sanity check, but discard it for now */
mki_len
=
*
d
;
d
++
;
len
--
;
if
(
mki_len
!=
len
)
{
SSLerr
(
SSL_F_SSL_PARSE_CLIENTHELLO_USE_SRTP_EXT
,
SSL_R_BAD_SRTP_MKI_VALUE
);
*
al
=
SSL_AD_DECODE_ERROR
;
return
1
;
}
srvr
=
SSL_get_srtp_profiles
(
s
);
/* Pick our most preferred profile. If no profiles have been
...
...
@@ -364,7 +406,7 @@ int ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int max
{
if
(
p
)
{
if
(
maxlen
<
2
)
if
(
maxlen
<
3
)
{
SSLerr
(
SSL_F_SSL_ADD_SERVERHELLO_USE_SRTP_EXT
,
SSL_R_SRTP_PROTECTION_PROFILE_LIST_TOO_LONG
);
return
1
;
...
...
@@ -377,8 +419,9 @@ int ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int max
}
s2n
(
s
->
srtp_profile
->
id
,
p
);
}
*
len
=
2
;
*
p
++
=
0
;
}
*
len
=
3
;
return
0
;
}
...
...
@@ -391,7 +434,7 @@ int ssl_parse_serverhello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al
STACK_OF
(
SRTP_PROTECTION_PROFILE
)
*
clnt
;
SRTP_PROTECTION_PROFILE
*
prof
;
if
(
len
!=
2
)
if
(
len
!=
3
)
{
SSLerr
(
SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT
,
SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
);
*
al
=
SSL_AD_DECODE_ERROR
;
...
...
@@ -399,6 +442,12 @@ int ssl_parse_serverhello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al
}
n2s
(
d
,
id
);
if
(
*
d
)
/* Must be no MKI, since we never offer one */
{
SSLerr
(
SSL_F_SSL_PARSE_SERVERHELLO_USE_SRTP_EXT
,
SSL_R_BAD_SRTP_MKI_VALUE
);
*
al
=
SSL_AD_ILLEGAL_PARAMETER
;
return
1
;
}
clnt
=
SSL_get_srtp_profiles
(
s
);
...
...
ssl/ssl.h
浏览文件 @
5997efca
...
...
@@ -2343,6 +2343,7 @@ void ERR_load_SSL_strings(void);
#define SSL_R_BAD_SRP_G_LENGTH 350
#define SSL_R_BAD_SRP_N_LENGTH 351
#define SSL_R_BAD_SRP_S_LENGTH 352
#define SSL_R_BAD_SRTP_MKI_VALUE 371
#define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST 360
#define SSL_R_BAD_SSL_FILETYPE 124
#define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125
...
...
ssl/ssl_err.c
浏览文件 @
5997efca
...
...
@@ -330,6 +330,7 @@ static ERR_STRING_DATA SSL_str_reasons[]=
{
ERR_REASON
(
SSL_R_BAD_SRP_G_LENGTH
)
,
"bad srp g length"
},
{
ERR_REASON
(
SSL_R_BAD_SRP_N_LENGTH
)
,
"bad srp n length"
},
{
ERR_REASON
(
SSL_R_BAD_SRP_S_LENGTH
)
,
"bad srp s length"
},
{
ERR_REASON
(
SSL_R_BAD_SRTP_MKI_VALUE
)
,
"bad srtp mki value"
},
{
ERR_REASON
(
SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST
),
"bad srtp protection profile list"
},
{
ERR_REASON
(
SSL_R_BAD_SSL_FILETYPE
)
,
"bad ssl filetype"
},
{
ERR_REASON
(
SSL_R_BAD_SSL_SESSION_ID_LENGTH
),
"bad ssl session id length"
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录