@encharm/cws 4.4.1 → 4.5.2

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 (606) hide show
  1. package/binding.gyp +1 -1
  2. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  3. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  4. package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
  5. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  6. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  8. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  9. package/dist/bindings/cws_linux_x64_node137.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  13. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  14. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  15. package/package.json +1 -1
  16. package/src/Addon.h +13 -23
  17. package/src/Socket.h +0 -1
  18. package/src/headers/22/acorn_version.h +6 -0
  19. package/src/headers/22/aliased_buffer-inl.h +243 -0
  20. package/src/headers/22/aliased_buffer.h +206 -0
  21. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  22. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  23. package/src/headers/{18 → 22}/base_object-inl.h +57 -117
  24. package/src/headers/{18 → 22}/base_object.h +58 -30
  25. package/src/headers/22/base_object_types.h +74 -0
  26. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  27. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  28. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  29. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  30. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  31. package/src/headers/22/cleanup_queue-inl.h +62 -0
  32. package/src/headers/22/cleanup_queue.h +85 -0
  33. package/src/headers/22/compile_cache.h +104 -0
  34. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  35. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  36. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  37. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  38. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  39. package/src/headers/22/crypto/ncrypto.h +752 -0
  40. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  41. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  42. package/src/headers/22/encoding_binding.h +59 -0
  43. package/src/headers/{14 → 22}/env-inl.h +276 -409
  44. package/src/headers/22/env.h +1266 -0
  45. package/src/headers/22/env_properties.h +497 -0
  46. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  47. package/src/headers/{18 → 22}/histogram.h +88 -48
  48. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  49. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  50. package/src/headers/22/js_native_api.h +619 -0
  51. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  52. package/src/headers/22/js_native_api_v8.h +485 -0
  53. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  54. package/src/headers/22/json_parser.h +40 -0
  55. package/src/headers/{16 → 22}/json_utils.h +19 -8
  56. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  57. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  58. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  59. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  60. package/src/headers/{18 → 22}/node.h +465 -68
  61. package/src/headers/{18 → 22}/node_api.h +66 -81
  62. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  63. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  64. package/src/headers/22/node_binding.h +154 -0
  65. package/src/headers/{18 → 22}/node_blob.h +46 -78
  66. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  67. package/src/headers/{18 → 22}/node_bob.h +2 -6
  68. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  69. package/src/headers/22/node_builtins.h +220 -0
  70. package/src/headers/{18 → 22}/node_constants.h +3 -5
  71. package/src/headers/22/node_context_data.h +168 -0
  72. package/src/headers/22/node_contextify.h +199 -0
  73. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  74. package/src/headers/22/node_dotenv.h +45 -0
  75. package/src/headers/{18 → 22}/node_errors.h +86 -27
  76. package/src/headers/22/node_exit_code.h +54 -0
  77. package/src/headers/22/node_external_reference.h +249 -0
  78. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  79. package/src/headers/{16 → 22}/node_file.h +122 -11
  80. package/src/headers/{18 → 22}/node_http2.h +28 -11
  81. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  82. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  83. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  84. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  85. package/src/headers/{18 → 22}/node_internals.h +121 -59
  86. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  87. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  88. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  89. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  90. package/src/headers/{18 → 22}/node_options.h +124 -39
  91. package/src/headers/{18 → 22}/node_perf.h +0 -2
  92. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  93. package/src/headers/{18 → 22}/node_platform.h +11 -5
  94. package/src/headers/{18 → 22}/node_process.h +26 -14
  95. package/src/headers/22/node_realm-inl.h +145 -0
  96. package/src/headers/22/node_realm.h +184 -0
  97. package/src/headers/{16 → 22}/node_report.h +13 -17
  98. package/src/headers/{16 → 22}/node_revert.h +3 -3
  99. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  100. package/src/headers/22/node_sea.h +64 -0
  101. package/src/headers/22/node_shadow_realm.h +46 -0
  102. package/src/headers/22/node_snapshot_builder.h +57 -0
  103. package/src/headers/22/node_snapshotable.h +174 -0
  104. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  105. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  106. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  107. package/src/headers/22/node_threadsafe_cow.h +105 -0
  108. package/src/headers/22/node_union_bytes.h +81 -0
  109. package/src/headers/22/node_url.h +96 -0
  110. package/src/headers/22/node_v8.h +77 -0
  111. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  112. package/src/headers/{16 → 22}/node_version.h +21 -9
  113. package/src/headers/22/node_wasi.h +185 -0
  114. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  115. package/src/headers/{18 → 22}/node_worker.h +7 -2
  116. package/src/headers/22/permission/child_process_permission.h +31 -0
  117. package/src/headers/22/permission/fs_permission.h +167 -0
  118. package/src/headers/22/permission/inspector_permission.h +31 -0
  119. package/src/headers/22/permission/permission.h +99 -0
  120. package/src/headers/22/permission/permission_base.h +60 -0
  121. package/src/headers/22/permission/wasi_permission.h +31 -0
  122. package/src/headers/22/permission/worker_permission.h +31 -0
  123. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  124. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  125. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  126. package/src/headers/{18 → 22}/stream_base.h +35 -16
  127. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  128. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  129. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  130. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  131. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  132. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  133. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  134. package/src/headers/22/timers.h +76 -0
  135. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  136. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  137. package/src/headers/22/undici_version.h +6 -0
  138. package/src/headers/{18 → 22}/util-inl.h +97 -127
  139. package/src/headers/{18 → 22}/util.h +293 -106
  140. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  141. package/src/headers/24/acorn_version.h +6 -0
  142. package/src/headers/24/addon_permission.h +31 -0
  143. package/src/headers/{16/tracing → 24}/agent.h +1 -1
  144. package/src/headers/24/aliased_buffer-inl.h +244 -0
  145. package/src/headers/24/aliased_buffer.h +206 -0
  146. package/src/headers/24/amaro_version.h +6 -0
  147. package/src/headers/24/application.h +165 -0
  148. package/src/headers/24/async_context_frame.h +33 -0
  149. package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
  150. package/src/headers/{16 → 24}/async_wrap.h +86 -88
  151. package/src/headers/{16 → 24}/base_object-inl.h +75 -119
  152. package/src/headers/{16 → 24}/base_object.h +84 -40
  153. package/src/headers/24/base_object_types.h +74 -0
  154. package/src/headers/24/bindingdata.h +272 -0
  155. package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
  156. package/src/headers/24/blob_serializer_deserializer.h +132 -0
  157. package/src/headers/{18 → 24}/callback_queue.h +1 -0
  158. package/src/headers/{18 → 24}/cares_wrap.h +68 -144
  159. package/src/headers/24/child_process_permission.h +31 -0
  160. package/src/headers/24/cid.h +127 -0
  161. package/src/headers/24/cjs_module_lexer_version.h +6 -0
  162. package/src/headers/24/cleanup_queue-inl.h +36 -0
  163. package/src/headers/24/cleanup_queue.h +79 -0
  164. package/src/headers/24/compile_cache.h +113 -0
  165. package/src/headers/24/cppgc_helpers-inl.h +65 -0
  166. package/src/headers/24/cppgc_helpers.h +162 -0
  167. package/src/headers/24/crypto/crypto_aes.h +97 -0
  168. package/src/headers/24/crypto/crypto_argon2.h +86 -0
  169. package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
  170. package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
  171. package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
  172. package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
  173. package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
  174. package/src/headers/24/crypto/crypto_common.h +48 -0
  175. package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
  176. package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
  177. package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
  178. package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
  179. package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
  180. package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
  181. package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
  182. package/src/headers/24/crypto/crypto_kem.h +113 -0
  183. package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
  184. package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
  185. package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
  186. package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
  187. package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
  188. package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
  189. package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
  190. package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
  191. package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
  192. package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
  193. package/src/headers/24/crypto/crypto_x509.h +140 -0
  194. package/src/headers/24/data.h +148 -0
  195. package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
  196. package/src/headers/{16 → 24}/debug_utils.h +31 -22
  197. package/src/headers/24/defs.h +254 -0
  198. package/src/headers/24/embedded_data.h +17 -0
  199. package/src/headers/24/encoding_binding.h +60 -0
  200. package/src/headers/24/endpoint.h +421 -0
  201. package/src/headers/{16 → 24}/env-inl.h +198 -540
  202. package/src/headers/24/env.h +1257 -0
  203. package/src/headers/24/env_properties.h +561 -0
  204. package/src/headers/24/fs_permission.h +167 -0
  205. package/src/headers/{16 → 24}/handle_wrap.h +4 -2
  206. package/src/headers/{16 → 24}/histogram-inl.h +34 -15
  207. package/src/headers/24/histogram.h +279 -0
  208. package/src/headers/24/http3.h +44 -0
  209. package/src/headers/{18 → 24}/inspector_agent.h +23 -2
  210. package/src/headers/24/inspector_permission.h +31 -0
  211. package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
  212. package/src/headers/24/io_agent.h +30 -0
  213. package/src/headers/{18 → 24}/js_native_api.h +74 -30
  214. package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
  215. package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
  216. package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
  217. package/src/headers/24/json_parser.h +40 -0
  218. package/src/headers/{18 → 24}/json_utils.h +19 -8
  219. package/src/headers/24/logstream.h +81 -0
  220. package/src/headers/24/main_thread_interface.h +116 -0
  221. package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
  222. package/src/headers/{16 → 24}/memory_tracker.h +58 -9
  223. package/src/headers/24/module_wrap.h +229 -0
  224. package/src/headers/24/ncrypto.h +1625 -0
  225. package/src/headers/24/network_agent.h +118 -0
  226. package/src/headers/24/network_inspector.h +45 -0
  227. package/src/headers/24/network_resource_manager.h +29 -0
  228. package/src/headers/{16 → 24}/node.h +560 -72
  229. package/src/headers/24/node_api.h +269 -0
  230. package/src/headers/24/node_api_internals.h +46 -0
  231. package/src/headers/{16 → 24}/node_api_types.h +13 -11
  232. package/src/headers/24/node_binding.h +163 -0
  233. package/src/headers/{16 → 24}/node_blob.h +46 -78
  234. package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
  235. package/src/headers/{16 → 24}/node_bob.h +2 -6
  236. package/src/headers/{14 → 24}/node_buffer.h +1 -1
  237. package/src/headers/24/node_builtins.h +223 -0
  238. package/src/headers/24/node_config_file.h +65 -0
  239. package/src/headers/{14 → 24}/node_constants.h +3 -5
  240. package/src/headers/24/node_context_data.h +168 -0
  241. package/src/headers/24/node_contextify.h +261 -0
  242. package/src/headers/{18 → 24}/node_crypto.h +7 -2
  243. package/src/headers/24/node_debug.h +25 -0
  244. package/src/headers/24/node_dotenv.h +45 -0
  245. package/src/headers/{16 → 24}/node_errors.h +146 -32
  246. package/src/headers/24/node_exit_code.h +54 -0
  247. package/src/headers/{18 → 24}/node_external_reference.h +44 -22
  248. package/src/headers/{16 → 24}/node_file-inl.h +156 -50
  249. package/src/headers/{18 → 24}/node_file.h +129 -15
  250. package/src/headers/{16 → 24}/node_http2.h +53 -18
  251. package/src/headers/{14 → 24}/node_http2_state.h +35 -25
  252. package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
  253. package/src/headers/{16 → 24}/node_http_common.h +63 -59
  254. package/src/headers/{18 → 24}/node_i18n.h +5 -18
  255. package/src/headers/{16 → 24}/node_internals.h +131 -76
  256. package/src/headers/24/node_json.h +24 -0
  257. package/src/headers/24/node_large_page.h +34 -0
  258. package/src/headers/24/node_locks.h +180 -0
  259. package/src/headers/{14 → 24}/node_main_instance.h +15 -44
  260. package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
  261. package/src/headers/{16 → 24}/node_messaging.h +27 -11
  262. package/src/headers/{16 → 24}/node_metadata.h +44 -2
  263. package/src/headers/24/node_modules.h +93 -0
  264. package/src/headers/{16 → 24}/node_options-inl.h +93 -46
  265. package/src/headers/{16 → 24}/node_options.h +251 -63
  266. package/src/headers/{16 → 24}/node_perf.h +6 -25
  267. package/src/headers/{16 → 24}/node_perf_common.h +23 -10
  268. package/src/headers/24/node_platform.h +286 -0
  269. package/src/headers/24/node_process.h +111 -0
  270. package/src/headers/24/node_realm-inl.h +153 -0
  271. package/src/headers/24/node_realm.h +236 -0
  272. package/src/headers/{18 → 24}/node_report.h +13 -17
  273. package/src/headers/{18 → 24}/node_revert.h +3 -3
  274. package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
  275. package/src/headers/24/node_sea.h +74 -0
  276. package/src/headers/24/node_shadow_realm.h +46 -0
  277. package/src/headers/24/node_snapshot_builder.h +57 -0
  278. package/src/headers/24/node_snapshotable.h +174 -0
  279. package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
  280. package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
  281. package/src/headers/24/node_sqlite.h +270 -0
  282. package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
  283. package/src/headers/24/node_string.h +101 -0
  284. package/src/headers/24/node_task_runner.h +92 -0
  285. package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
  286. package/src/headers/24/node_threadsafe_cow.h +105 -0
  287. package/src/headers/24/node_union_bytes.h +81 -0
  288. package/src/headers/24/node_url.h +101 -0
  289. package/src/headers/24/node_url_pattern.h +118 -0
  290. package/src/headers/24/node_v8.h +77 -0
  291. package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
  292. package/src/headers/{18 → 24}/node_version.h +18 -6
  293. package/src/headers/24/node_wasi.h +185 -0
  294. package/src/headers/24/node_wasm_web_api.h +55 -0
  295. package/src/headers/{18 → 24}/node_watchdog.h +2 -0
  296. package/src/headers/24/node_webstorage.h +60 -0
  297. package/src/headers/{16 → 24}/node_worker.h +24 -10
  298. package/src/headers/24/packet.h +155 -0
  299. package/src/headers/24/path.h +33 -0
  300. package/src/headers/24/permission/addon_permission.h +31 -0
  301. package/src/headers/24/permission/child_process_permission.h +31 -0
  302. package/src/headers/24/permission/fs_permission.h +167 -0
  303. package/src/headers/24/permission/inspector_permission.h +31 -0
  304. package/src/headers/24/permission/permission.h +100 -0
  305. package/src/headers/24/permission/permission_base.h +65 -0
  306. package/src/headers/24/permission/wasi_permission.h +31 -0
  307. package/src/headers/24/permission/worker_permission.h +31 -0
  308. package/src/headers/24/permission.h +100 -0
  309. package/src/headers/24/permission_base.h +65 -0
  310. package/src/headers/24/preferredaddress.h +72 -0
  311. package/src/headers/24/protocol_helper.h +27 -0
  312. package/src/headers/24/queue.h +306 -0
  313. package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
  314. package/src/headers/{16 → 24}/req_wrap.h +3 -1
  315. package/src/headers/24/runtime_agent.h +41 -0
  316. package/src/headers/24/session.h +528 -0
  317. package/src/headers/24/sessionticket.h +108 -0
  318. package/src/headers/{18 → 24}/spawn_sync.h +9 -8
  319. package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
  320. package/src/headers/{16 → 24}/stream_base.h +43 -19
  321. package/src/headers/{16 → 24}/stream_pipe.h +7 -4
  322. package/src/headers/{18 → 24}/stream_wrap.h +2 -3
  323. package/src/headers/24/streams.h +370 -0
  324. package/src/headers/{16 → 24}/string_bytes.h +8 -21
  325. package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
  326. package/src/headers/{18 → 24}/string_decoder.h +0 -1
  327. package/src/headers/24/target_agent.h +75 -0
  328. package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
  329. package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
  330. package/src/headers/24/timer_wrap-inl.h +32 -0
  331. package/src/headers/{16 → 24}/timer_wrap.h +7 -4
  332. package/src/headers/24/timers.h +75 -0
  333. package/src/headers/24/tlscontext.h +228 -0
  334. package/src/headers/24/tokens.h +256 -0
  335. package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
  336. package/src/headers/24/traced_value.h +129 -0
  337. package/src/headers/24/tracing_agent.h +43 -0
  338. package/src/headers/24/transportparams.h +166 -0
  339. package/src/headers/{16 → 24}/tty_wrap.h +0 -1
  340. package/src/headers/{18 → 24}/udp_wrap.h +8 -5
  341. package/src/headers/24/undici_version.h +6 -0
  342. package/src/headers/{16 → 24}/util-inl.h +267 -131
  343. package/src/headers/{16 → 24}/util.h +338 -146
  344. package/src/headers/24/v8-external-memory-accounter.h +60 -0
  345. package/src/headers/24/v8-fast-api-calls.h +819 -0
  346. package/src/headers/24/v8-inspector.h +426 -0
  347. package/src/headers/24/wasi_permission.h +31 -0
  348. package/src/headers/24/worker_agent.h +40 -0
  349. package/src/headers/24/worker_inspector.h +124 -0
  350. package/src/headers/24/worker_permission.h +31 -0
  351. package/src/headers/24/zlib_version.h +6 -0
  352. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  353. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  354. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  355. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  356. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  357. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  358. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  359. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  360. package/src/headers/14/aliased_buffer.h +0 -263
  361. package/src/headers/14/allocated_buffer-inl.h +0 -110
  362. package/src/headers/14/allocated_buffer.h +0 -73
  363. package/src/headers/14/async_wrap.h +0 -230
  364. package/src/headers/14/base64.h +0 -183
  365. package/src/headers/14/base_object-inl.h +0 -371
  366. package/src/headers/14/base_object.h +0 -281
  367. package/src/headers/14/callback_queue-inl.h +0 -97
  368. package/src/headers/14/callback_queue.h +0 -78
  369. package/src/headers/14/debug_utils.h +0 -181
  370. package/src/headers/14/env.h +0 -1388
  371. package/src/headers/14/handle_wrap.h +0 -117
  372. package/src/headers/14/histogram-inl.h +0 -83
  373. package/src/headers/14/histogram.h +0 -98
  374. package/src/headers/14/inspector_agent.h +0 -149
  375. package/src/headers/14/inspector_profiler.h +0 -137
  376. package/src/headers/14/js_native_api.h +0 -544
  377. package/src/headers/14/js_native_api_types.h +0 -143
  378. package/src/headers/14/js_native_api_v8.h +0 -301
  379. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  380. package/src/headers/14/json_utils.h +0 -161
  381. package/src/headers/14/memory_tracker-inl.h +0 -355
  382. package/src/headers/14/module_wrap.h +0 -99
  383. package/src/headers/14/node.h +0 -1032
  384. package/src/headers/14/node_api.h +0 -255
  385. package/src/headers/14/node_api_types.h +0 -44
  386. package/src/headers/14/node_binding.h +0 -99
  387. package/src/headers/14/node_context_data.h +0 -44
  388. package/src/headers/14/node_contextify.h +0 -161
  389. package/src/headers/14/node_crypto.h +0 -865
  390. package/src/headers/14/node_crypto_bio.h +0 -195
  391. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  392. package/src/headers/14/node_crypto_clienthello.h +0 -132
  393. package/src/headers/14/node_crypto_common.h +0 -138
  394. package/src/headers/14/node_crypto_groups.h +0 -415
  395. package/src/headers/14/node_dtrace.h +0 -86
  396. package/src/headers/14/node_errors.h +0 -214
  397. package/src/headers/14/node_file-inl.h +0 -306
  398. package/src/headers/14/node_file.h +0 -417
  399. package/src/headers/14/node_http2.h +0 -1191
  400. package/src/headers/14/node_http_common-inl.h +0 -194
  401. package/src/headers/14/node_http_common.h +0 -529
  402. package/src/headers/14/node_i18n.h +0 -144
  403. package/src/headers/14/node_internals.h +0 -405
  404. package/src/headers/14/node_mem.h +0 -45
  405. package/src/headers/14/node_messaging.h +0 -303
  406. package/src/headers/14/node_metadata.h +0 -109
  407. package/src/headers/14/node_mutex.h +0 -247
  408. package/src/headers/14/node_native_module.h +0 -101
  409. package/src/headers/14/node_native_module_env.h +0 -66
  410. package/src/headers/14/node_options-inl.h +0 -451
  411. package/src/headers/14/node_options.h +0 -481
  412. package/src/headers/14/node_perf.h +0 -181
  413. package/src/headers/14/node_perf_common.h +0 -97
  414. package/src/headers/14/node_platform.h +0 -189
  415. package/src/headers/14/node_process.h +0 -40
  416. package/src/headers/14/node_report.h +0 -47
  417. package/src/headers/14/node_revert.h +0 -72
  418. package/src/headers/14/node_root_certs.h +0 -3458
  419. package/src/headers/14/node_sockaddr-inl.h +0 -170
  420. package/src/headers/14/node_sockaddr.h +0 -123
  421. package/src/headers/14/node_stat_watcher.h +0 -70
  422. package/src/headers/14/node_union_bytes.h +0 -103
  423. package/src/headers/14/node_url.h +0 -188
  424. package/src/headers/14/node_version.h +0 -98
  425. package/src/headers/14/node_wasi.h +0 -108
  426. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  427. package/src/headers/14/node_win32_etw_provider.h +0 -99
  428. package/src/headers/14/node_worker.h +0 -141
  429. package/src/headers/14/pipe_wrap.h +0 -78
  430. package/src/headers/14/req_wrap-inl.h +0 -170
  431. package/src/headers/14/req_wrap.h +0 -77
  432. package/src/headers/14/stream_base-inl.h +0 -275
  433. package/src/headers/14/stream_base.h +0 -434
  434. package/src/headers/14/stream_pipe.h +0 -73
  435. package/src/headers/14/stream_wrap.h +0 -130
  436. package/src/headers/14/string_bytes.h +0 -129
  437. package/src/headers/14/string_decoder.h +0 -50
  438. package/src/headers/14/string_search.h +0 -638
  439. package/src/headers/14/tcp_wrap.h +0 -101
  440. package/src/headers/14/tls_wrap.h +0 -222
  441. package/src/headers/14/tracing/agent.h +0 -195
  442. package/src/headers/14/tracing/traced_value.h +0 -70
  443. package/src/headers/14/tty_wrap.h +0 -64
  444. package/src/headers/14/udp_wrap.h +0 -227
  445. package/src/headers/14/util-inl.h +0 -566
  446. package/src/headers/14/util.h +0 -804
  447. package/src/headers/14/v8abbr.h +0 -124
  448. package/src/headers/16/aliased_buffer.h +0 -315
  449. package/src/headers/16/allocated_buffer-inl.h +0 -110
  450. package/src/headers/16/allocated_buffer.h +0 -73
  451. package/src/headers/16/async_wrap-inl.h +0 -94
  452. package/src/headers/16/base64-inl.h +0 -189
  453. package/src/headers/16/base64.h +0 -69
  454. package/src/headers/16/crypto/crypto_aes.h +0 -89
  455. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  456. package/src/headers/16/crypto/crypto_common.h +0 -187
  457. package/src/headers/16/crypto/crypto_dh.h +0 -157
  458. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  459. package/src/headers/16/crypto/crypto_ec.h +0 -169
  460. package/src/headers/16/crypto/crypto_groups.h +0 -415
  461. package/src/headers/16/crypto/crypto_hash.h +0 -89
  462. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  463. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  464. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  465. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  466. package/src/headers/16/crypto/crypto_random.h +0 -130
  467. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  468. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  469. package/src/headers/16/crypto/crypto_sig.h +0 -167
  470. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  471. package/src/headers/16/crypto/crypto_timing.h +0 -20
  472. package/src/headers/16/crypto/crypto_x509.h +0 -141
  473. package/src/headers/16/env.h +0 -1629
  474. package/src/headers/16/histogram.h +0 -216
  475. package/src/headers/16/js_native_api.h +0 -561
  476. package/src/headers/16/js_native_api_v8.h +0 -451
  477. package/src/headers/16/node.d +0 -315
  478. package/src/headers/16/node.stp +0 -146
  479. package/src/headers/16/node_api.h +0 -275
  480. package/src/headers/16/node_api_internals.h +0 -30
  481. package/src/headers/16/node_binding.h +0 -99
  482. package/src/headers/16/node_buffer.h +0 -92
  483. package/src/headers/16/node_constants.h +0 -84
  484. package/src/headers/16/node_context_data.h +0 -44
  485. package/src/headers/16/node_contextify.h +0 -196
  486. package/src/headers/16/node_dtrace.h +0 -86
  487. package/src/headers/16/node_external_reference.h +0 -129
  488. package/src/headers/16/node_main_instance.h +0 -103
  489. package/src/headers/16/node_native_module.h +0 -101
  490. package/src/headers/16/node_native_module_env.h +0 -68
  491. package/src/headers/16/node_platform.h +0 -192
  492. package/src/headers/16/node_process.h +0 -43
  493. package/src/headers/16/node_provider.d +0 -80
  494. package/src/headers/16/node_snapshotable.h +0 -137
  495. package/src/headers/16/node_union_bytes.h +0 -103
  496. package/src/headers/16/node_url.h +0 -205
  497. package/src/headers/16/node_v8.h +0 -41
  498. package/src/headers/16/node_v8_platform-inl.h +0 -194
  499. package/src/headers/16/node_wasi.h +0 -108
  500. package/src/headers/16/node_watchdog.h +0 -152
  501. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  502. package/src/headers/16/node_win32_etw_provider.h +0 -99
  503. package/src/headers/16/spawn_sync.h +0 -242
  504. package/src/headers/16/string_decoder-inl.h +0 -37
  505. package/src/headers/16/string_search.h +0 -638
  506. package/src/headers/16/threadpoolwork-inl.h +0 -57
  507. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  508. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  509. package/src/headers/16/tracing/trace_event.h +0 -720
  510. package/src/headers/16/tracing/traced_value.h +0 -70
  511. package/src/headers/16/v8abbr.h +0 -123
  512. package/src/headers/16/v8ustack.d +0 -695
  513. package/src/headers/18/aliased_buffer.h +0 -315
  514. package/src/headers/18/aliased_struct-inl.h +0 -54
  515. package/src/headers/18/aliased_struct.h +0 -63
  516. package/src/headers/18/base64-inl.h +0 -189
  517. package/src/headers/18/base64.h +0 -69
  518. package/src/headers/18/connect_wrap.h +0 -26
  519. package/src/headers/18/connection_wrap.h +0 -30
  520. package/src/headers/18/crypto/crypto_aes.h +0 -89
  521. package/src/headers/18/crypto/crypto_bio.h +0 -194
  522. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  523. package/src/headers/18/crypto/crypto_common.h +0 -151
  524. package/src/headers/18/crypto/crypto_groups.h +0 -415
  525. package/src/headers/18/crypto/crypto_x509.h +0 -143
  526. package/src/headers/18/debug_utils-inl.h +0 -223
  527. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  528. package/src/headers/18/env-inl.h +0 -1308
  529. package/src/headers/18/env.h +0 -1667
  530. package/src/headers/18/inspector_io.h +0 -78
  531. package/src/headers/18/inspector_socket.h +0 -60
  532. package/src/headers/18/inspector_socket_server.h +0 -110
  533. package/src/headers/18/js_stream.h +0 -52
  534. package/src/headers/18/memory_tracker.h +0 -284
  535. package/src/headers/18/module_wrap.h +0 -116
  536. package/src/headers/18/node_binding.h +0 -99
  537. package/src/headers/18/node_context_data.h +0 -44
  538. package/src/headers/18/node_contextify.h +0 -196
  539. package/src/headers/18/node_dir.h +0 -52
  540. package/src/headers/18/node_dtrace.h +0 -86
  541. package/src/headers/18/node_http2_state.h +0 -149
  542. package/src/headers/18/node_mem-inl.h +0 -112
  543. package/src/headers/18/node_native_module.h +0 -109
  544. package/src/headers/18/node_native_module_env.h +0 -71
  545. package/src/headers/18/node_object_wrap.h +0 -132
  546. package/src/headers/18/node_snapshot_builder.h +0 -43
  547. package/src/headers/18/node_snapshotable.h +0 -130
  548. package/src/headers/18/node_union_bytes.h +0 -103
  549. package/src/headers/18/node_url.h +0 -205
  550. package/src/headers/18/node_v8.h +0 -41
  551. package/src/headers/18/node_wasi.h +0 -108
  552. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  553. package/src/headers/18/node_win32_etw_provider.h +0 -99
  554. package/src/headers/18/string_search.h +0 -638
  555. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  556. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  557. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  558. package/src/headers/18/tracing/traced_value.h +0 -70
  559. package/src/headers/18/v8abbr.h +0 -123
  560. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  561. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  562. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  563. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  564. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  565. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  566. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  567. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  568. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  569. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  570. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  571. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  572. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  573. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  574. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  575. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  576. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  577. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  578. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  579. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  580. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  581. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  582. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  583. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  584. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  585. /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
  586. /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
  587. /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
  588. /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
  589. /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
  590. /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
  591. /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
  592. /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
  593. /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
  594. /package/src/headers/{16 → 24}/inspector_io.h +0 -0
  595. /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
  596. /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
  597. /package/src/headers/{16 → 24}/js_stream.h +0 -0
  598. /package/src/headers/{16 → 24}/node_dir.h +0 -0
  599. /package/src/headers/{18 → 24}/node_mem.h +0 -0
  600. /package/src/headers/{18 → 24}/node_mutex.h +0 -0
  601. /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
  602. /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
  603. /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
  604. /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
  605. /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
  606. /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
