FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
node/src/tls_wrap.h at v1.8.0-commit · anchnk/node · GitHub
anchnk
/
node
Public
forked from
nodejs/node
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
node
/
src
/
tls_wrap.h
Copy path
More file actions
More file actions
Latest commit
History
History
History
169 lines (137 loc) · 4.63 KB
Breadcrumbs
node
/
src
/
tls_wrap.h
Copy path
File metadata and controls
169 lines (137 loc) · 4.63 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#
ifndef
SRC_TLS_WRAP_H_
#
define
SRC_TLS_WRAP_H_
#
include
"
node.h
"
#
include
"
node_crypto.h
"
//
SSLWrap
#
include
"
async-wrap.h
"
#
include
"
env.h
"
#
include
"
stream_wrap.h
"
#
include
"
util.h
"
#
include
"
v8.h
"
#
include
<
openssl/ssl.h
>
namespace
node
{
//
Forward-declarations
class
NodeBIO
;
class
WriteWrap
;
namespace
crypto
{
class
SecureContext
;
}
class
TLSWrap
:
public
crypto
::SSLWrap<TLSWrap>,
public StreamBase,
public AsyncWrap {
public:
~TLSWrap
()
override
;
static
void
Initialize
(v8::Handle<v8::Object> target,
v8::Handle<v8::Value> unused,
v8::Handle<v8::Context> context);
void
*
Cast
()
override
;
int
GetFD
()
override
;
bool
IsAlive
()
override
;
bool
IsClosing
()
override
;
//
JavaScript functions
int
ReadStart
()
override
;
int
ReadStop
()
override
;
int
DoShutdown
(ShutdownWrap* req_wrap)
override
;
int
DoWrite
(WriteWrap* w,
uv_buf_t
* bufs,
size_t
count,
uv_stream_t
* send_handle)
override
;
const
char
*
Error
()
const
override
;
void
ClearError
()
override
;
void
NewSessionDoneCb
();
protected:
static
const
int
kClearOutChunkSize
=
1024
;
//
Maximum number of bytes for hello parser
static
const
int
kMaxHelloLength
=
16384
;
//
Usual ServerHello + Certificate size
static
const
int
kInitialClientBufferLength
=
4096
;
//
Maximum number of buffers passed to uv_write()
static
const
int
kSimultaneousBufferCount
=
10
;
//
Write callback queue's item
class
WriteItem
{
public:
explicit
WriteItem
(WriteWrap* w) : w_(w) {
}
~WriteItem
() {
w_ =
nullptr
;
}
WriteWrap* w_;
ListNode<WriteItem> member_;
};
TLSWrap
(Environment* env,
Kind kind,
StreamBase* stream,
crypto::SecureContext* sc);
static
void
SSLInfoCallback
(
const
SSL
* ssl_,
int
where,
int
ret);
void
InitSSL
();
void
EncOut
();
static
void
EncOutCb
(WriteWrap* req_wrap,
int
status);
bool
ClearIn
();
void
ClearOut
();
void
MakePending
();
bool
InvokeQueued
(
int
status);
inline
void
Cycle
() {
//
Prevent recursion
if
(++cycle_depth_ >
1
)
return
;
for
(; cycle_depth_ >
0
; cycle_depth_--) {
ClearIn
();
ClearOut
();
EncOut
();
}
}
AsyncWrap*
GetAsyncWrap
()
override
;
bool
IsIPCPipe
()
override
;
//
Resource implementation
static
void
OnAfterWriteImpl
(WriteWrap* w,
void
* ctx);
static
void
OnAllocImpl
(
size_t
size,
uv_buf_t
* buf,
void
* ctx);
static
void
OnReadImpl
(
ssize_t
nread,
const
uv_buf_t
* buf,
uv_handle_type pending,
void
* ctx);
static
void
OnAfterWriteSelf
(WriteWrap* w,
void
* ctx);
static
void
OnAllocSelf
(
size_t
size,
uv_buf_t
* buf,
void
* ctx);
static
void
OnReadSelf
(
ssize_t
nread,
const
uv_buf_t
* buf,
uv_handle_type pending,
void
* ctx);
void
DoRead
(
ssize_t
nread,
const
uv_buf_t
* buf, uv_handle_type pending);
//
If |msg| is not nullptr, caller is responsible for calling `delete[] *msg`.
v8::Local<v8::Value>
GetSSLError
(
int
status,
int
* err,
const
char
** msg);
static
void
OnClientHelloParseEnd
(
void
* arg);
static
void
Wrap
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
void
Receive
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
void
Start
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
void
SetVerifyMode
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
void
EnableSessionCallbacks
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
void
EnableHelloParser
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
#
ifdef
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
static
void
GetServername
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
void
SetServername
(
const
v8::FunctionCallbackInfo<v8::Value>& args);
static
int
SelectSNIContextCallback
(
SSL
* s,
int
* ad,
void
* arg);
#
endif
//
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
crypto::SecureContext* sc_;
StreamBase* stream_;
BIO
* enc_in_;
BIO
* enc_out_;
NodeBIO* clear_in_;
size_t
write_size_;
size_t
write_queue_size_;
typedef
ListHead<WriteItem, &WriteItem::member_> WriteItemList;
WriteItemList write_item_queue_;
WriteItemList pending_write_items_;
bool
started_;
bool
established_;
bool
shutdown_;
const
char
* error_;
int
cycle_depth_;
//
If true - delivered EOF to the js-land, either after `close_notify`, or
//
after the `UV_EOF` on socket.
bool
eof_;
#
ifdef
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
v8::Persistent<v8::Value> sni_context_;
#
endif
//
SSL_CTRL_SET_TLSEXT_SERVERNAME_CB
};
}
//
namespace node
#
endif
//
SRC_TLS_WRAP_H_
Back
|
FazBrowse Home
|
New Git URL