@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.
- package/binding.gyp +1 -1
- package/dist/bindings/cws_darwin_arm64_node115.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node127.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node137.node +0 -0
- package/dist/bindings/cws_linux_arm64_node115.node +0 -0
- package/dist/bindings/cws_linux_arm64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node115.node +0 -0
- package/dist/bindings/cws_linux_x64_node127.node +0 -0
- package/dist/bindings/cws_linux_x64_node137.node +0 -0
- package/dist/bindings/cws_win32_x64_node108.node +0 -0
- package/dist/bindings/cws_win32_x64_node115.node +0 -0
- package/dist/bindings/cws_win32_x64_node127.node +0 -0
- package/dist/bindings/cws_win32_x64_node83.node +0 -0
- package/dist/bindings/cws_win32_x64_node93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +13 -23
- package/src/Socket.h +0 -1
- package/src/headers/22/acorn_version.h +6 -0
- package/src/headers/22/aliased_buffer-inl.h +243 -0
- package/src/headers/22/aliased_buffer.h +206 -0
- package/src/headers/{18 → 22}/async_wrap-inl.h +8 -6
- package/src/headers/{18 → 22}/async_wrap.h +65 -59
- package/src/headers/{18 → 22}/base_object-inl.h +57 -117
- package/src/headers/{18 → 22}/base_object.h +58 -30
- package/src/headers/22/base_object_types.h +74 -0
- package/src/headers/22/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/22/blob_serializer_deserializer.h +132 -0
- package/src/headers/{16 → 22}/callback_queue.h +1 -0
- package/src/headers/{16 → 22}/cares_wrap.h +27 -20
- package/src/headers/22/cjs_module_lexer_version.h +6 -0
- package/src/headers/22/cleanup_queue-inl.h +62 -0
- package/src/headers/22/cleanup_queue.h +85 -0
- package/src/headers/22/compile_cache.h +104 -0
- package/src/headers/{18 → 22}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/{18 → 22}/crypto/crypto_context.h +31 -7
- package/src/headers/{18 → 22}/crypto/crypto_keys.h +118 -148
- package/src/headers/{18 → 22}/crypto/crypto_tls.h +20 -5
- package/src/headers/{18 → 22}/crypto/crypto_util.h +219 -263
- package/src/headers/22/crypto/ncrypto.h +752 -0
- package/src/headers/{16 → 22}/debug_utils-inl.h +15 -7
- package/src/headers/{18 → 22}/debug_utils.h +25 -19
- package/src/headers/22/encoding_binding.h +59 -0
- package/src/headers/{14 → 22}/env-inl.h +276 -409
- package/src/headers/22/env.h +1266 -0
- package/src/headers/22/env_properties.h +497 -0
- package/src/headers/{18 → 22}/handle_wrap.h +2 -0
- package/src/headers/{18 → 22}/histogram.h +88 -48
- package/src/headers/{16 → 22}/inspector_agent.h +17 -1
- package/src/headers/{16 → 22}/inspector_profiler.h +15 -13
- package/src/headers/22/js_native_api.h +619 -0
- package/src/headers/{18 → 22}/js_native_api_types.h +46 -1
- package/src/headers/22/js_native_api_v8.h +485 -0
- package/src/headers/{18 → 22}/js_native_api_v8_internals.h +6 -0
- package/src/headers/22/json_parser.h +40 -0
- package/src/headers/{16 → 22}/json_utils.h +19 -8
- package/src/headers/{18 → 22}/memory_tracker-inl.h +16 -13
- package/src/headers/{14 → 22}/memory_tracker.h +13 -8
- package/src/headers/{16 → 22}/module_wrap.h +49 -19
- package/src/headers/22/ncrypto/ncrypto.h +752 -0
- package/src/headers/{18 → 22}/node.h +465 -68
- package/src/headers/{18 → 22}/node_api.h +66 -81
- package/src/headers/{18 → 22}/node_api_internals.h +8 -4
- package/src/headers/{18 → 22}/node_api_types.h +5 -0
- package/src/headers/22/node_binding.h +154 -0
- package/src/headers/{18 → 22}/node_blob.h +46 -78
- package/src/headers/{18 → 22}/node_bob-inl.h +1 -2
- package/src/headers/{18 → 22}/node_bob.h +2 -6
- package/src/headers/{18 → 22}/node_buffer.h +1 -1
- package/src/headers/22/node_builtins.h +220 -0
- package/src/headers/{18 → 22}/node_constants.h +3 -5
- package/src/headers/22/node_context_data.h +168 -0
- package/src/headers/22/node_contextify.h +199 -0
- package/src/headers/{16 → 22}/node_crypto.h +1 -2
- package/src/headers/22/node_dotenv.h +45 -0
- package/src/headers/{18 → 22}/node_errors.h +86 -27
- package/src/headers/22/node_exit_code.h +54 -0
- package/src/headers/22/node_external_reference.h +249 -0
- package/src/headers/{18 → 22}/node_file-inl.h +127 -30
- package/src/headers/{16 → 22}/node_file.h +122 -11
- package/src/headers/{18 → 22}/node_http2.h +28 -11
- package/src/headers/{16 → 22}/node_http2_state.h +34 -25
- package/src/headers/{18 → 22}/node_http_common-inl.h +2 -1
- package/src/headers/{18 → 22}/node_http_common.h +56 -55
- package/src/headers/{16 → 22}/node_i18n.h +5 -18
- package/src/headers/{18 → 22}/node_internals.h +121 -59
- package/src/headers/{18 → 22}/node_main_instance.h +4 -31
- package/src/headers/{18 → 22}/node_messaging.h +27 -10
- package/src/headers/{18 → 22}/node_metadata.h +23 -1
- package/src/headers/{18 → 22}/node_options-inl.h +24 -11
- package/src/headers/{18 → 22}/node_options.h +124 -39
- package/src/headers/{18 → 22}/node_perf.h +0 -2
- package/src/headers/{18 → 22}/node_perf_common.h +20 -9
- package/src/headers/{18 → 22}/node_platform.h +11 -5
- package/src/headers/{18 → 22}/node_process.h +26 -14
- package/src/headers/22/node_realm-inl.h +145 -0
- package/src/headers/22/node_realm.h +184 -0
- package/src/headers/{16 → 22}/node_report.h +13 -17
- package/src/headers/{16 → 22}/node_revert.h +3 -3
- package/src/headers/{16 → 22}/node_root_certs.h +902 -461
- package/src/headers/22/node_sea.h +64 -0
- package/src/headers/22/node_shadow_realm.h +46 -0
- package/src/headers/22/node_snapshot_builder.h +57 -0
- package/src/headers/22/node_snapshotable.h +174 -0
- package/src/headers/{18 → 22}/node_sockaddr.h +2 -2
- package/src/headers/{16 → 22}/node_stat_watcher.h +2 -1
- package/src/headers/22/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/22/node_threadsafe_cow.h +105 -0
- package/src/headers/22/node_union_bytes.h +81 -0
- package/src/headers/22/node_url.h +96 -0
- package/src/headers/22/node_v8.h +77 -0
- package/src/headers/{14 → 22}/node_v8_platform-inl.h +17 -6
- package/src/headers/{16 → 22}/node_version.h +21 -9
- package/src/headers/22/node_wasi.h +185 -0
- package/src/headers/{14 → 22}/node_watchdog.h +2 -0
- package/src/headers/{18 → 22}/node_worker.h +7 -2
- package/src/headers/22/permission/child_process_permission.h +31 -0
- package/src/headers/22/permission/fs_permission.h +167 -0
- package/src/headers/22/permission/inspector_permission.h +31 -0
- package/src/headers/22/permission/permission.h +99 -0
- package/src/headers/22/permission/permission_base.h +60 -0
- package/src/headers/22/permission/wasi_permission.h +31 -0
- package/src/headers/22/permission/worker_permission.h +31 -0
- package/src/headers/{16 → 22}/req_wrap-inl.h +7 -6
- package/src/headers/{14 → 22}/spawn_sync.h +3 -3
- package/src/headers/{18 → 22}/stream_base-inl.h +0 -135
- package/src/headers/{18 → 22}/stream_base.h +35 -16
- package/src/headers/{18 → 22}/stream_pipe.h +3 -4
- package/src/headers/{16 → 22}/stream_wrap.h +2 -1
- package/src/headers/{18 → 22}/string_bytes.h +5 -14
- package/src/headers/{14 → 22}/string_decoder-inl.h +0 -6
- package/src/headers/{16 → 22}/string_decoder.h +0 -1
- package/src/headers/{18 → 22}/tcp_wrap.h +1 -1
- package/src/headers/{18 → 22}/threadpoolwork-inl.h +14 -1
- package/src/headers/22/timers.h +76 -0
- package/src/headers/{18 → 22}/tracing/trace_event.h +7 -5
- package/src/headers/{16 → 22}/udp_wrap.h +8 -5
- package/src/headers/22/undici_version.h +6 -0
- package/src/headers/{18 → 22}/util-inl.h +97 -127
- package/src/headers/{18 → 22}/util.h +293 -106
- package/src/headers/{18 → 22}/v8-fast-api-calls.h +103 -58
- package/src/headers/24/acorn_version.h +6 -0
- package/src/headers/24/addon_permission.h +31 -0
- package/src/headers/{16/tracing → 24}/agent.h +1 -1
- package/src/headers/24/aliased_buffer-inl.h +244 -0
- package/src/headers/24/aliased_buffer.h +206 -0
- package/src/headers/24/amaro_version.h +6 -0
- package/src/headers/24/application.h +165 -0
- package/src/headers/24/async_context_frame.h +33 -0
- package/src/headers/{14 → 24}/async_wrap-inl.h +8 -6
- package/src/headers/{16 → 24}/async_wrap.h +86 -88
- package/src/headers/{16 → 24}/base_object-inl.h +75 -119
- package/src/headers/{16 → 24}/base_object.h +84 -40
- package/src/headers/24/base_object_types.h +74 -0
- package/src/headers/24/bindingdata.h +272 -0
- package/src/headers/24/blob_serializer_deserializer-inl.h +385 -0
- package/src/headers/24/blob_serializer_deserializer.h +132 -0
- package/src/headers/{18 → 24}/callback_queue.h +1 -0
- package/src/headers/{18 → 24}/cares_wrap.h +68 -144
- package/src/headers/24/child_process_permission.h +31 -0
- package/src/headers/24/cid.h +127 -0
- package/src/headers/24/cjs_module_lexer_version.h +6 -0
- package/src/headers/24/cleanup_queue-inl.h +36 -0
- package/src/headers/24/cleanup_queue.h +79 -0
- package/src/headers/24/compile_cache.h +113 -0
- package/src/headers/24/cppgc_helpers-inl.h +65 -0
- package/src/headers/24/cppgc_helpers.h +162 -0
- package/src/headers/24/crypto/crypto_aes.h +97 -0
- package/src/headers/24/crypto/crypto_argon2.h +86 -0
- package/src/headers/{16 → 24}/crypto/crypto_bio.h +8 -9
- package/src/headers/24/crypto/crypto_chacha20_poly1305.h +64 -0
- package/src/headers/{18 → 24}/crypto/crypto_cipher.h +48 -58
- package/src/headers/{16 → 24}/crypto/crypto_clienthello-inl.h +2 -2
- package/src/headers/{16 → 24}/crypto/crypto_clienthello.h +1 -1
- package/src/headers/24/crypto/crypto_common.h +48 -0
- package/src/headers/{16 → 24}/crypto/crypto_context.h +46 -22
- package/src/headers/{18 → 24}/crypto/crypto_dh.h +27 -57
- package/src/headers/{18 → 24}/crypto/crypto_dsa.h +7 -34
- package/src/headers/{18 → 24}/crypto/crypto_ec.h +42 -49
- package/src/headers/{18 → 24}/crypto/crypto_hash.h +11 -11
- package/src/headers/{18 → 24}/crypto/crypto_hkdf.h +10 -14
- package/src/headers/{18 → 24}/crypto/crypto_hmac.h +11 -13
- package/src/headers/24/crypto/crypto_kem.h +113 -0
- package/src/headers/{18 → 24}/crypto/crypto_keygen.h +59 -74
- package/src/headers/{16 → 24}/crypto/crypto_keys.h +134 -154
- package/src/headers/24/crypto/crypto_ml_dsa.h +21 -0
- package/src/headers/{18 → 24}/crypto/crypto_pbkdf2.h +9 -11
- package/src/headers/{18 → 24}/crypto/crypto_random.h +28 -34
- package/src/headers/{18 → 24}/crypto/crypto_rsa.h +30 -35
- package/src/headers/{18 → 24}/crypto/crypto_scrypt.h +8 -10
- package/src/headers/{18 → 24}/crypto/crypto_sig.h +36 -48
- package/src/headers/{16 → 24}/crypto/crypto_tls.h +35 -18
- package/src/headers/{16 → 24}/crypto/crypto_util.h +183 -321
- package/src/headers/24/crypto/crypto_x509.h +140 -0
- package/src/headers/24/data.h +148 -0
- package/src/headers/{14 → 24}/debug_utils-inl.h +17 -8
- package/src/headers/{16 → 24}/debug_utils.h +31 -22
- package/src/headers/24/defs.h +254 -0
- package/src/headers/24/embedded_data.h +17 -0
- package/src/headers/24/encoding_binding.h +60 -0
- package/src/headers/24/endpoint.h +421 -0
- package/src/headers/{16 → 24}/env-inl.h +198 -540
- package/src/headers/24/env.h +1257 -0
- package/src/headers/24/env_properties.h +561 -0
- package/src/headers/24/fs_permission.h +167 -0
- package/src/headers/{16 → 24}/handle_wrap.h +4 -2
- package/src/headers/{16 → 24}/histogram-inl.h +34 -15
- package/src/headers/24/histogram.h +279 -0
- package/src/headers/24/http3.h +44 -0
- package/src/headers/{18 → 24}/inspector_agent.h +23 -2
- package/src/headers/24/inspector_permission.h +31 -0
- package/src/headers/{18 → 24}/inspector_profiler.h +15 -15
- package/src/headers/24/io_agent.h +30 -0
- package/src/headers/{18 → 24}/js_native_api.h +74 -30
- package/src/headers/{16 → 24}/js_native_api_types.h +61 -10
- package/src/headers/{18 → 24}/js_native_api_v8.h +205 -160
- package/src/headers/{16 → 24}/js_native_api_v8_internals.h +12 -6
- package/src/headers/24/json_parser.h +40 -0
- package/src/headers/{18 → 24}/json_utils.h +19 -8
- package/src/headers/24/logstream.h +81 -0
- package/src/headers/24/main_thread_interface.h +116 -0
- package/src/headers/{16 → 24}/memory_tracker-inl.h +115 -17
- package/src/headers/{16 → 24}/memory_tracker.h +58 -9
- package/src/headers/24/module_wrap.h +229 -0
- package/src/headers/24/ncrypto.h +1625 -0
- package/src/headers/24/network_agent.h +118 -0
- package/src/headers/24/network_inspector.h +45 -0
- package/src/headers/24/network_resource_manager.h +29 -0
- package/src/headers/{16 → 24}/node.h +560 -72
- package/src/headers/24/node_api.h +269 -0
- package/src/headers/24/node_api_internals.h +46 -0
- package/src/headers/{16 → 24}/node_api_types.h +13 -11
- package/src/headers/24/node_binding.h +163 -0
- package/src/headers/{16 → 24}/node_blob.h +46 -78
- package/src/headers/{16 → 24}/node_bob-inl.h +1 -2
- package/src/headers/{16 → 24}/node_bob.h +2 -6
- package/src/headers/{14 → 24}/node_buffer.h +1 -1
- package/src/headers/24/node_builtins.h +223 -0
- package/src/headers/24/node_config_file.h +65 -0
- package/src/headers/{14 → 24}/node_constants.h +3 -5
- package/src/headers/24/node_context_data.h +168 -0
- package/src/headers/24/node_contextify.h +261 -0
- package/src/headers/{18 → 24}/node_crypto.h +7 -2
- package/src/headers/24/node_debug.h +25 -0
- package/src/headers/24/node_dotenv.h +45 -0
- package/src/headers/{16 → 24}/node_errors.h +146 -32
- package/src/headers/24/node_exit_code.h +54 -0
- package/src/headers/{18 → 24}/node_external_reference.h +44 -22
- package/src/headers/{16 → 24}/node_file-inl.h +156 -50
- package/src/headers/{18 → 24}/node_file.h +129 -15
- package/src/headers/{16 → 24}/node_http2.h +53 -18
- package/src/headers/{14 → 24}/node_http2_state.h +35 -25
- package/src/headers/{16 → 24}/node_http_common-inl.h +8 -10
- package/src/headers/{16 → 24}/node_http_common.h +63 -59
- package/src/headers/{18 → 24}/node_i18n.h +5 -18
- package/src/headers/{16 → 24}/node_internals.h +131 -76
- package/src/headers/24/node_json.h +24 -0
- package/src/headers/24/node_large_page.h +34 -0
- package/src/headers/24/node_locks.h +180 -0
- package/src/headers/{14 → 24}/node_main_instance.h +15 -44
- package/src/headers/{16 → 24}/node_mem-inl.h +7 -7
- package/src/headers/{16 → 24}/node_messaging.h +27 -11
- package/src/headers/{16 → 24}/node_metadata.h +44 -2
- package/src/headers/24/node_modules.h +93 -0
- package/src/headers/{16 → 24}/node_options-inl.h +93 -46
- package/src/headers/{16 → 24}/node_options.h +251 -63
- package/src/headers/{16 → 24}/node_perf.h +6 -25
- package/src/headers/{16 → 24}/node_perf_common.h +23 -10
- package/src/headers/24/node_platform.h +286 -0
- package/src/headers/24/node_process.h +111 -0
- package/src/headers/24/node_realm-inl.h +153 -0
- package/src/headers/24/node_realm.h +236 -0
- package/src/headers/{18 → 24}/node_report.h +13 -17
- package/src/headers/{18 → 24}/node_revert.h +3 -3
- package/src/headers/{18 → 24}/node_root_certs.h +1010 -710
- package/src/headers/24/node_sea.h +74 -0
- package/src/headers/24/node_shadow_realm.h +46 -0
- package/src/headers/24/node_snapshot_builder.h +57 -0
- package/src/headers/24/node_snapshotable.h +174 -0
- package/src/headers/{16 → 24}/node_sockaddr-inl.h +11 -20
- package/src/headers/{16 → 24}/node_sockaddr.h +9 -20
- package/src/headers/24/node_sqlite.h +270 -0
- package/src/headers/{18 → 24}/node_stat_watcher.h +2 -1
- package/src/headers/24/node_string.h +101 -0
- package/src/headers/24/node_task_runner.h +92 -0
- package/src/headers/24/node_threadsafe_cow-inl.h +54 -0
- package/src/headers/24/node_threadsafe_cow.h +105 -0
- package/src/headers/24/node_union_bytes.h +81 -0
- package/src/headers/24/node_url.h +101 -0
- package/src/headers/24/node_url_pattern.h +118 -0
- package/src/headers/24/node_v8.h +77 -0
- package/src/headers/{18 → 24}/node_v8_platform-inl.h +22 -31
- package/src/headers/{18 → 24}/node_version.h +18 -6
- package/src/headers/24/node_wasi.h +185 -0
- package/src/headers/24/node_wasm_web_api.h +55 -0
- package/src/headers/{18 → 24}/node_watchdog.h +2 -0
- package/src/headers/24/node_webstorage.h +60 -0
- package/src/headers/{16 → 24}/node_worker.h +24 -10
- package/src/headers/24/packet.h +155 -0
- package/src/headers/24/path.h +33 -0
- package/src/headers/24/permission/addon_permission.h +31 -0
- package/src/headers/24/permission/child_process_permission.h +31 -0
- package/src/headers/24/permission/fs_permission.h +167 -0
- package/src/headers/24/permission/inspector_permission.h +31 -0
- package/src/headers/24/permission/permission.h +100 -0
- package/src/headers/24/permission/permission_base.h +65 -0
- package/src/headers/24/permission/wasi_permission.h +31 -0
- package/src/headers/24/permission/worker_permission.h +31 -0
- package/src/headers/24/permission.h +100 -0
- package/src/headers/24/permission_base.h +65 -0
- package/src/headers/24/preferredaddress.h +72 -0
- package/src/headers/24/protocol_helper.h +27 -0
- package/src/headers/24/queue.h +306 -0
- package/src/headers/{18 → 24}/req_wrap-inl.h +12 -6
- package/src/headers/{16 → 24}/req_wrap.h +3 -1
- package/src/headers/24/runtime_agent.h +41 -0
- package/src/headers/24/session.h +528 -0
- package/src/headers/24/sessionticket.h +108 -0
- package/src/headers/{18 → 24}/spawn_sync.h +9 -8
- package/src/headers/{16 → 24}/stream_base-inl.h +3 -133
- package/src/headers/{16 → 24}/stream_base.h +43 -19
- package/src/headers/{16 → 24}/stream_pipe.h +7 -4
- package/src/headers/{18 → 24}/stream_wrap.h +2 -3
- package/src/headers/24/streams.h +370 -0
- package/src/headers/{16 → 24}/string_bytes.h +8 -21
- package/src/headers/{18 → 24}/string_decoder-inl.h +0 -6
- package/src/headers/{18 → 24}/string_decoder.h +0 -1
- package/src/headers/24/target_agent.h +75 -0
- package/src/headers/{16 → 24}/tcp_wrap.h +3 -1
- package/src/headers/{14 → 24}/threadpoolwork-inl.h +14 -1
- package/src/headers/24/timer_wrap-inl.h +32 -0
- package/src/headers/{16 → 24}/timer_wrap.h +7 -4
- package/src/headers/24/timers.h +75 -0
- package/src/headers/24/tlscontext.h +228 -0
- package/src/headers/24/tokens.h +256 -0
- package/src/headers/{14/tracing → 24}/trace_event.h +7 -5
- package/src/headers/24/traced_value.h +129 -0
- package/src/headers/24/tracing_agent.h +43 -0
- package/src/headers/24/transportparams.h +166 -0
- package/src/headers/{16 → 24}/tty_wrap.h +0 -1
- package/src/headers/{18 → 24}/udp_wrap.h +8 -5
- package/src/headers/24/undici_version.h +6 -0
- package/src/headers/{16 → 24}/util-inl.h +267 -131
- package/src/headers/{16 → 24}/util.h +338 -146
- package/src/headers/24/v8-external-memory-accounter.h +60 -0
- package/src/headers/24/v8-fast-api-calls.h +819 -0
- package/src/headers/24/v8-inspector.h +426 -0
- package/src/headers/24/wasi_permission.h +31 -0
- package/src/headers/24/worker_agent.h +40 -0
- package/src/headers/24/worker_inspector.h +124 -0
- package/src/headers/24/worker_permission.h +31 -0
- package/src/headers/24/zlib_version.h +6 -0
- package/dist/bindings/cws_darwin_arm64_node83.node +0 -0
- package/dist/bindings/cws_darwin_arm64_node93.node +0 -0
- package/dist/bindings/cws_darwin_x64_node83.node +0 -0
- package/dist/bindings/cws_darwin_x64_node93.node +0 -0
- package/dist/bindings/cws_linux_arm64_node83.node +0 -0
- package/dist/bindings/cws_linux_arm64_node93.node +0 -0
- package/dist/bindings/cws_linux_x64_node83.node +0 -0
- package/dist/bindings/cws_linux_x64_node93.node +0 -0
- package/src/headers/14/aliased_buffer.h +0 -263
- package/src/headers/14/allocated_buffer-inl.h +0 -110
- package/src/headers/14/allocated_buffer.h +0 -73
- package/src/headers/14/async_wrap.h +0 -230
- package/src/headers/14/base64.h +0 -183
- package/src/headers/14/base_object-inl.h +0 -371
- package/src/headers/14/base_object.h +0 -281
- package/src/headers/14/callback_queue-inl.h +0 -97
- package/src/headers/14/callback_queue.h +0 -78
- package/src/headers/14/debug_utils.h +0 -181
- package/src/headers/14/env.h +0 -1388
- package/src/headers/14/handle_wrap.h +0 -117
- package/src/headers/14/histogram-inl.h +0 -83
- package/src/headers/14/histogram.h +0 -98
- package/src/headers/14/inspector_agent.h +0 -149
- package/src/headers/14/inspector_profiler.h +0 -137
- package/src/headers/14/js_native_api.h +0 -544
- package/src/headers/14/js_native_api_types.h +0 -143
- package/src/headers/14/js_native_api_v8.h +0 -301
- package/src/headers/14/js_native_api_v8_internals.h +0 -38
- package/src/headers/14/json_utils.h +0 -161
- package/src/headers/14/memory_tracker-inl.h +0 -355
- package/src/headers/14/module_wrap.h +0 -99
- package/src/headers/14/node.h +0 -1032
- package/src/headers/14/node_api.h +0 -255
- package/src/headers/14/node_api_types.h +0 -44
- package/src/headers/14/node_binding.h +0 -99
- package/src/headers/14/node_context_data.h +0 -44
- package/src/headers/14/node_contextify.h +0 -161
- package/src/headers/14/node_crypto.h +0 -865
- package/src/headers/14/node_crypto_bio.h +0 -195
- package/src/headers/14/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/14/node_crypto_clienthello.h +0 -132
- package/src/headers/14/node_crypto_common.h +0 -138
- package/src/headers/14/node_crypto_groups.h +0 -415
- package/src/headers/14/node_dtrace.h +0 -86
- package/src/headers/14/node_errors.h +0 -214
- package/src/headers/14/node_file-inl.h +0 -306
- package/src/headers/14/node_file.h +0 -417
- package/src/headers/14/node_http2.h +0 -1191
- package/src/headers/14/node_http_common-inl.h +0 -194
- package/src/headers/14/node_http_common.h +0 -529
- package/src/headers/14/node_i18n.h +0 -144
- package/src/headers/14/node_internals.h +0 -405
- package/src/headers/14/node_mem.h +0 -45
- package/src/headers/14/node_messaging.h +0 -303
- package/src/headers/14/node_metadata.h +0 -109
- package/src/headers/14/node_mutex.h +0 -247
- package/src/headers/14/node_native_module.h +0 -101
- package/src/headers/14/node_native_module_env.h +0 -66
- package/src/headers/14/node_options-inl.h +0 -451
- package/src/headers/14/node_options.h +0 -481
- package/src/headers/14/node_perf.h +0 -181
- package/src/headers/14/node_perf_common.h +0 -97
- package/src/headers/14/node_platform.h +0 -189
- package/src/headers/14/node_process.h +0 -40
- package/src/headers/14/node_report.h +0 -47
- package/src/headers/14/node_revert.h +0 -72
- package/src/headers/14/node_root_certs.h +0 -3458
- package/src/headers/14/node_sockaddr-inl.h +0 -170
- package/src/headers/14/node_sockaddr.h +0 -123
- package/src/headers/14/node_stat_watcher.h +0 -70
- package/src/headers/14/node_union_bytes.h +0 -103
- package/src/headers/14/node_url.h +0 -188
- package/src/headers/14/node_version.h +0 -98
- package/src/headers/14/node_wasi.h +0 -108
- package/src/headers/14/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/14/node_win32_etw_provider.h +0 -99
- package/src/headers/14/node_worker.h +0 -141
- package/src/headers/14/pipe_wrap.h +0 -78
- package/src/headers/14/req_wrap-inl.h +0 -170
- package/src/headers/14/req_wrap.h +0 -77
- package/src/headers/14/stream_base-inl.h +0 -275
- package/src/headers/14/stream_base.h +0 -434
- package/src/headers/14/stream_pipe.h +0 -73
- package/src/headers/14/stream_wrap.h +0 -130
- package/src/headers/14/string_bytes.h +0 -129
- package/src/headers/14/string_decoder.h +0 -50
- package/src/headers/14/string_search.h +0 -638
- package/src/headers/14/tcp_wrap.h +0 -101
- package/src/headers/14/tls_wrap.h +0 -222
- package/src/headers/14/tracing/agent.h +0 -195
- package/src/headers/14/tracing/traced_value.h +0 -70
- package/src/headers/14/tty_wrap.h +0 -64
- package/src/headers/14/udp_wrap.h +0 -227
- package/src/headers/14/util-inl.h +0 -566
- package/src/headers/14/util.h +0 -804
- package/src/headers/14/v8abbr.h +0 -124
- package/src/headers/16/aliased_buffer.h +0 -315
- package/src/headers/16/allocated_buffer-inl.h +0 -110
- package/src/headers/16/allocated_buffer.h +0 -73
- package/src/headers/16/async_wrap-inl.h +0 -94
- package/src/headers/16/base64-inl.h +0 -189
- package/src/headers/16/base64.h +0 -69
- package/src/headers/16/crypto/crypto_aes.h +0 -89
- package/src/headers/16/crypto/crypto_cipher.h +0 -286
- package/src/headers/16/crypto/crypto_common.h +0 -187
- package/src/headers/16/crypto/crypto_dh.h +0 -157
- package/src/headers/16/crypto/crypto_dsa.h +0 -76
- package/src/headers/16/crypto/crypto_ec.h +0 -169
- package/src/headers/16/crypto/crypto_groups.h +0 -415
- package/src/headers/16/crypto/crypto_hash.h +0 -89
- package/src/headers/16/crypto/crypto_hkdf.h +0 -66
- package/src/headers/16/crypto/crypto_hmac.h +0 -94
- package/src/headers/16/crypto/crypto_keygen.h +0 -301
- package/src/headers/16/crypto/crypto_pbkdf2.h +0 -76
- package/src/headers/16/crypto/crypto_random.h +0 -130
- package/src/headers/16/crypto/crypto_rsa.h +0 -141
- package/src/headers/16/crypto/crypto_scrypt.h +0 -87
- package/src/headers/16/crypto/crypto_sig.h +0 -167
- package/src/headers/16/crypto/crypto_spkac.h +0 -20
- package/src/headers/16/crypto/crypto_timing.h +0 -20
- package/src/headers/16/crypto/crypto_x509.h +0 -141
- package/src/headers/16/env.h +0 -1629
- package/src/headers/16/histogram.h +0 -216
- package/src/headers/16/js_native_api.h +0 -561
- package/src/headers/16/js_native_api_v8.h +0 -451
- package/src/headers/16/node.d +0 -315
- package/src/headers/16/node.stp +0 -146
- package/src/headers/16/node_api.h +0 -275
- package/src/headers/16/node_api_internals.h +0 -30
- package/src/headers/16/node_binding.h +0 -99
- package/src/headers/16/node_buffer.h +0 -92
- package/src/headers/16/node_constants.h +0 -84
- package/src/headers/16/node_context_data.h +0 -44
- package/src/headers/16/node_contextify.h +0 -196
- package/src/headers/16/node_dtrace.h +0 -86
- package/src/headers/16/node_external_reference.h +0 -129
- package/src/headers/16/node_main_instance.h +0 -103
- package/src/headers/16/node_native_module.h +0 -101
- package/src/headers/16/node_native_module_env.h +0 -68
- package/src/headers/16/node_platform.h +0 -192
- package/src/headers/16/node_process.h +0 -43
- package/src/headers/16/node_provider.d +0 -80
- package/src/headers/16/node_snapshotable.h +0 -137
- package/src/headers/16/node_union_bytes.h +0 -103
- package/src/headers/16/node_url.h +0 -205
- package/src/headers/16/node_v8.h +0 -41
- package/src/headers/16/node_v8_platform-inl.h +0 -194
- package/src/headers/16/node_wasi.h +0 -108
- package/src/headers/16/node_watchdog.h +0 -152
- package/src/headers/16/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/16/node_win32_etw_provider.h +0 -99
- package/src/headers/16/spawn_sync.h +0 -242
- package/src/headers/16/string_decoder-inl.h +0 -37
- package/src/headers/16/string_search.h +0 -638
- package/src/headers/16/threadpoolwork-inl.h +0 -57
- package/src/headers/16/tracing/node_trace_buffer.h +0 -83
- package/src/headers/16/tracing/node_trace_writer.h +0 -75
- package/src/headers/16/tracing/trace_event.h +0 -720
- package/src/headers/16/tracing/traced_value.h +0 -70
- package/src/headers/16/v8abbr.h +0 -123
- package/src/headers/16/v8ustack.d +0 -695
- package/src/headers/18/aliased_buffer.h +0 -315
- package/src/headers/18/aliased_struct-inl.h +0 -54
- package/src/headers/18/aliased_struct.h +0 -63
- package/src/headers/18/base64-inl.h +0 -189
- package/src/headers/18/base64.h +0 -69
- package/src/headers/18/connect_wrap.h +0 -26
- package/src/headers/18/connection_wrap.h +0 -30
- package/src/headers/18/crypto/crypto_aes.h +0 -89
- package/src/headers/18/crypto/crypto_bio.h +0 -194
- package/src/headers/18/crypto/crypto_clienthello-inl.h +0 -90
- package/src/headers/18/crypto/crypto_common.h +0 -151
- package/src/headers/18/crypto/crypto_groups.h +0 -415
- package/src/headers/18/crypto/crypto_x509.h +0 -143
- package/src/headers/18/debug_utils-inl.h +0 -223
- package/src/headers/18/diagnosticfilename-inl.h +0 -33
- package/src/headers/18/env-inl.h +0 -1308
- package/src/headers/18/env.h +0 -1667
- package/src/headers/18/inspector_io.h +0 -78
- package/src/headers/18/inspector_socket.h +0 -60
- package/src/headers/18/inspector_socket_server.h +0 -110
- package/src/headers/18/js_stream.h +0 -52
- package/src/headers/18/memory_tracker.h +0 -284
- package/src/headers/18/module_wrap.h +0 -116
- package/src/headers/18/node_binding.h +0 -99
- package/src/headers/18/node_context_data.h +0 -44
- package/src/headers/18/node_contextify.h +0 -196
- package/src/headers/18/node_dir.h +0 -52
- package/src/headers/18/node_dtrace.h +0 -86
- package/src/headers/18/node_http2_state.h +0 -149
- package/src/headers/18/node_mem-inl.h +0 -112
- package/src/headers/18/node_native_module.h +0 -109
- package/src/headers/18/node_native_module_env.h +0 -71
- package/src/headers/18/node_object_wrap.h +0 -132
- package/src/headers/18/node_snapshot_builder.h +0 -43
- package/src/headers/18/node_snapshotable.h +0 -130
- package/src/headers/18/node_union_bytes.h +0 -103
- package/src/headers/18/node_url.h +0 -205
- package/src/headers/18/node_v8.h +0 -41
- package/src/headers/18/node_wasi.h +0 -108
- package/src/headers/18/node_win32_etw_provider-inl.h +0 -288
- package/src/headers/18/node_win32_etw_provider.h +0 -99
- package/src/headers/18/string_search.h +0 -638
- package/src/headers/18/tracing/node_trace_buffer.h +0 -83
- package/src/headers/18/tracing/node_trace_writer.h +0 -75
- package/src/headers/18/tracing/trace_event_common.h +0 -1109
- package/src/headers/18/tracing/traced_value.h +0 -70
- package/src/headers/18/v8abbr.h +0 -123
- /package/src/headers/{14 → 22}/aliased_struct-inl.h +0 -0
- /package/src/headers/{14 → 22}/aliased_struct.h +0 -0
- /package/src/headers/{16 → 22}/callback_queue-inl.h +0 -0
- /package/src/headers/{14 → 22}/connect_wrap.h +0 -0
- /package/src/headers/{14 → 22}/connection_wrap.h +0 -0
- /package/src/headers/{14 → 22}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{18 → 22}/histogram-inl.h +0 -0
- /package/src/headers/{14 → 22}/inspector_io.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket.h +0 -0
- /package/src/headers/{14 → 22}/inspector_socket_server.h +0 -0
- /package/src/headers/{14 → 22}/js_stream.h +0 -0
- /package/src/headers/{14 → 22}/node_dir.h +0 -0
- /package/src/headers/{14 → 22}/node_mem-inl.h +0 -0
- /package/src/headers/{16 → 22}/node_mem.h +0 -0
- /package/src/headers/{16 → 22}/node_mutex.h +0 -0
- /package/src/headers/{14 → 22}/node_object_wrap.h +0 -0
- /package/src/headers/{16 → 22}/node_process-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_sockaddr-inl.h +0 -0
- /package/src/headers/{18 → 22}/node_wasm_web_api.h +0 -0
- /package/src/headers/{16 → 22}/pipe_wrap.h +0 -0
- /package/src/headers/{18 → 22}/req_wrap.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap-inl.h +0 -0
- /package/src/headers/{18 → 22}/timer_wrap.h +0 -0
- /package/src/headers/{18 → 22}/tracing/agent.h +0 -0
- /package/src/headers/{14 → 22}/tracing/trace_event_common.h +0 -0
- /package/src/headers/{18 → 22}/tty_wrap.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct-inl.h +0 -0
- /package/src/headers/{16 → 24}/aliased_struct.h +0 -0
- /package/src/headers/{18 → 24}/callback_queue-inl.h +0 -0
- /package/src/headers/{16 → 24}/connect_wrap.h +0 -0
- /package/src/headers/{16 → 24}/connection_wrap.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_spkac.h +0 -0
- /package/src/headers/{18 → 24}/crypto/crypto_timing.h +0 -0
- /package/src/headers/{16 → 24}/diagnosticfilename-inl.h +0 -0
- /package/src/headers/{16 → 24}/inspector_io.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket.h +0 -0
- /package/src/headers/{16 → 24}/inspector_socket_server.h +0 -0
- /package/src/headers/{16 → 24}/js_stream.h +0 -0
- /package/src/headers/{16 → 24}/node_dir.h +0 -0
- /package/src/headers/{18 → 24}/node_mem.h +0 -0
- /package/src/headers/{18 → 24}/node_mutex.h +0 -0
- /package/src/headers/{16 → 24}/node_object_wrap.h +0 -0
- /package/src/headers/{18 → 24}/node_process-inl.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_buffer.h +0 -0
- /package/src/headers/{14/tracing → 24}/node_trace_writer.h +0 -0
- /package/src/headers/{18 → 24}/pipe_wrap.h +0 -0
- /package/src/headers/{16/tracing → 24}/trace_event_common.h +0 -0
|
@@ -11,8 +11,7 @@
|
|
|
11
11
|
#include "memory_tracker.h"
|
|
12
12
|
#include "v8.h"
|
|
13
13
|
|
|
14
|
-
namespace node {
|
|
15
|
-
namespace crypto {
|
|
14
|
+
namespace node::crypto {
|
|
16
15
|
namespace Keygen {
|
|
17
16
|
void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
18
17
|
void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
@@ -75,9 +74,6 @@ class KeyGenJob final : public CryptoJob<KeyGenTraits> {
|
|
|
75
74
|
std::move(params)) {}
|
|
76
75
|
|
|
77
76
|
void DoThreadPoolWork() override {
|
|
78
|
-
// Make sure the CSPRNG is properly seeded so the results are secure.
|
|
79
|
-
CheckEntropy();
|
|
80
|
-
|
|
81
77
|
AdditionalParams* params = CryptoJob<KeyGenTraits>::params();
|
|
82
78
|
|
|
83
79
|
switch (KeyGenTraits::DoKeyGen(AsyncWrap::env(), params)) {
|
|
@@ -94,26 +90,33 @@ class KeyGenJob final : public CryptoJob<KeyGenTraits> {
|
|
|
94
90
|
}
|
|
95
91
|
}
|
|
96
92
|
|
|
97
|
-
v8::Maybe<
|
|
98
|
-
|
|
99
|
-
v8::Local<v8::Value>* result) override {
|
|
93
|
+
v8::Maybe<void> ToResult(v8::Local<v8::Value>* err,
|
|
94
|
+
v8::Local<v8::Value>* result) override {
|
|
100
95
|
Environment* env = AsyncWrap::env();
|
|
101
96
|
CryptoErrorStore* errors = CryptoJob<KeyGenTraits>::errors();
|
|
102
97
|
AdditionalParams* params = CryptoJob<KeyGenTraits>::params();
|
|
103
98
|
|
|
104
99
|
if (status_ == KeyGenJobStatus::OK) {
|
|
105
|
-
v8::
|
|
106
|
-
if (
|
|
100
|
+
v8::TryCatch try_catch(env->isolate());
|
|
101
|
+
if (KeyGenTraits::EncodeKey(env, params).ToLocal(result)) {
|
|
107
102
|
*err = Undefined(env->isolate());
|
|
103
|
+
} else {
|
|
104
|
+
CHECK(try_catch.HasCaught());
|
|
105
|
+
CHECK(try_catch.CanContinue());
|
|
106
|
+
*result = Undefined(env->isolate());
|
|
107
|
+
*err = try_catch.Exception();
|
|
108
|
+
}
|
|
109
|
+
} else {
|
|
110
|
+
if (errors->Empty()) errors->Capture();
|
|
111
|
+
CHECK(!errors->Empty());
|
|
112
|
+
*result = Undefined(env->isolate());
|
|
113
|
+
if (!errors->ToException(env).ToLocal(err)) {
|
|
114
|
+
return v8::Nothing<void>();
|
|
108
115
|
}
|
|
109
|
-
return ret;
|
|
110
116
|
}
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
CHECK(!errors->Empty());
|
|
115
|
-
*result = Undefined(env->isolate());
|
|
116
|
-
return v8::Just(errors->ToException(env).ToLocal(err));
|
|
117
|
+
CHECK(!result->IsEmpty());
|
|
118
|
+
CHECK(!err->IsEmpty());
|
|
119
|
+
return v8::JustVoid();
|
|
117
120
|
}
|
|
118
121
|
|
|
119
122
|
SET_SELF_SIZE(KeyGenJob)
|
|
@@ -132,7 +135,7 @@ struct KeyPairGenTraits final {
|
|
|
132
135
|
AsyncWrap::PROVIDER_KEYPAIRGENREQUEST;
|
|
133
136
|
static constexpr const char* JobName = KeyPairAlgorithmTraits::JobName;
|
|
134
137
|
|
|
135
|
-
static v8::Maybe<
|
|
138
|
+
static v8::Maybe<void> AdditionalConfig(
|
|
136
139
|
CryptoJobMode mode,
|
|
137
140
|
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
138
141
|
unsigned int* offset,
|
|
@@ -143,31 +146,23 @@ struct KeyPairGenTraits final {
|
|
|
143
146
|
// process input parameters. This allows each job to have a variable
|
|
144
147
|
// number of input parameters specific to each job type.
|
|
145
148
|
if (KeyPairAlgorithmTraits::AdditionalConfig(mode, args, offset, params)
|
|
146
|
-
.IsNothing()
|
|
147
|
-
|
|
149
|
+
.IsNothing() ||
|
|
150
|
+
!KeyObjectData::GetPublicKeyEncodingFromJs(
|
|
151
|
+
args, offset, kKeyContextGenerate)
|
|
152
|
+
.To(¶ms->public_key_encoding) ||
|
|
153
|
+
!KeyObjectData::GetPrivateKeyEncodingFromJs(
|
|
154
|
+
args, offset, kKeyContextGenerate)
|
|
155
|
+
.To(¶ms->private_key_encoding)) {
|
|
156
|
+
return v8::Nothing<void>();
|
|
148
157
|
}
|
|
149
158
|
|
|
150
|
-
|
|
151
|
-
args,
|
|
152
|
-
offset,
|
|
153
|
-
kKeyContextGenerate);
|
|
154
|
-
|
|
155
|
-
auto private_key_encoding =
|
|
156
|
-
ManagedEVPPKey::GetPrivateKeyEncodingFromJs(
|
|
157
|
-
args,
|
|
158
|
-
offset,
|
|
159
|
-
kKeyContextGenerate);
|
|
160
|
-
|
|
161
|
-
if (!private_key_encoding.IsEmpty())
|
|
162
|
-
params->private_key_encoding = private_key_encoding.Release();
|
|
163
|
-
|
|
164
|
-
return v8::Just(true);
|
|
159
|
+
return v8::JustVoid();
|
|
165
160
|
}
|
|
166
161
|
|
|
167
162
|
static KeyGenJobStatus DoKeyGen(
|
|
168
163
|
Environment* env,
|
|
169
164
|
AdditionalParameters* params) {
|
|
170
|
-
EVPKeyCtxPointer ctx = KeyPairAlgorithmTraits::Setup(params);
|
|
165
|
+
ncrypto::EVPKeyCtxPointer ctx = KeyPairAlgorithmTraits::Setup(params);
|
|
171
166
|
|
|
172
167
|
if (!ctx)
|
|
173
168
|
return KeyGenJobStatus::FAILED;
|
|
@@ -177,35 +172,30 @@ struct KeyPairGenTraits final {
|
|
|
177
172
|
if (!EVP_PKEY_keygen(ctx.get(), &pkey))
|
|
178
173
|
return KeyGenJobStatus::FAILED;
|
|
179
174
|
|
|
180
|
-
|
|
175
|
+
auto data = KeyObjectData::CreateAsymmetric(KeyType::kKeyTypePrivate,
|
|
176
|
+
ncrypto::EVPKeyPointer(pkey));
|
|
177
|
+
if (!data) [[unlikely]]
|
|
178
|
+
return KeyGenJobStatus::FAILED;
|
|
179
|
+
params->key = std::move(data);
|
|
181
180
|
return KeyGenJobStatus::OK;
|
|
182
181
|
}
|
|
183
182
|
|
|
184
|
-
static v8::
|
|
185
|
-
|
|
186
|
-
AdditionalParameters* params,
|
|
187
|
-
v8::Local<v8::Value>* result) {
|
|
183
|
+
static v8::MaybeLocal<v8::Value> EncodeKey(Environment* env,
|
|
184
|
+
AdditionalParameters* params) {
|
|
188
185
|
v8::Local<v8::Value> keys[2];
|
|
189
|
-
if (
|
|
190
|
-
env,
|
|
191
|
-
|
|
192
|
-
params->
|
|
193
|
-
|
|
194
|
-
ManagedEVPPKey::ToEncodedPrivateKey(
|
|
195
|
-
env,
|
|
196
|
-
std::move(params->key),
|
|
197
|
-
params->private_key_encoding,
|
|
198
|
-
&keys[1]).IsNothing()) {
|
|
199
|
-
return v8::Nothing<bool>();
|
|
186
|
+
if (!params->key.ToEncodedPublicKey(
|
|
187
|
+
env, params->public_key_encoding, &keys[0]) ||
|
|
188
|
+
!params->key.ToEncodedPrivateKey(
|
|
189
|
+
env, params->private_key_encoding, &keys[1])) {
|
|
190
|
+
return {};
|
|
200
191
|
}
|
|
201
|
-
|
|
202
|
-
return v8::Just(true);
|
|
192
|
+
return v8::Array::New(env->isolate(), keys, arraysize(keys));
|
|
203
193
|
}
|
|
204
194
|
};
|
|
205
195
|
|
|
206
196
|
struct SecretKeyGenConfig final : public MemoryRetainer {
|
|
207
|
-
size_t length;
|
|
208
|
-
|
|
197
|
+
size_t length; // In bytes.
|
|
198
|
+
ByteSource out; // Placeholder for the generated key bytes.
|
|
209
199
|
|
|
210
200
|
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
211
201
|
SET_MEMORY_INFO_NAME(SecretKeyGenConfig)
|
|
@@ -218,7 +208,7 @@ struct SecretKeyGenTraits final {
|
|
|
218
208
|
AsyncWrap::PROVIDER_KEYGENREQUEST;
|
|
219
209
|
static constexpr const char* JobName = "SecretKeyGenJob";
|
|
220
210
|
|
|
221
|
-
static v8::Maybe<
|
|
211
|
+
static v8::Maybe<void> AdditionalConfig(
|
|
222
212
|
CryptoJobMode mode,
|
|
223
213
|
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
224
214
|
unsigned int* offset,
|
|
@@ -228,28 +218,23 @@ struct SecretKeyGenTraits final {
|
|
|
228
218
|
Environment* env,
|
|
229
219
|
SecretKeyGenConfig* params);
|
|
230
220
|
|
|
231
|
-
static v8::
|
|
232
|
-
|
|
233
|
-
SecretKeyGenConfig* params,
|
|
234
|
-
v8::Local<v8::Value>* result);
|
|
221
|
+
static v8::MaybeLocal<v8::Value> EncodeKey(Environment* env,
|
|
222
|
+
SecretKeyGenConfig* params);
|
|
235
223
|
};
|
|
236
224
|
|
|
237
225
|
template <typename AlgorithmParams>
|
|
238
226
|
struct KeyPairGenConfig final : public MemoryRetainer {
|
|
239
|
-
PublicKeyEncodingConfig public_key_encoding;
|
|
240
|
-
PrivateKeyEncodingConfig private_key_encoding;
|
|
241
|
-
|
|
227
|
+
ncrypto::EVPKeyPointer::PublicKeyEncodingConfig public_key_encoding;
|
|
228
|
+
ncrypto::EVPKeyPointer::PrivateKeyEncodingConfig private_key_encoding;
|
|
229
|
+
KeyObjectData key;
|
|
242
230
|
AlgorithmParams params;
|
|
243
231
|
|
|
244
232
|
KeyPairGenConfig() = default;
|
|
245
|
-
~KeyPairGenConfig() {
|
|
246
|
-
Mutex::ScopedLock priv_lock(*key.mutex());
|
|
247
|
-
}
|
|
248
233
|
|
|
249
234
|
explicit KeyPairGenConfig(KeyPairGenConfig&& other) noexcept
|
|
250
235
|
: public_key_encoding(other.public_key_encoding),
|
|
251
236
|
private_key_encoding(
|
|
252
|
-
std::forward<PrivateKeyEncodingConfig>(
|
|
237
|
+
std::forward<ncrypto::EVPKeyPointer::PrivateKeyEncodingConfig>(
|
|
253
238
|
other.private_key_encoding)),
|
|
254
239
|
key(std::move(other.key)),
|
|
255
240
|
params(std::move(other.params)) {}
|
|
@@ -262,9 +247,10 @@ struct KeyPairGenConfig final : public MemoryRetainer {
|
|
|
262
247
|
|
|
263
248
|
void MemoryInfo(MemoryTracker* tracker) const override {
|
|
264
249
|
tracker->TrackField("key", key);
|
|
265
|
-
if (
|
|
250
|
+
if (private_key_encoding.passphrase.has_value()) {
|
|
251
|
+
auto& passphrase = private_key_encoding.passphrase.value();
|
|
266
252
|
tracker->TrackFieldWithSize("private_key_encoding.passphrase",
|
|
267
|
-
|
|
253
|
+
passphrase.size());
|
|
268
254
|
}
|
|
269
255
|
tracker->TrackField("params", params);
|
|
270
256
|
}
|
|
@@ -286,9 +272,9 @@ struct NidKeyPairGenTraits final {
|
|
|
286
272
|
using AdditionalParameters = NidKeyPairGenConfig;
|
|
287
273
|
static constexpr const char* JobName = "NidKeyPairGenJob";
|
|
288
274
|
|
|
289
|
-
static EVPKeyCtxPointer Setup(NidKeyPairGenConfig* params);
|
|
275
|
+
static ncrypto::EVPKeyCtxPointer Setup(NidKeyPairGenConfig* params);
|
|
290
276
|
|
|
291
|
-
static v8::Maybe<
|
|
277
|
+
static v8::Maybe<void> AdditionalConfig(
|
|
292
278
|
CryptoJobMode mode,
|
|
293
279
|
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
294
280
|
unsigned int* offset,
|
|
@@ -297,8 +283,7 @@ struct NidKeyPairGenTraits final {
|
|
|
297
283
|
|
|
298
284
|
using NidKeyPairGenJob = KeyGenJob<KeyPairGenTraits<NidKeyPairGenTraits>>;
|
|
299
285
|
using SecretKeyGenJob = KeyGenJob<SecretKeyGenTraits>;
|
|
300
|
-
} // namespace crypto
|
|
301
|
-
} // namespace node
|
|
286
|
+
} // namespace node::crypto
|
|
302
287
|
|
|
303
288
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
304
289
|
#endif // SRC_CRYPTO_CRYPTO_KEYGEN_H_
|
|
@@ -16,25 +16,7 @@
|
|
|
16
16
|
#include <memory>
|
|
17
17
|
#include <string>
|
|
18
18
|
|
|
19
|
-
namespace node {
|
|
20
|
-
namespace crypto {
|
|
21
|
-
enum PKEncodingType {
|
|
22
|
-
// RSAPublicKey / RSAPrivateKey according to PKCS#1.
|
|
23
|
-
kKeyEncodingPKCS1,
|
|
24
|
-
// PrivateKeyInfo or EncryptedPrivateKeyInfo according to PKCS#8.
|
|
25
|
-
kKeyEncodingPKCS8,
|
|
26
|
-
// SubjectPublicKeyInfo according to X.509.
|
|
27
|
-
kKeyEncodingSPKI,
|
|
28
|
-
// ECPrivateKey according to SEC1.
|
|
29
|
-
kKeyEncodingSEC1
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
enum PKFormatType {
|
|
33
|
-
kKeyFormatDER,
|
|
34
|
-
kKeyFormatPEM,
|
|
35
|
-
kKeyFormatJWK
|
|
36
|
-
};
|
|
37
|
-
|
|
19
|
+
namespace node::crypto {
|
|
38
20
|
enum KeyType {
|
|
39
21
|
kKeyTypeSecret,
|
|
40
22
|
kKeyTypePublic,
|
|
@@ -48,137 +30,121 @@ enum KeyEncodingContext {
|
|
|
48
30
|
};
|
|
49
31
|
|
|
50
32
|
enum class ParseKeyResult {
|
|
33
|
+
kParseKeyNotRecognized =
|
|
34
|
+
static_cast<int>(ncrypto::EVPKeyPointer::PKParseError::NOT_RECOGNIZED),
|
|
35
|
+
kParseKeyNeedPassphrase =
|
|
36
|
+
static_cast<int>(ncrypto::EVPKeyPointer::PKParseError::NEED_PASSPHRASE),
|
|
37
|
+
kParseKeyFailed =
|
|
38
|
+
static_cast<int>(ncrypto::EVPKeyPointer::PKParseError::FAILED),
|
|
51
39
|
kParseKeyOk,
|
|
52
|
-
kParseKeyNotRecognized,
|
|
53
|
-
kParseKeyNeedPassphrase,
|
|
54
|
-
kParseKeyFailed
|
|
55
40
|
};
|
|
56
41
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
using PublicKeyEncodingConfig = AsymmetricKeyEncodingConfig;
|
|
42
|
+
// Objects of this class can safely be shared among threads.
|
|
43
|
+
class KeyObjectData final : public MemoryRetainer {
|
|
44
|
+
public:
|
|
45
|
+
static KeyObjectData CreateSecret(ByteSource key);
|
|
64
46
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
// The ByteSource alone is not enough to distinguish between "no passphrase"
|
|
68
|
-
// and a zero-length passphrase (which can be a null pointer), therefore, we
|
|
69
|
-
// use a NonCopyableMaybe.
|
|
70
|
-
NonCopyableMaybe<ByteSource> passphrase_;
|
|
71
|
-
};
|
|
47
|
+
static KeyObjectData CreateAsymmetric(KeyType type,
|
|
48
|
+
ncrypto::EVPKeyPointer&& pkey);
|
|
72
49
|
|
|
73
|
-
|
|
74
|
-
// which is slightly more efficient than using a shared pointer and easier to
|
|
75
|
-
// use.
|
|
76
|
-
class ManagedEVPPKey : public MemoryRetainer {
|
|
77
|
-
public:
|
|
78
|
-
ManagedEVPPKey() : mutex_(std::make_shared<Mutex>()) {}
|
|
79
|
-
explicit ManagedEVPPKey(EVPKeyPointer&& pkey);
|
|
80
|
-
ManagedEVPPKey(const ManagedEVPPKey& that);
|
|
81
|
-
ManagedEVPPKey& operator=(const ManagedEVPPKey& that);
|
|
50
|
+
KeyObjectData(std::nullptr_t = nullptr);
|
|
82
51
|
|
|
83
|
-
operator bool() const;
|
|
84
|
-
EVP_PKEY* get() const;
|
|
85
|
-
Mutex* mutex() const;
|
|
52
|
+
inline operator bool() const { return data_ != nullptr; }
|
|
86
53
|
|
|
87
|
-
|
|
88
|
-
SET_MEMORY_INFO_NAME(ManagedEVPPKey)
|
|
89
|
-
SET_SELF_SIZE(ManagedEVPPKey)
|
|
54
|
+
KeyType GetKeyType() const;
|
|
90
55
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
56
|
+
// These functions allow unprotected access to the raw key material and should
|
|
57
|
+
// only be used to implement cryptographic operations requiring the key.
|
|
58
|
+
const ncrypto::EVPKeyPointer& GetAsymmetricKey() const;
|
|
59
|
+
const char* GetSymmetricKey() const;
|
|
60
|
+
size_t GetSymmetricKeySize() const;
|
|
95
61
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
KeyEncodingContext context);
|
|
62
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
63
|
+
SET_MEMORY_INFO_NAME(KeyObjectData)
|
|
64
|
+
SET_SELF_SIZE(KeyObjectData)
|
|
100
65
|
|
|
101
|
-
|
|
102
|
-
EVPKeyPointer&& pkey,
|
|
103
|
-
ParseKeyResult ret,
|
|
104
|
-
const char* default_msg);
|
|
66
|
+
Mutex& mutex() const;
|
|
105
67
|
|
|
106
|
-
static
|
|
107
|
-
|
|
108
|
-
|
|
68
|
+
static v8::Maybe<ncrypto::EVPKeyPointer::PublicKeyEncodingConfig>
|
|
69
|
+
GetPublicKeyEncodingFromJs(const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
70
|
+
unsigned int* offset,
|
|
71
|
+
KeyEncodingContext context);
|
|
109
72
|
|
|
110
|
-
static
|
|
73
|
+
static KeyObjectData GetPrivateKeyFromJs(
|
|
111
74
|
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
112
75
|
unsigned int* offset,
|
|
113
76
|
bool allow_key_object);
|
|
114
77
|
|
|
115
|
-
static
|
|
78
|
+
static KeyObjectData GetPublicOrPrivateKeyFromJs(
|
|
79
|
+
const v8::FunctionCallbackInfo<v8::Value>& args, unsigned int* offset);
|
|
80
|
+
|
|
81
|
+
static v8::Maybe<ncrypto::EVPKeyPointer::PrivateKeyEncodingConfig>
|
|
82
|
+
GetPrivateKeyEncodingFromJs(const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
83
|
+
unsigned int* offset,
|
|
84
|
+
KeyEncodingContext context);
|
|
85
|
+
|
|
86
|
+
bool ToEncodedPublicKey(
|
|
116
87
|
Environment* env,
|
|
117
|
-
|
|
118
|
-
const PublicKeyEncodingConfig& config,
|
|
88
|
+
const ncrypto::EVPKeyPointer::PublicKeyEncodingConfig& config,
|
|
119
89
|
v8::Local<v8::Value>* out);
|
|
120
90
|
|
|
121
|
-
|
|
91
|
+
bool ToEncodedPrivateKey(
|
|
122
92
|
Environment* env,
|
|
123
|
-
|
|
124
|
-
const PrivateKeyEncodingConfig& config,
|
|
93
|
+
const ncrypto::EVPKeyPointer::PrivateKeyEncodingConfig& config,
|
|
125
94
|
v8::Local<v8::Value>* out);
|
|
126
95
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
EVPKeyPointer pkey_;
|
|
132
|
-
std::shared_ptr<Mutex> mutex_;
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
// Objects of this class can safely be shared among threads.
|
|
136
|
-
class KeyObjectData : public MemoryRetainer {
|
|
137
|
-
public:
|
|
138
|
-
static std::shared_ptr<KeyObjectData> CreateSecret(ByteSource key);
|
|
139
|
-
|
|
140
|
-
static std::shared_ptr<KeyObjectData> CreateAsymmetric(
|
|
141
|
-
KeyType type,
|
|
142
|
-
const ManagedEVPPKey& pkey);
|
|
143
|
-
|
|
144
|
-
KeyType GetKeyType() const;
|
|
145
|
-
|
|
146
|
-
// These functions allow unprotected access to the raw key material and should
|
|
147
|
-
// only be used to implement cryptographic operations requiring the key.
|
|
148
|
-
ManagedEVPPKey GetAsymmetricKey() const;
|
|
149
|
-
const char* GetSymmetricKey() const;
|
|
150
|
-
size_t GetSymmetricKeySize() const;
|
|
96
|
+
inline KeyObjectData addRef() const {
|
|
97
|
+
return KeyObjectData(key_type_, mutex_, data_);
|
|
98
|
+
}
|
|
151
99
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
100
|
+
inline KeyObjectData addRefWithType(KeyType type) const {
|
|
101
|
+
return KeyObjectData(type, mutex_, data_);
|
|
102
|
+
}
|
|
155
103
|
|
|
156
104
|
private:
|
|
157
105
|
explicit KeyObjectData(ByteSource symmetric_key);
|
|
106
|
+
explicit KeyObjectData(KeyType type, ncrypto::EVPKeyPointer&& pkey);
|
|
107
|
+
|
|
108
|
+
static KeyObjectData GetParsedKey(KeyType type,
|
|
109
|
+
Environment* env,
|
|
110
|
+
ncrypto::EVPKeyPointer&& pkey,
|
|
111
|
+
ParseKeyResult ret,
|
|
112
|
+
const char* default_msg);
|
|
113
|
+
|
|
114
|
+
KeyType key_type_;
|
|
115
|
+
mutable std::shared_ptr<Mutex> mutex_;
|
|
116
|
+
|
|
117
|
+
struct Data {
|
|
118
|
+
const ByteSource symmetric_key;
|
|
119
|
+
const ncrypto::EVPKeyPointer asymmetric_key;
|
|
120
|
+
explicit Data(ByteSource symmetric_key)
|
|
121
|
+
: symmetric_key(std::move(symmetric_key)) {}
|
|
122
|
+
explicit Data(ncrypto::EVPKeyPointer asymmetric_key)
|
|
123
|
+
: asymmetric_key(std::move(asymmetric_key)) {}
|
|
124
|
+
};
|
|
125
|
+
std::shared_ptr<Data> data_;
|
|
158
126
|
|
|
159
|
-
KeyObjectData(
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
const KeyType key_type_;
|
|
164
|
-
const ByteSource symmetric_key_;
|
|
165
|
-
const unsigned int symmetric_key_len_;
|
|
166
|
-
const ManagedEVPPKey asymmetric_key_;
|
|
127
|
+
KeyObjectData(KeyType type,
|
|
128
|
+
std::shared_ptr<Mutex> mutex,
|
|
129
|
+
std::shared_ptr<Data> data)
|
|
130
|
+
: key_type_(type), mutex_(std::move(mutex)), data_(std::move(data)) {}
|
|
167
131
|
};
|
|
168
132
|
|
|
169
133
|
class KeyObjectHandle : public BaseObject {
|
|
170
134
|
public:
|
|
135
|
+
static bool HasInstance(Environment* env, v8::Local<v8::Value> value);
|
|
171
136
|
static v8::Local<v8::Function> Initialize(Environment* env);
|
|
137
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
172
138
|
|
|
173
139
|
static v8::MaybeLocal<v8::Object> Create(Environment* env,
|
|
174
|
-
|
|
140
|
+
const KeyObjectData& data);
|
|
175
141
|
|
|
176
142
|
// TODO(tniessen): track the memory used by OpenSSL types
|
|
177
143
|
SET_NO_MEMORY_INFO()
|
|
178
144
|
SET_MEMORY_INFO_NAME(KeyObjectHandle)
|
|
179
145
|
SET_SELF_SIZE(KeyObjectHandle)
|
|
180
146
|
|
|
181
|
-
const
|
|
147
|
+
const KeyObjectData& Data();
|
|
182
148
|
|
|
183
149
|
protected:
|
|
184
150
|
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
@@ -188,6 +154,7 @@ class KeyObjectHandle : public BaseObject {
|
|
|
188
154
|
static void InitEDRaw(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
189
155
|
static void InitJWK(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
190
156
|
static void GetKeyDetail(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
157
|
+
static void Equals(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
191
158
|
|
|
192
159
|
static void ExportJWK(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
193
160
|
|
|
@@ -195,27 +162,37 @@ class KeyObjectHandle : public BaseObject {
|
|
|
195
162
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
196
163
|
v8::Local<v8::Value> GetAsymmetricKeyType() const;
|
|
197
164
|
|
|
165
|
+
static void CheckEcKeyData(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
166
|
+
bool CheckEcKeyData() const;
|
|
167
|
+
|
|
198
168
|
static void GetSymmetricKeySize(
|
|
199
169
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
200
170
|
|
|
201
171
|
static void Export(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
202
172
|
|
|
173
|
+
#if OPENSSL_WITH_PQC
|
|
174
|
+
static void InitPqcRaw(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
175
|
+
static void RawPublicKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
176
|
+
static void RawSeed(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
177
|
+
#endif
|
|
178
|
+
|
|
203
179
|
v8::MaybeLocal<v8::Value> ExportSecretKey() const;
|
|
204
180
|
v8::MaybeLocal<v8::Value> ExportPublicKey(
|
|
205
|
-
const PublicKeyEncodingConfig& config) const;
|
|
181
|
+
const ncrypto::EVPKeyPointer::PublicKeyEncodingConfig& config) const;
|
|
206
182
|
v8::MaybeLocal<v8::Value> ExportPrivateKey(
|
|
207
|
-
const PrivateKeyEncodingConfig& config) const;
|
|
183
|
+
const ncrypto::EVPKeyPointer::PrivateKeyEncodingConfig& config) const;
|
|
208
184
|
|
|
209
185
|
KeyObjectHandle(Environment* env,
|
|
210
186
|
v8::Local<v8::Object> wrap);
|
|
211
187
|
|
|
212
188
|
private:
|
|
213
|
-
|
|
189
|
+
KeyObjectData data_;
|
|
214
190
|
};
|
|
215
191
|
|
|
216
192
|
class NativeKeyObject : public BaseObject {
|
|
217
193
|
public:
|
|
218
194
|
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
195
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
219
196
|
|
|
220
197
|
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
221
198
|
static void CreateNativeKeyObjectClass(
|
|
@@ -227,8 +204,8 @@ class NativeKeyObject : public BaseObject {
|
|
|
227
204
|
|
|
228
205
|
class KeyObjectTransferData : public worker::TransferData {
|
|
229
206
|
public:
|
|
230
|
-
explicit KeyObjectTransferData(const
|
|
231
|
-
: data_(data) {}
|
|
207
|
+
explicit KeyObjectTransferData(const KeyObjectData& data)
|
|
208
|
+
: data_(data.addRef()) {}
|
|
232
209
|
|
|
233
210
|
BaseObjectPtr<BaseObject> Deserialize(
|
|
234
211
|
Environment* env,
|
|
@@ -240,7 +217,7 @@ class NativeKeyObject : public BaseObject {
|
|
|
240
217
|
SET_NO_MEMORY_INFO()
|
|
241
218
|
|
|
242
219
|
private:
|
|
243
|
-
|
|
220
|
+
KeyObjectData data_;
|
|
244
221
|
};
|
|
245
222
|
|
|
246
223
|
BaseObject::TransferMode GetTransferMode() const override;
|
|
@@ -249,13 +226,12 @@ class NativeKeyObject : public BaseObject {
|
|
|
249
226
|
private:
|
|
250
227
|
NativeKeyObject(Environment* env,
|
|
251
228
|
v8::Local<v8::Object> wrap,
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
handle_data_(handle_data) {
|
|
229
|
+
const KeyObjectData& handle_data)
|
|
230
|
+
: BaseObject(env, wrap), handle_data_(handle_data.addRef()) {
|
|
255
231
|
MakeWeak();
|
|
256
232
|
}
|
|
257
233
|
|
|
258
|
-
|
|
234
|
+
KeyObjectData handle_data_;
|
|
259
235
|
};
|
|
260
236
|
|
|
261
237
|
enum WebCryptoKeyFormat {
|
|
@@ -316,20 +292,22 @@ class KeyExportJob final : public CryptoJob<KeyExportTraits> {
|
|
|
316
292
|
CryptoJob<KeyExportTraits>::Initialize(New, env, target);
|
|
317
293
|
}
|
|
318
294
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
295
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
|
|
296
|
+
CryptoJob<KeyExportTraits>::RegisterExternalReferences(New, registry);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
KeyExportJob(Environment* env,
|
|
300
|
+
v8::Local<v8::Object> object,
|
|
301
|
+
CryptoJobMode mode,
|
|
302
|
+
const KeyObjectData& key,
|
|
303
|
+
WebCryptoKeyFormat format,
|
|
304
|
+
AdditionalParams&& params)
|
|
305
|
+
: CryptoJob<KeyExportTraits>(env,
|
|
306
|
+
object,
|
|
307
|
+
AsyncWrap::PROVIDER_KEYEXPORTREQUEST,
|
|
308
|
+
mode,
|
|
309
|
+
std::move(params)),
|
|
310
|
+
key_(key.addRef()),
|
|
333
311
|
format_(format) {}
|
|
334
312
|
|
|
335
313
|
WebCryptoKeyFormat format() const { return format_; }
|
|
@@ -362,23 +340,28 @@ class KeyExportJob final : public CryptoJob<KeyExportTraits> {
|
|
|
362
340
|
}
|
|
363
341
|
}
|
|
364
342
|
|
|
365
|
-
v8::Maybe<
|
|
366
|
-
|
|
367
|
-
v8::Local<v8::Value>* result) override {
|
|
343
|
+
v8::Maybe<void> ToResult(v8::Local<v8::Value>* err,
|
|
344
|
+
v8::Local<v8::Value>* result) override {
|
|
368
345
|
Environment* env = AsyncWrap::env();
|
|
369
346
|
CryptoErrorStore* errors = CryptoJob<KeyExportTraits>::errors();
|
|
370
347
|
if (out_.size() > 0) {
|
|
371
348
|
CHECK(errors->Empty());
|
|
372
349
|
*err = v8::Undefined(env->isolate());
|
|
373
350
|
*result = out_.ToArrayBuffer(env);
|
|
374
|
-
|
|
351
|
+
if (result->IsEmpty()) {
|
|
352
|
+
return v8::Nothing<void>();
|
|
353
|
+
}
|
|
354
|
+
} else {
|
|
355
|
+
if (errors->Empty()) errors->Capture();
|
|
356
|
+
CHECK(!errors->Empty());
|
|
357
|
+
*result = v8::Undefined(env->isolate());
|
|
358
|
+
if (!errors->ToException(env).ToLocal(err)) {
|
|
359
|
+
return v8::Nothing<void>();
|
|
360
|
+
}
|
|
375
361
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
CHECK(!errors->Empty());
|
|
380
|
-
*result = v8::Undefined(env->isolate());
|
|
381
|
-
return v8::Just(errors->ToException(env).ToLocal(err));
|
|
362
|
+
CHECK(!result->IsEmpty());
|
|
363
|
+
CHECK(!err->IsEmpty());
|
|
364
|
+
return v8::JustVoid();
|
|
382
365
|
}
|
|
383
366
|
|
|
384
367
|
SET_SELF_SIZE(KeyExportJob)
|
|
@@ -388,25 +371,22 @@ class KeyExportJob final : public CryptoJob<KeyExportTraits> {
|
|
|
388
371
|
}
|
|
389
372
|
|
|
390
373
|
private:
|
|
391
|
-
|
|
374
|
+
KeyObjectData key_;
|
|
392
375
|
WebCryptoKeyFormat format_;
|
|
393
376
|
ByteSource out_;
|
|
394
377
|
};
|
|
395
378
|
|
|
396
|
-
WebCryptoKeyExportStatus PKEY_SPKI_Export(
|
|
397
|
-
|
|
398
|
-
ByteSource* out);
|
|
379
|
+
WebCryptoKeyExportStatus PKEY_SPKI_Export(const KeyObjectData& key_data,
|
|
380
|
+
ByteSource* out);
|
|
399
381
|
|
|
400
|
-
WebCryptoKeyExportStatus PKEY_PKCS8_Export(
|
|
401
|
-
|
|
402
|
-
ByteSource* out);
|
|
382
|
+
WebCryptoKeyExportStatus PKEY_PKCS8_Export(const KeyObjectData& key_data,
|
|
383
|
+
ByteSource* out);
|
|
403
384
|
|
|
404
385
|
namespace Keys {
|
|
405
386
|
void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
387
|
+
void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
406
388
|
} // namespace Keys
|
|
407
|
-
|
|
408
|
-
} // namespace crypto
|
|
409
|
-
} // namespace node
|
|
389
|
+
} // namespace node::crypto
|
|
410
390
|
|
|
411
391
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
412
392
|
#endif // SRC_CRYPTO_CRYPTO_KEYS_H_
|