@@ -0,0 +1,75 @@
1
+ #ifndef SRC_TIMERS_H_
2
+ #define SRC_TIMERS_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include <cinttypes>
7
+ #include "node_snapshotable.h"
8
+
9
+ namespace node {
10
+ class ExternalReferenceRegistry;
11
+
12
+ namespace timers {
13
+ class BindingData : public SnapshotableObject {
14
+ public:
15
+ BindingData(Realm* env, v8::Local<v8::Object> obj);
16
+
17
+ using InternalFieldInfo = InternalFieldInfoBase;
18
+
19
+ SET_BINDING_ID(timers_binding_data)
20
+ SERIALIZABLE_OBJECT_METHODS()
21
+
22
+ SET_NO_MEMORY_INFO()
23
+ SET_SELF_SIZE(BindingData)
24
+ SET_MEMORY_INFO_NAME(BindingData)
25
+
26
+ static void SetupTimers(const v8::FunctionCallbackInfo<v8::Value>& args);
27
+
28
+ static void SlowGetLibuvNow(const v8::FunctionCallbackInfo<v8::Value>& args);
29
+ static double FastGetLibuvNow(v8::Local<v8::Value> receiver);
30
+ static double GetLibuvNowImpl(BindingData* data);
31
+
32
+ static void SlowScheduleTimer(
33
+ const v8::FunctionCallbackInfo<v8::Value>& args);
34
+ static void FastScheduleTimer(v8::Local<v8::Object> unused,
35
+ v8::Local<v8::Object> receiver,
36
+ int64_t duration);
37
+ static void ScheduleTimerImpl(BindingData* data, int64_t duration);
38
+
39
+ static void SlowToggleTimerRef(
40
+ const v8::FunctionCallbackInfo<v8::Value>& args);
41
+ static void FastToggleTimerRef(v8::Local<v8::Object> unused,
42
+ v8::Local<v8::Object> receiver,
43
+ bool ref);
44
+ static void ToggleTimerRefImpl(BindingData* data, bool ref);
45
+
46
+ static void SlowToggleImmediateRef(
47
+ const v8::FunctionCallbackInfo<v8::Value>& args);
48
+ static void FastToggleImmediateRef(v8::Local<v8::Object> unused,
49
+ v8::Local<v8::Object> receiver,
50
+ bool ref);
51
+ static void ToggleImmediateRefImpl(BindingData* data, bool ref);
52
+
53
+ static void CreatePerIsolateProperties(IsolateData* isolate_data,
54
+ v8::Local<v8::ObjectTemplate> target);
55
+ static void CreatePerContextProperties(v8::Local<v8::Object> target,
56
+ v8::Local<v8::Value> unused,
57
+ v8::Local<v8::Context> context,
58
+ void* priv);
59
+ static void RegisterTimerExternalReferences(
60
+ ExternalReferenceRegistry* registry);
61
+
62
+ private:
63
+ static v8::CFunction fast_get_libuv_now_;
64
+ static v8::CFunction fast_schedule_timer_;
65
+ static v8::CFunction fast_toggle_timer_ref_;
66
+ static v8::CFunction fast_toggle_immediate_ref_;
67
+ };
68
+
69
+ } // namespace timers
70
+
71
+ } // namespace node
72
+
73
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
74
+
75
+ #endif // SRC_TIMERS_H_
@@ -0,0 +1,228 @@
1
+ #pragma once
2
+
3
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
4
+ #if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
5
+
6
+ #include <base_object.h>
7
+ #include <crypto/crypto_context.h>
8
+ #include <crypto/crypto_keys.h>
9
+ #include <memory_tracker.h>
10
+ #include <ncrypto.h>
11
+ #include <ngtcp2/ngtcp2_crypto.h>
12
+ #include "bindingdata.h"
13
+ #include "data.h"
14
+ #include "defs.h"
15
+ #include "sessionticket.h"
16
+
17
+ namespace node::quic {
18
+
19
+ class Session;
20
+ class TLSContext;
21
+
22
+ // Every QUIC Session has exactly one TLSSession that maintains the state
23
+ // of the TLS handshake and negotiated keys after the handshake has been
24
+ // completed. It is separated out from the main Session class only as a
25
+ // convenience to help make the code more maintainable and understandable.
26
+ // A TLSSession is created from a TLSContext and maintains a reference to
27
+ // the context.
28
+ class TLSSession final : public MemoryRetainer {
29
+ public:
30
+ static const TLSSession& From(const SSL* ssl);
31
+
32
+ // The constructor is public in order to satisfy the call to std::make_unique
33
+ // in TLSContext::NewSession. It should not be called directly.
34
+ TLSSession(Session* session,
35
+ std::shared_ptr<TLSContext> context,
36
+ const std::optional<SessionTicket>& maybeSessionTicket);
37
+ DISALLOW_COPY_AND_MOVE(TLSSession)
38
+ ~TLSSession();
39
+
40
+ inline operator bool() const { return ssl_ != nullptr; }
41
+ inline Session& session() const { return *session_; }
42
+ inline TLSContext& context() const { return *context_; }
43
+
44
+ // Returns true if the handshake has been completed and early data was
45
+ // accepted by the TLS session. This will assert if the handshake has
46
+ // not been completed.
47
+ bool early_data_was_accepted() const;
48
+
49
+ v8::MaybeLocal<v8::Object> cert(Environment* env) const;
50
+ v8::MaybeLocal<v8::Object> peer_cert(Environment* env) const;
51
+ v8::MaybeLocal<v8::Object> ephemeral_key(Environment* env) const;
52
+ v8::MaybeLocal<v8::Value> cipher_name(Environment* env) const;
53
+ v8::MaybeLocal<v8::Value> cipher_version(Environment* env) const;
54
+
55
+ // The SNI (server name) negotiated for the session
56
+ const std::string_view servername() const;
57
+
58
+ // The ALPN (protocol name) negotiated for the session
59
+ const std::string_view protocol() const;
60
+
61
+ // Triggers key update to begin. This will fail and return false if either a
62
+ // previous key update is in progress or if the initial handshake has not yet
63
+ // been confirmed.
64
+ bool InitiateKeyUpdate();
65
+
66
+ struct PeerIdentityValidationError {
67
+ v8::MaybeLocal<v8::Value> reason;
68
+ v8::MaybeLocal<v8::Value> code;
69
+ };
70
+
71
+ // Checks the peer identity against the configured CA and CRL. If the peer
72
+ // certificate is valid, std::nullopt is returned. Otherwise a
73
+ // PeerIdentityValidationError is returned with the reason and code for the
74
+ // failure.
75
+ std::optional<PeerIdentityValidationError> VerifyPeerIdentity(
76
+ Environment* env);
77
+
78
+ inline const std::string_view validation_error() const {
79
+ return validation_error_;
80
+ }
81
+
82
+ SET_NO_MEMORY_INFO()
83
+ SET_MEMORY_INFO_NAME(TLSSession)
84
+ SET_SELF_SIZE(TLSSession)
85
+
86
+ private:
87
+ operator SSL*() const;
88
+ ncrypto::SSLPointer Initialize(
89
+ const std::optional<SessionTicket>& maybeSessionTicket);
90
+
91
+ static ngtcp2_conn* connection(ngtcp2_crypto_conn_ref* ref);
92
+
93
+ ngtcp2_crypto_conn_ref ref_;
94
+ std::shared_ptr<TLSContext> context_;
95
+ Session* session_;
96
+ ncrypto::SSLPointer ssl_;
97
+ ncrypto::BIOPointer bio_trace_;
98
+ std::string validation_error_ = "";
99
+ bool in_key_update_ = false;
100
+ };
101
+
102
+ // The TLSContext is used to create a TLSSession. For the client, there is
103
+ // typically only a single TLSContext for each TLSSession. For the server,
104
+ // there is a single TLSContext for the server and a TLSSession for every
105
+ // QUIC session created by that server.
106
+ class TLSContext final : public MemoryRetainer,
107
+ public std::enable_shared_from_this<TLSContext> {
108
+ public:
109
+ static constexpr auto DEFAULT_CIPHERS = "TLS_AES_128_GCM_SHA256:"
110
+ "TLS_AES_256_GCM_SHA384:"
111
+ "TLS_CHACHA20_POLY1305_"
112
+ "SHA256:TLS_AES_128_CCM_SHA256";
113
+ static constexpr auto DEFAULT_GROUPS = "X25519:P-256:P-384:P-521";
114
+
115
+ struct Options final : public MemoryRetainer {
116
+ // The SNI servername to use for this session. This option is only used by
117
+ // the client.
118
+ std::string servername = "localhost";
119
+
120
+ // The ALPN (protocol name) to use for this session. This option is only
121
+ // used by the client.
122
+ std::string protocol = NGHTTP3_ALPN_H3;
123
+
124
+ // The list of TLS ciphers to use for this session.
125
+ std::string ciphers = DEFAULT_CIPHERS;
126
+
127
+ // The list of TLS groups to use for this session.
128
+ std::string groups = DEFAULT_GROUPS;
129
+
130
+ // When true, enables keylog output for the session.
131
+ bool keylog = false;
132
+
133
+ // When true, the peer certificate is verified against the list of supplied
134
+ // CA. If verification fails, the connection will be refused. When set,
135
+ // instructs the server session to request a client auth certificate. This
136
+ // option is only used by the server side.
137
+ bool verify_client = false;
138
+
139
+ // When true, enables TLS tracing for the session. This should only be used
140
+ // for debugging.
141
+ // JavaScript option name "tlsTrace".
142
+ bool enable_tls_trace = false;
143
+
144
+ // When true, causes the private key passed in for the session to be
145
+ // verified.
146
+ // JavaScript option name "verifyPrivateKey"
147
+ bool verify_private_key = false;
148
+
149
+ // The TLS private key(s) to use for this session.
150
+ // JavaScript option name "keys"
151
+ std::vector<crypto::KeyObjectData> keys;
152
+
153
+ // Collection of certificates to use for this session.
154
+ // JavaScript option name "certs"
155
+ std::vector<Store> certs;
156
+
157
+ // Optional certificate authority overrides to use.
158
+ // JavaScript option name "ca"
159
+ std::vector<Store> ca;
160
+
161
+ // Optional certificate revocation lists to use.
162
+ // JavaScript option name "crl"
163
+ std::vector<Store> crl;
164
+
165
+ void MemoryInfo(MemoryTracker* tracker) const override;
166
+ SET_MEMORY_INFO_NAME(TLSContext::Options)
167
+ SET_SELF_SIZE(Options)
168
+
169
+ // The default TLS configuration.
170
+ static const Options kDefault;
171
+
172
+ static v8::Maybe<Options> From(Environment* env,
173
+ v8::Local<v8::Value> value);
174
+
175
+ std::string ToString() const;
176
+ };
177
+
178
+ static std::shared_ptr<TLSContext> CreateClient(const Options& options);
179
+ static std::shared_ptr<TLSContext> CreateServer(const Options& options);
180
+
181
+ TLSContext(Side side, const Options& options);
182
+ DISALLOW_COPY_AND_MOVE(TLSContext)
183
+
184
+ // Each QUIC Session has exactly one TLSSession. Each TLSSession maintains
185
+ // a reference to the TLSContext used to create it.
186
+ std::unique_ptr<TLSSession> NewSession(
187
+ Session* session, const std::optional<SessionTicket>& maybeSessionTicket);
188
+
189
+ inline Side side() const { return side_; }
190
+ inline const Options& options() const { return options_; }
191
+ inline operator bool() const { return ctx_ != nullptr; }
192
+
193
+ inline const std::string_view validation_error() const {
194
+ return validation_error_;
195
+ }
196
+
197
+ void MemoryInfo(MemoryTracker* tracker) const override;
198
+ SET_MEMORY_INFO_NAME(TLSContext)
199
+ SET_SELF_SIZE(TLSContext)
200
+
201
+ private:
202
+ ncrypto::SSLCtxPointer Initialize();
203
+ operator SSL_CTX*() const;
204
+
205
+ static void OnKeylog(const SSL* ssl, const char* line);
206
+ static int OnNewSession(SSL* ssl, SSL_SESSION* session);
207
+ static int OnSelectAlpn(SSL* ssl,
208
+ const unsigned char** out,
209
+ unsigned char* outlen,
210
+ const unsigned char* in,
211
+ unsigned int inlen,
212
+ void* arg);
213
+ static int OnVerifyClientCertificate(int preverify_ok, X509_STORE_CTX* ctx);
214
+
215
+ Side side_;
216
+ Options options_;
217
+ ncrypto::X509Pointer cert_;
218
+ ncrypto::X509Pointer issuer_;
219
+ ncrypto::SSLCtxPointer ctx_;
220
+ std::string validation_error_ = "";
221
+
222
+ friend class TLSSession;
223
+ };
224
+
225
+ } // namespace node::quic
226
+
227
+ #endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
228
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
@@ -0,0 +1,256 @@
1
+ #pragma once
2
+
3
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
4
+ #if HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
5
+
6
+ #include <memory_tracker.h>
7
+ #include <ngtcp2/ngtcp2_crypto.h>
8
+ #include <node_internals.h>
9
+ #include <node_sockaddr.h>
10
+ #include "cid.h"
11
+ #include "defs.h"
12
+
13
+ namespace node::quic {
14
+
15
+ // TokenSecrets are used to generate things like stateless reset tokens,
16
+ // retry tokens, and token packets. They are always QUIC_TOKENSECRET_LEN
17
+ // bytes in length.
18
+ //
19
+ // In the default case, token secrets will always be generated randomly.
20
+ // User code will be given the option to provide a secret directly
21
+ // however.
22
+ class TokenSecret final : public MemoryRetainer {
23
+ public:
24
+ static constexpr int QUIC_TOKENSECRET_LEN = 16;
25
+
26
+ // Generate a random secret.
27
+ TokenSecret();
28
+
29
+ // Copy the given secret. The uint8_t* is assumed
30
+ // to be QUIC_TOKENSECRET_LEN in length. Note that
31
+ // the length is not verified so care must be taken
32
+ // when this constructor is used.
33
+ explicit TokenSecret(const uint8_t* secret);
34
+ ~TokenSecret();
35
+
36
+ TokenSecret(const TokenSecret&) = default;
37
+ TokenSecret& operator=(const TokenSecret&) = default;
38
+ DISALLOW_MOVE(TokenSecret)
39
+
40
+ operator const uint8_t*() const;
41
+ uint8_t operator[](int pos) const;
42
+
43
+ std::string ToString() const;
44
+
45
+ SET_NO_MEMORY_INFO()
46
+ SET_MEMORY_INFO_NAME(TokenSecret)
47
+ SET_SELF_SIZE(TokenSecret)
48
+
49
+ private:
50
+ operator const char*() const;
51
+ uint8_t buf_[QUIC_TOKENSECRET_LEN];
52
+ };
53
+
54
+ // A stateless reset token is used when a QUIC endpoint receives a QUIC packet
55
+ // with a short header but the associated connection ID cannot be matched to any
56
+ // known Session. In such cases, the receiver may choose to send a subtle opaque
57
+ // indication to the sending peer that state for the Session has apparently been
58
+ // lost. For any on- or off- path attacker, a stateless reset packet resembles
59
+ // any other QUIC packet with a short header. In order to be successfully
60
+ // handled as a stateless reset, the peer must have already seen a reset token
61
+ // issued to it associated with the given CID. The token itself is opaque to the
62
+ // peer that receives is but must be possible to statelessly recreate by the
63
+ // peer that originally created it. The actual implementation is Node.js
64
+ // specific but we currently defer to a utility function provided by ngtcp2.
65
+ //
66
+ // QUIC leaves the generation of stateless session tokens up to the
67
+ // implementation to figure out. The idea, however, is that it ought to be
68
+ // possible to generate a stateless reset token reliably even when all state
69
+ // for a connection has been lost. We use the cid as it is the only reliably
70
+ // consistent bit of data we have when a session is destroyed.
71
+ //
72
+ // StatlessResetTokens are always kStatelessTokenLen bytes,
73
+ // as are the secrets used to generate the token.
74
+ class StatelessResetToken final : public MemoryRetainer {
75
+ public:
76
+ static constexpr int kStatelessTokenLen = NGTCP2_STATELESS_RESET_TOKENLEN;
77
+
78
+ StatelessResetToken();
79
+
80
+ // Generates a stateless reset token using HKDF with the cid and token secret
81
+ // as input. The token secret is either provided by user code when an Endpoint
82
+ // is created or is generated randomly.
83
+ StatelessResetToken(const TokenSecret& secret, const CID& cid);
84
+
85
+ // Generates a stateless reset token using the given token storage.
86
+ // The StatelessResetToken wraps the token and does not take ownership.
87
+ // The token storage must be at least kStatelessTokenLen bytes in length.
88
+ // The length is not verified so care must be taken when using this
89
+ // constructor.
90
+ StatelessResetToken(uint8_t* token,
91
+ const TokenSecret& secret,
92
+ const CID& cid);
93
+
94
+ // Wraps the given token. Does not take over ownership of the token storage.
95
+ // The token must be at least kStatelessTokenLen bytes in length.
96
+ // The length is not verified so care must be taken when using this
97
+ // constructor.
98
+ explicit StatelessResetToken(const uint8_t* token);
99
+
100
+ StatelessResetToken(const StatelessResetToken& other);
101
+ DISALLOW_MOVE(StatelessResetToken)
102
+
103
+ std::string ToString() const;
104
+
105
+ operator const uint8_t*() const;
106
+ operator bool() const;
107
+
108
+ bool operator==(const StatelessResetToken& other) const;
109
+ bool operator!=(const StatelessResetToken& other) const;
110
+
111
+ struct Hash {
112
+ size_t operator()(const StatelessResetToken& token) const;
113
+ };
114
+
115
+ SET_NO_MEMORY_INFO()
116
+ SET_MEMORY_INFO_NAME(StatelessResetToken)
117
+ SET_SELF_SIZE(StatelessResetToken)
118
+
119
+ template <typename T>
120
+ using Map =
121
+ std::unordered_map<StatelessResetToken, T, StatelessResetToken::Hash>;
122
+
123
+ static StatelessResetToken kInvalid;
124
+
125
+ private:
126
+ operator const char*() const;
127
+
128
+ const uint8_t* ptr_;
129
+ uint8_t buf_[NGTCP2_STATELESS_RESET_TOKENLEN];
130
+ };
131
+
132
+ // A RETRY packet communicates a retry token to the client. Retry tokens are
133
+ // generated only by QUIC servers for the purpose of validating the network path
134
+ // between a client and server. The content payload of the RETRY packet is
135
+ // opaque to the clientand must not be guessable by on- or off-path attackers.
136
+ //
137
+ // A QUIC server sends a RETRY token as a way of initiating explicit path
138
+ // validation in response to an initial QUIC packet. The client, upon receiving
139
+ // a RETRY, must abandon the initial connection attempt and try again with the
140
+ // received retry token included with the new initial packet sent to the server.
141
+ // If the server is performing explicit validation, it will look for the
142
+ // presence of the retry token and attempt to validate it if found. The internal
143
+ // structure of the retry token must be meaningful to the server, and the server
144
+ // must be able to validate that the token is correct without relying on any
145
+ // state left over from the previous connection attempt. We use an
146
+ // implementation that is provided by ngtcp2.
147
+ //
148
+ // The token secret must be kept private on the QUIC server that generated the
149
+ // retry. When multiple QUIC servers are used in a cluster, it cannot be
150
+ // guaranteed that the same QUIC server instance will receive the subsequent new
151
+ // Initial packet. Therefore, all QUIC servers in the cluster should either
152
+ // share or be aware of the same token secret or a mechanism needs to be
153
+ // implemented to ensure that subsequent packets are routed to the same QUIC
154
+ // server instance.
155
+ class RetryToken final : public MemoryRetainer {
156
+ public:
157
+ // The token prefix that is used to differentiate between a retry token
158
+ // and a regular token.
159
+ static constexpr uint8_t kTokenMagic = NGTCP2_CRYPTO_TOKEN_MAGIC_RETRY;
160
+ static constexpr int kRetryTokenLen = NGTCP2_CRYPTO_MAX_RETRY_TOKENLEN;
161
+
162
+ static constexpr uint64_t QUIC_DEFAULT_RETRYTOKEN_EXPIRATION =
163
+ 10 * NGTCP2_SECONDS;
164
+ static constexpr uint64_t QUIC_MIN_RETRYTOKEN_EXPIRATION = 1 * NGTCP2_SECONDS;
165
+
166
+ // Generates a new retry token.
167
+ RetryToken(uint32_t version,
168
+ const SocketAddress& address,
169
+ const CID& retry_cid,
170
+ const CID& odcid,
171
+ const TokenSecret& token_secret);
172
+
173
+ // Wraps the given retry token
174
+ RetryToken(const uint8_t* token, size_t length);
175
+
176
+ // Validates the retry token given the input. If the token is valid,
177
+ // the embedded original CID will be extracted from the token an
178
+ // returned. If the token is invalid, std::nullopt will be returned.
179
+ std::optional<CID> Validate(
180
+ uint32_t version,
181
+ const SocketAddress& address,
182
+ const CID& cid,
183
+ const TokenSecret& token_secret,
184
+ uint64_t verification_expiration = QUIC_DEFAULT_RETRYTOKEN_EXPIRATION);
185
+
186
+ operator const ngtcp2_vec&() const;
187
+ operator const ngtcp2_vec*() const;
188
+ operator bool() const;
189
+
190
+ std::string ToString() const;
191
+
192
+ SET_NO_MEMORY_INFO()
193
+ SET_MEMORY_INFO_NAME(RetryToken)
194
+ SET_SELF_SIZE(RetryToken)
195
+
196
+ private:
197
+ operator const char*() const;
198
+ uint8_t buf_[kRetryTokenLen];
199
+ const ngtcp2_vec ptr_;
200
+ };
201
+
202
+ // A NEW_TOKEN packet communicates a regular token to a client that the server
203
+ // would like the client to send in the header of an initial packet for a
204
+ // future connection. It is similar to RETRY and used for the same purpose,
205
+ // except a NEW_TOKEN is used in advance of the client establishing a new
206
+ // connection and a RETRY is sent in response to the client trying to open
207
+ // a new connection.
208
+ class RegularToken final : public MemoryRetainer {
209
+ public:
210
+ // The token prefix that is used to differentiate between a retry token
211
+ // and a regular token.
212
+ static constexpr uint8_t kTokenMagic = NGTCP2_CRYPTO_TOKEN_MAGIC_REGULAR;
213
+ static constexpr int kRegularTokenLen = NGTCP2_CRYPTO_MAX_REGULAR_TOKENLEN;
214
+ static constexpr uint64_t QUIC_DEFAULT_REGULARTOKEN_EXPIRATION =
215
+ 10 * NGTCP2_SECONDS;
216
+ static constexpr uint64_t QUIC_MIN_REGULARTOKEN_EXPIRATION =
217
+ 1 * NGTCP2_SECONDS;
218
+
219
+ RegularToken();
220
+
221
+ // Generates a new retry token.
222
+ RegularToken(uint32_t version,
223
+ const SocketAddress& address,
224
+ const TokenSecret& token_secret);
225
+
226
+ // Wraps the given retry token
227
+ RegularToken(const uint8_t* token, size_t length);
228
+
229
+ // Validates the retry token given the input.
230
+ bool Validate(
231
+ uint32_t version,
232
+ const SocketAddress& address,
233
+ const TokenSecret& token_secret,
234
+ uint64_t verification_expiration = QUIC_DEFAULT_REGULARTOKEN_EXPIRATION);
235
+
236
+ operator const ngtcp2_vec&() const;
237
+ operator const ngtcp2_vec*() const;
238
+
239
+ operator bool() const;
240
+
241
+ std::string ToString() const;
242
+
243
+ SET_NO_MEMORY_INFO()
244
+ SET_MEMORY_INFO_NAME(RetryToken)
245
+ SET_SELF_SIZE(RetryToken)
246
+
247
+ private:
248
+ operator const char*() const;
249
+ uint8_t buf_[kRegularTokenLen];
250
+ const ngtcp2_vec ptr_;
251
+ };
252
+
253
+ } // namespace node::quic
254
+
255
+ #endif // HAVE_OPENSSL && NODE_OPENSSL_HAS_QUIC
256
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
@@ -321,7 +321,9 @@ class TraceEventHelper {
321
321
  static inline const uint8_t* GetCategoryGroupEnabled(const char* group) {
322
322
  v8::TracingController* controller = GetTracingController();
323
323
  static const uint8_t disabled = 0;
324
- if (UNLIKELY(controller == nullptr)) return &disabled;
324
+ if (controller == nullptr) [[unlikely]] {
325
+ return &disabled;
326
+ }
325
327
  return controller->GetCategoryGroupEnabled(group);
326
328
  }
327
329
  };
