@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,156 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_DH_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_DH_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "crypto/crypto_keys.h"
|
|
7
|
+
#include "crypto/crypto_keygen.h"
|
|
8
|
+
#include "crypto/crypto_util.h"
|
|
9
|
+
#include "env.h"
|
|
10
|
+
#include "memory_tracker.h"
|
|
11
|
+
#include "v8.h"
|
|
12
|
+
|
|
13
|
+
#include <variant>
|
|
14
|
+
|
|
15
|
+
namespace node {
|
|
16
|
+
namespace crypto {
|
|
17
|
+
class DiffieHellman : public BaseObject {
|
|
18
|
+
public:
|
|
19
|
+
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
20
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
21
|
+
|
|
22
|
+
bool Init(int primeLength, int g);
|
|
23
|
+
bool Init(const char* p, int p_len, int g);
|
|
24
|
+
bool Init(const char* p, int p_len, const char* g, int g_len);
|
|
25
|
+
|
|
26
|
+
static void Stateless(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
27
|
+
|
|
28
|
+
protected:
|
|
29
|
+
static void DiffieHellmanGroup(
|
|
30
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
31
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
32
|
+
static void GenerateKeys(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
33
|
+
static void GetPrime(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
34
|
+
static void GetGenerator(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
35
|
+
static void GetPublicKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
36
|
+
static void GetPrivateKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
37
|
+
static void ComputeSecret(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
38
|
+
static void SetPublicKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
39
|
+
static void SetPrivateKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
40
|
+
static void VerifyErrorGetter(
|
|
41
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
42
|
+
|
|
43
|
+
DiffieHellman(Environment* env, v8::Local<v8::Object> wrap);
|
|
44
|
+
|
|
45
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
46
|
+
SET_MEMORY_INFO_NAME(DiffieHellman)
|
|
47
|
+
SET_SELF_SIZE(DiffieHellman)
|
|
48
|
+
|
|
49
|
+
private:
|
|
50
|
+
static void GetField(const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
51
|
+
const BIGNUM* (*get_field)(const DH*),
|
|
52
|
+
const char* err_if_null);
|
|
53
|
+
static void SetKey(const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
54
|
+
int (*set_field)(DH*, BIGNUM*), const char* what);
|
|
55
|
+
bool VerifyContext();
|
|
56
|
+
|
|
57
|
+
int verifyError_;
|
|
58
|
+
DHPointer dh_;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
struct DhKeyPairParams final : public MemoryRetainer {
|
|
62
|
+
// Diffie-Hellman can either generate keys using a fixed prime, or by first
|
|
63
|
+
// generating a random prime of a given size (in bits). Only one of both
|
|
64
|
+
// options may be specified.
|
|
65
|
+
std::variant<BignumPointer, int> prime;
|
|
66
|
+
unsigned int generator;
|
|
67
|
+
SET_NO_MEMORY_INFO()
|
|
68
|
+
SET_MEMORY_INFO_NAME(DhKeyPairParams)
|
|
69
|
+
SET_SELF_SIZE(DhKeyPairParams)
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
using DhKeyPairGenConfig = KeyPairGenConfig<DhKeyPairParams>;
|
|
73
|
+
|
|
74
|
+
struct DhKeyGenTraits final {
|
|
75
|
+
using AdditionalParameters = DhKeyPairGenConfig;
|
|
76
|
+
static constexpr const char* JobName = "DhKeyPairGenJob";
|
|
77
|
+
|
|
78
|
+
static EVPKeyCtxPointer Setup(DhKeyPairGenConfig* params);
|
|
79
|
+
|
|
80
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
81
|
+
CryptoJobMode mode,
|
|
82
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
83
|
+
unsigned int* offset,
|
|
84
|
+
DhKeyPairGenConfig* params);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
using DHKeyPairGenJob = KeyGenJob<KeyPairGenTraits<DhKeyGenTraits>>;
|
|
88
|
+
|
|
89
|
+
struct DHKeyExportConfig final : public MemoryRetainer {
|
|
90
|
+
SET_NO_MEMORY_INFO()
|
|
91
|
+
SET_MEMORY_INFO_NAME(DHKeyExportConfig)
|
|
92
|
+
SET_SELF_SIZE(DHKeyExportConfig)
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
struct DHKeyExportTraits final {
|
|
96
|
+
static constexpr const char* JobName = "DHKeyExportJob";
|
|
97
|
+
using AdditionalParameters = DHKeyExportConfig;
|
|
98
|
+
|
|
99
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
100
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
101
|
+
unsigned int offset,
|
|
102
|
+
DHKeyExportConfig* config);
|
|
103
|
+
|
|
104
|
+
static WebCryptoKeyExportStatus DoExport(
|
|
105
|
+
std::shared_ptr<KeyObjectData> key_data,
|
|
106
|
+
WebCryptoKeyFormat format,
|
|
107
|
+
const DHKeyExportConfig& params,
|
|
108
|
+
ByteSource* out);
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
using DHKeyExportJob = KeyExportJob<DHKeyExportTraits>;
|
|
112
|
+
|
|
113
|
+
struct DHBitsConfig final : public MemoryRetainer {
|
|
114
|
+
std::shared_ptr<KeyObjectData> private_key;
|
|
115
|
+
std::shared_ptr<KeyObjectData> public_key;
|
|
116
|
+
SET_NO_MEMORY_INFO()
|
|
117
|
+
SET_MEMORY_INFO_NAME(DHBitsConfig)
|
|
118
|
+
SET_SELF_SIZE(DHBitsConfig)
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
struct DHBitsTraits final {
|
|
122
|
+
using AdditionalParameters = DHBitsConfig;
|
|
123
|
+
static constexpr const char* JobName = "DHBitsJob";
|
|
124
|
+
static constexpr AsyncWrap::ProviderType Provider =
|
|
125
|
+
AsyncWrap::PROVIDER_DERIVEBITSREQUEST;
|
|
126
|
+
|
|
127
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
128
|
+
CryptoJobMode mode,
|
|
129
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
130
|
+
unsigned int offset,
|
|
131
|
+
DHBitsConfig* params);
|
|
132
|
+
|
|
133
|
+
static bool DeriveBits(
|
|
134
|
+
Environment* env,
|
|
135
|
+
const DHBitsConfig& params,
|
|
136
|
+
ByteSource* out_);
|
|
137
|
+
|
|
138
|
+
static v8::Maybe<bool> EncodeOutput(
|
|
139
|
+
Environment* env,
|
|
140
|
+
const DHBitsConfig& params,
|
|
141
|
+
ByteSource* out,
|
|
142
|
+
v8::Local<v8::Value>* result);
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
using DHBitsJob = DeriveBitsJob<DHBitsTraits>;
|
|
146
|
+
|
|
147
|
+
v8::Maybe<bool> GetDhKeyDetail(
|
|
148
|
+
Environment* env,
|
|
149
|
+
std::shared_ptr<KeyObjectData> key,
|
|
150
|
+
v8::Local<v8::Object> target);
|
|
151
|
+
|
|
152
|
+
} // namespace crypto
|
|
153
|
+
} // namespace node
|
|
154
|
+
|
|
155
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
156
|
+
#endif // SRC_CRYPTO_CRYPTO_DH_H_
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_DSA_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_DSA_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "crypto/crypto_keys.h"
|
|
7
|
+
#include "crypto/crypto_keygen.h"
|
|
8
|
+
#include "crypto/crypto_util.h"
|
|
9
|
+
#include "env.h"
|
|
10
|
+
#include "memory_tracker.h"
|
|
11
|
+
#include "v8.h"
|
|
12
|
+
|
|
13
|
+
namespace node {
|
|
14
|
+
namespace crypto {
|
|
15
|
+
struct DsaKeyPairParams final : public MemoryRetainer {
|
|
16
|
+
unsigned int modulus_bits;
|
|
17
|
+
int divisor_bits;
|
|
18
|
+
SET_NO_MEMORY_INFO()
|
|
19
|
+
SET_MEMORY_INFO_NAME(DsaKeyPairParams)
|
|
20
|
+
SET_SELF_SIZE(DsaKeyPairParams)
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
using DsaKeyPairGenConfig = KeyPairGenConfig<DsaKeyPairParams>;
|
|
24
|
+
|
|
25
|
+
struct DsaKeyGenTraits final {
|
|
26
|
+
using AdditionalParameters = DsaKeyPairGenConfig;
|
|
27
|
+
static constexpr const char* JobName = "DsaKeyPairGenJob";
|
|
28
|
+
|
|
29
|
+
static EVPKeyCtxPointer Setup(DsaKeyPairGenConfig* params);
|
|
30
|
+
|
|
31
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
32
|
+
CryptoJobMode mode,
|
|
33
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
34
|
+
unsigned int* offset,
|
|
35
|
+
DsaKeyPairGenConfig* params);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
using DsaKeyPairGenJob = KeyGenJob<KeyPairGenTraits<DsaKeyGenTraits>>;
|
|
39
|
+
|
|
40
|
+
struct DSAKeyExportConfig final : public MemoryRetainer {
|
|
41
|
+
SET_NO_MEMORY_INFO()
|
|
42
|
+
SET_MEMORY_INFO_NAME(DSAKeyExportConfig)
|
|
43
|
+
SET_SELF_SIZE(DSAKeyExportConfig)
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
struct DSAKeyExportTraits final {
|
|
47
|
+
static constexpr const char* JobName = "DSAKeyExportJob";
|
|
48
|
+
using AdditionalParameters = DSAKeyExportConfig;
|
|
49
|
+
|
|
50
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
51
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
52
|
+
unsigned int offset,
|
|
53
|
+
DSAKeyExportConfig* config);
|
|
54
|
+
|
|
55
|
+
static WebCryptoKeyExportStatus DoExport(
|
|
56
|
+
std::shared_ptr<KeyObjectData> key_data,
|
|
57
|
+
WebCryptoKeyFormat format,
|
|
58
|
+
const DSAKeyExportConfig& params,
|
|
59
|
+
ByteSource* out);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
using DSAKeyExportJob = KeyExportJob<DSAKeyExportTraits>;
|
|
63
|
+
|
|
64
|
+
v8::Maybe<bool> GetDsaKeyDetail(
|
|
65
|
+
Environment* env,
|
|
66
|
+
std::shared_ptr<KeyObjectData> key,
|
|
67
|
+
v8::Local<v8::Object> target);
|
|
68
|
+
|
|
69
|
+
namespace DSAAlg {
|
|
70
|
+
void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
71
|
+
void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
72
|
+
} // namespace DSAAlg
|
|
73
|
+
} // namespace crypto
|
|
74
|
+
} // namespace node
|
|
75
|
+
|
|
76
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
77
|
+
#endif // SRC_CRYPTO_CRYPTO_DSA_H_
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_EC_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_EC_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_keygen.h"
|
|
9
|
+
#include "crypto/crypto_keys.h"
|
|
10
|
+
#include "crypto/crypto_util.h"
|
|
11
|
+
#include "env.h"
|
|
12
|
+
#include "memory_tracker.h"
|
|
13
|
+
#include "node_internals.h"
|
|
14
|
+
#include "v8.h"
|
|
15
|
+
|
|
16
|
+
namespace node {
|
|
17
|
+
namespace crypto {
|
|
18
|
+
int GetCurveFromName(const char* name);
|
|
19
|
+
int GetOKPCurveFromName(const char* name);
|
|
20
|
+
|
|
21
|
+
class ECDH final : public BaseObject {
|
|
22
|
+
public:
|
|
23
|
+
~ECDH() override;
|
|
24
|
+
|
|
25
|
+
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
26
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
27
|
+
|
|
28
|
+
static ECPointPointer BufferToPoint(Environment* env,
|
|
29
|
+
const EC_GROUP* group,
|
|
30
|
+
v8::Local<v8::Value> buf);
|
|
31
|
+
|
|
32
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
33
|
+
SET_MEMORY_INFO_NAME(ECDH)
|
|
34
|
+
SET_SELF_SIZE(ECDH)
|
|
35
|
+
|
|
36
|
+
static void ConvertKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
37
|
+
|
|
38
|
+
static void GetCurves(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
39
|
+
|
|
40
|
+
protected:
|
|
41
|
+
ECDH(Environment* env, v8::Local<v8::Object> wrap, ECKeyPointer&& key);
|
|
42
|
+
|
|
43
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
44
|
+
static void GenerateKeys(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
45
|
+
static void ComputeSecret(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
46
|
+
static void GetPrivateKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
47
|
+
static void SetPrivateKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
48
|
+
static void GetPublicKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
49
|
+
static void SetPublicKey(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
50
|
+
|
|
51
|
+
bool IsKeyPairValid();
|
|
52
|
+
bool IsKeyValidForCurve(const BignumPointer& private_key);
|
|
53
|
+
|
|
54
|
+
ECKeyPointer key_;
|
|
55
|
+
const EC_GROUP* group_;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
struct ECDHBitsConfig final : public MemoryRetainer {
|
|
59
|
+
int id_;
|
|
60
|
+
std::shared_ptr<KeyObjectData> private_;
|
|
61
|
+
std::shared_ptr<KeyObjectData> public_;
|
|
62
|
+
|
|
63
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
64
|
+
SET_MEMORY_INFO_NAME(ECDHBitsConfig)
|
|
65
|
+
SET_SELF_SIZE(ECDHBitsConfig)
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
struct ECDHBitsTraits final {
|
|
69
|
+
using AdditionalParameters = ECDHBitsConfig;
|
|
70
|
+
static constexpr const char* JobName = "ECDHBitsJob";
|
|
71
|
+
static constexpr AsyncWrap::ProviderType Provider =
|
|
72
|
+
AsyncWrap::PROVIDER_DERIVEBITSREQUEST;
|
|
73
|
+
|
|
74
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
75
|
+
CryptoJobMode mode,
|
|
76
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
77
|
+
unsigned int offset,
|
|
78
|
+
ECDHBitsConfig* params);
|
|
79
|
+
|
|
80
|
+
static bool DeriveBits(
|
|
81
|
+
Environment* env,
|
|
82
|
+
const ECDHBitsConfig& params,
|
|
83
|
+
ByteSource* out_);
|
|
84
|
+
|
|
85
|
+
static v8::Maybe<bool> EncodeOutput(
|
|
86
|
+
Environment* env,
|
|
87
|
+
const ECDHBitsConfig& params,
|
|
88
|
+
ByteSource* out,
|
|
89
|
+
v8::Local<v8::Value>* result);
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
using ECDHBitsJob = DeriveBitsJob<ECDHBitsTraits>;
|
|
93
|
+
|
|
94
|
+
struct EcKeyPairParams final : public MemoryRetainer {
|
|
95
|
+
int curve_nid;
|
|
96
|
+
int param_encoding;
|
|
97
|
+
SET_NO_MEMORY_INFO()
|
|
98
|
+
SET_MEMORY_INFO_NAME(EcKeyPairParams)
|
|
99
|
+
SET_SELF_SIZE(EcKeyPairParams)
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
using EcKeyPairGenConfig = KeyPairGenConfig<EcKeyPairParams>;
|
|
103
|
+
|
|
104
|
+
struct EcKeyGenTraits final {
|
|
105
|
+
using AdditionalParameters = EcKeyPairGenConfig;
|
|
106
|
+
static constexpr const char* JobName = "EcKeyPairGenJob";
|
|
107
|
+
|
|
108
|
+
static EVPKeyCtxPointer Setup(EcKeyPairGenConfig* params);
|
|
109
|
+
|
|
110
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
111
|
+
CryptoJobMode mode,
|
|
112
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
113
|
+
unsigned int* offset,
|
|
114
|
+
EcKeyPairGenConfig* params);
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
using ECKeyPairGenJob = KeyGenJob<KeyPairGenTraits<EcKeyGenTraits>>;
|
|
118
|
+
|
|
119
|
+
// There is currently no additional information that the
|
|
120
|
+
// ECKeyExport needs to collect, but we need to provide
|
|
121
|
+
// the base struct anyway.
|
|
122
|
+
struct ECKeyExportConfig final : public MemoryRetainer {
|
|
123
|
+
SET_NO_MEMORY_INFO()
|
|
124
|
+
SET_MEMORY_INFO_NAME(ECKeyExportConfig)
|
|
125
|
+
SET_SELF_SIZE(ECKeyExportConfig)
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
struct ECKeyExportTraits final {
|
|
129
|
+
static constexpr const char* JobName = "ECKeyExportJob";
|
|
130
|
+
using AdditionalParameters = ECKeyExportConfig;
|
|
131
|
+
|
|
132
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
133
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
134
|
+
unsigned int offset,
|
|
135
|
+
ECKeyExportConfig* config);
|
|
136
|
+
|
|
137
|
+
static WebCryptoKeyExportStatus DoExport(
|
|
138
|
+
std::shared_ptr<KeyObjectData> key_data,
|
|
139
|
+
WebCryptoKeyFormat format,
|
|
140
|
+
const ECKeyExportConfig& params,
|
|
141
|
+
ByteSource* out);
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
using ECKeyExportJob = KeyExportJob<ECKeyExportTraits>;
|
|
145
|
+
|
|
146
|
+
v8::Maybe<void> ExportJWKEcKey(
|
|
147
|
+
Environment* env,
|
|
148
|
+
std::shared_ptr<KeyObjectData> key,
|
|
149
|
+
v8::Local<v8::Object> target);
|
|
150
|
+
|
|
151
|
+
v8::Maybe<bool> ExportJWKEdKey(
|
|
152
|
+
Environment* env,
|
|
153
|
+
std::shared_ptr<KeyObjectData> key,
|
|
154
|
+
v8::Local<v8::Object> target);
|
|
155
|
+
|
|
156
|
+
std::shared_ptr<KeyObjectData> ImportJWKEcKey(
|
|
157
|
+
Environment* env,
|
|
158
|
+
v8::Local<v8::Object> jwk,
|
|
159
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
160
|
+
unsigned int offset);
|
|
161
|
+
|
|
162
|
+
v8::Maybe<bool> GetEcKeyDetail(
|
|
163
|
+
Environment* env,
|
|
164
|
+
std::shared_ptr<KeyObjectData> key,
|
|
165
|
+
v8::Local<v8::Object> target);
|
|
166
|
+
} // namespace crypto
|
|
167
|
+
} // namespace node
|
|
168
|
+
|
|
169
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
170
|
+
#endif // SRC_CRYPTO_CRYPTO_EC_H_
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
|
|
20
20
|
// USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
21
21
|
|
|
22
|
-
#ifndef
|
|
23
|
-
#define
|
|
22
|
+
#ifndef SRC_CRYPTO_CRYPTO_GROUPS_H_
|
|
23
|
+
#define SRC_CRYPTO_CRYPTO_GROUPS_H_
|
|
24
24
|
|
|
25
25
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
26
26
|
|
|
@@ -412,4 +412,4 @@ static const modp_group modp_groups[] = {
|
|
|
412
412
|
|
|
413
413
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
414
414
|
|
|
415
|
-
#endif //
|
|
415
|
+
#endif // SRC_CRYPTO_CRYPTO_GROUPS_H_
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_HASH_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_HASH_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "base_object.h"
|
|
7
|
+
#include "crypto/crypto_keys.h"
|
|
8
|
+
#include "crypto/crypto_util.h"
|
|
9
|
+
#include "env.h"
|
|
10
|
+
#include "memory_tracker.h"
|
|
11
|
+
#include "v8.h"
|
|
12
|
+
|
|
13
|
+
namespace node {
|
|
14
|
+
namespace crypto {
|
|
15
|
+
class Hash final : public BaseObject {
|
|
16
|
+
public:
|
|
17
|
+
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
18
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
19
|
+
|
|
20
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
21
|
+
SET_MEMORY_INFO_NAME(Hash)
|
|
22
|
+
SET_SELF_SIZE(Hash)
|
|
23
|
+
|
|
24
|
+
bool HashInit(const EVP_MD* md, v8::Maybe<unsigned int> xof_md_len);
|
|
25
|
+
bool HashUpdate(const char* data, size_t len);
|
|
26
|
+
|
|
27
|
+
static void GetHashes(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
28
|
+
|
|
29
|
+
protected:
|
|
30
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
31
|
+
static void HashUpdate(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
32
|
+
static void HashDigest(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
33
|
+
|
|
34
|
+
Hash(Environment* env, v8::Local<v8::Object> wrap);
|
|
35
|
+
|
|
36
|
+
private:
|
|
37
|
+
EVPMDPointer mdctx_ {};
|
|
38
|
+
unsigned int md_len_ = 0;
|
|
39
|
+
ByteSource digest_;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
struct HashConfig final : public MemoryRetainer {
|
|
43
|
+
CryptoJobMode mode;
|
|
44
|
+
ByteSource in;
|
|
45
|
+
const EVP_MD* digest;
|
|
46
|
+
unsigned int length;
|
|
47
|
+
|
|
48
|
+
HashConfig() = default;
|
|
49
|
+
|
|
50
|
+
explicit HashConfig(HashConfig&& other) noexcept;
|
|
51
|
+
|
|
52
|
+
HashConfig& operator=(HashConfig&& other) noexcept;
|
|
53
|
+
|
|
54
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
55
|
+
SET_MEMORY_INFO_NAME(HashConfig)
|
|
56
|
+
SET_SELF_SIZE(HashConfig)
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
struct HashTraits final {
|
|
60
|
+
using AdditionalParameters = HashConfig;
|
|
61
|
+
static constexpr const char* JobName = "HashJob";
|
|
62
|
+
static constexpr AsyncWrap::ProviderType Provider =
|
|
63
|
+
AsyncWrap::PROVIDER_HASHREQUEST;
|
|
64
|
+
|
|
65
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
66
|
+
CryptoJobMode mode,
|
|
67
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
68
|
+
unsigned int offset,
|
|
69
|
+
HashConfig* params);
|
|
70
|
+
|
|
71
|
+
static bool DeriveBits(
|
|
72
|
+
Environment* env,
|
|
73
|
+
const HashConfig& params,
|
|
74
|
+
ByteSource* out);
|
|
75
|
+
|
|
76
|
+
static v8::Maybe<bool> EncodeOutput(
|
|
77
|
+
Environment* env,
|
|
78
|
+
const HashConfig& params,
|
|
79
|
+
ByteSource* out,
|
|
80
|
+
v8::Local<v8::Value>* result);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
using HashJob = DeriveBitsJob<HashTraits>;
|
|
84
|
+
|
|
85
|
+
} // namespace crypto
|
|
86
|
+
} // namespace node
|
|
87
|
+
|
|
88
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
89
|
+
#endif // SRC_CRYPTO_CRYPTO_HASH_H_
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_HKDF_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_HKDF_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 "v8.h"
|
|
11
|
+
|
|
12
|
+
namespace node {
|
|
13
|
+
namespace crypto {
|
|
14
|
+
static constexpr size_t kMaxDigestMultiplier = 255;
|
|
15
|
+
|
|
16
|
+
struct HKDFConfig final : public MemoryRetainer {
|
|
17
|
+
CryptoJobMode mode;
|
|
18
|
+
size_t length;
|
|
19
|
+
const EVP_MD* digest;
|
|
20
|
+
std::shared_ptr<KeyObjectData> key;
|
|
21
|
+
ByteSource salt;
|
|
22
|
+
ByteSource info;
|
|
23
|
+
|
|
24
|
+
HKDFConfig() = default;
|
|
25
|
+
|
|
26
|
+
explicit HKDFConfig(HKDFConfig&& other) noexcept;
|
|
27
|
+
|
|
28
|
+
HKDFConfig& operator=(HKDFConfig&& other) noexcept;
|
|
29
|
+
|
|
30
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
31
|
+
SET_MEMORY_INFO_NAME(HKDFConfig)
|
|
32
|
+
SET_SELF_SIZE(HKDFConfig)
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
struct HKDFTraits final {
|
|
36
|
+
using AdditionalParameters = HKDFConfig;
|
|
37
|
+
static constexpr const char* JobName = "HKDFJob";
|
|
38
|
+
static constexpr AsyncWrap::ProviderType Provider =
|
|
39
|
+
AsyncWrap::PROVIDER_DERIVEBITSREQUEST;
|
|
40
|
+
|
|
41
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
42
|
+
CryptoJobMode mode,
|
|
43
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
44
|
+
unsigned int offset,
|
|
45
|
+
HKDFConfig* params);
|
|
46
|
+
|
|
47
|
+
static bool DeriveBits(
|
|
48
|
+
Environment* env,
|
|
49
|
+
const HKDFConfig& params,
|
|
50
|
+
ByteSource* out);
|
|
51
|
+
|
|
52
|
+
static v8::Maybe<bool> EncodeOutput(
|
|
53
|
+
Environment* env,
|
|
54
|
+
const HKDFConfig& params,
|
|
55
|
+
ByteSource* out,
|
|
56
|
+
v8::Local<v8::Value>* result);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
using HKDFJob = DeriveBitsJob<HKDFTraits>;
|
|
60
|
+
|
|
61
|
+
} // namespace crypto
|
|
62
|
+
} // namespace node
|
|
63
|
+
|
|
64
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
65
|
+
#endif // SRC_CRYPTO_CRYPTO_HKDF_H_
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#ifndef SRC_CRYPTO_CRYPTO_HMAC_H_
|
|
2
|
+
#define SRC_CRYPTO_CRYPTO_HMAC_H_
|
|
3
|
+
|
|
4
|
+
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
5
|
+
|
|
6
|
+
#include "base_object.h"
|
|
7
|
+
#include "crypto/crypto_keys.h"
|
|
8
|
+
#include "crypto/crypto_sig.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
|
+
class Hmac : public BaseObject {
|
|
17
|
+
public:
|
|
18
|
+
static void Initialize(Environment* env, v8::Local<v8::Object> target);
|
|
19
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
20
|
+
|
|
21
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
22
|
+
SET_MEMORY_INFO_NAME(Hmac)
|
|
23
|
+
SET_SELF_SIZE(Hmac)
|
|
24
|
+
|
|
25
|
+
protected:
|
|
26
|
+
void HmacInit(const char* hash_type, const char* key, int key_len);
|
|
27
|
+
bool HmacUpdate(const char* data, size_t len);
|
|
28
|
+
|
|
29
|
+
static void New(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
30
|
+
static void HmacInit(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
31
|
+
static void HmacUpdate(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
32
|
+
static void HmacDigest(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
33
|
+
|
|
34
|
+
Hmac(Environment* env, v8::Local<v8::Object> wrap);
|
|
35
|
+
|
|
36
|
+
static void Sign(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
37
|
+
|
|
38
|
+
private:
|
|
39
|
+
HMACCtxPointer ctx_;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
struct HmacConfig final : public MemoryRetainer {
|
|
43
|
+
CryptoJobMode job_mode;
|
|
44
|
+
SignConfiguration::Mode mode;
|
|
45
|
+
std::shared_ptr<KeyObjectData> key;
|
|
46
|
+
ByteSource data;
|
|
47
|
+
ByteSource signature;
|
|
48
|
+
const EVP_MD* digest;
|
|
49
|
+
|
|
50
|
+
HmacConfig() = default;
|
|
51
|
+
|
|
52
|
+
explicit HmacConfig(HmacConfig&& other) noexcept;
|
|
53
|
+
|
|
54
|
+
HmacConfig& operator=(HmacConfig&& other) noexcept;
|
|
55
|
+
|
|
56
|
+
void MemoryInfo(MemoryTracker* tracker) const override;
|
|
57
|
+
SET_MEMORY_INFO_NAME(HmacConfig)
|
|
58
|
+
SET_SELF_SIZE(HmacConfig)
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
struct HmacTraits final {
|
|
62
|
+
using AdditionalParameters = HmacConfig;
|
|
63
|
+
static constexpr const char* JobName = "HmacJob";
|
|
64
|
+
|
|
65
|
+
// TODO(@jasnell): Sign request vs. Verify request
|
|
66
|
+
|
|
67
|
+
static constexpr AsyncWrap::ProviderType Provider =
|
|
68
|
+
AsyncWrap::PROVIDER_SIGNREQUEST;
|
|
69
|
+
|
|
70
|
+
static v8::Maybe<bool> AdditionalConfig(
|
|
71
|
+
CryptoJobMode mode,
|
|
72
|
+
const v8::FunctionCallbackInfo<v8::Value>& args,
|
|
73
|
+
unsigned int offset,
|
|
74
|
+
HmacConfig* params);
|
|
75
|
+
|
|
76
|
+
static bool DeriveBits(
|
|
77
|
+
Environment* env,
|
|
78
|
+
const HmacConfig& params,
|
|
79
|
+
ByteSource* out);
|
|
80
|
+
|
|
81
|
+
static v8::Maybe<bool> EncodeOutput(
|
|
82
|
+
Environment* env,
|
|
83
|
+
const HmacConfig& params,
|
|
84
|
+
ByteSource* out,
|
|
85
|
+
v8::Local<v8::Value>* result);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
using HmacJob = DeriveBitsJob<HmacTraits>;
|
|
89
|
+
|
|
90
|
+
} // namespace crypto
|
|
91
|
+
} // namespace node
|
|
92
|
+
|
|
93
|
+
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
94
|
+
#endif // SRC_CRYPTO_CRYPTO_HMAC_H_
|