@encharm/cws 4.1.0 → 4.2.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 (370) hide show
  1. package/dist/bindings/cws_linux_108.node +0 -0
  2. package/dist/bindings/cws_linux_64.node +0 -0
  3. package/dist/bindings/cws_linux_72.node +0 -0
  4. package/dist/bindings/cws_linux_79.node +0 -0
  5. package/dist/bindings/cws_linux_83.node +0 -0
  6. package/dist/bindings/cws_linux_93.node +0 -0
  7. package/dist/bindings/cws_win32_64.node +0 -0
  8. package/dist/bindings/cws_win32_72.node +0 -0
  9. package/dist/bindings/cws_win32_79.node +0 -0
  10. package/dist/bindings/cws_win32_83.node +0 -0
  11. package/dist/bindings/cws_win32_93.node +0 -0
  12. package/package.json +1 -1
  13. package/src/Addon.h +24 -2
  14. package/src/HTTPSocket.cpp +1 -1
  15. package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
  16. package/src/headers/18/aliased_struct-inl.h +54 -0
  17. package/src/headers/18/aliased_struct.h +63 -0
  18. package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
  19. package/src/headers/{12 → 18}/async_wrap.h +26 -2
  20. package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
  21. package/src/headers/18/base64.h +69 -0
  22. package/src/headers/{12 → 18}/base_object-inl.h +46 -25
  23. package/src/headers/{12 → 18}/base_object.h +82 -17
  24. package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
  25. package/src/headers/{12 → 18}/callback_queue.h +13 -5
  26. package/src/headers/18/cares_wrap.h +523 -0
  27. package/src/headers/{12 → 18}/connect_wrap.h +0 -0
  28. package/src/headers/{12 → 18}/connection_wrap.h +0 -0
  29. package/src/headers/18/crypto/crypto_aes.h +89 -0
  30. package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
  31. package/src/headers/18/crypto/crypto_cipher.h +291 -0
  32. package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
  33. package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
  34. package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
  35. package/src/headers/18/crypto/crypto_context.h +147 -0
  36. package/src/headers/18/crypto/crypto_dh.h +156 -0
  37. package/src/headers/18/crypto/crypto_dsa.h +77 -0
  38. package/src/headers/18/crypto/crypto_ec.h +170 -0
  39. package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
  40. package/src/headers/18/crypto/crypto_hash.h +89 -0
  41. package/src/headers/18/crypto/crypto_hkdf.h +65 -0
  42. package/src/headers/18/crypto/crypto_hmac.h +94 -0
  43. package/src/headers/18/crypto/crypto_keygen.h +305 -0
  44. package/src/headers/18/crypto/crypto_keys.h +420 -0
  45. package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
  46. package/src/headers/18/crypto/crypto_random.h +130 -0
  47. package/src/headers/18/crypto/crypto_rsa.h +141 -0
  48. package/src/headers/18/crypto/crypto_scrypt.h +87 -0
  49. package/src/headers/18/crypto/crypto_sig.h +168 -0
  50. package/src/headers/18/crypto/crypto_spkac.h +21 -0
  51. package/src/headers/18/crypto/crypto_timing.h +20 -0
  52. package/src/headers/{13/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
  53. package/src/headers/18/crypto/crypto_util.h +791 -0
  54. package/src/headers/18/crypto/crypto_x509.h +143 -0
  55. package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
  56. package/src/headers/{13 → 18}/debug_utils.h +7 -4
  57. package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
  58. package/src/headers/{12 → 18}/env-inl.h +397 -304
  59. package/src/headers/{12 → 18}/env.h +397 -172
  60. package/src/headers/{12 → 18}/handle_wrap.h +7 -3
  61. package/src/headers/18/histogram-inl.h +107 -0
  62. package/src/headers/18/histogram.h +239 -0
  63. package/src/headers/{13 → 18}/inspector_agent.h +4 -7
  64. package/src/headers/{12 → 18}/inspector_io.h +0 -0
  65. package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
  66. package/src/headers/{12 → 18}/inspector_socket.h +0 -0
  67. package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
  68. package/src/headers/18/js_native_api.h +571 -0
  69. package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
  70. package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
  71. package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
  72. package/src/headers/{12 → 18}/js_stream.h +0 -0
  73. package/src/headers/{12 → 18}/json_utils.h +0 -0
  74. package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
  75. package/src/headers/{13 → 18}/memory_tracker.h +0 -7
  76. package/src/headers/{13 → 18}/module_wrap.h +24 -7
  77. package/src/headers/{13 → 18}/node.h +329 -68
  78. package/src/headers/18/node_api.h +288 -0
  79. package/src/headers/18/node_api_internals.h +38 -0
  80. package/src/headers/{12 → 18}/node_api_types.h +12 -9
  81. package/src/headers/{12 → 18}/node_binding.h +0 -0
  82. package/src/headers/18/node_blob.h +191 -0
  83. package/src/headers/18/node_bob-inl.h +37 -0
  84. package/src/headers/18/node_bob.h +111 -0
  85. package/src/headers/{13 → 18}/node_buffer.h +0 -0
  86. package/src/headers/{13 → 18}/node_constants.h +5 -1
  87. package/src/headers/{12 → 18}/node_context_data.h +5 -0
  88. package/src/headers/{12 → 18}/node_contextify.h +37 -2
  89. package/src/headers/{10/node_win32_perfctr_provider.h → 18/node_crypto.h} +30 -31
  90. package/src/headers/{12 → 18}/node_dir.h +0 -0
  91. package/src/headers/{12 → 18}/node_dtrace.h +0 -0
  92. package/src/headers/{12 → 18}/node_errors.h +90 -24
  93. package/src/headers/18/node_external_reference.h +145 -0
  94. package/src/headers/{13 → 18}/node_file-inl.h +38 -21
  95. package/src/headers/{12 → 18}/node_file.h +74 -13
  96. package/src/headers/{13 → 18}/node_http2.h +365 -269
  97. package/src/headers/{12 → 18}/node_http2_state.h +40 -50
  98. package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
  99. package/src/headers/{13 → 18}/node_http_common.h +24 -20
  100. package/src/headers/{13 → 18}/node_i18n.h +2 -1
  101. package/src/headers/{12 → 18}/node_internals.h +39 -41
  102. package/src/headers/{13 → 18}/node_main_instance.h +15 -18
  103. package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
  104. package/src/headers/{12 → 18}/node_mem.h +1 -1
  105. package/src/headers/{13 → 18}/node_messaging.h +170 -23
  106. package/src/headers/{12 → 18}/node_metadata.h +17 -4
  107. package/src/headers/{12 → 18}/node_mutex.h +77 -1
  108. package/src/headers/{12 → 18}/node_native_module.h +11 -1
  109. package/src/headers/{13 → 18}/node_native_module_env.h +14 -8
  110. package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
  111. package/src/headers/{13 → 18}/node_options-inl.h +51 -21
  112. package/src/headers/{13 → 18}/node_options.h +46 -14
  113. package/src/headers/18/node_perf.h +168 -0
  114. package/src/headers/{12 → 18}/node_perf_common.h +16 -22
  115. package/src/headers/{12 → 18}/node_platform.h +21 -16
  116. package/src/headers/18/node_process-inl.h +26 -0
  117. package/src/headers/18/node_process.h +97 -0
  118. package/src/headers/{13 → 18}/node_report.h +2 -2
  119. package/src/headers/{13 → 18}/node_revert.h +10 -0
  120. package/src/headers/{12 → 18}/node_root_certs.h +439 -651
  121. package/src/headers/18/node_snapshot_builder.h +43 -0
  122. package/src/headers/18/node_snapshotable.h +130 -0
  123. package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
  124. package/src/headers/18/node_sockaddr.h +405 -0
  125. package/src/headers/{12 → 18}/node_stat_watcher.h +7 -1
  126. package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
  127. package/src/headers/{13 → 18}/node_url.h +18 -1
  128. package/src/headers/18/node_v8.h +41 -0
  129. package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
  130. package/src/headers/{13 → 18}/node_version.h +7 -7
  131. package/src/headers/{12 → 18}/node_wasi.h +0 -0
  132. package/src/headers/18/node_wasm_web_api.h +55 -0
  133. package/src/headers/{13 → 18}/node_watchdog.h +0 -0
  134. package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
  135. package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
  136. package/src/headers/{13 → 18}/node_worker.h +24 -17
  137. package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
  138. package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
  139. package/src/headers/{12 → 18}/req_wrap.h +1 -1
  140. package/src/headers/{12 → 18}/spawn_sync.h +0 -0
  141. package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
  142. package/src/headers/{13 → 18}/stream_base.h +29 -3
  143. package/src/headers/{13 → 18}/stream_pipe.h +8 -3
  144. package/src/headers/{12 → 18}/stream_wrap.h +4 -1
  145. package/src/headers/{13 → 18}/string_bytes.h +0 -7
  146. package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
  147. package/src/headers/{10 → 18}/string_decoder.h +0 -0
  148. package/src/headers/{13 → 18}/string_search.h +2 -2
  149. package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
  150. package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
  151. package/src/headers/18/timer_wrap-inl.h +32 -0
  152. package/src/headers/18/timer_wrap.h +85 -0
  153. package/src/headers/{13 → 18}/tracing/agent.h +1 -1
  154. package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
  155. package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
  156. package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
  157. package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
  158. package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
  159. package/src/headers/{13 → 18}/tty_wrap.h +2 -1
  160. package/src/headers/{13 → 18}/udp_wrap.h +5 -0
  161. package/src/headers/{13 → 18}/util-inl.h +69 -15
  162. package/src/headers/{13 → 18}/util.h +93 -31
  163. package/src/headers/18/v8-fast-api-calls.h +939 -0
  164. package/src/headers/{12 → 18}/v8abbr.h +2 -2
  165. package/src/headers/10/aliased_buffer.h +0 -241
  166. package/src/headers/10/async_wrap-inl.h +0 -106
  167. package/src/headers/10/async_wrap.h +0 -218
  168. package/src/headers/10/base64.h +0 -197
  169. package/src/headers/10/base_object-inl.h +0 -132
  170. package/src/headers/10/base_object.h +0 -115
  171. package/src/headers/10/connect_wrap.h +0 -28
  172. package/src/headers/10/connection_wrap.h +0 -30
  173. package/src/headers/10/debug_utils.h +0 -128
  174. package/src/headers/10/env-inl.h +0 -906
  175. package/src/headers/10/env.h +0 -1046
  176. package/src/headers/10/handle_wrap.h +0 -114
  177. package/src/headers/10/inspector_agent.h +0 -137
  178. package/src/headers/10/inspector_io.h +0 -97
  179. package/src/headers/10/inspector_socket.h +0 -59
  180. package/src/headers/10/inspector_socket_server.h +0 -104
  181. package/src/headers/10/js_stream.h +0 -57
  182. package/src/headers/10/memory_tracker-inl.h +0 -318
  183. package/src/headers/10/memory_tracker.h +0 -246
  184. package/src/headers/10/module_wrap.h +0 -100
  185. package/src/headers/10/node.h +0 -863
  186. package/src/headers/10/node_api.h +0 -752
  187. package/src/headers/10/node_api_types.h +0 -171
  188. package/src/headers/10/node_buffer.h +0 -90
  189. package/src/headers/10/node_code_cache.h +0 -17
  190. package/src/headers/10/node_constants.h +0 -74
  191. package/src/headers/10/node_context_data.h +0 -39
  192. package/src/headers/10/node_contextify.h +0 -141
  193. package/src/headers/10/node_counters.h +0 -59
  194. package/src/headers/10/node_crypto.h +0 -699
  195. package/src/headers/10/node_crypto_bio.h +0 -177
  196. package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
  197. package/src/headers/10/node_crypto_clienthello.h +0 -131
  198. package/src/headers/10/node_crypto_groups.h +0 -416
  199. package/src/headers/10/node_dtrace.h +0 -84
  200. package/src/headers/10/node_errors.h +0 -118
  201. package/src/headers/10/node_file.h +0 -373
  202. package/src/headers/10/node_http2.h +0 -1304
  203. package/src/headers/10/node_http2_state.h +0 -158
  204. package/src/headers/10/node_i18n.h +0 -69
  205. package/src/headers/10/node_internals.h +0 -952
  206. package/src/headers/10/node_javascript.h +0 -41
  207. package/src/headers/10/node_messaging.h +0 -219
  208. package/src/headers/10/node_mutex.h +0 -191
  209. package/src/headers/10/node_object_wrap.h +0 -130
  210. package/src/headers/10/node_options-inl.h +0 -444
  211. package/src/headers/10/node_options.h +0 -397
  212. package/src/headers/10/node_perf.h +0 -134
  213. package/src/headers/10/node_perf_common.h +0 -96
  214. package/src/headers/10/node_persistent.h +0 -30
  215. package/src/headers/10/node_platform.h +0 -170
  216. package/src/headers/10/node_revert.h +0 -75
  217. package/src/headers/10/node_root_certs.h +0 -3393
  218. package/src/headers/10/node_stat_watcher.h +0 -65
  219. package/src/headers/10/node_url.h +0 -193
  220. package/src/headers/10/node_version.h +0 -120
  221. package/src/headers/10/node_watchdog.h +0 -114
  222. package/src/headers/10/node_worker.h +0 -94
  223. package/src/headers/10/pipe_wrap.h +0 -76
  224. package/src/headers/10/req_wrap-inl.h +0 -166
  225. package/src/headers/10/req_wrap.h +0 -61
  226. package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
  227. package/src/headers/10/spawn_sync.h +0 -240
  228. package/src/headers/10/stream_base-inl.h +0 -458
  229. package/src/headers/10/stream_base.h +0 -378
  230. package/src/headers/10/stream_pipe.h +0 -72
  231. package/src/headers/10/stream_wrap.h +0 -130
  232. package/src/headers/10/string_bytes.h +0 -126
  233. package/src/headers/10/string_decoder-inl.h +0 -38
  234. package/src/headers/10/string_search.h +0 -620
  235. package/src/headers/10/tcp_wrap.h +0 -99
  236. package/src/headers/10/tls_wrap.h +0 -195
  237. package/src/headers/10/tracing/agent.h +0 -178
  238. package/src/headers/10/tracing/node_trace_buffer.h +0 -83
  239. package/src/headers/10/tracing/node_trace_writer.h +0 -75
  240. package/src/headers/10/tracing/trace_event.h +0 -706
  241. package/src/headers/10/tracing/trace_event_common.h +0 -1102
  242. package/src/headers/10/tracing/traced_value.h +0 -68
  243. package/src/headers/10/tty_wrap.h +0 -63
  244. package/src/headers/10/udp_wrap.h +0 -102
  245. package/src/headers/10/util-inl.h +0 -459
  246. package/src/headers/10/util.h +0 -508
  247. package/src/headers/10/v8abbr.h +0 -121
  248. package/src/headers/12/aliased_buffer.h +0 -263
  249. package/src/headers/12/debug_utils.h +0 -181
  250. package/src/headers/12/histogram-inl.h +0 -83
  251. package/src/headers/12/histogram.h +0 -98
  252. package/src/headers/12/http_parser_adaptor.h +0 -24
  253. package/src/headers/12/inspector_agent.h +0 -147
  254. package/src/headers/12/inspector_profiler.h +0 -137
  255. package/src/headers/12/js_native_api.h +0 -541
  256. package/src/headers/12/js_native_api_types.h +0 -139
  257. package/src/headers/12/memory_tracker-inl.h +0 -339
  258. package/src/headers/12/memory_tracker.h +0 -283
  259. package/src/headers/12/module_wrap.h +0 -99
  260. package/src/headers/12/node.h +0 -887
  261. package/src/headers/12/node_api.h +0 -239
  262. package/src/headers/12/node_buffer.h +0 -92
  263. package/src/headers/12/node_constants.h +0 -80
  264. package/src/headers/12/node_crypto.h +0 -800
  265. package/src/headers/12/node_crypto_bio.h +0 -195
  266. package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
  267. package/src/headers/12/node_crypto_clienthello.h +0 -132
  268. package/src/headers/12/node_file-inl.h +0 -289
  269. package/src/headers/12/node_http2.h +0 -1311
  270. package/src/headers/12/node_http_parser_impl.h +0 -994
  271. package/src/headers/12/node_i18n.h +0 -144
  272. package/src/headers/12/node_main_instance.h +0 -97
  273. package/src/headers/12/node_messaging.h +0 -227
  274. package/src/headers/12/node_native_module_env.h +0 -65
  275. package/src/headers/12/node_options-inl.h +0 -447
  276. package/src/headers/12/node_options.h +0 -479
  277. package/src/headers/12/node_perf.h +0 -181
  278. package/src/headers/12/node_process.h +0 -41
  279. package/src/headers/12/node_report.h +0 -47
  280. package/src/headers/12/node_revert.h +0 -78
  281. package/src/headers/12/node_sockaddr.h +0 -123
  282. package/src/headers/12/node_url.h +0 -188
  283. package/src/headers/12/node_version.h +0 -98
  284. package/src/headers/12/node_watchdog.h +0 -152
  285. package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
  286. package/src/headers/12/node_win32_etw_provider.h +0 -99
  287. package/src/headers/12/node_worker.h +0 -142
  288. package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
  289. package/src/headers/12/stream_base-inl.h +0 -323
  290. package/src/headers/12/stream_base.h +0 -431
  291. package/src/headers/12/stream_pipe.h +0 -72
  292. package/src/headers/12/string_bytes.h +0 -142
  293. package/src/headers/12/string_decoder.h +0 -50
  294. package/src/headers/12/string_search.h +0 -638
  295. package/src/headers/12/tls_wrap.h +0 -221
  296. package/src/headers/12/tracing/agent.h +0 -195
  297. package/src/headers/12/tracing/trace_event.h +0 -710
  298. package/src/headers/12/tty_wrap.h +0 -64
  299. package/src/headers/12/udp_wrap.h +0 -222
  300. package/src/headers/12/util-inl.h +0 -529
  301. package/src/headers/12/util.h +0 -765
  302. package/src/headers/13/async_wrap-inl.h +0 -94
  303. package/src/headers/13/async_wrap.h +0 -224
  304. package/src/headers/13/base64.h +0 -197
  305. package/src/headers/13/base_object-inl.h +0 -353
  306. package/src/headers/13/base_object.h +0 -229
  307. package/src/headers/13/connect_wrap.h +0 -26
  308. package/src/headers/13/connection_wrap.h +0 -30
  309. package/src/headers/13/debug_utils-inl.h +0 -223
  310. package/src/headers/13/diagnosticfilename-inl.h +0 -33
  311. package/src/headers/13/env-inl.h +0 -1293
  312. package/src/headers/13/env.h +0 -1469
  313. package/src/headers/13/handle_wrap.h +0 -117
  314. package/src/headers/13/histogram-inl.h +0 -83
  315. package/src/headers/13/histogram.h +0 -98
  316. package/src/headers/13/inspector_io.h +0 -78
  317. package/src/headers/13/inspector_socket.h +0 -60
  318. package/src/headers/13/inspector_socket_server.h +0 -110
  319. package/src/headers/13/js_native_api.h +0 -541
  320. package/src/headers/13/js_native_api_v8.h +0 -303
  321. package/src/headers/13/js_native_api_v8_internals.h +0 -38
  322. package/src/headers/13/js_stream.h +0 -52
  323. package/src/headers/13/json_utils.h +0 -160
  324. package/src/headers/13/node_api.h +0 -239
  325. package/src/headers/13/node_api_types.h +0 -44
  326. package/src/headers/13/node_binding.h +0 -99
  327. package/src/headers/13/node_context_data.h +0 -39
  328. package/src/headers/13/node_contextify.h +0 -161
  329. package/src/headers/13/node_crypto.h +0 -800
  330. package/src/headers/13/node_crypto_common.h +0 -138
  331. package/src/headers/13/node_crypto_groups.h +0 -415
  332. package/src/headers/13/node_dir.h +0 -52
  333. package/src/headers/13/node_dtrace.h +0 -86
  334. package/src/headers/13/node_errors.h +0 -210
  335. package/src/headers/13/node_file.h +0 -364
  336. package/src/headers/13/node_http2_state.h +0 -144
  337. package/src/headers/13/node_internals.h +0 -405
  338. package/src/headers/13/node_mem-inl.h +0 -112
  339. package/src/headers/13/node_mem.h +0 -41
  340. package/src/headers/13/node_metadata.h +0 -109
  341. package/src/headers/13/node_mutex.h +0 -247
  342. package/src/headers/13/node_native_module.h +0 -99
  343. package/src/headers/13/node_object_wrap.h +0 -132
  344. package/src/headers/13/node_perf.h +0 -181
  345. package/src/headers/13/node_perf_common.h +0 -97
  346. package/src/headers/13/node_platform.h +0 -190
  347. package/src/headers/13/node_process.h +0 -41
  348. package/src/headers/13/node_root_certs.h +0 -3424
  349. package/src/headers/13/node_sockaddr-inl.h +0 -170
  350. package/src/headers/13/node_sockaddr.h +0 -123
  351. package/src/headers/13/node_stat_watcher.h +0 -66
  352. package/src/headers/13/node_union_bytes.h +0 -103
  353. package/src/headers/13/node_v8_platform-inl.h +0 -184
  354. package/src/headers/13/node_wasi.h +0 -108
  355. package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
  356. package/src/headers/13/node_win32_etw_provider.h +0 -99
  357. package/src/headers/13/pipe_wrap.h +0 -78
  358. package/src/headers/13/req_wrap-inl.h +0 -170
  359. package/src/headers/13/req_wrap.h +0 -77
  360. package/src/headers/13/spawn_sync.h +0 -242
  361. package/src/headers/13/stream_wrap.h +0 -130
  362. package/src/headers/13/string_decoder-inl.h +0 -37
  363. package/src/headers/13/string_decoder.h +0 -50
  364. package/src/headers/13/tcp_wrap.h +0 -101
  365. package/src/headers/13/threadpoolwork-inl.h +0 -57
  366. package/src/headers/13/tracing/node_trace_buffer.h +0 -83
  367. package/src/headers/13/tracing/node_trace_writer.h +0 -75
  368. package/src/headers/13/tracing/trace_event_common.h +0 -1109
  369. package/src/headers/13/tracing/traced_value.h +0 -70
  370. 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_