@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,291 @@
1
+ #ifndef SRC_CRYPTO_CRYPTO_CIPHER_H_
2
+ #define SRC_CRYPTO_CRYPTO_CIPHER_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "crypto/crypto_keys.h"
7
+ #include "crypto/crypto_util.h"
8
+ #include "base_object.h"
9
+ #include "env.h"
10
+ #include "memory_tracker.h"
11
+ #include "v8.h"
12
+
13
+ #include <string>
14
+
15
+ namespace node {
16
+ namespace crypto {
17
+ class CipherBase : public BaseObject {
18
+ public:
19
+ static void GetSSLCiphers(const v8::FunctionCallbackInfo<v8::Value>& args);
20
+ static void GetCiphers(const v8::FunctionCallbackInfo<v8::Value>& args);
21
+
22
+ static void Initialize(Environment* env, v8::Local<v8::Object> target);
23
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
24
+
25
+ void MemoryInfo(MemoryTracker* tracker) const override;
26
+ SET_MEMORY_INFO_NAME(CipherBase)
27
+ SET_SELF_SIZE(CipherBase)
28
+
29
+ protected:
30
+ enum CipherKind {
31
+ kCipher,
32
+ kDecipher
33
+ };
34
+ enum UpdateResult {
35
+ kSuccess,
36
+ kErrorMessageSize,
37
+ kErrorState
38
+ };
39
+ enum AuthTagState {
40
+ kAuthTagUnknown,
41
+ kAuthTagKnown,
42
+ kAuthTagPassedToOpenSSL
43
+ };
44
+ static const unsigned kNoAuthTagLength = static_cast<unsigned>(-1);
45
+
46
+ void CommonInit(const char* cipher_type,
47
+ const EVP_CIPHER* cipher,
48
+ const unsigned char* key,
49
+ int key_len,
50
+ const unsigned char* iv,
51
+ int iv_len,
52
+ unsigned int auth_tag_len);
53
+ void Init(const char* cipher_type,
54
+ const ArrayBufferOrViewContents<unsigned char>& key_buf,
55
+ unsigned int auth_tag_len);
56
+ void InitIv(const char* cipher_type,
57
+ const ByteSource& key_buf,
58
+ const ArrayBufferOrViewContents<unsigned char>& iv_buf,
59
+ unsigned int auth_tag_len);
60
+ bool InitAuthenticated(const char* cipher_type, int iv_len,
61
+ unsigned int auth_tag_len);
62
+ bool CheckCCMMessageLength(int message_len);
63
+ UpdateResult Update(const char* data, size_t len,
64
+ std::unique_ptr<v8::BackingStore>* out);
65
+ bool Final(std::unique_ptr<v8::BackingStore>* out);
66
+ bool SetAutoPadding(bool auto_padding);
67
+
68
+ bool IsAuthenticatedMode() const;
69
+ bool SetAAD(
70
+ const ArrayBufferOrViewContents<unsigned char>& data,
71
+ int plaintext_len);
72
+ bool MaybePassAuthTagToOpenSSL();
73
+
74
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
75
+ static void Init(const v8::FunctionCallbackInfo<v8::Value>& args);
76
+ static void InitIv(const v8::FunctionCallbackInfo<v8::Value>& args);
77
+ static void Update(const v8::FunctionCallbackInfo<v8::Value>& args);
78
+ static void Final(const v8::FunctionCallbackInfo<v8::Value>& args);
79
+ static void SetAutoPadding(const v8::FunctionCallbackInfo<v8::Value>& args);
80
+
81
+ static void GetAuthTag(const v8::FunctionCallbackInfo<v8::Value>& args);
82
+ static void SetAuthTag(const v8::FunctionCallbackInfo<v8::Value>& args);
83
+ static void SetAAD(const v8::FunctionCallbackInfo<v8::Value>& args);
84
+
85
+ CipherBase(Environment* env, v8::Local<v8::Object> wrap, CipherKind kind);
86
+
87
+ private:
88
+ DeleteFnPtr<EVP_CIPHER_CTX, EVP_CIPHER_CTX_free> ctx_;
89
+ const CipherKind kind_;
90
+ AuthTagState auth_tag_state_;
91
+ unsigned int auth_tag_len_;
92
+ char auth_tag_[EVP_GCM_TLS_TAG_LEN];
93
+ bool pending_auth_failed_;
94
+ int max_message_size_;
95
+ };
96
+
97
+ class PublicKeyCipher {
98
+ public:
99
+ typedef int (*EVP_PKEY_cipher_init_t)(EVP_PKEY_CTX* ctx);
100
+ typedef int (*EVP_PKEY_cipher_t)(EVP_PKEY_CTX* ctx,
101
+ unsigned char* out, size_t* outlen,
102
+ const unsigned char* in, size_t inlen);
103
+
104
+ enum Operation {
105
+ kPublic,
106
+ kPrivate
107
+ };
108
+
109
+ template <Operation operation,
110
+ EVP_PKEY_cipher_init_t EVP_PKEY_cipher_init,
111
+ EVP_PKEY_cipher_t EVP_PKEY_cipher>
112
+ static bool Cipher(Environment* env,
113
+ const ManagedEVPPKey& pkey,
114
+ int padding,
115
+ const EVP_MD* digest,
116
+ const ArrayBufferOrViewContents<unsigned char>& oaep_label,
117
+ const ArrayBufferOrViewContents<unsigned char>& data,
118
+ std::unique_ptr<v8::BackingStore>* out);
119
+
120
+ template <Operation operation,
121
+ EVP_PKEY_cipher_init_t EVP_PKEY_cipher_init,
122
+ EVP_PKEY_cipher_t EVP_PKEY_cipher>
123
+ static void Cipher(const v8::FunctionCallbackInfo<v8::Value>& args);
124
+ };
125
+
126
+ enum WebCryptoCipherMode {
127
+ kWebCryptoCipherEncrypt,
128
+ kWebCryptoCipherDecrypt
129
+ };
130
+
131
+ enum class WebCryptoCipherStatus {
132
+ OK,
133
+ INVALID_KEY_TYPE,
134
+ FAILED
135
+ };
136
+
137
+ // CipherJob is a base implementation class for implementations of
138
+ // one-shot sync and async ciphers. It has been added primarily to
139
+ // support the AES and RSA ciphers underlying the WebCrypt API.
140
+ //
141
+ // See the crypto_aes and crypto_rsa headers for examples of how to
142
+ // use CipherJob.
143
+ template <typename CipherTraits>
144
+ class CipherJob final : public CryptoJob<CipherTraits> {
145
+ public:
146
+ using AdditionalParams = typename CipherTraits::AdditionalParameters;
147
+
148
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args) {
149
+ Environment* env = Environment::GetCurrent(args);
150
+ CHECK(args.IsConstructCall());
151
+
152
+ CryptoJobMode mode = GetCryptoJobMode(args[0]);
153
+
154
+ CHECK(args[1]->IsUint32()); // Cipher Mode
155
+
156
+ uint32_t cmode = args[1].As<v8::Uint32>()->Value();
157
+ CHECK_LE(cmode, WebCryptoCipherMode::kWebCryptoCipherDecrypt);
158
+ WebCryptoCipherMode cipher_mode = static_cast<WebCryptoCipherMode>(cmode);
159
+
160
+ CHECK(args[2]->IsObject()); // KeyObject
161
+ KeyObjectHandle* key;
162
+ ASSIGN_OR_RETURN_UNWRAP(&key, args[2]);
163
+ CHECK_NOT_NULL(key);
164
+
165
+ ArrayBufferOrViewContents<char> data(args[3]); // data to operate on
166
+ if (!data.CheckSizeInt32())
167
+ return THROW_ERR_OUT_OF_RANGE(env, "data is too large");
168
+
169
+ AdditionalParams params;
170
+ if (CipherTraits::AdditionalConfig(mode, args, 4, cipher_mode, &params)
171
+ .IsNothing()) {
172
+ // The CipherTraits::AdditionalConfig is responsible for
173
+ // calling an appropriate THROW_CRYPTO_* variant reporting
174
+ // whatever error caused initialization to fail.
175
+ return;
176
+ }
177
+
178
+ new CipherJob<CipherTraits>(
179
+ env,
180
+ args.This(),
181
+ mode,
182
+ key,
183
+ cipher_mode,
184
+ data,
185
+ std::move(params));
186
+ }
187
+
188
+ static void Initialize(
189
+ Environment* env,
190
+ v8::Local<v8::Object> target) {
191
+ CryptoJob<CipherTraits>::Initialize(New, env, target);
192
+ }
193
+
194
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
195
+ CryptoJob<CipherTraits>::RegisterExternalReferences(New, registry);
196
+ }
197
+
198
+ CipherJob(
199
+ Environment* env,
200
+ v8::Local<v8::Object> object,
201
+ CryptoJobMode mode,
202
+ KeyObjectHandle* key,
203
+ WebCryptoCipherMode cipher_mode,
204
+ const ArrayBufferOrViewContents<char>& data,
205
+ AdditionalParams&& params)
206
+ : CryptoJob<CipherTraits>(
207
+ env,
208
+ object,
209
+ AsyncWrap::PROVIDER_CIPHERREQUEST,
210
+ mode,
211
+ std::move(params)),
212
+ key_(key->Data()),
213
+ cipher_mode_(cipher_mode),
214
+ in_(mode == kCryptoJobAsync
215
+ ? data.ToCopy()
216
+ : data.ToByteSource()) {}
217
+
218
+ std::shared_ptr<KeyObjectData> key() const { return key_; }
219
+
220
+ WebCryptoCipherMode cipher_mode() const { return cipher_mode_; }
221
+
222
+ void DoThreadPoolWork() override {
223
+ const WebCryptoCipherStatus status =
224
+ CipherTraits::DoCipher(
225
+ AsyncWrap::env(),
226
+ key(),
227
+ cipher_mode_,
228
+ *CryptoJob<CipherTraits>::params(),
229
+ in_,
230
+ &out_);
231
+ if (status == WebCryptoCipherStatus::OK) {
232
+ // Success!
233
+ return;
234
+ }
235
+ CryptoErrorStore* errors = CryptoJob<CipherTraits>::errors();
236
+ errors->Capture();
237
+ if (errors->Empty()) {
238
+ switch (status) {
239
+ case WebCryptoCipherStatus::OK:
240
+ UNREACHABLE();
241
+ break;
242
+ case WebCryptoCipherStatus::INVALID_KEY_TYPE:
243
+ errors->Insert(NodeCryptoError::INVALID_KEY_TYPE);
244
+ break;
245
+ case WebCryptoCipherStatus::FAILED:
246
+ errors->Insert(NodeCryptoError::CIPHER_JOB_FAILED);
247
+ break;
248
+ }
249
+ }
250
+ }
251
+
252
+ v8::Maybe<bool> ToResult(
253
+ v8::Local<v8::Value>* err,
254
+ v8::Local<v8::Value>* result) override {
255
+ Environment* env = AsyncWrap::env();
256
+ CryptoErrorStore* errors = CryptoJob<CipherTraits>::errors();
257
+
258
+ if (errors->Empty())
259
+ errors->Capture();
260
+
261
+ if (out_.size() > 0 || errors->Empty()) {
262
+ CHECK(errors->Empty());
263
+ *err = v8::Undefined(env->isolate());
264
+ *result = out_.ToArrayBuffer(env);
265
+ return v8::Just(!result->IsEmpty());
266
+ }
267
+
268
+ *result = v8::Undefined(env->isolate());
269
+ return v8::Just(errors->ToException(env).ToLocal(err));
270
+ }
271
+
272
+ SET_SELF_SIZE(CipherJob)
273
+ void MemoryInfo(MemoryTracker* tracker) const override {
274
+ if (CryptoJob<CipherTraits>::mode() == kCryptoJobAsync)
275
+ tracker->TrackFieldWithSize("in", in_.size());
276
+ tracker->TrackFieldWithSize("out", out_.size());
277
+ CryptoJob<CipherTraits>::MemoryInfo(tracker);
278
+ }
279
+
280
+ private:
281
+ std::shared_ptr<KeyObjectData> key_;
282
+ WebCryptoCipherMode cipher_mode_;
283
+ ByteSource in_;
284
+ ByteSource out_;
285
+ };
286
+
287
+ } // namespace crypto
288
+ } // namespace node
289
+
290
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
291
+ #endif // SRC_CRYPTO_CRYPTO_CIPHER_H_
@@ -19,17 +19,16 @@
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_CLIENTHELLO_INL_H_
23
- #define SRC_NODE_CRYPTO_CLIENTHELLO_INL_H_
22
+ #ifndef SRC_CRYPTO_CRYPTO_CLIENTHELLO_INL_H_
23
+ #define SRC_CRYPTO_CRYPTO_CLIENTHELLO_INL_H_
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
27
- #include "node_crypto_clienthello.h"
27
+ #include "crypto/crypto_clienthello.h"
28
28
  #include "util.h"