@@ -483,13 +485,13 @@ static V8_INLINE uint64_t AddTraceEventWithTimestampImpl(
483
485
  const char* scope, uint64_t id, uint64_t bind_id, int32_t num_args,
484
486
  const char** arg_names, const uint8_t* arg_types,
485
487
  const uint64_t* arg_values, unsigned int flags, int64_t timestamp) {
486
- std::unique_ptr<v8::ConvertableToTraceFormat> arg_convertables[2];
488
+ std::unique_ptr<v8::ConvertableToTraceFormat> arg_convertibles[2];
487
489
  if (num_args > 0 && arg_types[0] == TRACE_VALUE_TYPE_CONVERTABLE) {
488
- arg_convertables[0].reset(reinterpret_cast<v8::ConvertableToTraceFormat*>(
490
+ arg_convertibles[0].reset(reinterpret_cast<v8::ConvertableToTraceFormat*>(
489
491
  static_cast<intptr_t>(arg_values[0])));
490
492
  }
491
493
  if (num_args > 1 && arg_types[1] == TRACE_VALUE_TYPE_CONVERTABLE) {
492
- arg_convertables[1].reset(reinterpret_cast<v8::ConvertableToTraceFormat*>(
494
+ arg_convertibles[1].reset(reinterpret_cast<v8::ConvertableToTraceFormat*>(
493
495
  static_cast<intptr_t>(arg_values[1])));
494
496
  }
495
497
  // DCHECK_LE(num_args, 2);
@@ -498,7 +500,7 @@ static V8_INLINE uint64_t AddTraceEventWithTimestampImpl(
498
500
  if (controller == nullptr) return 0;
499
501
  return controller->AddTraceEventWithTimestamp(
500
502
  phase, category_group_enabled, name, scope, id, bind_id, num_args,
501
- arg_names, arg_types, arg_values, arg_convertables, flags, timestamp);
503
+ arg_names, arg_types, arg_values, arg_convertibles, flags, timestamp);
502
504
  }
503
505
 
504
506
  static V8_INLINE void AddMetadataEventImpl(