@encharm/cws 4.4.1 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (606) hide show
  1. package/binding.gyp +1 -1
  2. package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
  3. package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
  4. package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
  5. package/dist/bindings/cws_linux_arm64_node115.node +0 -0
  6. package/dist/bindings/cws_linux_arm64_node127.node +0 -0
  7. package/dist/bindings/cws_linux_x64_node115.node +0 -0
  8. package/dist/bindings/cws_linux_x64_node127.node +0 -0
  9. package/dist/bindings/cws_linux_x64_node137.node +0 -0
  10. package/dist/bindings/cws_win32_x64_node108.node +0 -0
  11. package/dist/bindings/cws_win32_x64_node115.node +0 -0
  12. package/dist/bindings/cws_win32_x64_node127.node +0 -0
  13. package/dist/bindings/cws_win32_x64_node83.node +0 -0
  14. package/dist/bindings/cws_win32_x64_node93.node +0 -0
  15. package/package.json +1 -1
  16. package/src/Addon.h +13 -23
  17. package/src/Socket.h +0 -1
  18. package/src/headers/22/acorn_version.h +6 -0
  19. package/src/headers/22/aliased_buffer-inl.h +243 -0
  20. package/src/headers/22/aliased_buffer.h +206 -0
  21. package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
  22. package/src/headers/{18 → 22}/async_wrap.h +65 -59
  23. package/src/headers/{18 → 22}/base_object-inl.h +57 -117
  24. package/src/headers/{18 → 22}/base_object.h +58 -30
  25. package/src/headers/22/base_object_types.h +74 -0
  26. package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
  27. package/src/headers/22/blob_serializer_deserializer.h +132 -0
  28. package/src/headers/{16 → 22}/callback_queue.h +1 -0
  29. package/src/headers/{16 → 22}/cares_wrap.h +27 -20
  30. package/src/headers/22/cjs_module_lexer_version.h +6 -0
  31. package/src/headers/22/cleanup_queue-inl.h +62 -0
  32. package/src/headers/22/cleanup_queue.h +85 -0
  33. package/src/headers/22/compile_cache.h +104 -0
  34. package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
  35. package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
  36. package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
  37. package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
  38. package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
  39. package/src/headers/22/crypto/ncrypto.h +752 -0
  40. package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
  41. package/src/headers/{18 → 22}/debug_utils.h +25 -19
  42. package/src/headers/22/encoding_binding.h +59 -0
  43. package/src/headers/{14 → 22}/env-inl.h +276 -409
  44. package/src/headers/22/env.h +1266 -0
  45. package/src/headers/22/env_properties.h +497 -0
  46. package/src/headers/{18 → 22}/handle_wrap.h +2 -0
  47. package/src/headers/{18 → 22}/histogram.h +88 -48
  48. package/src/headers/{16 → 22}/inspector_agent.h +17 -1
  49. package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
  50. package/src/headers/22/js_native_api.h +619 -0
  51. package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
  52. package/src/headers/22/js_native_api_v8.h +485 -0
  53. package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
  54. package/src/headers/22/json_parser.h +40 -0
  55. package/src/headers/{16 → 22}/json_utils.h +19 -8
  56. package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
  57. package/src/headers/{14 → 22}/memory_tracker.h +13 -8
  58. package/src/headers/{16 → 22}/module_wrap.h +49 -19
  59. package/src/headers/22/ncrypto/ncrypto.h +752 -0
  60. package/src/headers/{18 → 22}/node.h +465 -68
  61. package/src/headers/{18 → 22}/node_api.h +66 -81
  62. package/src/headers/{18 → 22}/node_api_internals.h +8 -4
  63. package/src/headers/{18 → 22}/node_api_types.h +5 -0
  64. package/src/headers/22/node_binding.h +154 -0
  65. package/src/headers/{18 → 22}/node_blob.h +46 -78
  66. package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
  67. package/src/headers/{18 → 22}/node_bob.h +2 -6
  68. package/src/headers/{18 → 22}/node_buffer.h +1 -1
  69. package/src/headers/22/node_builtins.h +220 -0
  70. package/src/headers/{18 → 22}/node_constants.h +3 -5
  71. package/src/headers/22/node_context_data.h +168 -0
  72. package/src/headers/22/node_contextify.h +199 -0
  73. package/src/headers/{16 → 22}/node_crypto.h +1 -2
  74. package/src/headers/22/node_dotenv.h +45 -0
  75. package/src/headers/{18 → 22}/node_errors.h +86 -27
  76. package/src/headers/22/node_exit_code.h +54 -0
  77. package/src/headers/22/node_external_reference.h +249 -0
  78. package/src/headers/{18 → 22}/node_file-inl.h +127 -30
  79. package/src/headers/{16 → 22}/node_file.h +122 -11
  80. package/src/headers/{18 → 22}/node_http2.h +28 -11
  81. package/src/headers/{16 → 22}/node_http2_state.h +34 -25
  82. package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
  83. package/src/headers/{18 → 22}/node_http_common.h +56 -55
  84. package/src/headers/{16 → 22}/node_i18n.h +5 -18
  85. package/src/headers/{18 → 22}/node_internals.h +121 -59
  86. package/src/headers/{18 → 22}/node_main_instance.h +4 -31
  87. package/src/headers/{18 → 22}/node_messaging.h +27 -10
  88. package/src/headers/{18 → 22}/node_metadata.h +23 -1
  89. package/src/headers/{18 → 22}/node_options-inl.h +24 -11
  90. package/src/headers/{18 → 22}/node_options.h +124 -39
  91. package/src/headers/{18 → 22}/node_perf.h +0 -2
  92. package/src/headers/{18 → 22}/node_perf_common.h +20 -9
  93. package/src/headers/{18 → 22}/node_platform.h +11 -5
  94. package/src/headers/{18 → 22}/node_process.h +26 -14
  95. package/src/headers/22/node_realm-inl.h +145 -0
  96. package/src/headers/22/node_realm.h +184 -0
  97. package/src/headers/{16 → 22}/node_report.h +13 -17
  98. package/src/headers/{16 → 22}/node_revert.h +3 -3
  99. package/src/headers/{16 → 22}/node_root_certs.h +902 -461
  100. package/src/headers/22/node_sea.h +64 -0
  101. package/src/headers/22/node_shadow_realm.h +46 -0
  102. package/src/headers/22/node_snapshot_builder.h +57 -0
  103. package/src/headers/22/node_snapshotable.h +174 -0
  104. package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
  105. package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
  106. package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
  107. package/src/headers/22/node_threadsafe_cow.h +105 -0
  108. package/src/headers/22/node_union_bytes.h +81 -0
  109. package/src/headers/22/node_url.h +96 -0
  110. package/src/headers/22/node_v8.h +77 -0
  111. package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
  112. package/src/headers/{16 → 22}/node_version.h +21 -9
  113. package/src/headers/22/node_wasi.h +185 -0
  114. package/src/headers/{14 → 22}/node_watchdog.h +2 -0
  115. package/src/headers/{18 → 22}/node_worker.h +7 -2
  116. package/src/headers/22/permission/child_process_permission.h +31 -0
  117. package/src/headers/22/permission/fs_permission.h +167 -0
  118. package/src/headers/22/permission/inspector_permission.h +31 -0
  119. package/src/headers/22/permission/permission.h +99 -0
  120. package/src/headers/22/permission/permission_base.h +60 -0
  121. package/src/headers/22/permission/wasi_permission.h +31 -0
  122. package/src/headers/22/permission/worker_permission.h +31 -0
  123. package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
  124. package/src/headers/{14 → 22}/spawn_sync.h +3 -3
  125. package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
  126. package/src/headers/{18 → 22}/stream_base.h +35 -16
  127. package/src/headers/{18 → 22}/stream_pipe.h +3 -4
  128. package/src/headers/{16 → 22}/stream_wrap.h +2 -1
  129. package/src/headers/{18 → 22}/string_bytes.h +5 -14
  130. package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
  131. package/src/headers/{16 → 22}/string_decoder.h +0 -1
  132. package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
  133. package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
  134. package/src/headers/22/timers.h +76 -0
  135. package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
  136. package/src/headers/{16 → 22}/udp_wrap.h +8 -5
  137. package/src/headers/22/undici_version.h +6 -0
  138. package/src/headers/{18 → 22}/util-inl.h +97 -127
  139. package/src/headers/{18 → 22}/util.h +293 -106
  140. package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
  141. package/src/headers/24/acorn_version.h +6 -0
  142. package/src/headers/24/addon_permission.h +31 -0
  143. package/src/headers/{16/tracing → 24}/agent.h +1 -1
  144. package/src/headers/24/aliased_buffer-inl.h +244 -0
  145. package/src/headers/24/aliased_buffer.h +206 -0
  146. package/src/headers/24/amaro_version.h +6 -0
  147. package/src/headers/24/application.h +165 -0
  148. package/src/headers/24/async_context_frame.h +33 -0
  149. package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
  150. package/src/headers/{16 → 24}/async_wrap.h +86 -88
  151. package/src/headers/{16 → 24}/base_object-inl.h +75 -119
  152. package/src/headers/{16 → 24}/base_object.h +84 -40
  153. package/src/headers/24/base_object_types.h +74 -0
  154. package/src/headers/24/bindingdata.h +272 -0
  155. package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
  156. package/src/headers/24/blob_serializer_deserializer.h +132 -0
  157. package/src/headers/{18 → 24}/callback_queue.h +1 -0
  158. package/src/headers/{18 → 24}/cares_wrap.h +68 -144
  159. package/src/headers/24/child_process_permission.h +31 -0
  160. package/src/headers/24/cid.h +127 -0
  161. package/src/headers/24/cjs_module_lexer_version.h +6 -0
  162. package/src/headers/24/cleanup_queue-inl.h +36 -0
  163. package/src/headers/24/cleanup_queue.h +79 -0
  164. package/src/headers/24/compile_cache.h +113 -0
  165. package/src/headers/24/cppgc_helpers-inl.h +65 -0
  166. package/src/headers/24/cppgc_helpers.h +162 -0
  167. package/src/headers/24/crypto/crypto_aes.h +97 -0
  168. package/src/headers/24/crypto/crypto_argon2.h +86 -0
  169. package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
  170. package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
  171. package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
  172. package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
  173. package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
  174. package/src/headers/24/crypto/crypto_common.h +48 -0
  175. package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
  176. package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
  177. package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
  178. package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
  179. package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
  180. package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
  181. package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
  182. package/src/headers/24/crypto/crypto_kem.h +113 -0
  183. package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
  184. package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
  185. package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
  186. package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
  187. package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
  188. package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
  189. package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
  190. package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
  191. package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
  192. package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
  193. package/src/headers/24/crypto/crypto_x509.h +140 -0
  194. package/src/headers/24/data.h +148 -0
  195. package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
  196. package/src/headers/{16 → 24}/debug_utils.h +31 -22
  197. package/src/headers/24/defs.h +254 -0
  198. package/src/headers/24/embedded_data.h +17 -0
  199. package/src/headers/24/encoding_binding.h +60 -0
  200. package/src/headers/24/endpoint.h +421 -0
  201. package/src/headers/{16 → 24}/env-inl.h +198 -540
  202. package/src/headers/24/env.h +1257 -0
  203. package/src/headers/24/env_properties.h +561 -0
  204. package/src/headers/24/fs_permission.h +167 -0
  205. package/src/headers/{16 → 24}/handle_wrap.h +4 -2
  206. package/src/headers/{16 → 24}/histogram-inl.h +34 -15
  207. package/src/headers/24/histogram.h +279 -0
  208. package/src/headers/24/http3.h +44 -0
  209. package/src/headers/{18 → 24}/inspector_agent.h +23 -2
  210. package/src/headers/24/inspector_permission.h +31 -0
  211. package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
  212. package/src/headers/24/io_agent.h +30 -0
  213. package/src/headers/{18 → 24}/js_native_api.h +74 -30
  214. package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
  215. package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
  216. package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
  217. package/src/headers/24/json_parser.h +40 -0
  218. package/src/headers/{18 → 24}/json_utils.h +19 -8
  219. package/src/headers/24/logstream.h +81 -0
  220. package/src/headers/24/main_thread_interface.h +116 -0
  221. package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
  222. package/src/headers/{16 → 24}/memory_tracker.h +58 -9
  223. package/src/headers/24/module_wrap.h +229 -0
  224. package/src/headers/24/ncrypto.h +1625 -0
  225. package/src/headers/24/network_agent.h +118 -0
  226. package/src/headers/24/network_inspector.h +45 -0
  227. package/src/headers/24/network_resource_manager.h +29 -0
  228. package/src/headers/{16 → 24}/node.h +560 -72
  229. package/src/headers/24/node_api.h +269 -0
  230. package/src/headers/24/node_api_internals.h +46 -0
  231. package/src/headers/{16 → 24}/node_api_types.h +13 -11
  232. package/src/headers/24/node_binding.h +163 -0
  233. package/src/headers/{16 → 24}/node_blob.h +46 -78
  234. package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
  235. package/src/headers/{16 → 24}/node_bob.h +2 -6
  236. package/src/headers/{14 → 24}/node_buffer.h +1 -1
  237. package/src/headers/24/node_builtins.h +223 -0
  238. package/src/headers/24/node_config_file.h +65 -0
  239. package/src/headers/{14 → 24}/node_constants.h +3 -5
  240. package/src/headers/24/node_context_data.h +168 -0
  241. package/src/headers/24/node_contextify.h +261 -0
  242. package/src/headers/{18 → 24}/node_crypto.h +7 -2
  243. package/src/headers/24/node_debug.h +25 -0
  244. package/src/headers/24/node_dotenv.h +45 -0
  245. package/src/headers/{16 → 24}/node_errors.h +146 -32
  246. package/src/headers/24/node_exit_code.h +54 -0
  247. package/src/headers/{18 → 24}/node_external_reference.h +44 -22
  248. package/src/headers/{16 → 24}/node_file-inl.h +156 -50
  249. package/src/headers/{18 → 24}/node_file.h +129 -15
  250. package/src/headers/{16 → 24}/node_http2.h +53 -18
  251. package/src/headers/{14 → 24}/node_http2_state.h +35 -25
  252. package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
  253. package/src/headers/{16 → 24}/node_http_common.h +63 -59
  254. package/src/headers/{18 → 24}/node_i18n.h +5 -18
  255. package/src/headers/{16 → 24}/node_internals.h +131 -76
  256. package/src/headers/24/node_json.h +24 -0
  257. package/src/headers/24/node_large_page.h +34 -0
  258. package/src/headers/24/node_locks.h +180 -0
  259. package/src/headers/{14 → 24}/node_main_instance.h +15 -44
  260. package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
  261. package/src/headers/{16 → 24}/node_messaging.h +27 -11
  262. package/src/headers/{16 → 24}/node_metadata.h +44 -2
  263. package/src/headers/24/node_modules.h +93 -0
  264. package/src/headers/{16 → 24}/node_options-inl.h +93 -46
  265. package/src/headers/{16 → 24}/node_options.h +251 -63
  266. package/src/headers/{16 → 24}/node_perf.h +6 -25
  267. package/src/headers/{16 → 24}/node_perf_common.h +23 -10
  268. package/src/headers/24/node_platform.h +286 -0
  269. package/src/headers/24/node_process.h +111 -0
  270. package/src/headers/24/node_realm-inl.h +153 -0
  271. package/src/headers/24/node_realm.h +236 -0
  272. package/src/headers/{18 → 24}/node_report.h +13 -17
  273. package/src/headers/{18 → 24}/node_revert.h +3 -3
  274. package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
  275. package/src/headers/24/node_sea.h +74 -0
  276. package/src/headers/24/node_shadow_realm.h +46 -0
  277. package/src/headers/24/node_snapshot_builder.h +57 -0
  278. package/src/headers/24/node_snapshotable.h +174 -0
  279. package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
  280. package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
  281. package/src/headers/24/node_sqlite.h +270 -0
  282. package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
  283. package/src/headers/24/node_string.h +101 -0
  284. package/src/headers/24/node_task_runner.h +92 -0
  285. package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
  286. package/src/headers/24/node_threadsafe_cow.h +105 -0
  287. package/src/headers/24/node_union_bytes.h +81 -0
  288. package/src/headers/24/node_url.h +101 -0
  289. package/src/headers/24/node_url_pattern.h +118 -0
  290. package/src/headers/24/node_v8.h +77 -0
  291. package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
  292. package/src/headers/{18 → 24}/node_version.h +18 -6
  293. package/src/headers/24/node_wasi.h +185 -0
  294. package/src/headers/24/node_wasm_web_api.h +55 -0
  295. package/src/headers/{18 → 24}/node_watchdog.h +2 -0
  296. package/src/headers/24/node_webstorage.h +60 -0
  297. package/src/headers/{16 → 24}/node_worker.h +24 -10
  298. package/src/headers/24/packet.h +155 -0
  299. package/src/headers/24/path.h +33 -0
  300. package/src/headers/24/permission/addon_permission.h +31 -0
  301. package/src/headers/24/permission/child_process_permission.h +31 -0
  302. package/src/headers/24/permission/fs_permission.h +167 -0
  303. package/src/headers/24/permission/inspector_permission.h +31 -0
  304. package/src/headers/24/permission/permission.h +100 -0
  305. package/src/headers/24/permission/permission_base.h +65 -0
  306. package/src/headers/24/permission/wasi_permission.h +31 -0
  307. package/src/headers/24/permission/worker_permission.h +31 -0
  308. package/src/headers/24/permission.h +100 -0
  309. package/src/headers/24/permission_base.h +65 -0
  310. package/src/headers/24/preferredaddress.h +72 -0
  311. package/src/headers/24/protocol_helper.h +27 -0
  312. package/src/headers/24/queue.h +306 -0
  313. package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
  314. package/src/headers/{16 → 24}/req_wrap.h +3 -1
  315. package/src/headers/24/runtime_agent.h +41 -0
  316. package/src/headers/24/session.h +528 -0
  317. package/src/headers/24/sessionticket.h +108 -0
  318. package/src/headers/{18 → 24}/spawn_sync.h +9 -8
  319. package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
  320. package/src/headers/{16 → 24}/stream_base.h +43 -19
  321. package/src/headers/{16 → 24}/stream_pipe.h +7 -4
  322. package/src/headers/{18 → 24}/stream_wrap.h +2 -3
  323. package/src/headers/24/streams.h +370 -0
  324. package/src/headers/{16 → 24}/string_bytes.h +8 -21
  325. package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
  326. package/src/headers/{18 → 24}/string_decoder.h +0 -1
  327. package/src/headers/24/target_agent.h +75 -0
  328. package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
  329. package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
  330. package/src/headers/24/timer_wrap-inl.h +32 -0
  331. package/src/headers/{16 → 24}/timer_wrap.h +7 -4
  332. package/src/headers/24/timers.h +75 -0
  333. package/src/headers/24/tlscontext.h +228 -0
  334. package/src/headers/24/tokens.h +256 -0
  335. package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
  336. package/src/headers/24/traced_value.h +129 -0
  337. package/src/headers/24/tracing_agent.h +43 -0
  338. package/src/headers/24/transportparams.h +166 -0
  339. package/src/headers/{16 → 24}/tty_wrap.h +0 -1
  340. package/src/headers/{18 → 24}/udp_wrap.h +8 -5
  341. package/src/headers/24/undici_version.h +6 -0
  342. package/src/headers/{16 → 24}/util-inl.h +267 -131
  343. package/src/headers/{16 → 24}/util.h +338 -146
  344. package/src/headers/24/v8-external-memory-accounter.h +60 -0
  345. package/src/headers/24/v8-fast-api-calls.h +819 -0
  346. package/src/headers/24/v8-inspector.h +426 -0
  347. package/src/headers/24/wasi_permission.h +31 -0
  348. package/src/headers/24/worker_agent.h +40 -0
  349. package/src/headers/24/worker_inspector.h +124 -0
  350. package/src/headers/24/worker_permission.h +31 -0
  351. package/src/headers/24/zlib_version.h +6 -0
  352. package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
  353. package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
  354. package/dist/bindings/cws_darwin_x64_node83.node +0 -0
  355. package/dist/bindings/cws_darwin_x64_node93.node +0 -0
  356. package/dist/bindings/cws_linux_arm64_node83.node +0 -0
  357. package/dist/bindings/cws_linux_arm64_node93.node +0 -0
  358. package/dist/bindings/cws_linux_x64_node83.node +0 -0
  359. package/dist/bindings/cws_linux_x64_node93.node +0 -0
  360. package/src/headers/14/aliased_buffer.h +0 -263
  361. package/src/headers/14/allocated_buffer-inl.h +0 -110
  362. package/src/headers/14/allocated_buffer.h +0 -73
  363. package/src/headers/14/async_wrap.h +0 -230
  364. package/src/headers/14/base64.h +0 -183
  365. package/src/headers/14/base_object-inl.h +0 -371
  366. package/src/headers/14/base_object.h +0 -281
  367. package/src/headers/14/callback_queue-inl.h +0 -97
  368. package/src/headers/14/callback_queue.h +0 -78
  369. package/src/headers/14/debug_utils.h +0 -181
  370. package/src/headers/14/env.h +0 -1388
  371. package/src/headers/14/handle_wrap.h +0 -117
  372. package/src/headers/14/histogram-inl.h +0 -83
  373. package/src/headers/14/histogram.h +0 -98
  374. package/src/headers/14/inspector_agent.h +0 -149
  375. package/src/headers/14/inspector_profiler.h +0 -137
  376. package/src/headers/14/js_native_api.h +0 -544
  377. package/src/headers/14/js_native_api_types.h +0 -143
  378. package/src/headers/14/js_native_api_v8.h +0 -301
  379. package/src/headers/14/js_native_api_v8_internals.h +0 -38
  380. package/src/headers/14/json_utils.h +0 -161
  381. package/src/headers/14/memory_tracker-inl.h +0 -355
  382. package/src/headers/14/module_wrap.h +0 -99
  383. package/src/headers/14/node.h +0 -1032
  384. package/src/headers/14/node_api.h +0 -255
  385. package/src/headers/14/node_api_types.h +0 -44
  386. package/src/headers/14/node_binding.h +0 -99
  387. package/src/headers/14/node_context_data.h +0 -44
  388. package/src/headers/14/node_contextify.h +0 -161
  389. package/src/headers/14/node_crypto.h +0 -865
  390. package/src/headers/14/node_crypto_bio.h +0 -195
  391. package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
  392. package/src/headers/14/node_crypto_clienthello.h +0 -132
  393. package/src/headers/14/node_crypto_common.h +0 -138
  394. package/src/headers/14/node_crypto_groups.h +0 -415
  395. package/src/headers/14/node_dtrace.h +0 -86
  396. package/src/headers/14/node_errors.h +0 -214
  397. package/src/headers/14/node_file-inl.h +0 -306
  398. package/src/headers/14/node_file.h +0 -417
  399. package/src/headers/14/node_http2.h +0 -1191
  400. package/src/headers/14/node_http_common-inl.h +0 -194
  401. package/src/headers/14/node_http_common.h +0 -529
  402. package/src/headers/14/node_i18n.h +0 -144
  403. package/src/headers/14/node_internals.h +0 -405
  404. package/src/headers/14/node_mem.h +0 -45
  405. package/src/headers/14/node_messaging.h +0 -303
  406. package/src/headers/14/node_metadata.h +0 -109
  407. package/src/headers/14/node_mutex.h +0 -247
  408. package/src/headers/14/node_native_module.h +0 -101
  409. package/src/headers/14/node_native_module_env.h +0 -66
  410. package/src/headers/14/node_options-inl.h +0 -451
  411. package/src/headers/14/node_options.h +0 -481
  412. package/src/headers/14/node_perf.h +0 -181
  413. package/src/headers/14/node_perf_common.h +0 -97
  414. package/src/headers/14/node_platform.h +0 -189
  415. package/src/headers/14/node_process.h +0 -40
  416. package/src/headers/14/node_report.h +0 -47
  417. package/src/headers/14/node_revert.h +0 -72
  418. package/src/headers/14/node_root_certs.h +0 -3458
  419. package/src/headers/14/node_sockaddr-inl.h +0 -170
  420. package/src/headers/14/node_sockaddr.h +0 -123
  421. package/src/headers/14/node_stat_watcher.h +0 -70
  422. package/src/headers/14/node_union_bytes.h +0 -103
  423. package/src/headers/14/node_url.h +0 -188
  424. package/src/headers/14/node_version.h +0 -98
  425. package/src/headers/14/node_wasi.h +0 -108
  426. package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
  427. package/src/headers/14/node_win32_etw_provider.h +0 -99
  428. package/src/headers/14/node_worker.h +0 -141
  429. package/src/headers/14/pipe_wrap.h +0 -78
  430. package/src/headers/14/req_wrap-inl.h +0 -170
  431. package/src/headers/14/req_wrap.h +0 -77
  432. package/src/headers/14/stream_base-inl.h +0 -275
  433. package/src/headers/14/stream_base.h +0 -434
  434. package/src/headers/14/stream_pipe.h +0 -73
  435. package/src/headers/14/stream_wrap.h +0 -130
  436. package/src/headers/14/string_bytes.h +0 -129
  437. package/src/headers/14/string_decoder.h +0 -50
  438. package/src/headers/14/string_search.h +0 -638
  439. package/src/headers/14/tcp_wrap.h +0 -101
  440. package/src/headers/14/tls_wrap.h +0 -222
  441. package/src/headers/14/tracing/agent.h +0 -195
  442. package/src/headers/14/tracing/traced_value.h +0 -70
  443. package/src/headers/14/tty_wrap.h +0 -64
  444. package/src/headers/14/udp_wrap.h +0 -227
  445. package/src/headers/14/util-inl.h +0 -566
  446. package/src/headers/14/util.h +0 -804
  447. package/src/headers/14/v8abbr.h +0 -124
  448. package/src/headers/16/aliased_buffer.h +0 -315
  449. package/src/headers/16/allocated_buffer-inl.h +0 -110
  450. package/src/headers/16/allocated_buffer.h +0 -73
  451. package/src/headers/16/async_wrap-inl.h +0 -94
  452. package/src/headers/16/base64-inl.h +0 -189
  453. package/src/headers/16/base64.h +0 -69
  454. package/src/headers/16/crypto/crypto_aes.h +0 -89
  455. package/src/headers/16/crypto/crypto_cipher.h +0 -286
  456. package/src/headers/16/crypto/crypto_common.h +0 -187
  457. package/src/headers/16/crypto/crypto_dh.h +0 -157
  458. package/src/headers/16/crypto/crypto_dsa.h +0 -76
  459. package/src/headers/16/crypto/crypto_ec.h +0 -169
  460. package/src/headers/16/crypto/crypto_groups.h +0 -415
  461. package/src/headers/16/crypto/crypto_hash.h +0 -89
  462. package/src/headers/16/crypto/crypto_hkdf.h +0 -66
  463. package/src/headers/16/crypto/crypto_hmac.h +0 -94
  464. package/src/headers/16/crypto/crypto_keygen.h +0 -301
  465. package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
  466. package/src/headers/16/crypto/crypto_random.h +0 -130
  467. package/src/headers/16/crypto/crypto_rsa.h +0 -141
  468. package/src/headers/16/crypto/crypto_scrypt.h +0 -87
  469. package/src/headers/16/crypto/crypto_sig.h +0 -167
  470. package/src/headers/16/crypto/crypto_spkac.h +0 -20
  471. package/src/headers/16/crypto/crypto_timing.h +0 -20
  472. package/src/headers/16/crypto/crypto_x509.h +0 -141
  473. package/src/headers/16/env.h +0 -1629
  474. package/src/headers/16/histogram.h +0 -216
  475. package/src/headers/16/js_native_api.h +0 -561
  476. package/src/headers/16/js_native_api_v8.h +0 -451
  477. package/src/headers/16/node.d +0 -315
  478. package/src/headers/16/node.stp +0 -146
  479. package/src/headers/16/node_api.h +0 -275
  480. package/src/headers/16/node_api_internals.h +0 -30
  481. package/src/headers/16/node_binding.h +0 -99
  482. package/src/headers/16/node_buffer.h +0 -92
  483. package/src/headers/16/node_constants.h +0 -84
  484. package/src/headers/16/node_context_data.h +0 -44
  485. package/src/headers/16/node_contextify.h +0 -196
  486. package/src/headers/16/node_dtrace.h +0 -86
  487. package/src/headers/16/node_external_reference.h +0 -129
  488. package/src/headers/16/node_main_instance.h +0 -103
  489. package/src/headers/16/node_native_module.h +0 -101
  490. package/src/headers/16/node_native_module_env.h +0 -68
  491. package/src/headers/16/node_platform.h +0 -192
  492. package/src/headers/16/node_process.h +0 -43
  493. package/src/headers/16/node_provider.d +0 -80
  494. package/src/headers/16/node_snapshotable.h +0 -137
  495. package/src/headers/16/node_union_bytes.h +0 -103
  496. package/src/headers/16/node_url.h +0 -205
  497. package/src/headers/16/node_v8.h +0 -41
  498. package/src/headers/16/node_v8_platform-inl.h +0 -194
  499. package/src/headers/16/node_wasi.h +0 -108
  500. package/src/headers/16/node_watchdog.h +0 -152
  501. package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
  502. package/src/headers/16/node_win32_etw_provider.h +0 -99
  503. package/src/headers/16/spawn_sync.h +0 -242
  504. package/src/headers/16/string_decoder-inl.h +0 -37
  505. package/src/headers/16/string_search.h +0 -638
  506. package/src/headers/16/threadpoolwork-inl.h +0 -57
  507. package/src/headers/16/tracing/node_trace_buffer.h +0 -83
  508. package/src/headers/16/tracing/node_trace_writer.h +0 -75
  509. package/src/headers/16/tracing/trace_event.h +0 -720
  510. package/src/headers/16/tracing/traced_value.h +0 -70
  511. package/src/headers/16/v8abbr.h +0 -123
  512. package/src/headers/16/v8ustack.d +0 -695
  513. package/src/headers/18/aliased_buffer.h +0 -315
  514. package/src/headers/18/aliased_struct-inl.h +0 -54
  515. package/src/headers/18/aliased_struct.h +0 -63
  516. package/src/headers/18/base64-inl.h +0 -189
  517. package/src/headers/18/base64.h +0 -69
  518. package/src/headers/18/connect_wrap.h +0 -26
  519. package/src/headers/18/connection_wrap.h +0 -30
  520. package/src/headers/18/crypto/crypto_aes.h +0 -89
  521. package/src/headers/18/crypto/crypto_bio.h +0 -194
  522. package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
  523. package/src/headers/18/crypto/crypto_common.h +0 -151
  524. package/src/headers/18/crypto/crypto_groups.h +0 -415
  525. package/src/headers/18/crypto/crypto_x509.h +0 -143
  526. package/src/headers/18/debug_utils-inl.h +0 -223
  527. package/src/headers/18/diagnosticfilename-inl.h +0 -33
  528. package/src/headers/18/env-inl.h +0 -1308
  529. package/src/headers/18/env.h +0 -1667
  530. package/src/headers/18/inspector_io.h +0 -78
  531. package/src/headers/18/inspector_socket.h +0 -60
  532. package/src/headers/18/inspector_socket_server.h +0 -110
  533. package/src/headers/18/js_stream.h +0 -52
  534. package/src/headers/18/memory_tracker.h +0 -284
  535. package/src/headers/18/module_wrap.h +0 -116
  536. package/src/headers/18/node_binding.h +0 -99
  537. package/src/headers/18/node_context_data.h +0 -44
  538. package/src/headers/18/node_contextify.h +0 -196
  539. package/src/headers/18/node_dir.h +0 -52
  540. package/src/headers/18/node_dtrace.h +0 -86
  541. package/src/headers/18/node_http2_state.h +0 -149
  542. package/src/headers/18/node_mem-inl.h +0 -112
  543. package/src/headers/18/node_native_module.h +0 -109
  544. package/src/headers/18/node_native_module_env.h +0 -71
  545. package/src/headers/18/node_object_wrap.h +0 -132
  546. package/src/headers/18/node_snapshot_builder.h +0 -43
  547. package/src/headers/18/node_snapshotable.h +0 -130
  548. package/src/headers/18/node_union_bytes.h +0 -103
  549. package/src/headers/18/node_url.h +0 -205
  550. package/src/headers/18/node_v8.h +0 -41
  551. package/src/headers/18/node_wasi.h +0 -108
  552. package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
  553. package/src/headers/18/node_win32_etw_provider.h +0 -99
  554. package/src/headers/18/string_search.h +0 -638
  555. package/src/headers/18/tracing/node_trace_buffer.h +0 -83
  556. package/src/headers/18/tracing/node_trace_writer.h +0 -75
  557. package/src/headers/18/tracing/trace_event_common.h +0 -1109
  558. package/src/headers/18/tracing/traced_value.h +0 -70
  559. package/src/headers/18/v8abbr.h +0 -123
  560. /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
  561. /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
  562. /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
  563. /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
  564. /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
  565. /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
  566. /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
  567. /package/src/headers/{14 → 22}/inspector_io.h +0 -0
  568. /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
  569. /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
  570. /package/src/headers/{14 → 22}/js_stream.h +0 -0
  571. /package/src/headers/{14 → 22}/node_dir.h +0 -0
  572. /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
  573. /package/src/headers/{16 → 22}/node_mem.h +0 -0
  574. /package/src/headers/{16 → 22}/node_mutex.h +0 -0
  575. /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
  576. /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
  577. /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
  578. /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
  579. /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
  580. /package/src/headers/{18 → 22}/req_wrap.h +0 -0
  581. /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
  582. /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
  583. /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
  584. /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
  585. /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
  586. /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
  587. /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
  588. /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
  589. /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
  590. /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
  591. /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
  592. /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
  593. /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
  594. /package/src/headers/{16 → 24}/inspector_io.h +0 -0
  595. /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
  596. /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
  597. /package/src/headers/{16 → 24}/js_stream.h +0 -0
  598. /package/src/headers/{16 → 24}/node_dir.h +0 -0
  599. /package/src/headers/{18 → 24}/node_mem.h +0 -0
  600. /package/src/headers/{18 → 24}/node_mutex.h +0 -0
  601. /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
  602. /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
  603. /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
  604. /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
  605. /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
  606. /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
