@encharm/cws 4.1.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bindings/cws_linux_108.node +0 -0
- package/dist/bindings/cws_linux_64.node +0 -0
- package/dist/bindings/cws_linux_72.node +0 -0
- package/dist/bindings/cws_linux_79.node +0 -0
- package/dist/bindings/cws_linux_83.node +0 -0
- package/dist/bindings/cws_linux_93.node +0 -0
- package/dist/bindings/cws_win32_64.node +0 -0
- package/dist/bindings/cws_win32_72.node +0 -0
- package/dist/bindings/cws_win32_79.node +0 -0
- package/dist/bindings/cws_win32_83.node +0 -0
- package/dist/bindings/cws_win32_93.node +0 -0
- package/package.json +1 -1
- package/src/Addon.h +24 -2
- package/src/HTTPSocket.cpp +1 -1
- package/src/headers/{13 → 18}/aliased_buffer.h +61 -9
- package/src/headers/18/aliased_struct-inl.h +54 -0
- package/src/headers/18/aliased_struct.h +63 -0
- package/src/headers/{12 → 18}/async_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/async_wrap.h +26 -2
- package/src/headers/{12/base64.h → 18/base64-inl.h} +78 -86
- package/src/headers/18/base64.h +69 -0
- package/src/headers/{12 → 18}/base_object-inl.h +46 -25
- package/src/headers/{12 → 18}/base_object.h +82 -17
- package/src/headers/{12 → 18}/callback_queue-inl.h +9 -9
- package/src/headers/{12 → 18}/callback_queue.h +13 -5
- package/src/headers/18/cares_wrap.h +523 -0
- package/src/headers/{12 → 18}/connect_wrap.h +0 -0
- package/src/headers/{12 → 18}/connection_wrap.h +0 -0
- package/src/headers/18/crypto/crypto_aes.h +89 -0
- package/src/headers/{13/node_crypto_bio.h → 18/crypto/crypto_bio.h} +3 -4
- package/src/headers/18/crypto/crypto_cipher.h +291 -0
- package/src/headers/{13/node_crypto_clienthello-inl.h → 18/crypto/crypto_clienthello-inl.h} +4 -5
- package/src/headers/{13/node_crypto_clienthello.h → 18/crypto/crypto_clienthello.h} +3 -4
- package/src/headers/{12/node_crypto_common.h → 18/crypto/crypto_common.h} +49 -36
- package/src/headers/18/crypto/crypto_context.h +147 -0
- package/src/headers/18/crypto/crypto_dh.h +156 -0
- package/src/headers/18/crypto/crypto_dsa.h +77 -0
- package/src/headers/18/crypto/crypto_ec.h +170 -0
- package/src/headers/{12/node_crypto_groups.h → 18/crypto/crypto_groups.h} +3 -3
- package/src/headers/18/crypto/crypto_hash.h +89 -0
- package/src/headers/18/crypto/crypto_hkdf.h +65 -0
- package/src/headers/18/crypto/crypto_hmac.h +94 -0
- package/src/headers/18/crypto/crypto_keygen.h +305 -0
- package/src/headers/18/crypto/crypto_keys.h +420 -0
- package/src/headers/18/crypto/crypto_pbkdf2.h +76 -0
- package/src/headers/18/crypto/crypto_random.h +130 -0
- package/src/headers/18/crypto/crypto_rsa.h +141 -0
- package/src/headers/18/crypto/crypto_scrypt.h +87 -0
- package/src/headers/18/crypto/crypto_sig.h +168 -0
- package/src/headers/18/crypto/crypto_spkac.h +21 -0
- package/src/headers/18/crypto/crypto_timing.h +20 -0
- package/src/headers/{13/tls_wrap.h → 18/crypto/crypto_tls.h} +137 -66
- package/src/headers/18/crypto/crypto_util.h +791 -0
- package/src/headers/18/crypto/crypto_x509.h +143 -0
- package/src/headers/{12 → 18}/debug_utils-inl.h +0 -0
- package/src/headers/{13 → 18}/debug_utils.h +7 -4
- package/src/headers/{12 → 18}/diagnosticfilename-inl.h +0 -0
- package/src/headers/{12 → 18}/env-inl.h +397 -304
- package/src/headers/{12 → 18}/env.h +397 -172
- package/src/headers/{12 → 18}/handle_wrap.h +7 -3
- package/src/headers/18/histogram-inl.h +107 -0
- package/src/headers/18/histogram.h +239 -0
- package/src/headers/{13 → 18}/inspector_agent.h +4 -7
- package/src/headers/{12 → 18}/inspector_io.h +0 -0
- package/src/headers/{13 → 18}/inspector_profiler.h +17 -5
- package/src/headers/{12 → 18}/inspector_socket.h +0 -0
- package/src/headers/{12 → 18}/inspector_socket_server.h +0 -0
- package/src/headers/18/js_native_api.h +571 -0
- package/src/headers/{13 → 18}/js_native_api_types.h +30 -7
- package/src/headers/{12 → 18}/js_native_api_v8.h +220 -83
- package/src/headers/{12 → 18}/js_native_api_v8_internals.h +6 -5
- package/src/headers/{12 → 18}/js_stream.h +0 -0
- package/src/headers/{12 → 18}/json_utils.h +0 -0
- package/src/headers/{13 → 18}/memory_tracker-inl.h +6 -5
- package/src/headers/{13 → 18}/memory_tracker.h +0 -7
- package/src/headers/{13 → 18}/module_wrap.h +24 -7
- package/src/headers/{13 → 18}/node.h +329 -68
- package/src/headers/18/node_api.h +288 -0
- package/src/headers/18/node_api_internals.h +38 -0
- package/src/headers/{12 → 18}/node_api_types.h +12 -9
- package/src/headers/{12 → 18}/node_binding.h +0 -0
- package/src/headers/18/node_blob.h +191 -0
- package/src/headers/18/node_bob-inl.h +37 -0
- package/src/headers/18/node_bob.h +111 -0
- package/src/headers/{13 → 18}/node_buffer.h +0 -0
- package/src/headers/{13 → 18}/node_constants.h +5 -1
- package/src/headers/{12 → 18}/node_context_data.h +5 -0
- package/src/headers/{12 → 18}/node_contextify.h +37 -2
- package/src/headers/{10/node_win32_perfctr_provider.h → 18/node_crypto.h} +30 -31
- package/src/headers/{12 → 18}/node_dir.h +0 -0
- package/src/headers/{12 → 18}/node_dtrace.h +0 -0
- package/src/headers/{12 → 18}/node_errors.h +90 -24
- package/src/headers/18/node_external_reference.h +145 -0
- package/src/headers/{13 → 18}/node_file-inl.h +38 -21
- package/src/headers/{12 → 18}/node_file.h +74 -13
- package/src/headers/{13 → 18}/node_http2.h +365 -269
- package/src/headers/{12 → 18}/node_http2_state.h +40 -50
- package/src/headers/{13 → 18}/node_http_common-inl.h +25 -5
- package/src/headers/{13 → 18}/node_http_common.h +24 -20
- package/src/headers/{13 → 18}/node_i18n.h +2 -1
- package/src/headers/{12 → 18}/node_internals.h +39 -41
- package/src/headers/{13 → 18}/node_main_instance.h +15 -18
- package/src/headers/{12 → 18}/node_mem-inl.h +0 -0
- package/src/headers/{12 → 18}/node_mem.h +1 -1
- package/src/headers/{13 → 18}/node_messaging.h +170 -23
- package/src/headers/{12 → 18}/node_metadata.h +17 -4
- package/src/headers/{12 → 18}/node_mutex.h +77 -1
- package/src/headers/{12 → 18}/node_native_module.h +11 -1
- package/src/headers/{13 → 18}/node_native_module_env.h +14 -8
- package/src/headers/{12 → 18}/node_object_wrap.h +0 -0
- package/src/headers/{13 → 18}/node_options-inl.h +51 -21
- package/src/headers/{13 → 18}/node_options.h +46 -14
- package/src/headers/18/node_perf.h +168 -0
- package/src/headers/{12 → 18}/node_perf_common.h +16 -22
- package/src/headers/{12 → 18}/node_platform.h +21 -16
- package/src/headers/18/node_process-inl.h +26 -0
- package/src/headers/18/node_process.h +97 -0
- package/src/headers/{13 → 18}/node_report.h +2 -2
- package/src/headers/{13 → 18}/node_revert.h +10 -0
- package/src/headers/{12 → 18}/node_root_certs.h +439 -651
- package/src/headers/18/node_snapshot_builder.h +43 -0
- package/src/headers/18/node_snapshotable.h +130 -0
- package/src/headers/{12 → 18}/node_sockaddr-inl.h +100 -4
- package/src/headers/18/node_sockaddr.h +405 -0
- package/src/headers/{12 → 18}/node_stat_watcher.h +7 -1
- package/src/headers/{12 → 18}/node_union_bytes.h +0 -0
- package/src/headers/{13 → 18}/node_url.h +18 -1
- package/src/headers/18/node_v8.h +41 -0
- package/src/headers/{12 → 18}/node_v8_platform-inl.h +10 -0
- package/src/headers/{13 → 18}/node_version.h +7 -7
- package/src/headers/{12 → 18}/node_wasi.h +0 -0
- package/src/headers/18/node_wasm_web_api.h +55 -0
- package/src/headers/{13 → 18}/node_watchdog.h +0 -0
- package/src/headers/{10 → 18}/node_win32_etw_provider-inl.h +7 -6
- package/src/headers/{10 → 18}/node_win32_etw_provider.h +0 -0
- package/src/headers/{13 → 18}/node_worker.h +24 -17
- package/src/headers/{12 → 18}/pipe_wrap.h +2 -0
- package/src/headers/{12 → 18}/req_wrap-inl.h +0 -0
- package/src/headers/{12 → 18}/req_wrap.h +1 -1
- package/src/headers/{12 → 18}/spawn_sync.h +0 -0
- package/src/headers/{13 → 18}/stream_base-inl.h +58 -22
- package/src/headers/{13 → 18}/stream_base.h +29 -3
- package/src/headers/{13 → 18}/stream_pipe.h +8 -3
- package/src/headers/{12 → 18}/stream_wrap.h +4 -1
- package/src/headers/{13 → 18}/string_bytes.h +0 -7
- package/src/headers/{12 → 18}/string_decoder-inl.h +0 -0
- package/src/headers/{10 → 18}/string_decoder.h +0 -0
- package/src/headers/{13 → 18}/string_search.h +2 -2
- package/src/headers/{12 → 18}/tcp_wrap.h +4 -0
- package/src/headers/{12 → 18}/threadpoolwork-inl.h +0 -0
- package/src/headers/18/timer_wrap-inl.h +32 -0
- package/src/headers/18/timer_wrap.h +85 -0
- package/src/headers/{13 → 18}/tracing/agent.h +1 -1
- package/src/headers/{12 → 18}/tracing/node_trace_buffer.h +0 -0
- package/src/headers/{12 → 18}/tracing/node_trace_writer.h +0 -0
- package/src/headers/{13 → 18}/tracing/trace_event.h +23 -13
- package/src/headers/{12 → 18}/tracing/trace_event_common.h +0 -0
- package/src/headers/{12 → 18}/tracing/traced_value.h +0 -0
- package/src/headers/{13 → 18}/tty_wrap.h +2 -1
- package/src/headers/{13 → 18}/udp_wrap.h +5 -0
- package/src/headers/{13 → 18}/util-inl.h +69 -15
- package/src/headers/{13 → 18}/util.h +93 -31
- package/src/headers/18/v8-fast-api-calls.h +939 -0
- package/src/headers/{12 → 18}/v8abbr.h +2 -2
- package/src/headers/10/aliased_buffer.h +0 -241
- package/src/headers/10/async_wrap-inl.h +0 -106
- package/src/headers/10/async_wrap.h +0 -218
- package/src/headers/10/base64.h +0 -197
- package/src/headers/10/base_object-inl.h +0 -132
- package/src/headers/10/base_object.h +0 -115
- package/src/headers/10/connect_wrap.h +0 -28
- package/src/headers/10/connection_wrap.h +0 -30
- package/src/headers/10/debug_utils.h +0 -128
- package/src/headers/10/env-inl.h +0 -906
- package/src/headers/10/env.h +0 -1046
- package/src/headers/10/handle_wrap.h +0 -114
- package/src/headers/10/inspector_agent.h +0 -137
- package/src/headers/10/inspector_io.h +0 -97
- package/src/headers/10/inspector_socket.h +0 -59
- package/src/headers/10/inspector_socket_server.h +0 -104
- package/src/headers/10/js_stream.h +0 -57
- package/src/headers/10/memory_tracker-inl.h +0 -318
- package/src/headers/10/memory_tracker.h +0 -246
- package/src/headers/10/module_wrap.h +0 -100
- package/src/headers/10/node.h +0 -863
- package/src/headers/10/node_api.h +0 -752
- package/src/headers/10/node_api_types.h +0 -171
- package/src/headers/10/node_buffer.h +0 -90
- package/src/headers/10/node_code_cache.h +0 -17
- package/src/headers/10/node_constants.h +0 -74
- package/src/headers/10/node_context_data.h +0 -39
- package/src/headers/10/node_contextify.h +0 -141
- package/src/headers/10/node_counters.h +0 -59
- package/src/headers/10/node_crypto.h +0 -699
- package/src/headers/10/node_crypto_bio.h +0 -177
- package/src/headers/10/node_crypto_clienthello-inl.h +0 -92
- package/src/headers/10/node_crypto_clienthello.h +0 -131
- package/src/headers/10/node_crypto_groups.h +0 -416
- package/src/headers/10/node_dtrace.h +0 -84
- package/src/headers/10/node_errors.h +0 -118
- package/src/headers/10/node_file.h +0 -373
- package/src/headers/10/node_http2.h +0 -1304
- package/src/headers/10/node_http2_state.h +0 -158
- package/src/headers/10/node_i18n.h +0 -69
- package/src/headers/10/node_internals.h +0 -952
- package/src/headers/10/node_javascript.h +0 -41
- package/src/headers/10/node_messaging.h +0 -219
- package/src/headers/10/node_mutex.h +0 -191
- package/src/headers/10/node_object_wrap.h +0 -130
- package/src/headers/10/node_options-inl.h +0 -444
- package/src/headers/10/node_options.h +0 -397
- package/src/headers/10/node_perf.h +0 -134
- package/src/headers/10/node_perf_common.h +0 -96
- package/src/headers/10/node_persistent.h +0 -30
- package/src/headers/10/node_platform.h +0 -170
- package/src/headers/10/node_revert.h +0 -75
- package/src/headers/10/node_root_certs.h +0 -3393
- package/src/headers/10/node_stat_watcher.h +0 -65
- package/src/headers/10/node_url.h +0 -193
- package/src/headers/10/node_version.h +0 -120
- package/src/headers/10/node_watchdog.h +0 -114
- package/src/headers/10/node_worker.h +0 -94
- package/src/headers/10/pipe_wrap.h +0 -76
- package/src/headers/10/req_wrap-inl.h +0 -166
- package/src/headers/10/req_wrap.h +0 -61
- package/src/headers/10/sharedarraybuffer_metadata.h +0 -67
- package/src/headers/10/spawn_sync.h +0 -240
- package/src/headers/10/stream_base-inl.h +0 -458
- package/src/headers/10/stream_base.h +0 -378
- package/src/headers/10/stream_pipe.h +0 -72
- package/src/headers/10/stream_wrap.h +0 -130
- package/src/headers/10/string_bytes.h +0 -126
- package/src/headers/10/string_decoder-inl.h +0 -38
- package/src/headers/10/string_search.h +0 -620
- package/src/headers/10/tcp_wrap.h +0 -99
- package/src/headers/10/tls_wrap.h +0 -195
- package/src/headers/10/tracing/agent.h +0 -178
- package/src/headers/10/tracing/node_trace_buffer.h +0 -83
- package/src/headers/10/tracing/node_trace_writer.h +0 -75
- package/src/headers/10/tracing/trace_event.h +0 -706
- package/src/headers/10/tracing/trace_event_common.h +0 -1102
- package/src/headers/10/tracing/traced_value.h +0 -68
- package/src/headers/10/tty_wrap.h +0 -63
- package/src/headers/10/udp_wrap.h +0 -102
- package/src/headers/10/util-inl.h +0 -459
- package/src/headers/10/util.h +0 -508
- package/src/headers/10/v8abbr.h +0 -121
- package/src/headers/12/aliased_buffer.h +0 -263
- package/src/headers/12/debug_utils.h +0 -181
- package/src/headers/12/histogram-inl.h +0 -83
- package/src/headers/12/histogram.h +0 -98
- package/src/headers/12/http_parser_adaptor.h +0 -24
- package/src/headers/12/inspector_agent.h +0 -147
- package/src/headers/12/inspector_profiler.h +0 -137
- package/src/headers/12/js_native_api.h +0 -541
- package/src/headers/12/js_native_api_types.h +0 -139
- package/src/headers/12/memory_tracker-inl.h +0 -339
- package/src/headers/12/memory_tracker.h +0 -283
- package/src/headers/12/module_wrap.h +0 -99
- package/src/headers/12/node.h +0 -887
- package/src/headers/12/node_api.h +0 -239
- package/src/headers/12/node_buffer.h +0 -92
- package/src/headers/12/node_constants.h +0 -80
- package/src/headers/12/node_crypto.h +0 -800
- package/src/headers/12/node_crypto_bio.h +0 -195
- package/src/headers/12/node_crypto_clienthello-inl.h +0 -91
- package/src/headers/12/node_crypto_clienthello.h +0 -132
- package/src/headers/12/node_file-inl.h +0 -289
- package/src/headers/12/node_http2.h +0 -1311
- package/src/headers/12/node_http_parser_impl.h +0 -994
- package/src/headers/12/node_i18n.h +0 -144
- package/src/headers/12/node_main_instance.h +0 -97
- package/src/headers/12/node_messaging.h +0 -227
- package/src/headers/12/node_native_module_env.h +0 -65
- package/src/headers/12/node_options-inl.h +0 -447
- package/src/headers/12/node_options.h +0 -479
- package/src/headers/12/node_perf.h +0 -181
- package/src/headers/12/node_process.h +0 -41
- package/src/headers/12/node_report.h +0 -47
- package/src/headers/12/node_revert.h +0 -78
- package/src/headers/12/node_sockaddr.h +0 -123
- package/src/headers/12/node_url.h +0 -188
- package/src/headers/12/node_version.h +0 -98
- package/src/headers/12/node_watchdog.h +0 -152
- package/src/headers/12/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/12/node_win32_etw_provider.h +0 -99
- package/src/headers/12/node_worker.h +0 -142
- package/src/headers/12/sharedarraybuffer_metadata.h +0 -72
- package/src/headers/12/stream_base-inl.h +0 -323
- package/src/headers/12/stream_base.h +0 -431
- package/src/headers/12/stream_pipe.h +0 -72
- package/src/headers/12/string_bytes.h +0 -142
- package/src/headers/12/string_decoder.h +0 -50
- package/src/headers/12/string_search.h +0 -638
- package/src/headers/12/tls_wrap.h +0 -221
- package/src/headers/12/tracing/agent.h +0 -195
- package/src/headers/12/tracing/trace_event.h +0 -710
- package/src/headers/12/tty_wrap.h +0 -64
- package/src/headers/12/udp_wrap.h +0 -222
- package/src/headers/12/util-inl.h +0 -529
- package/src/headers/12/util.h +0 -765
- package/src/headers/13/async_wrap-inl.h +0 -94
- package/src/headers/13/async_wrap.h +0 -224
- package/src/headers/13/base64.h +0 -197
- package/src/headers/13/base_object-inl.h +0 -353
- package/src/headers/13/base_object.h +0 -229
- package/src/headers/13/connect_wrap.h +0 -26
- package/src/headers/13/connection_wrap.h +0 -30
- package/src/headers/13/debug_utils-inl.h +0 -223
- package/src/headers/13/diagnosticfilename-inl.h +0 -33
- package/src/headers/13/env-inl.h +0 -1293
- package/src/headers/13/env.h +0 -1469
- package/src/headers/13/handle_wrap.h +0 -117
- package/src/headers/13/histogram-inl.h +0 -83
- package/src/headers/13/histogram.h +0 -98
- package/src/headers/13/inspector_io.h +0 -78
- package/src/headers/13/inspector_socket.h +0 -60
- package/src/headers/13/inspector_socket_server.h +0 -110
- package/src/headers/13/js_native_api.h +0 -541
- package/src/headers/13/js_native_api_v8.h +0 -303
- package/src/headers/13/js_native_api_v8_internals.h +0 -38
- package/src/headers/13/js_stream.h +0 -52
- package/src/headers/13/json_utils.h +0 -160
- package/src/headers/13/node_api.h +0 -239
- package/src/headers/13/node_api_types.h +0 -44
- package/src/headers/13/node_binding.h +0 -99
- package/src/headers/13/node_context_data.h +0 -39
- package/src/headers/13/node_contextify.h +0 -161
- package/src/headers/13/node_crypto.h +0 -800
- package/src/headers/13/node_crypto_common.h +0 -138
- package/src/headers/13/node_crypto_groups.h +0 -415
- package/src/headers/13/node_dir.h +0 -52
- package/src/headers/13/node_dtrace.h +0 -86
- package/src/headers/13/node_errors.h +0 -210
- package/src/headers/13/node_file.h +0 -364
- package/src/headers/13/node_http2_state.h +0 -144
- package/src/headers/13/node_internals.h +0 -405
- package/src/headers/13/node_mem-inl.h +0 -112
- package/src/headers/13/node_mem.h +0 -41
- package/src/headers/13/node_metadata.h +0 -109
- package/src/headers/13/node_mutex.h +0 -247
- package/src/headers/13/node_native_module.h +0 -99
- package/src/headers/13/node_object_wrap.h +0 -132
- package/src/headers/13/node_perf.h +0 -181
- package/src/headers/13/node_perf_common.h +0 -97
- package/src/headers/13/node_platform.h +0 -190
- package/src/headers/13/node_process.h +0 -41
- package/src/headers/13/node_root_certs.h +0 -3424
- package/src/headers/13/node_sockaddr-inl.h +0 -170
- package/src/headers/13/node_sockaddr.h +0 -123
- package/src/headers/13/node_stat_watcher.h +0 -66
- package/src/headers/13/node_union_bytes.h +0 -103
- package/src/headers/13/node_v8_platform-inl.h +0 -184
- package/src/headers/13/node_wasi.h +0 -108
- package/src/headers/13/node_win32_etw_provider-inl.h +0 -287
- package/src/headers/13/node_win32_etw_provider.h +0 -99
- package/src/headers/13/pipe_wrap.h +0 -78
- package/src/headers/13/req_wrap-inl.h +0 -170
- package/src/headers/13/req_wrap.h +0 -77
- package/src/headers/13/spawn_sync.h +0 -242
- package/src/headers/13/stream_wrap.h +0 -130
- package/src/headers/13/string_decoder-inl.h +0 -37
- package/src/headers/13/string_decoder.h +0 -50
- package/src/headers/13/tcp_wrap.h +0 -101
- package/src/headers/13/threadpoolwork-inl.h +0 -57
- package/src/headers/13/tracing/node_trace_buffer.h +0 -83
- package/src/headers/13/tracing/node_trace_writer.h +0 -75
- package/src/headers/13/tracing/trace_event_common.h +0 -1109
- package/src/headers/13/tracing/traced_value.h +0 -70
- package/src/headers/13/v8abbr.h +0 -124
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_KEYGEN_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_KEYGEN_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "async_wrap.h"
|
|
7
|
+
#include "base_object.h"
|
|
8
|
+
#include "crypto/crypto_keys.h"
|
|
9
|
+
#include "crypto/crypto_util.h"
|
|
10
|
+
#include "env.h"
|
|
11
|
+
#include "memory_tracker.h"
|
|
12
|
+
#include "v8.h"
|
|
13
|
+
|
|
14
|
+
namespace node {
|
|
15
|
+
namespace crypto {
|
|
16
|
+
namespace Keygen {
|
|
17
|
+
void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
18
|
+
void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
19
|
+
} // namespace Keygen
|
|
20
|
+
|
|
21
|
+
enum class KeyGenJobStatus {
|
|
22
|
+
OK,
|
|
23
|
+
FAILED
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// A Base CryptoJob for generating secret keys or key pairs.
|
|
27
|
+
// The KeyGenTraits is largely responsible for the details of
|
|
28
|
+
// the implementation, while KeyGenJob handles the common
|
|
29
|
+
// mechanisms.
|
|
30
|
+
template <typename KeyGenTraits>
|
|
31
|
+
class KeyGenJob final : public CryptoJob<KeyGenTraits> {
|
|
32
|
+
public:
|
|
33
|
+
using AdditionalParams = typename KeyGenTraits::AdditionalParameters;
|
|
34
|
+
|
|
35
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
|
36
|
+
Environment* env = Environment::GetCurrent(args);
|
|
37
|
+
CHECK(args.IsConstructCall());
|
|
38
|
+
|
|
39
|
+
CryptoJobMode mode = GetCryptoJobMode(args[0]);
|
|
40
|
+
|
|
41
|
+
unsigned int offset = 1;
|
|
42
|
+
|
|
43
|
+
AdditionalParams params;
|
|
44
|
+
if (KeyGenTraits::AdditionalConfig(mode, args, &offset, ¶ms)
|
|
45
|
+
.IsNothing()) {
|
|
46
|
+
// The KeyGenTraits::AdditionalConfig is responsible for
|
|
47
|
+
// calling an appropriate THROW_CRYPTO_* variant reporting
|
|
48
|
+
// whatever error caused initialization to fail.
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
new KeyGenJob<KeyGenTraits>(env, args.This(), mode, std::move(params));
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
static void Initialize(
|
|
56
|
+
Environment* env,
|
|
57
|
+
v8::Local<v8::Object> target) {
|
|
58
|
+
CryptoJob<KeyGenTraits>::Initialize(New, env, target);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
|
|
62
|
+
CryptoJob<KeyGenTraits>::RegisterExternalReferences(New, registry);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
KeyGenJob(
|
|
66
|
+
Environment* env,
|
|
67
|
+
v8::Local<v8::Object> object,
|
|
68
|
+
CryptoJobMode mode,
|
|
69
|
+
AdditionalParams&& params)
|
|
70
|
+
: CryptoJob<KeyGenTraits>(
|
|
71
|
+
env,
|
|
72
|
+
object,
|
|
73
|
+
KeyGenTraits::Provider,
|
|
74
|
+
mode,
|
|
75
|
+
std::move(params)) {}
|
|
76
|
+
|
|
77
|
+
void DoThreadPoolWork() override {
|
|
78
|
+
// Make sure the CSPRNG is properly seeded so the results are secure.
|
|
79
|
+
CheckEntropy();
|
|
80
|
+
|
|
81
|
+
AdditionalParams* params = CryptoJob<KeyGenTraits>::params();
|
|
82
|
+
|
|
83
|
+
switch (KeyGenTraits::DoKeyGen(AsyncWrap::env(), params)) {
|
|
84
|
+
case KeyGenJobStatus::OK:
|
|
85
|
+
status_ = KeyGenJobStatus::OK;
|
|
86
|
+
// Success!
|
|
87
|
+
break;
|
|
88
|
+
case KeyGenJobStatus::FAILED: {
|
|
89
|
+
CryptoErrorStore* errors = CryptoJob<KeyGenTraits>::errors();
|
|
90
|
+
errors->Capture();
|
|
91
|
+
if (errors->Empty())
|
|
92
|
+
errors->Insert(NodeCryptoError::KEY_GENERATION_JOB_FAILED);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
v8::Maybe<bool> ToResult(
|
|
98
|
+
v8::Local<v8::Value>* err,
|
|
99
|
+
v8::Local<v8::Value>* result) override {
|
|
100
|
+
Environment* env = AsyncWrap::env();
|
|
101
|
+
CryptoErrorStore* errors = CryptoJob<KeyGenTraits>::errors();
|
|
102
|
+
AdditionalParams* params = CryptoJob<KeyGenTraits>::params();
|
|
103
|
+
|
|
104
|
+
if (status_ == KeyGenJobStatus::OK) {
|
|
105
|
+
v8::Maybe<bool> ret = KeyGenTraits::EncodeKey(env, params, result);
|
|
106
|
+
if (ret.IsJust() && ret.FromJust()) {
|
|
107
|
+
*err = Undefined(env->isolate());
|
|
108
|
+
}
|
|
109
|
+
return ret;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if (errors->Empty())
|
|
113
|
+
errors->Capture();
|
|
114
|
+
CHECK(!errors->Empty());
|
|
115
|
+
*result = Undefined(env->isolate());
|
|
116
|
+
return v8::Just(errors->ToException(env).ToLocal(err));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
SET_SELF_SIZE(KeyGenJob)
|
|
120
|
+
|
|
121
|
+
private:
|
|
122
|
+
KeyGenJobStatus status_ = KeyGenJobStatus::FAILED;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// A Base KeyGenTraits for Key Pair generation algorithms.
|
|
126
|
+
template <typename KeyPairAlgorithmTraits>
|
|
127
|
+
struct KeyPairGenTraits final {
|
|
128
|
+
using AdditionalParameters =
|
|
129
|
+
typename KeyPairAlgorithmTraits::AdditionalParameters;
|
|
130
|
+
|
|
131
|
+
static const AsyncWrap::ProviderType Provider =
|
|
132
|
+
AsyncWrap::PROVIDER_KEYPAIRGENREQUEST;
|
|
133
|
+
static constexpr const char* JobName = KeyPairAlgorithmTraits::JobName;
|
|
134
|
+
|
|
135
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
136
|
+
CryptoJobMode mode,
|
|
137
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
138
|
+
unsigned int* offset,
|
|
139
|
+
AdditionalParameters* params) {
|
|
140
|
+
// Notice that offset is a pointer. Each of the AdditionalConfig,
|
|
141
|
+
// GetPublicKeyEncodingFromJs, and GetPrivateKeyEncodingFromJs
|
|
142
|
+
// functions will update the value of the offset as they successfully
|
|
143
|
+
// process input parameters. This allows each job to have a variable
|
|
144
|
+
// number of input parameters specific to each job type.
|
|
145
|
+
if (KeyPairAlgorithmTraits::AdditionalConfig(mode, args, offset, params)
|
|
146
|
+
.IsNothing()) {
|
|
147
|
+
return v8::Just(false);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
params->public_key_encoding = ManagedEVPPKey::GetPublicKeyEncodingFromJs(
|
|
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);
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
static KeyGenJobStatus DoKeyGen(
|
|
168
|
+
Environment* env,
|
|
169
|
+
AdditionalParameters* params) {
|
|
170
|
+
EVPKeyCtxPointer ctx = KeyPairAlgorithmTraits::Setup(params);
|
|
171
|
+
|
|
172
|
+
if (!ctx)
|
|
173
|
+
return KeyGenJobStatus::FAILED;
|
|
174
|
+
|
|
175
|
+
// Generate the key
|
|
176
|
+
EVP_PKEY* pkey = nullptr;
|
|
177
|
+
if (!EVP_PKEY_keygen(ctx.get(), &pkey))
|
|
178
|
+
return KeyGenJobStatus::FAILED;
|
|
179
|
+
|
|
180
|
+
params->key = ManagedEVPPKey(EVPKeyPointer(pkey));
|
|
181
|
+
return KeyGenJobStatus::OK;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
static v8::Maybe<bool> EncodeKey(
|
|
185
|
+
Environment* env,
|
|
186
|
+
AdditionalParameters* params,
|
|
187
|
+
v8::Local<v8::Value>* result) {
|
|
188
|
+
v8::Local<v8::Value> keys[2];
|
|
189
|
+
if (ManagedEVPPKey::ToEncodedPublicKey(
|
|
190
|
+
env,
|
|
191
|
+
std::move(params->key),
|
|
192
|
+
params->public_key_encoding,
|
|
193
|
+
&keys[0]).IsNothing() ||
|
|
194
|
+
ManagedEVPPKey::ToEncodedPrivateKey(
|
|
195
|
+
env,
|
|
196
|
+
std::move(params->key),
|
|
197
|
+
params->private_key_encoding,
|
|
198
|
+
&keys[1]).IsNothing()) {
|
|
199
|
+
return v8::Nothing<bool>();
|
|
200
|
+
}
|
|
201
|
+
*result = v8::Array::New(env->isolate(), keys, arraysize(keys));
|
|
202
|
+
return v8::Just(true);
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
|
|
206
|
+
struct SecretKeyGenConfig final : public MemoryRetainer {
|
|
207
|
+
size_t length; // Expressed a a number of bits
|
|
208
|
+
char* out = nullptr; // Placeholder for the generated key bytes
|
|
209
|
+
|
|
210
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
211
|
+
SET_MEMORY_INFO_NAME(SecretKeyGenConfig)
|
|
212
|
+
SET_SELF_SIZE(SecretKeyGenConfig)
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
struct SecretKeyGenTraits final {
|
|
216
|
+
using AdditionalParameters = SecretKeyGenConfig;
|
|
217
|
+
static const AsyncWrap::ProviderType Provider =
|
|
218
|
+
AsyncWrap::PROVIDER_KEYGENREQUEST;
|
|
219
|
+
static constexpr const char* JobName = "SecretKeyGenJob";
|
|
220
|
+
|
|
221
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
222
|
+
CryptoJobMode mode,
|
|
223
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
224
|
+
unsigned int* offset,
|
|
225
|
+
SecretKeyGenConfig* params);
|
|
226
|
+
|
|
227
|
+
static KeyGenJobStatus DoKeyGen(
|
|
228
|
+
Environment* env,
|
|
229
|
+
SecretKeyGenConfig* params);
|
|
230
|
+
|
|
231
|
+
static v8::Maybe<bool> EncodeKey(
|
|
232
|
+
Environment* env,
|
|
233
|
+
SecretKeyGenConfig* params,
|
|
234
|
+
v8::Local<v8::Value>* result);
|
|
235
|
+
};
|
|
236
|
+
|
|
237
|
+
template <typename AlgorithmParams>
|
|
238
|
+
struct KeyPairGenConfig final : public MemoryRetainer {
|
|
239
|
+
PublicKeyEncodingConfig public_key_encoding;
|
|
240
|
+
PrivateKeyEncodingConfig private_key_encoding;
|
|
241
|
+
ManagedEVPPKey key;
|
|
242
|
+
AlgorithmParams params;
|
|
243
|
+
|
|
244
|
+
KeyPairGenConfig() = default;
|
|
245
|
+
~KeyPairGenConfig() {
|
|
246
|
+
Mutex::ScopedLock priv_lock(*key.mutex());
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
explicit KeyPairGenConfig(KeyPairGenConfig&& other) noexcept
|
|
250
|
+
: public_key_encoding(other.public_key_encoding),
|
|
251
|
+
private_key_encoding(
|
|
252
|
+
std::forward<PrivateKeyEncodingConfig>(
|
|
253
|
+
other.private_key_encoding)),
|
|
254
|
+
key(std::move(other.key)),
|
|
255
|
+
params(std::move(other.params)) {}
|
|
256
|
+
|
|
257
|
+
KeyPairGenConfig& operator=(KeyPairGenConfig&& other) noexcept {
|
|
258
|
+
if (&other == this) return *this;
|
|
259
|
+
this->~KeyPairGenConfig();
|
|
260
|
+
return *new (this) KeyPairGenConfig(std::move(other));
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
void MemoryInfo(MemoryTracker* tracker) const override {
|
|
264
|
+
tracker->TrackField("key", key);
|
|
265
|
+
if (!private_key_encoding.passphrase_.IsEmpty()) {
|
|
266
|
+
tracker->TrackFieldWithSize("private_key_encoding.passphrase",
|
|
267
|
+
private_key_encoding.passphrase_->size());
|
|
268
|
+
}
|
|
269
|
+
tracker->TrackField("params", params);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
SET_MEMORY_INFO_NAME(KeyPairGenConfig)
|
|
273
|
+
SET_SELF_SIZE(KeyPairGenConfig)
|
|
274
|
+
};
|
|
275
|
+
|
|
276
|
+
struct NidKeyPairParams final : public MemoryRetainer {
|
|
277
|
+
int id;
|
|
278
|
+
SET_NO_MEMORY_INFO()
|
|
279
|
+
SET_MEMORY_INFO_NAME(NidKeyPairParams)
|
|
280
|
+
SET_SELF_SIZE(NidKeyPairParams)
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
using NidKeyPairGenConfig = KeyPairGenConfig<NidKeyPairParams>;
|
|
284
|
+
|
|
285
|
+
struct NidKeyPairGenTraits final {
|
|
286
|
+
using AdditionalParameters = NidKeyPairGenConfig;
|
|
287
|
+
static constexpr const char* JobName = "NidKeyPairGenJob";
|
|
288
|
+
|
|
289
|
+
static EVPKeyCtxPointer Setup(NidKeyPairGenConfig* params);
|
|
290
|
+
|
|
291
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
292
|
+
CryptoJobMode mode,
|
|
293
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
294
|
+
unsigned int* offset,
|
|
295
|
+
NidKeyPairGenConfig* params);
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
using NidKeyPairGenJob = KeyGenJob<KeyPairGenTraits<NidKeyPairGenTraits>>;
|
|
299
|
+
using SecretKeyGenJob = KeyGenJob<SecretKeyGenTraits>;
|
|
300
|
+
} // namespace crypto
|
|
301
|
+
} // namespace node
|
|
302
|
+
|
|
303
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
304
|
+
#endif // SRC_CRYPTO_CRYPTO_KEYGEN_H_
|
|
305
|
+
|