29
29
 
30
30
  namespace node {
31
31
  namespace crypto {
32
-
33
32
  inline ClientHelloParser::ClientHelloParser()
34
33
  : state_(kEnded),
35
34
  onhello_cb_(nullptr),
@@ -88,4 +87,4 @@ inline bool ClientHelloParser::IsPaused() const {
88
87
 
89
88
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
90
89
 
91
- #endif // SRC_NODE_CRYPTO_CLIENTHELLO_INL_H_
90
+ #endif // SRC_CRYPTO_CRYPTO_CLIENTHELLO_INL_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_CLIENTHELLO_H_
23
- #define SRC_NODE_CRYPTO_CLIENTHELLO_H_
22
+ #ifndef SRC_CRYPTO_CRYPTO_CLIENTHELLO_H_
23
+ #define SRC_CRYPTO_CRYPTO_CLIENTHELLO_H_
24
24
 
25
25
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
26
26
 
@@ -29,7 +29,6 @@
29
29
 
30
30
  namespace node {
31
31
  namespace crypto {
32
-
33
32
  // Parse the client hello so we can do async session resumption. OpenSSL's
34
33
  // session resumption uses synchronous callbacks, see SSL_CTX_sess_set_get_cb
35
34
  // and get_session_cb.
@@ -129,4 +128,4 @@ class ClientHelloParser {
129
128
 
130
129
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
131
130
 
132
- #endif // SRC_NODE_CRYPTO_CLIENTHELLO_H_
131
+ #endif // SRC_CRYPTO_CRYPTO_CLIENTHELLO_H_
@@ -1,5 +1,5 @@
1
- #ifndef SRC_NODE_CRYPTO_COMMON_H_
2
- #define SRC_NODE_CRYPTO_COMMON_H_
1
+ #ifndef SRC_CRYPTO_CRYPTO_COMMON_H_
2
+ #define SRC_CRYPTO_CRYPTO_COMMON_H_
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
@@ -9,17 +9,10 @@
9
9
  #include <openssl/x509v3.h>
10
10
 
11
11
  #include <string>
12
- #include <unordered_map>
13
12
 
14
13
  namespace node {
15
14
  namespace crypto {
16
15
 
17
- // OPENSSL_free is a macro, so we need a wrapper function.
18
- struct OpenSSLBufferDeleter {
19
- void operator()(char* pointer) const { OPENSSL_free(pointer); }
20
- };
21
- using OpenSSLBuffer = std::unique_ptr<char[], OpenSSLBufferDeleter>;
22
-
23
16
  struct StackOfX509Deleter {
24
17
  void operator()(STACK_OF(X509)* p) const { sk_X509_pop_free(p, X509_free); }
25
18
  };
@@ -32,7 +25,7 @@ struct StackOfXASN1Deleter {
32
25
  };
33
26
  using StackOfASN1 = std::unique_ptr<STACK_OF(ASN1_OBJECT), StackOfXASN1Deleter>;
34
27
 
35
- int SSL_CTX_get_issuer(SSL_CTX* ctx, X509* cert, X509** issuer);
28
+ X509Pointer SSL_CTX_get_issuer(SSL_CTX* ctx, X509* cert);
36
29
 
37
30
  void LogSecret(
38
31
  const SSLPointer& ssl,
@@ -49,29 +42,17 @@ v8::MaybeLocal<v8::Value> GetSSLOCSPResponse(
49
42
  SSL* ssl,
50
43
  v8::Local<v8::Value> default_value);
51
44
 
52
- bool SetTLSSession(
53
- const SSLPointer& ssl,
54
- const unsigned char* buf,
55
- size_t length);
56
-
57
45
  bool SetTLSSession(
58
46
  const SSLPointer& ssl,
59
47
  const SSLSessionPointer& session);
60
48
 
61
- SSLSessionPointer GetTLSSession(v8::Local<v8::Value> val);
62
-
63
49
  SSLSessionPointer GetTLSSession(const unsigned char* buf, size_t length);
64
50
 
65
- std::unordered_multimap<std::string, std::string>
66
- GetCertificateAltNames(X509* cert);
67
-
68
- std::string GetCertificateCN(X509* cert);
69
-
70
51
  long VerifyPeerCertificate( // NOLINT(runtime/int)
71
52
  const SSLPointer& ssl,
72
53
  long def = X509_V_ERR_UNSPECIFIED); // NOLINT(runtime/int)
73
54
 
74
- int UseSNIContext(const SSLPointer& ssl, BaseObjectPtr<SecureContext> context);
55
+ bool UseSNIContext(const SSLPointer& ssl, BaseObjectPtr<SecureContext> context);
75
56
 
76
57
  const char* GetClientHelloALPN(const SSLPointer& ssl);
77
58
 
@@ -93,18 +74,6 @@ v8::MaybeLocal<v8::Value> GetValidationErrorCode(Environment* env, int err);
93
74
 
94
75
  v8::MaybeLocal<v8::Value> GetCert(Environment* env, const SSLPointer& ssl);
95
76
 
96
- v8::MaybeLocal<v8::Value> GetCipherName(
97
- Environment* env,
98
- const SSLPointer& ssl);
99
-
100
- v8::MaybeLocal<v8::Value> GetCipherStandardName(
101
- Environment* env,
102
- const SSLPointer& ssl);
103
-
104
- v8::MaybeLocal<v8::Value> GetCipherVersion(
105
- Environment* env,
106
- const SSLPointer& ssl);
107
-
108
77
  v8::MaybeLocal<v8::Object> GetCipherInfo(
109
78
  Environment* env,
110
79
  const SSLPointer& ssl);
@@ -130,9 +99,53 @@ v8::MaybeLocal<v8::Object> X509ToObject(
130
99
  Environment* env,
131
100
  X509* cert);
132
101
 
102
+ v8::MaybeLocal<v8::Value> GetValidTo(
103
+ Environment* env,
104
+ X509* cert,
105
+ const BIOPointer& bio);
106
+
107
+ v8::MaybeLocal<v8::Value> GetValidFrom(
108
+ Environment* env,
109
+ X509* cert,
110
+ const BIOPointer& bio);
111
+
112
+ v8::MaybeLocal<v8::Value> GetFingerprintDigest(
113
+ Environment* env,
114
+ const EVP_MD* method,
115
+ X509* cert);
116
+
117
+ v8::MaybeLocal<v8::Value> GetKeyUsage(Environment* env, X509* cert);
118
+
119
+ v8::MaybeLocal<v8::Value> GetSerialNumber(Environment* env, X509* cert);
120
+
121
+ v8::MaybeLocal<v8::Object> GetRawDERCertificate(Environment* env, X509* cert);
122
+
123
+ v8::Local<v8::Value> ToV8Value(Environment* env, const BIOPointer& bio);
124
+ bool SafeX509SubjectAltNamePrint(const BIOPointer& out, X509_EXTENSION* ext);
125
+
126
+ v8::MaybeLocal<v8::Value> GetSubject(
127
+ Environment* env,
128
+ const BIOPointer& bio,
129
+ X509* cert);
130
+
131
+ v8::MaybeLocal<v8::Value> GetIssuerString(
132
+ Environment* env,
133
+ const BIOPointer& bio,
134
+ X509* cert);
135
+
136
+ v8::MaybeLocal<v8::Value> GetSubjectAltNameString(
137
+ Environment* env,
138
+ const BIOPointer& bio,
139
+ X509* cert);
140
+
141
+ v8::MaybeLocal<v8::Value> GetInfoAccessString(
142
+ Environment* env,
143
+ const BIOPointer& bio,
144
+ X509* cert);
145
+
133
146
  } // namespace crypto
134
147
  } // namespace node
135
148
 
136
149
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
137
150
 
138
- #endif // SRC_NODE_CRYPTO_COMMON_H_
151
+ #endif // SRC_CRYPTO_CRYPTO_COMMON_H_
@@ -0,0 +1,147 @@
1
+ #ifndef SRC_CRYPTO_CRYPTO_CONTEXT_H_
2
+ #define SRC_CRYPTO_CRYPTO_CONTEXT_H_
3
+
4
+ #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
+
6
+ #include "crypto/crypto_util.h"
7
+ #include "base_object.h"
8
+ #include "env.h"
9
+ #include "memory_tracker.h"
10
+ #include "v8.h"
11
+
12
+ namespace node {
13
+ namespace crypto {
14
+ // A maxVersion of 0 means "any", but OpenSSL may support TLS versions that
15
+ // Node.js doesn't, so pin the max to what we do support.
16
+ constexpr int kMaxSupportedVersion = TLS1_3_VERSION;
17
+
18
+ void GetRootCertificates(
19
+ const v8::FunctionCallbackInfo<v8::Value>& args);
20
+
21
+ void IsExtraRootCertsFileLoaded(
22
+ const v8::FunctionCallbackInfo<v8::Value>& args);
23
+
24
+ X509_STORE* NewRootCertStore();
25
+
26
+ BIOPointer LoadBIO(Environment* env, v8::Local<v8::Value> v);
27
+
28
+ class SecureContext final : public BaseObject {
29
+ public:
30
+ using GetSessionCb = SSL_SESSION* (*)(SSL*, const unsigned char*, int, int*);
31
+ using KeylogCb = void (*)(const SSL*, const char*);
32
+ using NewSessionCb = int (*)(SSL*, SSL_SESSION*);
33
+ using SelectSNIContextCb = int (*)(SSL*, int*, void*);
34
+
35
+ ~SecureContext() override;
36
+
37
+ static bool HasInstance(Environment* env, const v8::Local<v8::Value>& value);
38
+ static v8::Local<v8::FunctionTemplate> GetConstructorTemplate(
39
+ Environment* env);
40
+ static void Initialize(Environment* env, v8::Local<v8::Object> target);
41
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
42
+ static SecureContext* Create(Environment* env);
43
+
44
+ const SSLCtxPointer& ctx() const { return ctx_; }
45
+
46
+ SSLPointer CreateSSL();
47
+
48
+ void SetGetSessionCallback(GetSessionCb cb);
49
+ void SetKeylogCallback(KeylogCb cb);
50
+ void SetNewSessionCallback(NewSessionCb cb);
51
+ void SetSelectSNIContextCallback(SelectSNIContextCb cb);
52
+
53
+ // TODO(joyeecheung): track the memory used by OpenSSL types
54
+ SET_NO_MEMORY_INFO()
55
+ SET_MEMORY_INFO_NAME(SecureContext)
56
+ SET_SELF_SIZE(SecureContext)
57
+
58
+ static const int kMaxSessionSize = 10 * 1024;
59
+
60
+ // See TicketKeyCallback
61
+ static const int kTicketKeyReturnIndex = 0;
62
+ static const int kTicketKeyHMACIndex = 1;
63
+ static const int kTicketKeyAESIndex = 2;
64
+ static const int kTicketKeyNameIndex = 3;
65
+ static const int kTicketKeyIVIndex = 4;
66
+
67
+ protected:
68
+ // OpenSSL structures are opaque. This is sizeof(SSL_CTX) for OpenSSL 1.1.1b:
69
+ static const int64_t kExternalSize = 1024;
70
+
71
+ static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
72
+ static void Init(const v8::FunctionCallbackInfo<v8::Value>& args);
73
+ static void SetKey(const v8::FunctionCallbackInfo<v8::Value>& args);
74
+ #ifndef OPENSSL_NO_ENGINE
75
+ static void SetEngineKey(const v8::FunctionCallbackInfo<v8::Value>& args);
76
+ #endif // !OPENSSL_NO_ENGINE
77
+ static void SetCert(const v8::FunctionCallbackInfo<v8::Value>& args);
78
+ static void AddCACert(const v8::FunctionCallbackInfo<v8::Value>& args);
79
+ static void AddCRL(const v8::FunctionCallbackInfo<v8::Value>& args);
80
+ static void AddRootCerts(const v8::FunctionCallbackInfo<v8::Value>& args);
81
+ static void SetCipherSuites(const v8::FunctionCallbackInfo<v8::Value>& args);
82
+ static void SetCiphers(const v8::FunctionCallbackInfo<v8::Value>& args);
83
+ static void SetSigalgs(const v8::FunctionCallbackInfo<v8::Value>& args);
84
+ static void SetECDHCurve(const v8::FunctionCallbackInfo<v8::Value>& args);
85
+ static void SetDHParam(const v8::FunctionCallbackInfo<v8::Value>& args);
86
+ static void SetOptions(const v8::FunctionCallbackInfo<v8::Value>& args);
87
+ static void SetSessionIdContext(
88
+ const v8::FunctionCallbackInfo<v8::Value>& args);
89
+ static void SetSessionTimeout(
90
+ const v8::FunctionCallbackInfo<v8::Value>& args);
91
+ static void SetMinProto(const v8::FunctionCallbackInfo<v8::Value>& args);
92
+ static void SetMaxProto(const v8::FunctionCallbackInfo<v8::Value>& args);
93
+ static void GetMinProto(const v8::FunctionCallbackInfo<v8::Value>& args);
94
+ static void GetMaxProto(const v8::FunctionCallbackInfo<v8::Value>& args);
95
+ static void Close(const v8::FunctionCallbackInfo<v8::Value>& args);
96
+ static void LoadPKCS12(const v8::FunctionCallbackInfo<v8::Value>& args);
97
+ #ifndef OPENSSL_NO_ENGINE
98
+ static void SetClientCertEngine(
99
+ const v8::FunctionCallbackInfo<v8::Value>& args);
100
+ #endif // !OPENSSL_NO_ENGINE
101
+ static void GetTicketKeys(const v8::FunctionCallbackInfo<v8::Value>& args);
102
+ static void SetTicketKeys(const v8::FunctionCallbackInfo<v8::Value>& args);
103
+ static void SetFreeListLength(
104
+ const v8::FunctionCallbackInfo<v8::Value>& args);
105
+ static void EnableTicketKeyCallback(
106
+ const v8::FunctionCallbackInfo<v8::Value>& args);
107
+ static void CtxGetter(const v8::FunctionCallbackInfo<v8::Value>& info);
108
+
109
+ template <bool primary>
110
+ static void GetCertificate(const v8::FunctionCallbackInfo<v8::Value>& args);
111
+
112
+ static int TicketKeyCallback(SSL* ssl,
113
+ unsigned char* name,
114
+ unsigned char* iv,
115
+ EVP_CIPHER_CTX* ectx,
116
+ HMAC_CTX* hctx,
117
+ int enc);
118
+
119
+ static int TicketCompatibilityCallback(SSL* ssl,
120
+ unsigned char* name,
121
+ unsigned char* iv,
122
+ EVP_CIPHER_CTX* ectx,
123
+ HMAC_CTX* hctx,
124
+ int enc);
125
+
126
+ SecureContext(Environment* env, v8::Local<v8::Object> wrap);
127
+ void Reset();
128
+
129
+ private:
130
+ SSLCtxPointer ctx_;
131
+ X509Pointer cert_;
132
+ X509Pointer issuer_;
133
+ #ifndef OPENSSL_NO_ENGINE
134
+ bool client_cert_engine_provided_ = false;
135
+ EnginePointer private_key_engine_;
136
+ #endif // !OPENSSL_NO_ENGINE
137
+
138
+ unsigned char ticket_key_name_[16];
139
+ unsigned char ticket_key_aes_[16];
140
+ unsigned char ticket_key_hmac_[16];
141
+ };
142
+
143
+ } // namespace crypto
144
+ } // namespace node
145
+
146
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
147
+ #endif // SRC_CRYPTO_CRYPTO_CONTEXT_H_