@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
@@ -0,0 +1,523 @@
1
+ #ifndef SRC_CARES_WRAP_H_
2
+ #define SRC_CARES_WRAP_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #define CARES_STATICLIB
7
+
8
+ #include "async_wrap.h"
9
+ #include "base_object.h"
10
+ #include "env.h"
11
+ #include "memory_tracker.h"
12
+ #include "util.h"
13
+ #include "node.h"
14
+
15
+ #include "ares.h"
16
+ #include "v8.h"
17
+ #include "uv.h"
18
+
19
+ #include <unordered_set>
20
+
21
+ #ifdef __POSIX__
22
+ # include <netdb.h>
23
+ #endif // __POSIX__
24
+
25
+ # include <ares_nameser.h>
26
+
27
+ namespace node {
28
+ namespace cares_wrap {
29
+
30
+ constexpr int ns_t_cname_or_a = -1;
31
+ constexpr int DNS_ESETSRVPENDING = -1000;
32
+
33
+ class ChannelWrap;
34
+
35
+ inline void safe_free_hostent(struct hostent* host);
36
+
37
+ using HostEntPointer = DeleteFnPtr<hostent, ares_free_hostent>;
38
+ using SafeHostEntPointer = DeleteFnPtr<hostent, safe_free_hostent>;
39
+
40
+ inline const char* ToErrorCodeString(int status) {
41
+ switch (status) {
42
+ #define V(code) case ARES_##code: return #code;
43
+ V(EADDRGETNETWORKPARAMS)
44
+ V(EBADFAMILY)
45
+ V(EBADFLAGS)
46
+ V(EBADHINTS)
47
+ V(EBADNAME)
48
+ V(EBADQUERY)
49
+ V(EBADRESP)
50
+ V(EBADSTR)
51
+ V(ECANCELLED)
52
+ V(ECONNREFUSED)
53
+ V(EDESTRUCTION)
54
+ V(EFILE)
55
+ V(EFORMERR)
56
+ V(ELOADIPHLPAPI)
57
+ V(ENODATA)
58
+ V(ENOMEM)
59
+ V(ENONAME)
60
+ V(ENOTFOUND)
61
+ V(ENOTIMP)
62
+ V(ENOTINITIALIZED)
63
+ V(EOF)
64
+ V(EREFUSED)
65
+ V(ESERVFAIL)
66
+ V(ETIMEOUT)
67
+ #undef V
68
+ }
69
+
70
+ return "UNKNOWN_ARES_ERROR";
71
+ }
72
+
73
+ inline void cares_wrap_hostent_cpy(
74
+ struct hostent* dest,
75
+ const struct hostent* src) {
76
+ dest->h_addr_list = nullptr;
77
+ dest->h_addrtype = 0;
78
+ dest->h_aliases = nullptr;
79
+ dest->h_length = 0;
80
+ dest->h_name = nullptr;
81
+
82
+ /* copy `h_name` */
83
+ size_t name_size = strlen(src->h_name) + 1;
84
+ dest->h_name = node::Malloc<char>(name_size);
85
+ memcpy(dest->h_name, src->h_name, name_size);
86
+
87
+ /* copy `h_aliases` */
88
+ size_t alias_count;
89
+ for (alias_count = 0;
90
+ src->h_aliases[alias_count] != nullptr;
91
+ alias_count++) {
92
+ }
93
+
94
+ dest->h_aliases = node::Malloc<char*>(alias_count + 1);
95
+ for (size_t i = 0; i < alias_count; i++) {
96
+ const size_t cur_alias_size = strlen(src->h_aliases[i]) + 1;
97
+ dest->h_aliases[i] = node::Malloc(cur_alias_size);
98
+ memcpy(dest->h_aliases[i], src->h_aliases[i], cur_alias_size);
99
+ }
100
+ dest->h_aliases[alias_count] = nullptr;
101
+
102
+ /* copy `h_addr_list` */
103
+ size_t list_count;
104
+ for (list_count = 0;
105
+ src->h_addr_list[list_count] != nullptr;
106
+ list_count++) {
107
+ }
108
+
109
+ dest->h_addr_list = node::Malloc<char*>(list_count + 1);
110
+ for (size_t i = 0; i < list_count; i++) {
111
+ dest->h_addr_list[i] = node::Malloc(src->h_length);
112
+ memcpy(dest->h_addr_list[i], src->h_addr_list[i], src->h_length);
113
+ }
114
+ dest->h_addr_list[list_count] = nullptr;
115
+
116
+ /* work after work */
117
+ dest->h_length = src->h_length;
118
+ dest->h_addrtype = src->h_addrtype;
119
+ }
120
+
121
+
122
+ struct NodeAresTask final : public MemoryRetainer {
123
+ ChannelWrap* channel;
124
+ ares_socket_t sock;
125
+ uv_poll_t poll_watcher;
126
+
127
+ inline void MemoryInfo(MemoryTracker* trakcer) const override;
128
+ SET_MEMORY_INFO_NAME(NodeAresTask)
129
+ SET_SELF_SIZE(NodeAresTask)
130
+
131
+ struct Hash {
132
+ inline size_t operator()(NodeAresTask* a) const {
133
+ return std::hash<ares_socket_t>()(a->sock);
134
+ }
135
+ };
136
+
137
+ struct Equal {
138
+ inline bool operator()(NodeAresTask* a, NodeAresTask* b) const {
139
+ return a->sock == b->sock;
140
+ }
141
+ };
142
+
143
+ static NodeAresTask* Create(ChannelWrap* channel, ares_socket_t sock);
144
+
145
+ using List = std::unordered_set<NodeAresTask*, Hash, Equal>;
146
+ };
147
+
148
+ class ChannelWrap final : public AsyncWrap {
149
+ public:
150
+ ChannelWrap(
151
+ Environment* env,
152
+ v8::Local<v8::Object> object,
153
+ int timeout,
154
+ int tries);
155
+ ~ChannelWrap() override;
156
+
157
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
158
+
159
+ void Setup();
160
+ void EnsureServers();
161
+ void StartTimer();
162
+ void CloseTimer();
163
+
164
+ void ModifyActivityQueryCount(int count);
165
+
166
+ inline uv_timer_t* timer_handle() { return timer_handle_; }
167
+ inline ares_channel cares_channel() { return channel_; }
168
+ inline void set_query_last_ok(bool ok) { query_last_ok_ = ok; }
169
+ inline void set_is_servers_default(bool is_default) {
170
+ is_servers_default_ = is_default;
171
+ }
172
+ inline int active_query_count() { return active_query_count_; }
173
+ inline NodeAresTask::List* task_list() { return &task_list_; }
174
+
175
+ void MemoryInfo(MemoryTracker* tracker) const override;
176
+ SET_MEMORY_INFO_NAME(ChannelWrap)
177
+ SET_SELF_SIZE(ChannelWrap)
178
+
179
+ static void AresTimeout(uv_timer_t* handle);
180
+
181
+ private:
182
+ uv_timer_t* timer_handle_ = nullptr;
183
+ ares_channel channel_ = nullptr;
184
+ bool query_last_ok_ = true;
185
+ bool is_servers_default_ = true;
186
+ bool library_inited_ = false;
187
+ int timeout_;
188
+ int tries_;
189
+ int active_query_count_ = 0;
190
+ NodeAresTask::List task_list_;
191
+ };
192
+
193
+ class GetAddrInfoReqWrap final : public ReqWrap<uv_getaddrinfo_t> {
194
+ public:
195
+ GetAddrInfoReqWrap(Environment* env,
196
+ v8::Local<v8::Object> req_wrap_obj,
197
+ bool verbatim);
198
+
199
+ SET_NO_MEMORY_INFO()
200
+ SET_MEMORY_INFO_NAME(GetAddrInfoReqWrap)
201
+ SET_SELF_SIZE(GetAddrInfoReqWrap)
202
+
203
+ bool verbatim() const { return verbatim_; }
204
+
205
+ private:
206
+ const bool verbatim_;
207
+ };
208
+
209
+ class GetNameInfoReqWrap final : public ReqWrap<uv_getnameinfo_t> {
210
+ public:
211
+ GetNameInfoReqWrap(Environment* env, v8::Local<v8::Object> req_wrap_obj);
212
+
213
+ SET_NO_MEMORY_INFO()
214
+ SET_MEMORY_INFO_NAME(GetNameInfoReqWrap)
215
+ SET_SELF_SIZE(GetNameInfoReqWrap)
216
+ };
217
+
218
+ struct ResponseData final {
219
+ int status;
220
+ bool is_host;
221
+ SafeHostEntPointer host;
222
+ MallocedBuffer<unsigned char> buf;
223
+ };
224
+
225
+ template <typename Traits>
226
+ class QueryWrap final : public AsyncWrap {
227
+ public:
228
+ QueryWrap(ChannelWrap* channel, v8::Local<v8::Object> req_wrap_obj)
229
+ : AsyncWrap(channel->env(), req_wrap_obj, AsyncWrap::PROVIDER_QUERYWRAP),
230
+ channel_(channel),
231
+ trace_name_(Traits::name) {}
232
+
233
+ ~QueryWrap() {
234
+ CHECK_EQ(false, persistent().IsEmpty());
235
+
236
+ // Let Callback() know that this object no longer exists.
237
+ if (callback_ptr_ != nullptr)
238
+ *callback_ptr_ = nullptr;
239
+ }
240
+
241
+ int Send(const char* name) {
242
+ return Traits::Send(this, name);
243
+ }
244
+
245
+ void AresQuery(const char* name, int dnsclass, int type) {
246
+ channel_->EnsureServers();
247
+ TRACE_EVENT_NESTABLE_ASYNC_BEGIN1(
248
+ TRACING_CATEGORY_NODE2(dns, native), trace_name_, this,
249
+ "name", TRACE_STR_COPY(name));
250
+ ares_query(
251
+ channel_->cares_channel(),
252
+ name,
253
+ dnsclass,
254
+ type,
255
+ Callback,
256
+ MakeCallbackPointer());
257
+ }
258
+
259
+ void ParseError(int status) {
260
+ CHECK_NE(status, ARES_SUCCESS);
261
+ v8::HandleScope handle_scope(env()->isolate());
262
+ v8::Context::Scope context_scope(env()->context());
263
+ const char* code = ToErrorCodeString(status);
264
+ v8::Local<v8::Value> arg = OneByteString(env()->isolate(), code);
265
+ TRACE_EVENT_NESTABLE_ASYNC_END1(
266
+ TRACING_CATEGORY_NODE2(dns, native), trace_name_, this,
267
+ "error", status);
268
+ MakeCallback(env()->oncomplete_string(), 1, &arg);
269
+ }
270
+
271
+ const BaseObjectPtr<ChannelWrap>& channel() const { return channel_; }
272
+
273
+ void AfterResponse() {
274
+ CHECK(response_data_);
275
+
276
+ int status = response_data_->status;
277
+
278
+ if (status != ARES_SUCCESS)
279
+ return ParseError(status);
280
+
281
+ status = Traits::Parse(this, response_data_);
282
+
283
+ if (status != ARES_SUCCESS)
284
+ ParseError(status);
285
+ }
286
+
287
+ void* MakeCallbackPointer() {
288
+ CHECK_NULL(callback_ptr_);
289
+ callback_ptr_ = new QueryWrap<Traits>*(this);
290
+ return callback_ptr_;
291
+ }
292
+
293
+ static QueryWrap<Traits>* FromCallbackPointer(void* arg) {
294
+ std::unique_ptr<QueryWrap<Traits>*> wrap_ptr {
295
+ static_cast<QueryWrap<Traits>**>(arg)
296
+ };
297
+ QueryWrap<Traits>* wrap = *wrap_ptr.get();
298
+ if (wrap == nullptr) return nullptr;
299
+ wrap->callback_ptr_ = nullptr;
300
+ return wrap;
301
+ }
302
+
303
+ static void Callback(
304
+ void* arg,
305
+ int status,
306
+ int timeouts,
307
+ unsigned char* answer_buf,
308
+ int answer_len) {
309
+ QueryWrap<Traits>* wrap = FromCallbackPointer(arg);
310
+ if (wrap == nullptr) return;
311
+
312
+ unsigned char* buf_copy = nullptr;
313
+ if (status == ARES_SUCCESS) {
314
+ buf_copy = node::Malloc<unsigned char>(answer_len);
315
+ memcpy(buf_copy, answer_buf, answer_len);
316
+ }
317
+
318
+ wrap->response_data_ = std::make_unique<ResponseData>();
319
+ ResponseData* data = wrap->response_data_.get();
320
+ data->status = status;
321
+ data->is_host = false;
322
+ data->buf = MallocedBuffer<unsigned char>(buf_copy, answer_len);
323
+
324
+ wrap->QueueResponseCallback(status);
325
+ }
326
+
327
+ static void Callback(
328
+ void* arg,
329
+ int status,
330
+ int timeouts,
331
+ struct hostent* host) {
332
+ QueryWrap<Traits>* wrap = FromCallbackPointer(arg);
333
+ if (wrap == nullptr) return;
334
+
335
+ struct hostent* host_copy = nullptr;
336
+ if (status == ARES_SUCCESS) {
337
+ host_copy = node::Malloc<hostent>(1);
338
+ cares_wrap_hostent_cpy(host_copy, host);
339
+ }
340
+
341
+ wrap->response_data_ = std::make_unique<ResponseData>();
342
+ ResponseData* data = wrap->response_data_.get();
343
+ data->status = status;
344
+ data->host.reset(host_copy);
345
+ data->is_host = true;
346
+
347
+ wrap->QueueResponseCallback(status);
348
+ }
349
+
350
+ void QueueResponseCallback(int status) {
351
+ BaseObjectPtr<QueryWrap<Traits>> strong_ref{this};
352
+ env()->SetImmediate([this, strong_ref](Environment*) {
353
+ AfterResponse();
354
+
355
+ // Delete once strong_ref goes out of scope.
356
+ Detach();
357
+ });
358
+
359
+ channel_->set_query_last_ok(status != ARES_ECONNREFUSED);
360
+ channel_->ModifyActivityQueryCount(-1);
361
+ }
362
+
363
+ void CallOnComplete(
364
+ v8::Local<v8::Value> answer,
365
+ v8::Local<v8::Value> extra = v8::Local<v8::Value>()) {
366
+ v8::HandleScope handle_scope(env()->isolate());
367
+ v8::Context::Scope context_scope(env()->context());
368
+ v8::Local<v8::Value> argv[] = {
369
+ v8::Integer::New(env()->isolate(), 0),
370
+ answer,
371
+ extra
372
+ };
373
+ const int argc = arraysize(argv) - extra.IsEmpty();
374
+ TRACE_EVENT_NESTABLE_ASYNC_END0(
375
+ TRACING_CATEGORY_NODE2(dns, native), trace_name_, this);
376
+
377
+ MakeCallback(env()->oncomplete_string(), argc, argv);
378
+ }
379
+
380
+ void MemoryInfo(MemoryTracker* tracker) const override {
381
+ tracker->TrackField("channel", channel_);
382
+ if (response_data_) {
383
+ tracker->TrackFieldWithSize("response", response_data_->buf.size);
384
+ }
385
+ }
386
+
387
+ SET_MEMORY_INFO_NAME(QueryWrap)
388
+ SET_SELF_SIZE(QueryWrap<Traits>)
389
+
390
+ private:
391
+ BaseObjectPtr<ChannelWrap> channel_;
392
+
393
+ std::unique_ptr<ResponseData> response_data_;
394
+ const char* trace_name_;
395
+ // Pointer to pointer to 'this' that can be reset from the destructor,
396
+ // in order to let Callback() know that 'this' no longer exists.
397
+ QueryWrap<Traits>** callback_ptr_ = nullptr;
398
+ };
399
+
400
+ struct AnyTraits final {
401
+ static constexpr const char* name = "resolveAny";
402
+ static int Send(QueryWrap<AnyTraits>* wrap, const char* name);
403
+ static int Parse(
404
+ QueryWrap<AnyTraits>* wrap,
405
+ const std::unique_ptr<ResponseData>& response);
406
+ };
407
+
408
+ struct ATraits final {
409
+ static constexpr const char* name = "resolve4";
410
+ static int Send(QueryWrap<ATraits>* wrap, const char* name);
411
+ static int Parse(
412
+ QueryWrap<ATraits>* wrap,
413
+ const std::unique_ptr<ResponseData>& response);
414
+ };
415
+
416
+ struct AaaaTraits final {
417
+ static constexpr const char* name = "resolve6";
418
+ static int Send(QueryWrap<AaaaTraits>* wrap, const char* name);
419
+ static int Parse(
420
+ QueryWrap<AaaaTraits>* wrap,
421
+ const std::unique_ptr<ResponseData>& response);
422
+ };
423
+
424
+ struct CaaTraits final {
425
+ static constexpr const char* name = "resolveCaa";
426
+ static int Send(QueryWrap<CaaTraits>* wrap, const char* name);
427
+ static int Parse(
428
+ QueryWrap<CaaTraits>* wrap,
429
+ const std::unique_ptr<ResponseData>& response);
430
+ };
431
+
432
+ struct CnameTraits final {
433
+ static constexpr const char* name = "resolveCname";
434
+ static int Send(QueryWrap<CnameTraits>* wrap, const char* name);
435
+ static int Parse(
436
+ QueryWrap<CnameTraits>* wrap,
437
+ const std::unique_ptr<ResponseData>& response);
438
+ };
439
+
440
+ struct MxTraits final {
441
+ static constexpr const char* name = "resolveMx";
442
+ static int Send(QueryWrap<MxTraits>* wrap, const char* name);
443
+ static int Parse(
444
+ QueryWrap<MxTraits>* wrap,
445
+ const std::unique_ptr<ResponseData>& response);
446
+ };
447
+
448
+ struct NsTraits final {
449
+ static constexpr const char* name = "resolveNs";
450
+ static int Send(QueryWrap<NsTraits>* wrap, const char* name);
451
+ static int Parse(
452
+ QueryWrap<NsTraits>* wrap,
453
+ const std::unique_ptr<ResponseData>& response);
454
+ };
455
+
456
+ struct TxtTraits final {
457
+ static constexpr const char* name = "resolveTxt";
458
+ static int Send(QueryWrap<TxtTraits>* wrap, const char* name);
459
+ static int Parse(
460
+ QueryWrap<TxtTraits>* wrap,
461
+ const std::unique_ptr<ResponseData>& response);
462
+ };
463
+
464
+ struct SrvTraits final {
465
+ static constexpr const char* name = "resolveSrv";
466
+ static int Send(QueryWrap<SrvTraits>* wrap, const char* name);
467
+ static int Parse(
468
+ QueryWrap<SrvTraits>* wrap,
469
+ const std::unique_ptr<ResponseData>& response);
470
+ };
471
+
472
+ struct PtrTraits final {
473
+ static constexpr const char* name = "resolvePtr";
474
+ static int Send(QueryWrap<PtrTraits>* wrap, const char* name);
475
+ static int Parse(
476
+ QueryWrap<PtrTraits>* wrap,
477
+ const std::unique_ptr<ResponseData>& response);
478
+ };
479
+
480
+ struct NaptrTraits final {
481
+ static constexpr const char* name = "resolveNaptr";
482
+ static int Send(QueryWrap<NaptrTraits>* wrap, const char* name);
483
+ static int Parse(
484
+ QueryWrap<NaptrTraits>* wrap,
485
+ const std::unique_ptr<ResponseData>& response);
486
+ };
487
+
488
+ struct SoaTraits final {
489
+ static constexpr const char* name = "resolveSoa";
490
+ static int Send(QueryWrap<SoaTraits>* wrap, const char* name);
491
+ static int Parse(
492
+ QueryWrap<SoaTraits>* wrap,
493
+ const std::unique_ptr<ResponseData>& response);
494
+ };
495
+
496
+ struct ReverseTraits final {
497
+ static constexpr const char* name = "reverse";
498
+ static int Send(QueryWrap<ReverseTraits>* wrap, const char* name);
499
+ static int Parse(
500
+ QueryWrap<ReverseTraits>* wrap,
501
+ const std::unique_ptr<ResponseData>& response);
502
+ };
503
+
504
+ using QueryAnyWrap = QueryWrap<AnyTraits>;
505
+ using QueryAWrap = QueryWrap<ATraits>;
506
+ using QueryAaaaWrap = QueryWrap<AaaaTraits>;
507
+ using QueryCaaWrap = QueryWrap<CaaTraits>;
508
+ using QueryCnameWrap = QueryWrap<CnameTraits>;
509
+ using QueryMxWrap = QueryWrap<MxTraits>;
510
+ using QueryNsWrap = QueryWrap<NsTraits>;
511
+ using QueryTxtWrap = QueryWrap<TxtTraits>;
512
+ using QuerySrvWrap = QueryWrap<SrvTraits>;
513
+ using QueryPtrWrap = QueryWrap<PtrTraits>;
514
+ using QueryNaptrWrap = QueryWrap<NaptrTraits>;
515
+ using QuerySoaWrap = QueryWrap<SoaTraits>;
516
+ using GetHostByAddrWrap = QueryWrap<ReverseTraits>;
517
+
518
+ } // namespace cares_wrap
519
+ } // namespace node
520
+
521
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
522
+
523
+ #endif // SRC_CARES_WRAP_H_
File without changes
File without changes
@@ -0,0 +1,89 @@
1
+ #ifndef SRC_CRYPTO_CRYPTO_AES_H_
2
+ #define SRC_CRYPTO_CRYPTO_AES_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "crypto/crypto_cipher.h"
7
+ #include "crypto/crypto_keys.h"
8
+ #include "crypto/crypto_util.h"
9
+ #include "env.h"
10
+ #include "v8.h"
11
+
12
+ namespace node {
13
+ namespace crypto {
14
+ constexpr size_t kAesBlockSize = 16;
15
+ constexpr unsigned kNoAuthTagLength = static_cast<unsigned>(-1);
16
+ constexpr const char* kDefaultWrapIV = "\xa6\xa6\xa6\xa6\xa6\xa6\xa6\xa6";
17
+
18
+ #define VARIANTS(V) \
19
+ V(CTR_128, AES_CTR_Cipher) \
20
+ V(CTR_192, AES_CTR_Cipher) \
21
+ V(CTR_256, AES_CTR_Cipher) \
22
+ V(CBC_128, AES_Cipher) \
23
+ V(CBC_192, AES_Cipher) \
24
+ V(CBC_256, AES_Cipher) \
25
+ V(GCM_128, AES_Cipher) \
26
+ V(GCM_192, AES_Cipher) \
27
+ V(GCM_256, AES_Cipher) \
28
+ V(KW_128, AES_Cipher) \
29
+ V(KW_192, AES_Cipher) \
30
+ V(KW_256, AES_Cipher)
31
+
32
+ enum AESKeyVariant {
33
+ #define V(name, _) kKeyVariantAES_ ## name,
34
+ VARIANTS(V)
35
+ #undef V
36
+ };
37
+
38
+ struct AESCipherConfig final : public MemoryRetainer {
39
+ CryptoJobMode mode;
40
+ AESKeyVariant variant;
41
+ const EVP_CIPHER* cipher;
42
+ size_t length;
43
+ ByteSource iv; // Used for both iv or counter
44
+ ByteSource additional_data;
45
+ ByteSource tag; // Used only for authenticated modes (GCM)
46
+
47
+ AESCipherConfig() = default;
48
+
49
+ AESCipherConfig(AESCipherConfig&& other) noexcept;
50
+
51
+ AESCipherConfig& operator=(AESCipherConfig&& other) noexcept;
52
+
53
+ void MemoryInfo(MemoryTracker* tracker) const override;
54
+ SET_MEMORY_INFO_NAME(AESCipherConfig)
55
+ SET_SELF_SIZE(AESCipherConfig)
56
+ };
57
+
58
+ struct AESCipherTraits final {
59
+ static constexpr const char* JobName = "AESCipherJob";
60
+
61
+ using AdditionalParameters = AESCipherConfig;
62
+
63
+ static v8::Maybe<bool> AdditionalConfig(
64
+ CryptoJobMode mode,
65
+ const v8::FunctionCallbackInfo<v8::Value>& args,
66
+ unsigned int offset,
67
+ WebCryptoCipherMode cipher_mode,
68
+ AESCipherConfig* config);
69
+
70
+ static WebCryptoCipherStatus DoCipher(
71
+ Environment* env,
72
+ std::shared_ptr<KeyObjectData> key_data,
73
+ WebCryptoCipherMode cipher_mode,
74
+ const AESCipherConfig& params,
75
+ const ByteSource& in,
76
+ ByteSource* out);
77
+ };
78
+
79
+ using AESCryptoJob = CipherJob<AESCipherTraits>;
80
+
81
+ namespace AES {
82
+ void Initialize(Environment* env, v8::Local<v8::Object> target);
83
+ void RegisterExternalReferences(ExternalReferenceRegistry* registry);
84
+ } // namespace AES
85
+ } // namespace crypto
86
+ } // namespace node
87
+
88
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
89
+ #endif // SRC_CRYPTO_CRYPTO_AES_H_
@@ -19,8 +19,8 @@
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_NODE_CRYPTO_BIO_H_
23
- #define SRC_NODE_CRYPTO_BIO_H_
22
+ #ifndef SRC_CRYPTO_CRYPTO_BIO_H_
23
+ #define SRC_CRYPTO_CRYPTO_BIO_H_
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
@@ -34,7 +34,6 @@ namespace node {
34
34
  class Environment;
35
35
 
36
36
  namespace crypto {
37
-
38
37
  // This class represents buffers for OpenSSL I/O, implemented as a singly-linked
39
38
  // list of chunks. It can be used either for writing data from Node to OpenSSL,
40
39
  // or for reading data back, but not both.
@@ -192,4 +191,4 @@ class NodeBIO : public MemoryRetainer {
192
191
 
193
192
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
194
193
 
195
- #endif // SRC_NODE_CRYPTO_BIO_H_
194
+ #endif // SRC_CRYPTO_CRYPTO_BIO_H_