Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
1df80b65
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看板
提交
1df80b65
编写于
2月 10, 2012
作者:
D
Dr. Stephen Henson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
PR: 2704
Submitted by: Peter Sylvester <peter.sylvester@edelweb.fr> Fix srp extension.
上级
3770b988
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
35 addition
and
19 deletion
+35
-19
ssl/s3_lib.c
ssl/s3_lib.c
+1
-1
ssl/t1_lib.c
ssl/t1_lib.c
+34
-18
未找到文件。
ssl/s3_lib.c
浏览文件 @
1df80b65
...
...
@@ -3609,7 +3609,7 @@ long ssl3_ctx_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg)
ctx
->
srp_ctx
.
login
=
NULL
;
if
(
parg
==
NULL
)
break
;
if
(
strlen
((
c
har
*
)
parg
)
>
254
)
if
(
strlen
((
c
onst
char
*
)
parg
)
>
255
||
strlen
((
const
char
*
)
parg
)
<
1
)
{
SSLerr
(
SSL_F_SSL3_CTX_CTRL
,
SSL_R_INVALID_SRP_USERNAME
);
return
0
;
...
...
ssl/t1_lib.c
浏览文件 @
1df80b65
...
...
@@ -432,25 +432,29 @@ unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned cha
}
#ifndef OPENSSL_NO_SRP
#define MIN(x,y) (((x)<(y))?(x):(y))
/* we add SRP username the first time only if we have one! */
/* Add SRP username if there is one */
if
(
s
->
srp_ctx
.
login
!=
NULL
)
{
/* Add TLS extension SRP username to the Client Hello message */
int
login_len
=
MIN
(
strlen
(
s
->
srp_ctx
.
login
)
+
1
,
255
);
long
lenmax
;
{
/* Add TLS extension SRP username to the Client Hello message */
if
((
lenmax
=
limit
-
ret
-
5
)
<
0
)
return
NULL
;
if
(
login_len
>
lenmax
)
return
NULL
;
if
(
login_len
>
255
)
int
login_len
=
strlen
(
s
->
srp_ctx
.
login
);
if
(
login_len
>
255
||
login_len
==
0
)
{
SSLerr
(
SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT
,
ERR_R_INTERNAL_ERROR
);
return
NULL
;
}
}
/* check for enough space.
4 for the srp type type and entension length
1 for the srp user identity
+ srp user identity length
*/
if
((
limit
-
ret
-
5
-
login_len
)
<
0
)
return
NULL
;
/* fill in the extension */
s2n
(
TLSEXT_TYPE_srp
,
ret
);
s2n
(
login_len
+
1
,
ret
);
(
*
ret
++
)
=
(
unsigned
char
)
MIN
(
strlen
(
s
->
srp_ctx
.
login
),
254
);
memcpy
(
ret
,
s
->
srp_ctx
.
login
,
MIN
(
strlen
(
s
->
srp_ctx
.
login
),
254
));
(
*
ret
++
)
=
(
unsigned
char
)
login_len
;
memcpy
(
ret
,
s
->
srp_ctx
.
login
,
login_len
);
ret
+=
login_len
;
}
#endif
...
...
@@ -1007,13 +1011,25 @@ int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **p, unsigned char *d, in
#ifndef OPENSSL_NO_SRP
else
if
(
type
==
TLSEXT_TYPE_srp
)
{
if
(
size
>
0
)
if
(
size
<=
0
||
((
len
=
data
[
0
]))
!=
(
size
-
1
)
)
{
len
=
data
[
0
];
if
((
s
->
srp_ctx
.
login
=
OPENSSL_malloc
(
len
+
1
))
==
NULL
)
return
-
1
;
memcpy
(
s
->
srp_ctx
.
login
,
&
data
[
1
],
len
);
s
->
srp_ctx
.
login
[
len
]
=
'\0'
;
*
al
=
SSL_AD_DECODE_ERROR
;
return
0
;
}
if
(
s
->
srp_ctx
.
login
!=
NULL
)
{
*
al
=
SSL_AD_DECODE_ERROR
;
return
0
;
}
if
((
s
->
srp_ctx
.
login
=
OPENSSL_malloc
(
len
+
1
))
==
NULL
)
return
-
1
;
memcpy
(
s
->
srp_ctx
.
login
,
&
data
[
1
],
len
);
s
->
srp_ctx
.
login
[
len
]
=
'\0'
;
if
(
strlen
(
s
->
srp_ctx
.
login
)
!=
len
)
{
*
al
=
SSL_AD_DECODE_ERROR
;
return
0
;
}
}
#endif
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录