Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Openssl
提交
295c3f41
T
Third Party Openssl
项目概览
OpenHarmony
/
Third Party Openssl
大约 1 年 前同步成功
通知
9
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看板
体验新版 GitCode,发现更多精彩内容 >>
提交
295c3f41
编写于
2月 03, 2015
作者:
M
Matt Caswell
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Move s->rstate to s->rlayer.rstate
Reviewed-by:
N
Richard Levitte
<
levitte@openssl.org
>
上级
7a7048af
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
79 addition
and
64 deletion
+79
-64
ssl/record/d1_pkt.c
ssl/record/d1_pkt.c
+3
-3
ssl/record/rec_layer.h
ssl/record/rec_layer.h
+5
-0
ssl/record/s3_pkt.c
ssl/record/s3_pkt.c
+56
-4
ssl/record/ssl3_record.c
ssl/record/ssl3_record.c
+12
-10
ssl/ssl.h
ssl/ssl.h
+2
-2
ssl/ssl_lib.c
ssl/ssl_lib.c
+1
-2
ssl/ssl_locl.h
ssl/ssl_locl.h
+0
-2
ssl/ssl_stat.c
ssl/ssl_stat.c
+0
-41
未找到文件。
ssl/record/d1_pkt.c
浏览文件 @
295c3f41
...
...
@@ -450,7 +450,7 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
goto
start
;
/* get new packet if necessary */
if
((
rr
->
length
==
0
)
||
(
s
->
rstate
==
SSL_ST_READ_BODY
))
{
if
((
rr
->
length
==
0
)
||
(
s
->
r
layer
.
r
state
==
SSL_ST_READ_BODY
))
{
ret
=
dtls1_get_record
(
s
);
if
(
ret
<=
0
)
{
ret
=
dtls1_read_failed
(
s
,
ret
);
...
...
@@ -522,7 +522,7 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
rr
->
length
-=
n
;
rr
->
off
+=
n
;
if
(
rr
->
length
==
0
)
{
s
->
rstate
=
SSL_ST_READ_HEADER
;
s
->
r
layer
.
r
state
=
SSL_ST_READ_HEADER
;
rr
->
off
=
0
;
}
}
...
...
@@ -629,7 +629,7 @@ int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
*/
FIX
ME
#endif
s
->
rstate
=
SSL_ST_READ_HEADER
;
s
->
r
layer
.
r
state
=
SSL_ST_READ_HEADER
;
rr
->
length
=
0
;
goto
start
;
}
...
...
ssl/record/rec_layer.h
浏览文件 @
295c3f41
...
...
@@ -140,6 +140,8 @@ typedef struct record_layer_st {
* non-blocking reads)
*/
int
read_ahead
;
/* where we are when reading */
int
rstate
;
/* read IO goes into here */
SSL3_BUFFER
rbuf
;
/* write IO goes into here */
...
...
@@ -176,6 +178,7 @@ void RECORD_LAYER_release(RECORD_LAYER *rl);
int
RECORD_LAYER_read_pending
(
RECORD_LAYER
*
rl
);
int
RECORD_LAYER_write_pending
(
RECORD_LAYER
*
rl
);
int
RECORD_LAYER_set_data
(
RECORD_LAYER
*
rl
,
const
unsigned
char
*
buf
,
int
len
);
void
RECORD_LAYER_dup
(
RECORD_LAYER
*
dst
,
RECORD_LAYER
*
src
);
__owur
int
ssl3_pending
(
const
SSL
*
s
);
__owur
int
ssl23_read_bytes
(
SSL
*
s
,
int
n
);
__owur
int
ssl23_write_bytes
(
SSL
*
s
);
...
...
@@ -203,6 +206,8 @@ void dtls1_reset_seq_numbers(SSL *s, int rw);
#define RECORD_LAYER_get_wrec(rl) (&(rl)->wrec)
#define RECORD_LAYER_set_packet(rl, p) ((rl)->packet = (p))
#define RECORD_LAYER_reset_packet_length(rl) ((rl)->packet_length = 0)
#define RECORD_LAYER_get_rstate(rl) ((rl)->rstate)
#define RECORD_LAYER_set_rstate(rl, st) ((rl)->rstate = (st))
__owur
int
ssl3_read_n
(
SSL
*
s
,
int
n
,
int
max
,
int
extend
);
__owur
int
ssl3_write_pending
(
SSL
*
s
,
int
type
,
const
unsigned
char
*
buf
,
...
...
ssl/record/s3_pkt.c
浏览文件 @
295c3f41
...
...
@@ -163,6 +163,7 @@ void RECORD_LAYER_clear(RECORD_LAYER *rl)
* that right?
*/
rl
->
read_ahead
=
read_ahead
;
rl
->
rstate
=
SSL_ST_READ_HEADER
;
rl
->
s
=
s
;
}
...
...
@@ -189,7 +190,7 @@ int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len)
{
rl
->
packet_length
=
len
;
if
(
len
!=
0
)
{
rl
->
s
->
rstate
=
SSL_ST_READ_HEADER
;
rl
->
rstate
=
SSL_ST_READ_HEADER
;
if
(
!
SSL3_BUFFER_is_initialised
(
&
rl
->
rbuf
))
if
(
!
ssl3_setup_read_buffer
(
rl
->
s
))
return
0
;
...
...
@@ -201,15 +202,66 @@ int RECORD_LAYER_set_data(RECORD_LAYER *rl, const unsigned char *buf, int len)
return
1
;
}
void
RECORD_LAYER_dup
(
RECORD_LAYER
*
dst
,
RECORD_LAYER
*
src
)
{
/*
* Currently only called from SSL_dup...which only seems to expect the
* rstate to be duplicated and nothing else from the RECORD_LAYER???
*/
dst
->
rstate
=
src
->
rstate
;
}
int
ssl3_pending
(
const
SSL
*
s
)
{
if
(
s
->
rstate
==
SSL_ST_READ_BODY
)
if
(
s
->
r
layer
.
r
state
==
SSL_ST_READ_BODY
)
return
0
;
return
(
SSL3_RECORD_get_type
(
&
s
->
rlayer
.
rrec
)
==
SSL3_RT_APPLICATION_DATA
)
?
SSL3_RECORD_get_length
(
&
s
->
rlayer
.
rrec
)
:
0
;
}
const
char
*
SSL_rstate_string_long
(
const
SSL
*
s
)
{
const
char
*
str
;
switch
(
s
->
rlayer
.
rstate
)
{
case
SSL_ST_READ_HEADER
:
str
=
"read header"
;
break
;
case
SSL_ST_READ_BODY
:
str
=
"read body"
;
break
;
case
SSL_ST_READ_DONE
:
str
=
"read done"
;
break
;
default:
str
=
"unknown"
;
break
;
}
return
(
str
);
}
const
char
*
SSL_rstate_string
(
const
SSL
*
s
)
{
const
char
*
str
;
switch
(
s
->
rlayer
.
rstate
)
{
case
SSL_ST_READ_HEADER
:
str
=
"RH"
;
break
;
case
SSL_ST_READ_BODY
:
str
=
"RB"
;
break
;
case
SSL_ST_READ_DONE
:
str
=
"RD"
;
break
;
default:
str
=
"unknown"
;
break
;
}
return
(
str
);
}
int
ssl3_read_n
(
SSL
*
s
,
int
n
,
int
max
,
int
extend
)
{
/*
...
...
@@ -965,7 +1017,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
rr
=
&
s
->
rlayer
.
rrec
;
/* get new packet if necessary */
if
((
rr
->
length
==
0
)
||
(
s
->
rstate
==
SSL_ST_READ_BODY
))
{
if
((
rr
->
length
==
0
)
||
(
s
->
r
layer
.
r
state
==
SSL_ST_READ_BODY
))
{
ret
=
ssl3_get_record
(
s
);
if
(
ret
<=
0
)
return
(
ret
);
...
...
@@ -1017,7 +1069,7 @@ int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek)
rr
->
length
-=
n
;
rr
->
off
+=
n
;
if
(
rr
->
length
==
0
)
{
s
->
rstate
=
SSL_ST_READ_HEADER
;
s
->
r
layer
.
r
state
=
SSL_ST_READ_HEADER
;
rr
->
off
=
0
;
if
(
s
->
mode
&
SSL_MODE_RELEASE_BUFFERS
&&
SSL3_BUFFER_get_left
(
&
s
->
rlayer
.
rbuf
)
==
0
)
...
...
ssl/record/ssl3_record.c
浏览文件 @
295c3f41
...
...
@@ -207,13 +207,13 @@ int ssl3_get_record(SSL *s)
again:
/* check if we have the header */
if
((
s
->
rstate
!=
SSL_ST_READ_BODY
)
||
if
((
RECORD_LAYER_get_rstate
(
&
s
->
rlayer
)
!=
SSL_ST_READ_BODY
)
||
(
RECORD_LAYER_get_packet_length
(
&
s
->
rlayer
)
<
SSL3_RT_HEADER_LENGTH
))
{
n
=
ssl3_read_n
(
s
,
SSL3_RT_HEADER_LENGTH
,
SSL3_BUFFER_get_len
(
&
s
->
rlayer
.
rbuf
),
0
);
if
(
n
<=
0
)
return
(
n
);
/* error or non-blocking */
s
->
rstate
=
SSL_ST_READ_BODY
;
RECORD_LAYER_set_rstate
(
&
s
->
rlayer
,
SSL_ST_READ_BODY
)
;
p
=
RECORD_LAYER_get_packet
(
&
s
->
rlayer
);
if
(
s
->
msg_callback
)
...
...
@@ -255,10 +255,10 @@ int ssl3_get_record(SSL *s)
goto
f_err
;
}
/* now s->rstate == SSL_ST_READ_BODY */
/* now s->r
layer.r
state == SSL_ST_READ_BODY */
}
/* s->rstate == SSL_ST_READ_BODY, get and decode the data */
/* s->r
layer.r
state == SSL_ST_READ_BODY, get and decode the data */
if
(
rr
->
length
>
RECORD_LAYER_get_packet_length
(
&
s
->
rlayer
)
-
SSL3_RT_HEADER_LENGTH
)
{
...
...
@@ -273,7 +273,8 @@ int ssl3_get_record(SSL *s)
*/
}
s
->
rstate
=
SSL_ST_READ_HEADER
;
/* set state for later operations */
/* set state for later operations */
RECORD_LAYER_set_rstate
(
&
s
->
rlayer
,
SSL_ST_READ_HEADER
);
/*
* At this point, s->packet_length == SSL3_RT_HEADER_LNGTH + rr->length,
...
...
@@ -1399,7 +1400,7 @@ int dtls1_get_record(SSL *s)
/* get something from the wire */
again:
/* check if we have the header */
if
((
s
->
rstate
!=
SSL_ST_READ_BODY
)
||
if
((
RECORD_LAYER_get_rstate
(
&
s
->
rlayer
)
!=
SSL_ST_READ_BODY
)
||
(
RECORD_LAYER_get_packet_length
(
&
s
->
rlayer
)
<
DTLS1_RT_HEADER_LENGTH
))
{
n
=
ssl3_read_n
(
s
,
DTLS1_RT_HEADER_LENGTH
,
SSL3_BUFFER_get_len
(
&
s
->
rlayer
.
rbuf
),
0
);
...
...
@@ -1413,7 +1414,7 @@ int dtls1_get_record(SSL *s)
goto
again
;
}
s
->
rstate
=
SSL_ST_READ_BODY
;
RECORD_LAYER_set_rstate
(
&
s
->
rlayer
,
SSL_ST_READ_BODY
)
;
p
=
RECORD_LAYER_get_packet
(
&
s
->
rlayer
);
...
...
@@ -1459,10 +1460,10 @@ int dtls1_get_record(SSL *s)
goto
again
;
}
/* now s->rstate == SSL_ST_READ_BODY */
/* now s->r
layer.r
state == SSL_ST_READ_BODY */
}
/* s->rstate == SSL_ST_READ_BODY, get and decode the data */
/* s->r
layer.r
state == SSL_ST_READ_BODY, get and decode the data */
if
(
rr
->
length
>
RECORD_LAYER_get_packet_length
(
&
s
->
rlayer
)
-
DTLS1_RT_HEADER_LENGTH
)
{
...
...
@@ -1481,7 +1482,8 @@ int dtls1_get_record(SSL *s)
* DTLS1_RT_HEADER_LENGTH + rr->length
*/
}
s
->
rstate
=
SSL_ST_READ_HEADER
;
/* set state for later operations */
/* set state for later operations */
RECORD_LAYER_set_rstate
(
&
s
->
rlayer
,
SSL_ST_READ_HEADER
);
/* match epochs. NULL means the packet is dropped on the floor */
bitmap
=
dtls1_get_bitmap
(
s
,
rr
,
&
is_next_epoch
);
...
...
ssl/ssl.h
浏览文件 @
295c3f41
...
...
@@ -999,8 +999,8 @@ extern "C" {
# define SSL_in_accept_init(a) (SSL_state(a)&SSL_ST_ACCEPT)
/*
* The following
2 states are kept in ssl->rstate when reads fail, you should
* not need these
* The following
3 states are kept in ssl->rlayer.rstate when reads fail, you
*
should
not need these
*/
# define SSL_ST_READ_HEADER 0xF0
# define SSL_ST_READ_BODY 0xF1
...
...
ssl/ssl_lib.c
浏览文件 @
295c3f41
...
...
@@ -215,7 +215,6 @@ int SSL_clear(SSL *s)
s
->
version
=
s
->
method
->
version
;
s
->
client_version
=
s
->
version
;
s
->
rwstate
=
SSL_NOTHING
;
s
->
rstate
=
SSL_ST_READ_HEADER
;
if
(
s
->
init_buf
!=
NULL
)
{
BUF_MEM_free
(
s
->
init_buf
);
...
...
@@ -2830,7 +2829,7 @@ SSL *SSL_dup(SSL *s)
ret
->
shutdown
=
s
->
shutdown
;
ret
->
state
=
s
->
state
;
/* SSL_dup does not really work at any state,
* though */
ret
->
rstate
=
s
->
rstate
;
RECORD_LAYER_dup
(
&
ret
->
rlayer
,
&
s
->
rlayer
)
;
ret
->
init_num
=
0
;
/* would have to copy ret->init_buf,
* ret->init_msg, ret->init_num,
* ret->init_off */
...
...
ssl/ssl_locl.h
浏览文件 @
295c3f41
...
...
@@ -1022,8 +1022,6 @@ struct ssl_st {
int
shutdown
;
/* where we are */
int
state
;
/* where we are when reading */
int
rstate
;
BUF_MEM
*
init_buf
;
/* buffer used during init */
void
*
init_msg
;
/* pointer to handshake message body, set by
* ssl3_get_message() */
...
...
ssl/ssl_stat.c
浏览文件 @
295c3f41
...
...
@@ -342,26 +342,6 @@ const char *SSL_state_string_long(const SSL *s)
return
(
str
);
}
const
char
*
SSL_rstate_string_long
(
const
SSL
*
s
)
{
const
char
*
str
;
switch
(
s
->
rstate
)
{
case
SSL_ST_READ_HEADER
:
str
=
"read header"
;
break
;
case
SSL_ST_READ_BODY
:
str
=
"read body"
;
break
;
case
SSL_ST_READ_DONE
:
str
=
"read done"
;
break
;
default:
str
=
"unknown"
;
break
;
}
return
(
str
);
}
const
char
*
SSL_state_string
(
const
SSL
*
s
)
{
...
...
@@ -817,24 +797,3 @@ const char *SSL_alert_desc_string_long(int value)
}
return
(
str
);
}
const
char
*
SSL_rstate_string
(
const
SSL
*
s
)
{
const
char
*
str
;
switch
(
s
->
rstate
)
{
case
SSL_ST_READ_HEADER
:
str
=
"RH"
;
break
;
case
SSL_ST_READ_BODY
:
str
=
"RB"
;
break
;
case
SSL_ST_READ_DONE
:
str
=
"RD"
;
break
;
default:
str
=
"unknown"
;
break
;
}
return
(
str
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录