@encharm/cws 4.0.2 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/LICENSE +3 -2
  3. package/README.md +9 -2
  4. package/binding.gyp +2 -2
  5. package/dist/bindings/cws_darwin_arm64_node108.node +0 -0
  6. package/dist/bindings/cws_darwin_arm64_node64.node +0 -0
  7. package/dist/bindings/cws_darwin_arm64_node72.node +0 -0
  8. package/dist/bindings/cws_darwin_arm64_node79.node +0 -0
  9. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  10. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  11. package/dist/bindings/cws_darwin_x64_node108.node +0 -0
  12. package/dist/bindings/cws_darwin_x64_node64.node +0 -0
  13. package/dist/bindings/cws_darwin_x64_node72.node +0 -0
  14. package/dist/bindings/cws_darwin_x64_node79.node +0 -0
  15. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  16. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  17. package/dist/bindings/cws_linux_x64_node108.node +0 -0
  18. package/dist/bindings/cws_linux_x64_node64.node +0 -0
  19. package/dist/bindings/cws_linux_x64_node72.node +0 -0
  20. package/dist/bindings/cws_linux_x64_node79.node +0 -0
  21. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  22. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  23. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  24. package/dist/bindings/cws_win32_x64_node64.node +0 -0
  25. package/dist/bindings/cws_win32_x64_node72.node +0 -0
  26. package/dist/bindings/cws_win32_x64_node79.node +0 -0
  27. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  28. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  29. package/dist/client.d.ts +1 -0
  30. package/dist/client.js +4 -0
  31. package/dist/index.js +3 -2
  32. package/dist/server.js +1 -0
  33. package/dist/shared.js +2 -1
  34. package/package.json +1 -1
  35. package/src/Addon.cpp +1 -0
  36. package/src/Addon.h +35 -2
  37. package/src/HTTPSocket.cpp +1 -1
  38. package/src/LICENSE +4 -0
  39. package/src/Socket.h +12 -3
  40. package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
  41. package/src/headers/18/aliased_struct-inl.h +54 -0
  42. package/src/headers/18/aliased_struct.h +63 -0
  43. package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
  44. package/src/headers/{12 → 18}/async_wrap.h +26 -2
  45. package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
  46. package/src/headers/18/base64.h +69 -0
  47. package/src/headers/{12 → 18}/base_object-inl.h +46 -25
  48. package/src/headers/{12 → 18}/base_object.h +82 -17
  49. package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
  50. package/src/headers/{12 → 18}/callback_queue.h +13 -5
  51. package/src/headers/18/cares_wrap.h +523 -0
  52. package/src/headers/{12 → 18}/connect_wrap.h +0 -0
  53. package/src/headers/{12 → 18}/connection_wrap.h +0 -0
  54. package/src/headers/18/crypto/crypto_aes.h +89 -0
  55. package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
  56. package/src/headers/18/crypto/crypto_cipher.h +291 -0
  57. package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
  58. package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
  59. package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
  60. package/src/headers/18/crypto/crypto_context.h +147 -0
  61. package/src/headers/18/crypto/crypto_dh.h +156 -0
  62. package/src/headers/18/crypto/crypto_dsa.h +77 -0
  63. package/src/headers/18/crypto/crypto_ec.h +170 -0
  64. package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
  65. package/src/headers/18/crypto/crypto_hash.h +89 -0
  66. package/src/headers/18/crypto/crypto_hkdf.h +65 -0
  67. package/src/headers/18/crypto/crypto_hmac.h +94 -0
  68. package/src/headers/18/crypto/crypto_keygen.h +305 -0
  69. package/src/headers/18/crypto/crypto_keys.h +420 -0
  70. package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
  71. package/src/headers/18/crypto/crypto_random.h +130 -0
  72. package/src/headers/18/crypto/crypto_rsa.h +141 -0
  73. package/src/headers/18/crypto/crypto_scrypt.h +87 -0
  74. package/src/headers/18/crypto/crypto_sig.h +168 -0
  75. package/src/headers/18/crypto/crypto_spkac.h +21 -0
  76. package/src/headers/18/crypto/crypto_timing.h +20 -0
  77. package/src/headers/{12/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
  78. package/src/headers/18/crypto/crypto_util.h +791 -0
  79. package/src/headers/18/crypto/crypto_x509.h +143 -0
  80. package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
  81. package/src/headers/{13 → 18}/debug_utils.h +7 -4
  82. package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
  83. package/src/headers/{12 → 18}/env-inl.h +397 -304
  84. package/src/headers/{12 → 18}/env.h +397 -172
  85. package/src/headers/{12 → 18}/handle_wrap.h +7 -3
  86. package/src/headers/18/histogram-inl.h +107 -0
  87. package/src/headers/18/histogram.h +239 -0
  88. package/src/headers/{13 → 18}/inspector_agent.h +4 -7
  89. package/src/headers/{12 → 18}/inspector_io.h +0 -0
  90. package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
  91. package/src/headers/{12 → 18}/inspector_socket.h +0 -0
  92. package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
  93. package/src/headers/18/js_native_api.h +571 -0
  94. package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
  95. package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
  96. package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
  97. package/src/headers/{12 → 18}/js_stream.h +0 -0
  98. package/src/headers/{12 → 18}/json_utils.h +0 -0
  99. package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
  100. package/src/headers/{13 → 18}/memory_tracker.h +0 -7
  101. package/src/headers/{13 → 18}/module_wrap.h +24 -7
  102. package/src/headers/{13 → 18}/node.h +329 -68
  103. package/src/headers/18/node_api.h +288 -0
  104. package/src/headers/18/node_api_internals.h +38 -0
  105. package/src/headers/{12 → 18}/node_api_types.h +12 -9
  106. package/src/headers/{12 → 18}/node_binding.h +0 -0
  107. package/src/headers/18/node_blob.h +191 -0
  108. package/src/headers/18/node_bob-inl.h +37 -0
  109. package/src/headers/18/node_bob.h +111 -0
  110. package/src/headers/{13 → 18}/node_buffer.h +0 -0
  111. package/src/headers/{13 → 18}/node_constants.h +5 -1
  112. package/src/headers/{12 → 18}/node_context_data.h +5 -0
  113. package/src/headers/{12 → 18}/node_contextify.h +37 -2
  114. package/src/headers/{10/node_javascript.h → 18/node_crypto.h} +30 -14
  115. package/src/headers/{12 → 18}/node_dir.h +0 -0
  116. package/src/headers/{12 → 18}/node_dtrace.h +0 -0
  117. package/src/headers/{12 → 18}/node_errors.h +90 -24
  118. package/src/headers/18/node_external_reference.h +145 -0
  119. package/src/headers/{13 → 18}/node_file-inl.h +38 -21
  120. package/src/headers/{12 → 18}/node_file.h +74 -13
  121. package/src/headers/{13 → 18}/node_http2.h +365 -269
  122. package/src/headers/{12 → 18}/node_http2_state.h +40 -50
  123. package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
  124. package/src/headers/{13 → 18}/node_http_common.h +24 -20
  125. package/src/headers/{13 → 18}/node_i18n.h +2 -1
  126. package/src/headers/{12 → 18}/node_internals.h +39 -41
  127. package/src/headers/{12 → 18}/node_main_instance.h +15 -18
  128. package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
  129. package/src/headers/{12 → 18}/node_mem.h +1 -1
  130. package/src/headers/{13 → 18}/node_messaging.h +170 -23
  131. package/src/headers/{12 → 18}/node_metadata.h +17 -4
  132. package/src/headers/{12 → 18}/node_mutex.h +77 -1
  133. package/src/headers/{12 → 18}/node_native_module.h +11 -1
  134. package/src/headers/{12 → 18}/node_native_module_env.h +14 -8
  135. package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
  136. package/src/headers/{13 → 18}/node_options-inl.h +51 -21
  137. package/src/headers/{13 → 18}/node_options.h +46 -14
  138. package/src/headers/18/node_perf.h +168 -0
  139. package/src/headers/{12 → 18}/node_perf_common.h +16 -22
  140. package/src/headers/{12 → 18}/node_platform.h +21 -16
  141. package/src/headers/18/node_process-inl.h +26 -0
  142. package/src/headers/18/node_process.h +97 -0
  143. package/src/headers/{13 → 18}/node_report.h +2 -2
  144. package/src/headers/{13 → 18}/node_revert.h +10 -0
  145. package/src/headers/{12 → 18}/node_root_certs.h +439 -651
  146. package/src/headers/18/node_snapshot_builder.h +43 -0
  147. package/src/headers/18/node_snapshotable.h +130 -0
  148. package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
  149. package/src/headers/18/node_sockaddr.h +405 -0
  150. package/src/headers/{13 → 18}/node_stat_watcher.h +7 -1
  151. package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
  152. package/src/headers/{13 → 18}/node_url.h +18 -1
  153. package/src/headers/18/node_v8.h +41 -0
  154. package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
  155. package/src/headers/{13 → 18}/node_version.h +7 -7
  156. package/src/headers/{12 → 18}/node_wasi.h +0 -0
  157. package/src/headers/18/node_wasm_web_api.h +55 -0
  158. package/src/headers/{13 → 18}/node_watchdog.h +0 -0
  159. package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
  160. package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
  161. package/src/headers/{13 → 18}/node_worker.h +24 -17
  162. package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
  163. package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
  164. package/src/headers/{13 → 18}/req_wrap.h +1 -1
  165. package/src/headers/{12 → 18}/spawn_sync.h +0 -0
  166. package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
  167. package/src/headers/{13 → 18}/stream_base.h +29 -3
  168. package/src/headers/{13 → 18}/stream_pipe.h +8 -3
  169. package/src/headers/{12 → 18}/stream_wrap.h +4 -1
  170. package/src/headers/{13 → 18}/string_bytes.h +0 -7
  171. package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
  172. package/src/headers/{10 → 18}/string_decoder.h +0 -0
  173. package/src/headers/{13 → 18}/string_search.h +2 -2
  174. package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
  175. package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
  176. package/src/headers/18/timer_wrap-inl.h +32 -0
  177. package/src/headers/18/timer_wrap.h +85 -0
  178. package/src/headers/{13 → 18}/tracing/agent.h +1 -1
  179. package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
  180. package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
  181. package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
  182. package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
  183. package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
  184. package/src/headers/{13 → 18}/tty_wrap.h +2 -1
  185. package/src/headers/{13 → 18}/udp_wrap.h +5 -0
  186. package/src/headers/{13 → 18}/util-inl.h +69 -15
  187. package/src/headers/{13 → 18}/util.h +93 -31
  188. package/src/headers/18/v8-fast-api-calls.h +939 -0
  189. package/src/headers/{12 → 18}/v8abbr.h +2 -2
  190. package/dist/bindings/cws_darwin_64.node +0 -0
  191. package/dist/bindings/cws_darwin_72.node +0 -0
  192. package/dist/bindings/cws_darwin_79.node +0 -0
  193. package/dist/bindings/cws_darwin_83.node +0 -0
  194. package/dist/bindings/cws_darwin_93.node +0 -0
  195. package/dist/bindings/cws_linux_64.node +0 -0
  196. package/dist/bindings/cws_linux_72.node +0 -0
  197. package/dist/bindings/cws_linux_79.node +0 -0
  198. package/dist/bindings/cws_linux_83.node +0 -0
  199. package/dist/bindings/cws_linux_93.node +0 -0
  200. package/dist/bindings/cws_win32_64.node +0 -0
  201. package/dist/bindings/cws_win32_72.node +0 -0
  202. package/dist/bindings/cws_win32_79.node +0 -0
  203. package/dist/bindings/cws_win32_83.node +0 -0
  204. package/dist/bindings/cws_win32_93.node +0 -0
  205. package/src/headers/10/aliased_buffer.h +0 -241
  206. package/src/headers/10/async_wrap-inl.h +0 -106
  207. package/src/headers/10/async_wrap.h +0 -218
  208. package/src/headers/10/base64.h +0 -197
  209. package/src/headers/10/base_object-inl.h +0 -132
  210. package/src/headers/10/base_object.h +0 -115
  211. package/src/headers/10/connect_wrap.h +0 -28
  212. package/src/headers/10/connection_wrap.h +0 -30
  213. package/src/headers/10/debug_utils.h +0 -128
  214. package/src/headers/10/env-inl.h +0 -906
  215. package/src/headers/10/env.h +0 -1046
  216. package/src/headers/10/handle_wrap.h +0 -114
  217. package/src/headers/10/inspector_agent.h +0 -137
  218. package/src/headers/10/inspector_io.h +0 -97
  219. package/src/headers/10/inspector_socket.h +0 -59
  220. package/src/headers/10/inspector_socket_server.h +0 -104
  221. package/src/headers/10/js_stream.h +0 -57
  222. package/src/headers/10/memory_tracker-inl.h +0 -318
  223. package/src/headers/10/memory_tracker.h +0 -246
  224. package/src/headers/10/module_wrap.h +0 -100
  225. package/src/headers/10/node.h +0 -863
  226. package/src/headers/10/node_api.h +0 -752
  227. package/src/headers/10/node_api_types.h +0 -171
  228. package/src/headers/10/node_buffer.h +0 -90
  229. package/src/headers/10/node_code_cache.h +0 -17
  230. package/src/headers/10/node_constants.h +0 -74
  231. package/src/headers/10/node_context_data.h +0 -39
  232. package/src/headers/10/node_contextify.h +0 -141
  233. package/src/headers/10/node_counters.h +0 -59
  234. package/src/headers/10/node_crypto.h +0 -699
  235. package/src/headers/10/node_crypto_bio.h +0 -177
  236. package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
  237. package/src/headers/10/node_crypto_clienthello.h +0 -131
  238. package/src/headers/10/node_crypto_groups.h +0 -416
  239. package/src/headers/10/node_dtrace.h +0 -84
  240. package/src/headers/10/node_errors.h +0 -118
  241. package/src/headers/10/node_file.h +0 -373
  242. package/src/headers/10/node_http2.h +0 -1304
  243. package/src/headers/10/node_http2_state.h +0 -158
  244. package/src/headers/10/node_i18n.h +0 -69
  245. package/src/headers/10/node_internals.h +0 -952
  246. package/src/headers/10/node_messaging.h +0 -219
  247. package/src/headers/10/node_mutex.h +0 -191
  248. package/src/headers/10/node_object_wrap.h +0 -130
  249. package/src/headers/10/node_options-inl.h +0 -444
  250. package/src/headers/10/node_options.h +0 -397
  251. package/src/headers/10/node_perf.h +0 -134
  252. package/src/headers/10/node_perf_common.h +0 -96
  253. package/src/headers/10/node_persistent.h +0 -30
  254. package/src/headers/10/node_platform.h +0 -170
  255. package/src/headers/10/node_revert.h +0 -75
  256. package/src/headers/10/node_root_certs.h +0 -3393
  257. package/src/headers/10/node_stat_watcher.h +0 -65
  258. package/src/headers/10/node_url.h +0 -193
  259. package/src/headers/10/node_version.h +0 -120
  260. package/src/headers/10/node_watchdog.h +0 -114
  261. package/src/headers/10/node_win32_perfctr_provider.h +0 -58
  262. package/src/headers/10/node_worker.h +0 -94
  263. package/src/headers/10/pipe_wrap.h +0 -76
  264. package/src/headers/10/req_wrap-inl.h +0 -166
  265. package/src/headers/10/req_wrap.h +0 -61
  266. package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
  267. package/src/headers/10/spawn_sync.h +0 -240
  268. package/src/headers/10/stream_base-inl.h +0 -458
  269. package/src/headers/10/stream_base.h +0 -378
  270. package/src/headers/10/stream_pipe.h +0 -72
  271. package/src/headers/10/stream_wrap.h +0 -130
  272. package/src/headers/10/string_bytes.h +0 -126
  273. package/src/headers/10/string_decoder-inl.h +0 -38
  274. package/src/headers/10/string_search.h +0 -620
  275. package/src/headers/10/tcp_wrap.h +0 -99
  276. package/src/headers/10/tls_wrap.h +0 -195
  277. package/src/headers/10/tracing/agent.h +0 -178
  278. package/src/headers/10/tracing/node_trace_buffer.h +0 -83
  279. package/src/headers/10/tracing/node_trace_writer.h +0 -75
  280. package/src/headers/10/tracing/trace_event.h +0 -706
  281. package/src/headers/10/tracing/trace_event_common.h +0 -1102
  282. package/src/headers/10/tracing/traced_value.h +0 -68
  283. package/src/headers/10/tty_wrap.h +0 -63
  284. package/src/headers/10/udp_wrap.h +0 -102
  285. package/src/headers/10/util-inl.h +0 -459
  286. package/src/headers/10/util.h +0 -508
  287. package/src/headers/10/v8abbr.h +0 -121
  288. package/src/headers/12/aliased_buffer.h +0 -263
  289. package/src/headers/12/debug_utils.h +0 -181
  290. package/src/headers/12/histogram-inl.h +0 -83
  291. package/src/headers/12/histogram.h +0 -98
  292. package/src/headers/12/http_parser_adaptor.h +0 -24
  293. package/src/headers/12/inspector_agent.h +0 -147
  294. package/src/headers/12/inspector_profiler.h +0 -137
  295. package/src/headers/12/js_native_api.h +0 -541
  296. package/src/headers/12/js_native_api_types.h +0 -139
  297. package/src/headers/12/memory_tracker-inl.h +0 -339
  298. package/src/headers/12/memory_tracker.h +0 -283
  299. package/src/headers/12/module_wrap.h +0 -99
  300. package/src/headers/12/node.h +0 -887
  301. package/src/headers/12/node_api.h +0 -239
  302. package/src/headers/12/node_buffer.h +0 -92
  303. package/src/headers/12/node_constants.h +0 -80
  304. package/src/headers/12/node_crypto.h +0 -800
  305. package/src/headers/12/node_crypto_bio.h +0 -195
  306. package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
  307. package/src/headers/12/node_crypto_clienthello.h +0 -132
  308. package/src/headers/12/node_file-inl.h +0 -289
  309. package/src/headers/12/node_http2.h +0 -1311
  310. package/src/headers/12/node_http_parser_impl.h +0 -994
  311. package/src/headers/12/node_i18n.h +0 -144
  312. package/src/headers/12/node_messaging.h +0 -227
  313. package/src/headers/12/node_options-inl.h +0 -447
  314. package/src/headers/12/node_options.h +0 -479
  315. package/src/headers/12/node_perf.h +0 -181
  316. package/src/headers/12/node_process.h +0 -41
  317. package/src/headers/12/node_report.h +0 -47
  318. package/src/headers/12/node_revert.h +0 -78
  319. package/src/headers/12/node_sockaddr.h +0 -123
  320. package/src/headers/12/node_stat_watcher.h +0 -66
  321. package/src/headers/12/node_url.h +0 -188
  322. package/src/headers/12/node_version.h +0 -98
  323. package/src/headers/12/node_watchdog.h +0 -152
  324. package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
  325. package/src/headers/12/node_win32_etw_provider.h +0 -99
  326. package/src/headers/12/node_worker.h +0 -142
  327. package/src/headers/12/req_wrap.h +0 -77
  328. package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
  329. package/src/headers/12/stream_base-inl.h +0 -323
  330. package/src/headers/12/stream_base.h +0 -431
  331. package/src/headers/12/stream_pipe.h +0 -72
  332. package/src/headers/12/string_bytes.h +0 -142
  333. package/src/headers/12/string_decoder.h +0 -50
  334. package/src/headers/12/string_search.h +0 -638
  335. package/src/headers/12/tracing/agent.h +0 -195
  336. package/src/headers/12/tracing/trace_event.h +0 -710
  337. package/src/headers/12/tty_wrap.h +0 -64
  338. package/src/headers/12/udp_wrap.h +0 -222
  339. package/src/headers/12/util-inl.h +0 -529
  340. package/src/headers/12/util.h +0 -765
  341. package/src/headers/13/async_wrap-inl.h +0 -94
  342. package/src/headers/13/async_wrap.h +0 -224
  343. package/src/headers/13/base64.h +0 -197
  344. package/src/headers/13/base_object-inl.h +0 -353
  345. package/src/headers/13/base_object.h +0 -229
  346. package/src/headers/13/connect_wrap.h +0 -26
  347. package/src/headers/13/connection_wrap.h +0 -30
  348. package/src/headers/13/debug_utils-inl.h +0 -223
  349. package/src/headers/13/diagnosticfilename-inl.h +0 -33
  350. package/src/headers/13/env-inl.h +0 -1293
  351. package/src/headers/13/env.h +0 -1469
  352. package/src/headers/13/handle_wrap.h +0 -117
  353. package/src/headers/13/histogram-inl.h +0 -83
  354. package/src/headers/13/histogram.h +0 -98
  355. package/src/headers/13/inspector_io.h +0 -78
  356. package/src/headers/13/inspector_socket.h +0 -60
  357. package/src/headers/13/inspector_socket_server.h +0 -110
  358. package/src/headers/13/js_native_api.h +0 -541
  359. package/src/headers/13/js_native_api_v8.h +0 -303
  360. package/src/headers/13/js_native_api_v8_internals.h +0 -38
  361. package/src/headers/13/js_stream.h +0 -52
  362. package/src/headers/13/json_utils.h +0 -160
  363. package/src/headers/13/node_api.h +0 -239
  364. package/src/headers/13/node_api_types.h +0 -44
  365. package/src/headers/13/node_binding.h +0 -99
  366. package/src/headers/13/node_context_data.h +0 -39
  367. package/src/headers/13/node_contextify.h +0 -161
  368. package/src/headers/13/node_crypto.h +0 -800
  369. package/src/headers/13/node_crypto_common.h +0 -138
  370. package/src/headers/13/node_crypto_groups.h +0 -415
  371. package/src/headers/13/node_dir.h +0 -52
  372. package/src/headers/13/node_dtrace.h +0 -86
  373. package/src/headers/13/node_errors.h +0 -210
  374. package/src/headers/13/node_file.h +0 -364
  375. package/src/headers/13/node_http2_state.h +0 -144
  376. package/src/headers/13/node_internals.h +0 -405
  377. package/src/headers/13/node_main_instance.h +0 -97
  378. package/src/headers/13/node_mem-inl.h +0 -112
  379. package/src/headers/13/node_mem.h +0 -41
  380. package/src/headers/13/node_metadata.h +0 -109
  381. package/src/headers/13/node_mutex.h +0 -247
  382. package/src/headers/13/node_native_module.h +0 -99
  383. package/src/headers/13/node_native_module_env.h +0 -65
  384. package/src/headers/13/node_object_wrap.h +0 -132
  385. package/src/headers/13/node_perf.h +0 -181
  386. package/src/headers/13/node_perf_common.h +0 -97
  387. package/src/headers/13/node_platform.h +0 -190
  388. package/src/headers/13/node_process.h +0 -41
  389. package/src/headers/13/node_root_certs.h +0 -3424
  390. package/src/headers/13/node_sockaddr-inl.h +0 -170
  391. package/src/headers/13/node_sockaddr.h +0 -123
  392. package/src/headers/13/node_union_bytes.h +0 -103
  393. package/src/headers/13/node_v8_platform-inl.h +0 -184
  394. package/src/headers/13/node_wasi.h +0 -108
  395. package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
  396. package/src/headers/13/node_win32_etw_provider.h +0 -99
  397. package/src/headers/13/pipe_wrap.h +0 -78
  398. package/src/headers/13/req_wrap-inl.h +0 -170
  399. package/src/headers/13/spawn_sync.h +0 -242
  400. package/src/headers/13/stream_wrap.h +0 -130
  401. package/src/headers/13/string_decoder-inl.h +0 -37
  402. package/src/headers/13/string_decoder.h +0 -50
  403. package/src/headers/13/tcp_wrap.h +0 -101
  404. package/src/headers/13/threadpoolwork-inl.h +0 -57
  405. package/src/headers/13/tls_wrap.h +0 -221
  406. package/src/headers/13/tracing/node_trace_buffer.h +0 -83
  407. package/src/headers/13/tracing/node_trace_writer.h +0 -75
  408. package/src/headers/13/tracing/trace_event_common.h +0 -1109
  409. package/src/headers/13/tracing/traced_value.h +0 -70
  410. package/src/headers/13/v8abbr.h +0 -124
@@ -13,18 +13,19 @@
13
13
  //
14
14
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15
15
  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
16
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURpPOSE AND NONINFRINGEMENT. IN
17
17
  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18
18
  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19
19
  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20
20
  // USE OR OTHER DEALINGS IN THE SOFTWARE.
21
21
 
22
- #ifndef SRC_TLS_WRAP_H_
23
- #define SRC_TLS_WRAP_H_
22
+ #ifndef SRC_CRYPTO_CRYPTO_TLS_H_
23
+ #define SRC_CRYPTO_CRYPTO_TLS_H_
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
- #include "node_crypto.h" // SSLWrap
27
+ #include "crypto/crypto_context.h"
28
+ #include "crypto/crypto_clienthello.h"
28
29
 
29
30
  #include "async_wrap.h"
30
31
  #include "stream_wrap.h"
@@ -35,26 +36,34 @@
35
36
  #include <string>
36
37
 
37
38
  namespace node {
38
-
39
- // Forward-declarations
40
- class Environment;
41
- class WriteWrap;
42
39
  namespace crypto {
43
- class SecureContext;
44
- class NodeBIO;
45
- }
46
40
 
47
41
  class TLSWrap : public AsyncWrap,
48
- public crypto::SSLWrap<TLSWrap>,
49
42
  public StreamBase,
50
43
  public StreamListener {
51
44
  public:
52
- ~TLSWrap() override;
45
+ enum class Kind {
46
+ kClient,
47
+ kServer
48
+ };
53
49
 
54
50
  static void Initialize(v8::Local<v8::Object> target,
55
51
  v8::Local<v8::Value> unused,
56
52
  v8::Local<v8::Context> context,
57
53
  void* priv);
54
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
55
+
56
+ ~TLSWrap() override;
57
+
58
+ bool is_cert_cb_running() const { return cert_cb_running_; }
59
+ bool is_waiting_cert_cb() const { return cert_cb_ != nullptr; }
60
+ bool has_session_callbacks() const { return session_callbacks_; }
61
+ void set_cert_cb_running(bool on = true) { cert_cb_running_ = on; }
62
+ void set_awaiting_new_session(bool on = true) { awaiting_new_session_ = on; }
63
+ void enable_session_callbacks() { session_callbacks_ = true; }
64
+ bool is_server() const { return kind_ == Kind::kServer; }
65
+ bool is_client() const { return kind_ == Kind::kClient; }
66
+ bool is_awaiting_new_session() const { return awaiting_new_session_; }
58
67
 
59
68
  // Implement StreamBase:
60
69
  bool IsAlive() override;
@@ -79,6 +88,9 @@ class TLSWrap : public AsyncWrap,
79
88
  // Reset error_ string to empty. Not related to "clear text".
80
89
  void ClearError() override;
81
90
 
91
+ v8::MaybeLocal<v8::ArrayBufferView> ocsp_response() const;
92
+ void ClearOcspResponse();
93
+ SSL_SESSION* ReleaseSession();
82
94
 
83
95
  // Called by the done() callback of the 'newSession' event.
84
96
  void NewSessionDoneCb();
@@ -90,29 +102,39 @@ class TLSWrap : public AsyncWrap,
90
102
 
91
103
  std::string diagnostic_name() const override;
92
104
 
93
- protected:
94
- // Alternative to StreamListener::stream(), that returns a StreamBase instead
95
- // of a StreamResource.
96
- inline StreamBase* underlying_stream() {
97
- return static_cast<StreamBase*>(stream_);
98
- }
105
+ // OpenSSL structures are opaque. Estimate SSL memory size for OpenSSL 1.1.1b:
106
+ // SSL: 6224
107
+ // SSL->SSL3_STATE: 1040
108
+ // ...some buffers: 42 * 1024
109
+ // NOTE: Actually it is much more than this
110
+ static constexpr int64_t kExternalSize = 6224 + 1040 + 42 * 1024;
99
111
 
100
- static const int kClearOutChunkSize = 16384;
112
+ static constexpr int kClearOutChunkSize = 16384;
101
113
 
102
114
  // Maximum number of bytes for hello parser
103
- static const int kMaxHelloLength = 16384;
115
+ static constexpr int kMaxHelloLength = 16384;
104
116
 
105
117
  // Usual ServerHello + Certificate size
106
- static const int kInitialClientBufferLength = 4096;
118
+ static constexpr int kInitialClientBufferLength = 4096;
107
119
 
108
120
  // Maximum number of buffers passed to uv_write()
109
- static const int kSimultaneousBufferCount = 10;
121
+ static constexpr int kSimultaneousBufferCount = 10;
122
+
123
+ typedef void (*CertCb)(void* arg);
124
+
125
+ // Alternative to StreamListener::stream(), that returns a StreamBase instead
126
+ // of a StreamResource.
127
+ StreamBase* underlying_stream() const {
128
+ return static_cast<StreamBase*>(stream());
129
+ }
130
+
131
+ void WaitForCertCb(CertCb cb, void* arg);
110
132
 
111
133
  TLSWrap(Environment* env,
112
134
  v8::Local<v8::Object> obj,
113
135
  Kind kind,
114
136
  StreamBase* stream,
115
- crypto::SecureContext* sc);
137
+ SecureContext* sc);
116
138
 
117
139
  static void SSLInfoCallback(const SSL* ssl_, int where, int ret);
118
140
  void InitSSL();
@@ -125,25 +147,15 @@ class TLSWrap : public AsyncWrap,
125
147
  void EncOut(); // Write encrypted data from enc_out_ to underlying stream.
126
148
  void ClearIn(); // SSL_write() clear data "in" to SSL.
127
149
  void ClearOut(); // SSL_read() clear text "out" from SSL.
150
+ void Destroy();
128
151
 
129
152
  // Call Done() on outstanding WriteWrap request.
130
- bool InvokeQueued(int status, const char* error_str = nullptr);
153
+ void InvokeQueued(int status, const char* error_str = nullptr);
131
154
 
132
155
  // Drive the SSL state machine by attempting to SSL_read() and SSL_write() to
133
156
  // it. Transparent handshakes mean SSL_read() might trigger I/O on the
134
157
  // underlying stream even if there is no clear text to read or write.
135
- inline void Cycle() {
136
- // Prevent recursion
137
- if (++cycle_depth_ > 1)
138
- return;
139
-
140
- for (; cycle_depth_ > 0; cycle_depth_--) {
141
- ClearIn();
142
- ClearOut();
143
- // EncIn() doesn't exist, it happens via stream listener callbacks.
144
- EncOut();
145
- }
146
- }
158
+ void Cycle();
147
159
 
148
160
  // Implement StreamListener:
149
161
  // Returns buf that points into enc_in_.
@@ -151,29 +163,70 @@ class TLSWrap : public AsyncWrap,
151
163
  void OnStreamRead(ssize_t nread, const uv_buf_t& buf) override;
152
164
  void OnStreamAfterWrite(WriteWrap* w, int status) override;
153
165
 
154
- v8::Local<v8::Value> GetSSLError(int status, int* err, std::string* msg);
166
+ int SetCACerts(SecureContext* sc);
155
167
 
156
- static void OnClientHelloParseEnd(void* arg);
157
- static void Wrap(const v8::FunctionCallbackInfo<v8::Value>& args);
158
- static void Receive(const v8::FunctionCallbackInfo<v8::Value>& args);
159
- static void Start(const v8::FunctionCallbackInfo<v8::Value>& args);
160
- static void SetVerifyMode(const v8::FunctionCallbackInfo<v8::Value>& args);
161
- static void EnableSessionCallbacks(
162
- const v8::FunctionCallbackInfo<v8::Value>& args);
168
+ int GetSSLError(int status) const;
169
+
170
+ static int SelectSNIContextCallback(SSL* s, int* ad, void* arg);
171
+
172
+ static void CertCbDone(const v8::FunctionCallbackInfo<v8::Value>& args);
173
+ static void DestroySSL(const v8::FunctionCallbackInfo<v8::Value>& args);
174
+ static void EnableCertCb(const v8::FunctionCallbackInfo<v8::Value>& args);
163
175
  static void EnableKeylogCallback(
164
176
  const v8::FunctionCallbackInfo<v8::Value>& args);
177
+ static void EnableSessionCallbacks(
178
+ const v8::FunctionCallbackInfo<v8::Value>& args);
165
179
  static void EnableTrace(const v8::FunctionCallbackInfo<v8::Value>& args);
166
- static void EnableCertCb(const v8::FunctionCallbackInfo<v8::Value>& args);
167
- static void DestroySSL(const v8::FunctionCallbackInfo<v8::Value>& args);
180
+ static void EndParser(const v8::FunctionCallbackInfo<v8::Value>& args);
181
+ static void ExportKeyingMaterial(
182
+ const v8::FunctionCallbackInfo<v8::Value>& args);
183
+ static void GetALPNNegotiatedProto(
184
+ const v8::FunctionCallbackInfo<v8::Value>& args);
185
+ static void GetCertificate(const v8::FunctionCallbackInfo<v8::Value>& args);
186
+ static void GetX509Certificate(
187
+ const v8::FunctionCallbackInfo<v8::Value>& args);
188
+ static void GetCipher(const v8::FunctionCallbackInfo<v8::Value>& args);
189
+ static void GetEphemeralKeyInfo(
190
+ const v8::FunctionCallbackInfo<v8::Value>& args);
191
+ static void GetFinished(const v8::FunctionCallbackInfo<v8::Value>& args);
192
+ static void GetPeerCertificate(
193
+ const v8::FunctionCallbackInfo<v8::Value>& args);
194
+ static void GetPeerX509Certificate(
195
+ const v8::FunctionCallbackInfo<v8::Value>& args);
196
+ static void GetPeerFinished(const v8::FunctionCallbackInfo<v8::Value>& args);
197
+ static void GetProtocol(const v8::FunctionCallbackInfo<v8::Value>& args);
168
198
  static void GetServername(const v8::FunctionCallbackInfo<v8::Value>& args);
199
+ static void GetSession(const v8::FunctionCallbackInfo<v8::Value>& args);
200
+ static void GetSharedSigalgs(const v8::FunctionCallbackInfo<v8::Value>& args);
201
+ static void GetTLSTicket(const v8::FunctionCallbackInfo<v8::Value>& args);
202
+ static void GetWriteQueueSize(
203
+ const v8::FunctionCallbackInfo<v8::Value>& info);
204
+ static void IsSessionReused(const v8::FunctionCallbackInfo<v8::Value>& args);
205
+ static void LoadSession(const v8::FunctionCallbackInfo<v8::Value>& args);
206
+ static void NewSessionDone(const v8::FunctionCallbackInfo<v8::Value>& args);
207
+ static void OnClientHelloParseEnd(void* arg);
208
+ static void Receive(const v8::FunctionCallbackInfo<v8::Value>& args);
209
+ static void Renegotiate(const v8::FunctionCallbackInfo<v8::Value>& args);
210
+ static void RequestOCSP(const v8::FunctionCallbackInfo<v8::Value>& args);
211
+ static void SetALPNProtocols(const v8::FunctionCallbackInfo<v8::Value>& args);
212
+ static void SetOCSPResponse(const v8::FunctionCallbackInfo<v8::Value>& args);
169
213
  static void SetServername(const v8::FunctionCallbackInfo<v8::Value>& args);
170
- static int SelectSNIContextCallback(SSL* s, int* ad, void* arg);
214
+ static void SetSession(const v8::FunctionCallbackInfo<v8::Value>& args);
215
+ static void SetVerifyMode(const v8::FunctionCallbackInfo<v8::Value>& args);
216
+ static void Start(const v8::FunctionCallbackInfo<v8::Value>& args);
217
+ static void VerifyError(const v8::FunctionCallbackInfo<v8::Value>& args);
218
+ static void Wrap(const v8::FunctionCallbackInfo<v8::Value>& args);
171
219
 
172
- #ifndef OPENSSL_NO_PSK
173
- static void SetPskIdentityHint(
220
+ #ifdef SSL_set_max_send_fragment
221
+ static void SetMaxSendFragment(
174
222
  const v8::FunctionCallbackInfo<v8::Value>& args);
223
+ #endif // SSL_set_max_send_fragment
224
+
225
+ #ifndef OPENSSL_NO_PSK
175
226
  static void EnablePskCallback(
176
227
  const v8::FunctionCallbackInfo<v8::Value>& args);
228
+ static void SetPskIdentityHint(
229
+ const v8::FunctionCallbackInfo<v8::Value>& args);
177
230
  static unsigned int PskServerCallback(SSL* s,
178
231
  const char* identity,
179
232
  unsigned char* psk,
@@ -185,37 +238,55 @@ class TLSWrap : public AsyncWrap,
185
238
  unsigned char* psk,
186
239
  unsigned int max_psk_len);
187
240
  #endif
241
+ public:
242
+ Environment* const env_;
243
+ Kind kind_;
244
+ SSLSessionPointer next_sess_;
245
+ SSLPointer ssl_;
246
+ ClientHelloParser hello_parser_;
247
+ v8::Global<v8::ArrayBufferView> ocsp_response_;
248
+ BaseObjectPtr<SecureContext> sni_context_;
249
+ BaseObjectPtr<SecureContext> sc_;
188
250
 
189
- crypto::SecureContext* sc_;
190
251
  // BIO buffers hold encrypted data.
191
252
  BIO* enc_in_ = nullptr; // StreamListener fills this for SSL_read().
192
253
  BIO* enc_out_ = nullptr; // SSL_write()/handshake fills this for EncOut().
193
254
  // Waiting for ClearIn() to pass to SSL_write().
194
- AllocatedBuffer pending_cleartext_input_;
255
+ std::unique_ptr<v8::BackingStore> pending_cleartext_input_;
195
256
  size_t write_size_ = 0;
196
- WriteWrap* current_write_ = nullptr;
257
+ BaseObjectPtr<AsyncWrap> current_write_;
258
+ BaseObjectPtr<AsyncWrap> current_empty_write_;
259
+ std::string error_;
260
+
261
+ bool session_callbacks_ = false;
262
+ bool awaiting_new_session_ = false;
197
263
  bool in_dowrite_ = false;
198
- WriteWrap* current_empty_write_ = nullptr;
199
- bool write_callback_scheduled_ = false;
200
264
  bool started_ = false;
201
- bool established_ = false;
202
265
  bool shutdown_ = false;
203
- std::string error_;
204
- int cycle_depth_ = 0;
205
-
206
- // If true - delivered EOF to the js-land, either after `close_notify`, or
207
- // after the `UV_EOF` on socket.
266
+ bool cert_cb_running_ = false;
208
267
  bool eof_ = false;
209
268
 
210
- private:
211
- static void GetWriteQueueSize(
212
- const v8::FunctionCallbackInfo<v8::Value>& info);
269
+ // TODO(@jasnell): These state flags should be revisited.
270
+ // The established_ flag indicates that the handshake is
271
+ // completed. The write_callback_scheduled_ flag is less
272
+ // clear -- once it is set to true, it is never set to
273
+ // false and it is only set to true after established_
274
+ // is set to true, so it's likely redundant.
275
+ bool established_ = false;
276
+ bool write_callback_scheduled_ = false;
277
+
278
+ int cycle_depth_ = 0;
279
+
280
+ // SSL_set_cert_cb
281
+ CertCb cert_cb_ = nullptr;
282
+ void* cert_cb_arg_ = nullptr;
213
283
 
214
- crypto::BIOPointer bio_trace_;
284
+ BIOPointer bio_trace_;
215
285
  };
216
286
 
287
+ } // namespace crypto
217
288
  } // namespace node
218
289
 
219
290
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
220
291
 
221
- #endif // SRC_TLS_WRAP_H_
292
+ #endif // SRC_CRYPTO_CRYPTO_TLS_H_