@@ -3,40 +3,26 @@
3
3
 
4
4
  #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
5
5
 
6
- #include "env.h"
7
6
  #include "async_wrap.h"
8
- #include "allocated_buffer.h"
7
+ #include "env.h"
9
8
  #include "node_errors.h"
9
+ #include "node_external_reference.h"
10
10
  #include "node_internals.h"
11
+ #include "string_bytes.h"
11
12
  #include "util.h"
12
13
  #include "v8.h"
13
- #include "string_bytes.h"
14
14
 
15
- #include <openssl/err.h>
16
- #include <openssl/evp.h>
17
- #include <openssl/ec.h>
18
- #include <openssl/kdf.h>
19
- #include <openssl/rsa.h>
20
- #include <openssl/dsa.h>
21
- #include <openssl/ssl.h>
22
- #ifndef OPENSSL_NO_ENGINE
23
- # include <openssl/engine.h>
24
- #endif // !OPENSSL_NO_ENGINE
25
- // The FIPS-related functions are only available
26
- // when the OpenSSL itself was compiled with FIPS support.
27
- #if defined(OPENSSL_FIPS) && OPENSSL_VERSION_MAJOR < 3
28
- # include <openssl/fips.h>
29
- #endif // OPENSSL_FIPS
15
+ #include "ncrypto.h"
30
16
 
