22 #ifndef SRC_NODE_CRYPTO_CLIENTHELLO_H_ 23 #define SRC_NODE_CRYPTO_CLIENTHELLO_H_ 25 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 35 class ClientHelloParser {
37 ClientHelloParser() : state_(kEnded),
53 inline uint8_t session_size()
const {
return session_size_; }
54 inline const uint8_t* session_id()
const {
return session_id_; }
55 inline bool has_ticket()
const {
return has_ticket_; }
56 inline uint8_t servername_size()
const {
return servername_size_; }
57 inline const uint8_t* servername()
const {
return servername_; }
58 inline int ocsp_request()
const {
return ocsp_request_; }
61 uint8_t session_size_;
62 const uint8_t* session_id_;
64 uint8_t servername_size_;
65 const uint8_t* servername_;
68 friend class ClientHelloParser;
71 typedef void (*OnHelloCb)(
void* arg,
const ClientHello& hello);
72 typedef void (*OnEndCb)(
void* arg);
74 void Parse(
const uint8_t*
data,
size_t avail);
77 inline void Start(OnHelloCb onhello_cb, OnEndCb onend_cb,
void* onend_arg);
79 inline bool IsPaused()
const;
80 inline bool IsEnded()
const;
83 static const size_t kMaxTLSFrameLen = 16 * 1024 + 5;
84 static const size_t kMaxSSLExFrameLen = 32 * 1024;
85 static const uint8_t kServernameHostname = 0;
86 static const uint8_t kStatusRequestOCSP = 1;
87 static const size_t kMinStatusRequestSize = 5;
97 kChangeCipherSpec = 20,
100 kApplicationData = 23,
111 kTLSSessionTicket = 35
114 bool ParseRecordHeader(
const uint8_t*
data,
size_t avail);
115 void ParseHeader(
const uint8_t*
data,
size_t avail);
116 void ParseExtension(
const uint16_t type,
119 bool ParseTLSClientHello(
const uint8_t*
data,
size_t avail);
122 OnHelloCb onhello_cb_;
127 size_t extension_offset_;
128 uint8_t session_size_;
129 const uint8_t* session_id_;
130 uint16_t servername_size_;
131 const uint8_t* servername_;
132 uint8_t ocsp_request_;
133 uint16_t tls_ticket_size_;
134 const uint8_t* tls_ticket_;
140 #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS 142 #endif // SRC_NODE_CRYPTO_CLIENTHELLO_H_
union node::cares_wrap::@8::CaresAsyncData::@0 data
int Start(Isolate *isolate, IsolateData *isolate_data, int argc, const char *const *argv, int exec_argc, const char *const *exec_argv)