31
17
  #include <algorithm>
18
+ #include <climits>
19
+ #include <cstdio>
32
20
  #include <memory>
21
+ #include <optional>
33
22
  #include <string>
34
23
  #include <vector>
35
- #include <climits>
36
- #include <cstdio>
37
24
 
38
- namespace node {
39
- namespace crypto {
25
+ namespace node::crypto {
40
26
  // Currently known sizes of commonly used OpenSSL struct sizes.
41
27
  // OpenSSL considers it's various structs to be opaque and the
42
28
  // sizes may change from one version of OpenSSL to another, so
@@ -51,92 +37,18 @@ constexpr size_t kSizeOf_EVP_PKEY = 72;
51
37
  constexpr size_t kSizeOf_EVP_PKEY_CTX = 80;
52
38
  constexpr size_t kSizeOf_HMAC_CTX = 32;
53
39
 
54
- // Define smart pointers for the most commonly used OpenSSL types:
55
- using X509Pointer = DeleteFnPtr<X509, X509_free>;
56
- using BIOPointer = DeleteFnPtr<BIO, BIO_free_all>;
57
- using SSLCtxPointer = DeleteFnPtr<SSL_CTX, SSL_CTX_free>;
58
- using SSLSessionPointer = DeleteFnPtr<SSL_SESSION, SSL_SESSION_free>;
59
- using SSLPointer = DeleteFnPtr<SSL, SSL_free>;
60
- using PKCS8Pointer = DeleteFnPtr<PKCS8_PRIV_KEY_INFO, PKCS8_PRIV_KEY_INFO_free>;
61
- using EVPKeyPointer = DeleteFnPtr<EVP_PKEY, EVP_PKEY_free>;
62
- using EVPKeyCtxPointer = DeleteFnPtr<EVP_PKEY_CTX, EVP_PKEY_CTX_free>;
63
- using EVPMDPointer = DeleteFnPtr<EVP_MD_CTX, EVP_MD_CTX_free>;
64
- using RSAPointer = DeleteFnPtr<RSA, RSA_free>;
65
- using ECPointer = DeleteFnPtr<EC_KEY, EC_KEY_free>;
66
- using BignumPointer = DeleteFnPtr<BIGNUM, BN_free>;
67
- using BignumCtxPointer = DeleteFnPtr<BN_CTX, BN_CTX_free>;
68
- using NetscapeSPKIPointer = DeleteFnPtr<NETSCAPE_SPKI, NETSCAPE_SPKI_free>;
69
- using ECGroupPointer = DeleteFnPtr<EC_GROUP, EC_GROUP_free>;
70
- using ECPointPointer = DeleteFnPtr<EC_POINT, EC_POINT_free>;
71
- using ECKeyPointer = DeleteFnPtr<EC_KEY, EC_KEY_free>;
72
- using DHPointer = DeleteFnPtr<DH, DH_free>;
73
- using ECDSASigPointer = DeleteFnPtr<ECDSA_SIG, ECDSA_SIG_free>;
74
- using HMACCtxPointer = DeleteFnPtr<HMAC_CTX, HMAC_CTX_free>;
75
- using CipherCtxPointer = DeleteFnPtr<EVP_CIPHER_CTX, EVP_CIPHER_CTX_free>;
76
- using RsaPointer = DeleteFnPtr<RSA, RSA_free>;
77
- using DsaPointer = DeleteFnPtr<DSA, DSA_free>;
78
- using DsaSigPointer = DeleteFnPtr<DSA_SIG, DSA_SIG_free>;
79
-
80
- // Our custom implementation of the certificate verify callback
81
- // used when establishing a TLS handshake. Because we cannot perform
82
- // I/O quickly enough with X509_STORE_CTX_ APIs in this callback,
83
- // we ignore preverify_ok errors here and let the handshake continue.
84
- // In other words, this VerifyCallback is a non-op. It is imperative
85
- // that the user user Connection::VerifyError after the `secure`
86
- // callback has been made.
87
- extern int VerifyCallback(int preverify_ok, X509_STORE_CTX* ctx);
88
-
89
40
  bool ProcessFipsOptions();
90
41
 
42
+ bool InitCryptoOnce(v8::Isolate* isolate);
91
43
  void InitCryptoOnce();
92
44
 
93
45
  void InitCrypto(v8::Local<v8::Object> target);
94
46
 
95
- extern void UseExtraCaCerts(const std::string& file);
96
-
97
- // Forcibly clear OpenSSL's error stack on return. This stops stale errors
98
- // from popping up later in the lifecycle of crypto operations where they
99
- // would cause spurious failures. It's a rather blunt method, though.
100
- // ERR_clear_error() isn't necessarily cheap either.
101
- struct ClearErrorOnReturn {
102
- ~ClearErrorOnReturn() { ERR_clear_error(); }
103
- };
104
-
105
- // Pop errors from OpenSSL's error stack that were added
106
- // between when this was constructed and destructed.
107
- struct MarkPopErrorOnReturn {
108
- MarkPopErrorOnReturn() { ERR_set_mark(); }
109
- ~MarkPopErrorOnReturn() { ERR_pop_to_mark(); }
110
- };
111
-
112
- // Ensure that OpenSSL has enough entropy (at least 256 bits) for its PRNG.
113
- // The entropy pool starts out empty and needs to fill up before the PRNG
114
- // can be used securely. Once the pool is filled, it never dries up again;
115
- // its contents is stirred and reused when necessary.
116
- //
117
- // OpenSSL normally fills the pool automatically but not when someone starts
118
- // generating random numbers before the pool is full: in that case OpenSSL
119
- // keeps lowering the entropy estimate to thwart attackers trying to guess
120
- // the initial state of the PRNG.
121
- //
122
- // When that happens, we will have to wait until enough entropy is available.
123
- // That should normally never take longer than a few milliseconds.
124
- //
125
- // OpenSSL draws from /dev/random and /dev/urandom. While /dev/random may
126
- // block pending "true" randomness, /dev/urandom is a CSPRNG that doesn't
127
- // block under normal circumstances.
128
- //
129
- // The only time when /dev/urandom may conceivably block is right after boot,
130
- // when the whole system is still low on entropy. That's not something we can
131
- // do anything about.
132
- void CheckEntropy();
133
-
134
- // Generate length bytes of random data. If this returns false, the data
135
- // may not be truly random but it's still generally good enough.
136
- bool EntropySource(unsigned char* buffer, size_t length);
47
+ extern void UseExtraCaCerts(std::string_view file);
48
+ extern int LoadSystemCACertificatesOffThread();
49
+ void CleanupCachedRootCertificates();
137
50
 
138
51
  int PasswordCallback(char* buf, int size, int rwflag, void* u);
139
-
140
52
  int NoPasswordCallback(char* buf, int size, int rwflag, void* u);
141
53
 
142
54
  // Decode is used by the various stream-based crypto utilities to decode
@@ -146,7 +58,7 @@ void Decode(const v8::FunctionCallbackInfo<v8::Value>& args,
146
58
  void (*callback)(T*, const v8::FunctionCallbackInfo<v8::Value>&,
147
59
  const char*, size_t)) {
148
60
  T* ctx;
149
- ASSIGN_OR_RETURN_UNWRAP(&ctx, args.Holder());
61
+ ASSIGN_OR_RETURN_UNWRAP(&ctx, args.This());
150
62
 
151
63
  if (args[0]->IsString()) {
152
64
  StringBytes::InlineDecoder decoder;
@@ -175,6 +87,21 @@ enum class NodeCryptoError {
175
87
  #undef V
176
88
  };
177
89
 
90
+ template <typename... Args>
91
+ std::string getNodeCryptoErrorString(const NodeCryptoError error,
92
+ Args&&... args) {
93
+ const char* error_string = nullptr;
94
+ switch (error) {
95
+ #define V(CODE, DESCRIPTION) \
96
+ case NodeCryptoError::CODE: \
97
+ error_string = DESCRIPTION; \
98
+ break;
99
+ NODE_CRYPTO_ERROR_CODES_MAP(V)
100
+ #undef V
101
+ }
102
+ return SPrintF(error_string, std::forward<Args>(args)...);
103
+ }
104
+
178
105
  // Utility struct used to harvest error information from openssl's error stack
179
106
  struct CryptoErrorStore final : public MemoryRetainer {
180
107
  public:
@@ -210,6 +137,9 @@ void CryptoErrorStore::Insert(const NodeCryptoError error, Args&&... args) {
210
137
  std::forward<Args>(args)...));
211
138
  }
212
139
 
140
+ v8::MaybeLocal<v8::Value> cryptoErrorListToException(
141
+ Environment* env, const ncrypto::CryptoErrorList& errors);
142
+
213
143
  template <typename T>
214
144
  T* MallocOpenSSL(size_t count) {
215
145
  void* mem = OPENSSL_malloc(MultiplyWithOverflowCheck(count, sizeof(T)));
@@ -217,16 +147,9 @@ T* MallocOpenSSL(size_t count) {
217
147
  return static_cast<T*>(mem);
218
148
  }
219
149
 
220
- template <typename T>
221
- T* ReallocOpenSSL(T* buf, size_t count) {
222
- void* mem = OPENSSL_realloc(buf, MultiplyWithOverflowCheck(count, sizeof(T)));
223
- CHECK_IMPLIES(mem == nullptr, count == 0);
224
- return static_cast<T*>(mem);
225
- }
226
-
227
150
  // A helper class representing a read-only byte array. When deallocated, its
228
151
  // contents are zeroed.
229
- class ByteSource {
152
+ class ByteSource final {
230
153
  public:
231
154
  ByteSource() = default;
232
155
  ByteSource(ByteSource&& other) noexcept;
@@ -234,42 +157,49 @@ class ByteSource {
234
157
 
235
158
  ByteSource& operator=(ByteSource&& other) noexcept;
236
159
 
237
- const char* get() const;
160
+ ByteSource(const ByteSource&) = delete;
161
+ ByteSource& operator=(const ByteSource&) = delete;
238
162
 
239
- template <typename T>
240
- const T* data() const { return reinterpret_cast<const T*>(get()); }
163
+ template <typename T = void>
164
+ inline const T* data() const {
165
+ return reinterpret_cast<const T*>(data_);
166
+ }
241
167
 
242
- size_t size() const;
168
+ template <typename T = void>
169
+ operator ncrypto::Buffer<const T>() const {
170
+ return ncrypto::Buffer<const T>{
171
+ .data = data<T>(),
172
+ .len = size(),
173
+ };
174
+ }
175
+
176
+ inline size_t size() const { return size_; }
243
177
 
244
- operator bool() const { return data_ != nullptr; }
178
+ inline bool empty() const { return size_ == 0; }
245
179
 
246
- BignumPointer ToBN() const {
247
- return BignumPointer(BN_bin2bn(
248
- reinterpret_cast<const unsigned char*>(get()),
249
- size(),
250
- nullptr));
180
+ inline operator bool() const { return data_ != nullptr; }
181
+
182
+ inline ncrypto::BignumPointer ToBN() const {
183
+ return ncrypto::BignumPointer(data<unsigned char>(), size());
251
184
  }
252
185
 
253
186
  // Creates a v8::BackingStore that takes over responsibility for
254
187
  // any allocated data. The ByteSource will be reset with size = 0
255
188
  // after being called.
256
- std::unique_ptr<v8::BackingStore> ReleaseToBackingStore();
189
+ std::unique_ptr<v8::BackingStore> ReleaseToBackingStore(Environment* env);
257
190
 
258
191
  v8::Local<v8::ArrayBuffer> ToArrayBuffer(Environment* env);
259
192
 
260
- void reset();
193
+ v8::MaybeLocal<v8::Uint8Array> ToBuffer(Environment* env);
194
+
195
+ static ByteSource Allocated(void* data, size_t size);
261
196
 
262
- // Allows an Allocated ByteSource to be truncated.
263
- void Resize(size_t newsize) {
264
- CHECK_LE(newsize, size_);
265
- CHECK_NOT_NULL(allocated_data_);
266
- char* new_data_ = ReallocOpenSSL<char>(allocated_data_, newsize);
267
- data_ = allocated_data_ = new_data_;
268
- size_ = newsize;
197
+ template <typename T>
198
+ static ByteSource Allocated(const ncrypto::Buffer<T>& buffer) {
199
+ return Allocated(buffer.data, buffer.len);
269
200
  }
270
201
 
271
- static ByteSource Allocated(char* data, size_t size);
272
- static ByteSource Foreign(const char* data, size_t size);
202
+ static ByteSource Foreign(const void* data, size_t size);
273
203
 
274
204
  static ByteSource FromEncodedString(Environment* env,
275
205
  v8::Local<v8::String> value,
@@ -285,25 +215,23 @@ class ByteSource {
285
215
  static ByteSource FromBuffer(v8::Local<v8::Value> buffer,
286
216
  bool ntc = false);
287
217
 
288
- static ByteSource FromBIO(const BIOPointer& bio);
218
+ static ByteSource FromBIO(const ncrypto::BIOPointer& bio);
289
219
 
290
220
  static ByteSource NullTerminatedCopy(Environment* env,
291
221
  v8::Local<v8::Value> value);
292
222
 
293
223
  static ByteSource FromSymmetricKeyObjectHandle(v8::Local<v8::Value> handle);
294
224
 
295
- ByteSource(const ByteSource&) = delete;
296
- ByteSource& operator=(const ByteSource&) = delete;
297
-
298
225
  static ByteSource FromSecretKeyBytes(
299
226
  Environment* env, v8::Local<v8::Value> value);
300
227
 
301
228
  private:
302
- const char* data_ = nullptr;
303
- char* allocated_data_ = nullptr;
229
+ const void* data_ = nullptr;
230
+ void* allocated_data_ = nullptr;
304
231
  size_t size_ = 0;
305
232
 
306
- ByteSource(const char* data, char* allocated_data, size_t size);
233
+ ByteSource(const void* data, void* allocated_data, size_t size)
234
+ : data_(data), allocated_data_(allocated_data), size_(size) {}
307
235
  };
308
236
 
309
237
  enum CryptoJobMode {
@@ -318,14 +246,13 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
318
246
  public:
319
247
  using AdditionalParams = typename CryptoJobTraits::AdditionalParameters;
320
248
 
321
- explicit CryptoJob(
322
- Environment* env,
323
- v8::Local<v8::Object> object,
324
- AsyncWrap::ProviderType type,
325
- CryptoJobMode mode,
326
- AdditionalParams&& params)
249
+ explicit CryptoJob(Environment* env,
250
+ v8::Local<v8::Object> object,
251
+ AsyncWrap::ProviderType type,
252
+ CryptoJobMode mode,
253
+ AdditionalParams&& params)
327
254
  : AsyncWrap(env, object, type),
328
- ThreadPoolWork(env),
255
+ ThreadPoolWork(env, "crypto"),
329
256
  mode_(mode),
330
257
  params_(std::move(params)) {
331
258
  // If the CryptoJob is async, then the instance will be
@@ -352,31 +279,31 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
352
279
  v8::HandleScope handle_scope(env->isolate());
353
280
  v8::Context::Scope context_scope(env->context());
354
281
 
355
- // TODO(tniessen): Remove the exception handling logic here as soon as we
356
- // can verify that no code path in ToResult will ever throw an exception.
357
282
  v8::Local<v8::Value> exception;
358
283
  v8::Local<v8::Value> args[2];
359
284
  {
360
285
  node::errors::TryCatchScope try_catch(env);
361
- v8::Maybe<bool> ret = ptr->ToResult(&args[0], &args[1]);
362
- if (!ret.IsJust()) {
286
+ // If ToResult returns Nothing, then an exception should have been
287
+ // thrown and we should have caught it. Otherwise, args[0] and args[1]
288
+ // both should have been set to a value, even if the value is undefined.
289
+ if (ptr->ToResult(&args[0], &args[1]).IsNothing()) {
363
290
  CHECK(try_catch.HasCaught());
291
+ CHECK(try_catch.CanContinue());
364
292
  exception = try_catch.Exception();
365
- } else if (!ret.FromJust()) {
366
- return;
367
293
  }
368
294
  }
369
295
 
370
- if (exception.IsEmpty()) {
371
- ptr->MakeCallback(env->ondone_string(), arraysize(args), args);
372
- } else {
296
+ if (!exception.IsEmpty()) {
373
297
  ptr->MakeCallback(env->ondone_string(), 1, &exception);
298
+ } else {
299
+ CHECK(!args[0].IsEmpty());
300
+ CHECK(!args[1].IsEmpty());
301
+ ptr->MakeCallback(env->ondone_string(), arraysize(args), args);
374
302
  }
375
303
  }
376
304
 
377
- virtual v8::Maybe<bool> ToResult(
378
- v8::Local<v8::Value>* err,
379
- v8::Local<v8::Value>* result) = 0;
305
+ virtual v8::Maybe<void> ToResult(v8::Local<v8::Value>* err,
306
+ v8::Local<v8::Value>* result) = 0;
380
307
 
381
308
  CryptoJobMode mode() const { return mode_; }
382
309
 
@@ -384,7 +311,7 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
384
311
 
385
312
  AdditionalParams* params() { return &params_; }
386
313
 
387
- std::string MemoryInfoName() const override {
314
+ const char* MemoryInfoName() const override {
388
315
  return CryptoJobTraits::JobName;
389
316
  }
390
317
 
@@ -397,15 +324,16 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
397
324
  Environment* env = Environment::GetCurrent(args);
398
325
 
399
326
  CryptoJob<CryptoJobTraits>* job;
400
- ASSIGN_OR_RETURN_UNWRAP(&job, args.Holder());
327
+ ASSIGN_OR_RETURN_UNWRAP(&job, args.This());
401
328
  if (job->mode() == kCryptoJobAsync)
402
329
  return job->ScheduleWork();
403
330
 
404
331
  v8::Local<v8::Value> ret[2];
405
332
  env->PrintSyncTrace();
406
333
  job->DoThreadPoolWork();
407
- v8::Maybe<bool> result = job->ToResult(&ret[0], &ret[1]);
408
- if (result.IsJust() && result.FromJust()) {
334
+ if (job->ToResult(&ret[0], &ret[1]).IsJust()) {
335
+ CHECK(!ret[0].IsEmpty());
336
+ CHECK(!ret[1].IsEmpty());
409
337
  args.GetReturnValue().Set(
410
338
  v8::Array::New(env->isolate(), ret, arraysize(ret)));
411
339
  }
@@ -415,12 +343,21 @@ class CryptoJob : public AsyncWrap, public ThreadPoolWork {
415
343
  v8::FunctionCallback new_fn,
416
344
  Environment* env,
417
345
  v8::Local<v8::Object> target) {
418
- v8::Local<v8::FunctionTemplate> job = env->NewFunctionTemplate(new_fn);
346
+ v8::Isolate* isolate = env->isolate();
347
+ v8::HandleScope scope(isolate);
348
+ v8::Local<v8::Context> context = env->context();
349
+ v8::Local<v8::FunctionTemplate> job = NewFunctionTemplate(isolate, new_fn);
419
350
  job->Inherit(AsyncWrap::GetConstructorTemplate(env));
420
351
  job->InstanceTemplate()->SetInternalFieldCount(
421
352
  AsyncWrap::kInternalFieldCount);
422
- env->SetProtoMethod(job, "run", Run);
423
- env->SetConstructorFunction(target, CryptoJobTraits::JobName, job);
353
+ SetProtoMethod(isolate, job, "run", Run);
354
+ SetConstructorFunction(context, target, CryptoJobTraits::JobName, job);
355
+ }
356
+
357
+ static void RegisterExternalReferences(v8::FunctionCallback new_fn,
358
+ ExternalReferenceRegistry* registry) {
359
+ registry->Register(new_fn);
360
+ registry->Register(Run);
424
361
  }
425
362
 
426
363
  private:
@@ -457,6 +394,10 @@ class DeriveBitsJob final : public CryptoJob<DeriveBitsTraits> {
457
394
  CryptoJob<DeriveBitsTraits>::Initialize(New, env, target);
458
395
  }
459
396
 
397
+ static void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
398
+ CryptoJob<DeriveBitsTraits>::RegisterExternalReferences(New, registry);
399
+ }
400
+
460
401
  DeriveBitsJob(
461
402
  Environment* env,
462
403
  v8::Local<v8::Object> object,
@@ -470,9 +411,11 @@ class DeriveBitsJob final : public CryptoJob<DeriveBitsTraits> {
470
411
  std::move(params)) {}
471
412
 
472
413
  void DoThreadPoolWork() override {
473
- if (!DeriveBitsTraits::DeriveBits(
474
- AsyncWrap::env(),
475
- *CryptoJob<DeriveBitsTraits>::params(), &out_)) {
414
+ ncrypto::ClearErrorOnReturn clear_error_on_return;
415
+ if (!DeriveBitsTraits::DeriveBits(AsyncWrap::env(),
416
+ *CryptoJob<DeriveBitsTraits>::params(),
417
+ &out_,
418
+ this->mode())) {
476
419
  CryptoErrorStore* errors = CryptoJob<DeriveBitsTraits>::errors();
477
420
  errors->Capture();
478
421
  if (errors->Empty())
@@ -482,26 +425,29 @@ class DeriveBitsJob final : public CryptoJob<DeriveBitsTraits> {
482
425
  success_ = true;
483
426
  }
484
427
 
485
- v8::Maybe<bool> ToResult(
486
- v8::Local<v8::Value>* err,
487
- v8::Local<v8::Value>* result) override {
428
+ v8::Maybe<void> ToResult(v8::Local<v8::Value>* err,
429
+ v8::Local<v8::Value>* result) override {
488
430
  Environment* env = AsyncWrap::env();
489
431
  CryptoErrorStore* errors = CryptoJob<DeriveBitsTraits>::errors();
490
432
  if (success_) {
491
433
  CHECK(errors->Empty());
492
434
  *err = v8::Undefined(env->isolate());
493
- return DeriveBitsTraits::EncodeOutput(
494
- env,
495
- *CryptoJob<DeriveBitsTraits>::params(),
496
- &out_,
497
- result);
435
+ if (!DeriveBitsTraits::EncodeOutput(
436
+ env, *CryptoJob<DeriveBitsTraits>::params(), &out_)
437
+ .ToLocal(result)) {
438
+ return v8::Nothing<void>();
439
+ }
440
+ } else {
441
+ if (errors->Empty()) errors->Capture();
442
+ CHECK(!errors->Empty());
443
+ *result = v8::Undefined(env->isolate());
444
+ if (!errors->ToException(env).ToLocal(err)) {
445
+ return v8::Nothing<void>();
446
+ }
498
447
  }
499
-
500
- if (errors->Empty())
501
- errors->Capture();
502
- CHECK(!errors->Empty());
503
- *result = v8::Undefined(env->isolate());
504
- return v8::Just(errors->ToException(env).ToLocal(err));
448
+ CHECK(!result->IsEmpty());
449
+ CHECK(!err->IsEmpty());
450
+ return v8::JustVoid();
505
451
  }
506
452
 
507
453
  SET_SELF_SIZE(DeriveBitsJob)
@@ -519,122 +465,41 @@ void ThrowCryptoError(Environment* env,
519
465
  unsigned long err, // NOLINT(runtime/int)
520
466
  const char* message = nullptr);
521
467
 
522
- #ifndef OPENSSL_NO_ENGINE
523
- struct EnginePointer {
524
- ENGINE* engine = nullptr;
525
- bool finish_on_exit = false;
526
-
527
- inline EnginePointer() = default;
528
-
529
- inline explicit EnginePointer(ENGINE* engine_, bool finish_on_exit_ = false)
530
- : engine(engine_),
531
- finish_on_exit(finish_on_exit_) {}
532
-
533
- inline EnginePointer(EnginePointer&& other) noexcept
534
- : engine(other.engine),
535
- finish_on_exit(other.finish_on_exit) {
536
- other.release();
537
- }
538
-
539
- inline ~EnginePointer() { reset(); }
540
-
541
- inline EnginePointer& operator=(EnginePointer&& other) noexcept {
542
- if (this == &other) return *this;
543
- this->~EnginePointer();
544
- return *new (this) EnginePointer(std::move(other));
545
- }
546
-
547
- inline operator bool() const { return engine != nullptr; }
548
-
549
- inline ENGINE* get() { return engine; }
550
-
551
- inline void reset(ENGINE* engine_ = nullptr, bool finish_on_exit_ = false) {
552
- if (engine != nullptr) {
553
- if (finish_on_exit)
554
- ENGINE_finish(engine);
555
- ENGINE_free(engine);
556
- }
557
- engine = engine_;
558
- finish_on_exit = finish_on_exit_;
559
- }
560
-
561
- inline ENGINE* release() {
562
- ENGINE* ret = engine;
563
- engine = nullptr;
564
- finish_on_exit = false;
565
- return ret;
566
- }
567
- };
568
-
569
- EnginePointer LoadEngineById(const char* id, CryptoErrorStore* errors);
570
-
571
- bool SetEngine(
572
- const char* id,
573
- uint32_t flags,
574
- CryptoErrorStore* errors = nullptr);
575
-
576
- void SetEngine(const v8::FunctionCallbackInfo<v8::Value>& args);
577
- #endif // !OPENSSL_NO_ENGINE
578
-
579
- void GetFipsCrypto(const v8::FunctionCallbackInfo<v8::Value>& args);
580
-
581
- void SetFipsCrypto(const v8::FunctionCallbackInfo<v8::Value>& args);
582
-
583
- void TestFipsCrypto(const v8::FunctionCallbackInfo<v8::Value>& args);
584
-
585
- class CipherPushContext {
586
- public:
587
- inline explicit CipherPushContext(Environment* env) : env_(env) {}
588
-
589
- inline void push_back(const char* str) {
590
- list_.emplace_back(OneByteString(env_->isolate(), str));
591
- }
592
-
593
- inline v8::Local<v8::Array> ToJSArray() {
594
- return v8::Array::New(env_->isolate(), list_.data(), list_.size());
595
- }
596
-
597
- private:
598
- std::vector<v8::Local<v8::Value>> list_;
599
- Environment* env_;
600
- };
601
-
602
- template <class TypeName>
603
- void array_push_back(const TypeName* md,
604
- const char* from,
605
- const char* to,
606
- void* arg) {
607
- static_cast<CipherPushContext*>(arg)->push_back(from);
608
- }
609
-
610
- inline bool IsAnyByteSource(v8::Local<v8::Value> arg) {
468
+ // WebIDL AllowSharedBufferSource.
469
+ inline bool IsAnyBufferSource(v8::Local<v8::Value> arg) {
611
470
  return arg->IsArrayBufferView() ||
612
471
  arg->IsArrayBuffer() ||
613
472
  arg->IsSharedArrayBuffer();
614
473
  }
615
474
 
616
475
  template <typename T>
617
- class ArrayBufferOrViewContents {
476
+ class ArrayBufferOrViewContents final {
618
477
  public:
619
478
  ArrayBufferOrViewContents() = default;
479
+ ArrayBufferOrViewContents(const ArrayBufferOrViewContents&) = delete;
480
+ void operator=(const ArrayBufferOrViewContents&) = delete;
620
481
 
621
482
  inline explicit ArrayBufferOrViewContents(v8::Local<v8::Value> buf) {
622
- CHECK(IsAnyByteSource(buf));
483
+ if (buf.IsEmpty()) {
484
+ return;
485
+ }
486
+
487
+ CHECK(IsAnyBufferSource(buf));
623
488
  if (buf->IsArrayBufferView()) {
624
489
  auto view = buf.As<v8::ArrayBufferView>();
625
490
  offset_ = view->ByteOffset();
626
491
  length_ = view->ByteLength();
627
- store_ = view->Buffer()->GetBackingStore();
492
+ data_ = view->Buffer()->Data();
628
493
  } else if (buf->IsArrayBuffer()) {
629
494
  auto ab = buf.As<v8::ArrayBuffer>();
630
495
  offset_ = 0;
631
496
  length_ = ab->ByteLength();
632
- store_ = ab->GetBackingStore();
497
+ data_ = ab->Data();
633
498
  } else {
634
499
  auto sab = buf.As<v8::SharedArrayBuffer>();
635
500
  offset_ = 0;
636
501
  length_ = sab->ByteLength();
637
- store_ = sab->GetBackingStore();
502
+ data_ = sab->Data();
638
503
  }
639
504
  }
640
505
 
@@ -642,22 +507,22 @@ class ArrayBufferOrViewContents {
642
507
  // Ideally, these would return nullptr if IsEmpty() or length_ is zero,
643
508
  // but some of the openssl API react badly if given a nullptr even when
644
509
  // length is zero, so we have to return something.
645
- if (size() == 0)
646
- return &buf;
647
- return reinterpret_cast<T*>(store_->Data()) + offset_;
510
+ if (empty()) return &buf;
511
+ return reinterpret_cast<T*>(data_) + offset_;
648
512
  }
649
513
 
650
514
  inline T* data() {
651
515
  // Ideally, these would return nullptr if IsEmpty() or length_ is zero,
652
516
  // but some of the openssl API react badly if given a nullptr even when
653
517
  // length is zero, so we have to return something.
654
- if (size() == 0)
655
- return &buf;
656
- return reinterpret_cast<T*>(store_->Data()) + offset_;
518
+ if (empty()) return &buf;
519
+ return reinterpret_cast<T*>(data_) + offset_;
657
520
  }
658
521
 
659
522
  inline size_t size() const { return length_; }
660
523
 
524
+ inline bool empty() const { return length_ == 0; }
525
+
661
526
  // In most cases, input buffer sizes passed in to openssl need to
662
527
  // be limited to <= INT_MAX. This utility method helps us check.
663
528
  inline bool CheckSizeInt32() { return size() <= INT_MAX; }
@@ -667,70 +532,67 @@ class ArrayBufferOrViewContents {
667
532
  }
668
533
 
669
534
  inline ByteSource ToCopy() const {
670
- if (size() == 0) return ByteSource();
671
- char* buf = MallocOpenSSL<char>(size());
672
- CHECK_NOT_NULL(buf);
673
- memcpy(buf, data(), size());
674
- return ByteSource::Allocated(buf, size());
535
+ if (empty()) return {};
536
+ auto buf = ncrypto::DataPointer::Alloc(size());
537
+ memcpy(buf.get(), data(), size());
538
+ return ByteSource::Allocated(buf.release());
675
539
  }
676
540
 
677
541
  inline ByteSource ToNullTerminatedCopy() const {
678
- if (size() == 0) return ByteSource();
679
- char* buf = MallocOpenSSL<char>(size() + 1);
680
- CHECK_NOT_NULL(buf);
681
- buf[size()] = 0;
682
- memcpy(buf, data(), size());
683
- return ByteSource::Allocated(buf, size());
542
+ if (empty()) return {};
543
+ auto buf = ncrypto::DataPointer::Alloc(size() + 1);
544
+ memcpy(buf.get(), data(), size());
545
+ static_cast<char*>(buf.get())[size()] = 0;
546
+ return ByteSource::Allocated(buf.release());
547
+ }
548
+
549
+ inline ncrypto::DataPointer ToDataPointer() const {
550
+ if (empty()) return {};
551
+ if (auto dp = ncrypto::DataPointer::Alloc(size())) {
552
+ memcpy(dp.get(), data(), size());
553
+ return dp;
554
+ }
555
+ return {};
684
556
  }
685
557
 
686
558
  template <typename M>
687
559
  void CopyTo(M* dest, size_t len) const {
688
560
  static_assert(sizeof(M) == 1, "sizeof(M) must equal 1");
689
561
  len = std::min(len, size());
690
- if (len > 0 && data() != nullptr)
562
+ if (len > 0 && data() != nullptr) {
691
563
  memcpy(dest, data(), len);
564
+ }
692
565
  }
693
566
 
694
567
  private:
695
568
  T buf = 0;
696
569
  size_t offset_ = 0;
697
570
  size_t length_ = 0;
698
- std::shared_ptr<v8::BackingStore> store_;
571
+ void* data_ = nullptr;
572
+
573
+ // Declaring operator new and delete as deleted is not spec compliant.
574
+ // Therefore declare them private instead to disable dynamic alloc
575
+ void* operator new(size_t);
576
+ void* operator new[](size_t);
577
+ void operator delete(void*);
578
+ void operator delete[](void*);
699
579
  };
700
580
 
701
- template <typename T>
702
- std::vector<T> CopyBuffer(const ArrayBufferOrViewContents<T>& buf) {
703
- std::vector<T> vec;
704
- vec->resize(buf.size());
705
- if (vec->size() > 0 && buf.data() != nullptr)
706
- memcpy(vec->data(), buf.data(), vec->size());
707
- return vec;
708
- }
709
-
710
- template <typename T>
711
- std::vector<T> CopyBuffer(v8::Local<v8::Value> buf) {
712
- return CopyBuffer(ArrayBufferOrViewContents<T>(buf));
713
- }
714
-
715
- v8::MaybeLocal<v8::Value> EncodeBignum(
716
- Environment* env,
717
- const BIGNUM* bn,
718
- int size,
719
- v8::Local<v8::Value>* error);
581
+ v8::MaybeLocal<v8::Value> EncodeBignum(Environment* env,
582
+ const BIGNUM* bn,
583
+ int size);
720
584
 
721
- v8::Maybe<bool> SetEncodedValue(
722
- Environment* env,
723
- v8::Local<v8::Object> target,
724
- v8::Local<v8::String> name,
725
- const BIGNUM* bn,
726
- int size = 0);
585
+ v8::Maybe<void> SetEncodedValue(Environment* env,
586
+ v8::Local<v8::Object> target,
587
+ v8::Local<v8::String> name,
588
+ const BIGNUM* bn,
589
+ int size = 0);
727
590
 
728
591
  namespace Util {
729
592
  void Initialize(Environment* env, v8::Local<v8::Object> target);
593
+ void RegisterExternalReferences(ExternalReferenceRegistry* registry);
730
594
  } // namespace Util
731
-
732
- } // namespace crypto
733
- } // namespace node
595
+ } // namespace node::crypto
734
596
 
735
597
  #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
736
598
  #endif // SRC_CRYPTO_CRYPTO_UTIL_H_