@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
|
@@ -13,18 +13,19 @@
|
|
|
13
13
|
//
|
|
14
14
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
|
15
15
|
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
-
// MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
16
|
+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURpPOSE AND NONINFRINGEMENT. IN
|
|
17
17
|
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
18
18
|
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
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_TLS_H_
|
|
23
|
+
#define SRC_CRYPTO_CRYPTO_TLS_H_
|
|
24
24
|
|
|
25
25
|
#if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
26
26
|
|
|
27
|
-
#include "
|
|
27
|
+
#include "crypto/crypto_context.h"
|
|
28
|
+
#include "crypto/crypto_clienthello.h"
|
|
28
29
|
|
|
29
30
|
#include "async_wrap.h"
|
|
30
31
|
#include "stream_wrap.h"
|
|
@@ -35,26 +36,34 @@
|
|
|
35
36
|
#include <string>
|
|
36
37
|
|
|
37
38
|
namespace node {
|
|
38
|
-
|
|
39
|
-
// Forward-declarations
|
|
40
|
-
class Environment;
|
|
41
|
-
class WriteWrap;
|
|
42
39
|
namespace crypto {
|
|
43
|
-
class SecureContext;
|
|
44
|
-
class NodeBIO;
|
|
45
|
-
}
|
|
46
40
|
|
|
47
41
|
class TLSWrap : public AsyncWrap,
|
|
48
|
-
public crypto::SSLWrap<TLSWrap>,
|
|
49
42
|
public StreamBase,
|
|
50
43
|
public StreamListener {
|
|
51
44
|
public:
|
|
52
|
-
|
|
45
|
+
enum class Kind {
|
|
46
|
+
kClient,
|
|
47
|
+
kServer
|
|
48
|
+
};
|
|
53
49
|
|
|
54
50
|
static void Initialize(v8::Local<v8::Object> target,
|
|
55
51
|
v8::Local<v8::Value> unused,
|
|
56
52
|
v8::Local<v8::Context> context,
|
|
57
53
|
void* priv);
|
|
54
|
+
static void RegisterExternalReferences(ExternalReferenceRegistry* registry);
|
|
55
|
+
|
|
56
|
+
~TLSWrap() override;
|
|
57
|
+
|
|
58
|
+
bool is_cert_cb_running() const { return cert_cb_running_; }
|
|
59
|
+
bool is_waiting_cert_cb() const { return cert_cb_ != nullptr; }
|
|
60
|
+
bool has_session_callbacks() const { return session_callbacks_; }
|
|
61
|
+
void set_cert_cb_running(bool on = true) { cert_cb_running_ = on; }
|
|
62
|
+
void set_awaiting_new_session(bool on = true) { awaiting_new_session_ = on; }
|
|
63
|
+
void enable_session_callbacks() { session_callbacks_ = true; }
|
|
64
|
+
bool is_server() const { return kind_ == Kind::kServer; }
|
|
65
|
+
bool is_client() const { return kind_ == Kind::kClient; }
|
|
66
|
+
bool is_awaiting_new_session() const { return awaiting_new_session_; }
|
|
58
67
|
|
|
59
68
|
// Implement StreamBase:
|
|
60
69
|
bool IsAlive() override;
|
|
@@ -79,6 +88,9 @@ class TLSWrap : public AsyncWrap,
|
|
|
79
88
|
// Reset error_ string to empty. Not related to "clear text".
|
|
80
89
|
void ClearError() override;
|
|
81
90
|
|
|
91
|
+
v8::MaybeLocal<v8::ArrayBufferView> ocsp_response() const;
|
|
92
|
+
void ClearOcspResponse();
|
|
93
|
+
SSL_SESSION* ReleaseSession();
|
|
82
94
|
|
|
83
95
|
// Called by the done() callback of the 'newSession' event.
|
|
84
96
|
void NewSessionDoneCb();
|
|
@@ -90,29 +102,39 @@ class TLSWrap : public AsyncWrap,
|
|
|
90
102
|
|
|
91
103
|
std::string diagnostic_name() const override;
|
|
92
104
|
|
|
93
|
-
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
105
|
+
// OpenSSL structures are opaque. Estimate SSL memory size for OpenSSL 1.1.1b:
|
|
106
|
+
// SSL: 6224
|
|
107
|
+
// SSL->SSL3_STATE: 1040
|
|
108
|
+
// ...some buffers: 42 * 1024
|
|
109
|
+
// NOTE: Actually it is much more than this
|
|
110
|
+
static constexpr int64_t kExternalSize = 6224 + 1040 + 42 * 1024;
|
|
99
111
|
|
|
100
|
-
static
|
|
112
|
+
static constexpr int kClearOutChunkSize = 16384;
|
|
101
113
|
|
|
102
114
|
// Maximum number of bytes for hello parser
|
|
103
|
-
static
|
|
115
|
+
static constexpr int kMaxHelloLength = 16384;
|
|
104
116
|
|
|
105
117
|
// Usual ServerHello + Certificate size
|
|
106
|
-
static
|
|
118
|
+
static constexpr int kInitialClientBufferLength = 4096;
|
|
107
119
|
|
|
108
120
|
// Maximum number of buffers passed to uv_write()
|
|
109
|
-
static
|
|
121
|
+
static constexpr int kSimultaneousBufferCount = 10;
|
|
122
|
+
|
|
123
|
+
typedef void (*CertCb)(void* arg);
|
|
124
|
+
|
|
125
|
+
// Alternative to StreamListener::stream(), that returns a StreamBase instead
|
|
126
|
+
// of a StreamResource.
|
|
127
|
+
StreamBase* underlying_stream() const {
|
|
128
|
+
return static_cast<StreamBase*>(stream());
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
void WaitForCertCb(CertCb cb, void* arg);
|
|
110
132
|
|
|
111
133
|
TLSWrap(Environment* env,
|
|
112
134
|
v8::Local<v8::Object> obj,
|
|
113
135
|
Kind kind,
|
|
114
136
|
StreamBase* stream,
|
|
115
|
-
|
|
137
|
+
SecureContext* sc);
|
|
116
138
|
|
|
117
139
|
static void SSLInfoCallback(const SSL* ssl_, int where, int ret);
|
|
118
140
|
void InitSSL();
|
|
@@ -125,25 +147,15 @@ class TLSWrap : public AsyncWrap,
|
|
|
125
147
|
void EncOut(); // Write encrypted data from enc_out_ to underlying stream.
|
|
126
148
|
void ClearIn(); // SSL_write() clear data "in" to SSL.
|
|
127
149
|
void ClearOut(); // SSL_read() clear text "out" from SSL.
|
|
150
|
+
void Destroy();
|
|
128
151
|
|
|
129
152
|
// Call Done() on outstanding WriteWrap request.
|
|
130
|
-
|
|
153
|
+
void InvokeQueued(int status, const char* error_str = nullptr);
|
|
131
154
|
|
|
132
155
|
// Drive the SSL state machine by attempting to SSL_read() and SSL_write() to
|
|
133
156
|
// it. Transparent handshakes mean SSL_read() might trigger I/O on the
|
|
134
157
|
// underlying stream even if there is no clear text to read or write.
|
|
135
|
-
|
|
136
|
-
// Prevent recursion
|
|
137
|
-
if (++cycle_depth_ > 1)
|
|
138
|
-
return;
|
|
139
|
-
|
|
140
|
-
for (; cycle_depth_ > 0; cycle_depth_--) {
|
|
141
|
-
ClearIn();
|
|
142
|
-
ClearOut();
|
|
143
|
-
// EncIn() doesn't exist, it happens via stream listener callbacks.
|
|
144
|
-
EncOut();
|
|
145
|
-
}
|
|
146
|
-
}
|
|
158
|
+
void Cycle();
|
|
147
159
|
|
|
148
160
|
// Implement StreamListener:
|
|
149
161
|
// Returns buf that points into enc_in_.
|
|
@@ -151,29 +163,70 @@ class TLSWrap : public AsyncWrap,
|
|
|
151
163
|
void OnStreamRead(ssize_t nread, const uv_buf_t& buf) override;
|
|
152
164
|
void OnStreamAfterWrite(WriteWrap* w, int status) override;
|
|
153
165
|
|
|
154
|
-
|
|
166
|
+
int SetCACerts(SecureContext* sc);
|
|
155
167
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
static
|
|
159
|
-
|
|
160
|
-
static void
|
|
161
|
-
static void
|
|
162
|
-
|
|
168
|
+
int GetSSLError(int status) const;
|
|
169
|
+
|
|
170
|
+
static int SelectSNIContextCallback(SSL* s, int* ad, void* arg);
|
|
171
|
+
|
|
172
|
+
static void CertCbDone(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
173
|
+
static void DestroySSL(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
174
|
+
static void EnableCertCb(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
163
175
|
static void EnableKeylogCallback(
|
|
164
176
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
177
|
+
static void EnableSessionCallbacks(
|
|
178
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
165
179
|
static void EnableTrace(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
166
|
-
static void
|
|
167
|
-
static void
|
|
180
|
+
static void EndParser(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
181
|
+
static void ExportKeyingMaterial(
|
|
182
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
183
|
+
static void GetALPNNegotiatedProto(
|
|
184
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
185
|
+
static void GetCertificate(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
186
|
+
static void GetX509Certificate(
|
|
187
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
188
|
+
static void GetCipher(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
189
|
+
static void GetEphemeralKeyInfo(
|
|
190
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
191
|
+
static void GetFinished(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
192
|
+
static void GetPeerCertificate(
|
|
193
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
194
|
+
static void GetPeerX509Certificate(
|
|
195
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
196
|
+
static void GetPeerFinished(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
197
|
+
static void GetProtocol(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
168
198
|
static void GetServername(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
199
|
+
static void GetSession(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
200
|
+
static void GetSharedSigalgs(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
201
|
+
static void GetTLSTicket(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
202
|
+
static void GetWriteQueueSize(
|
|
203
|
+
const v8::FunctionCallbackInfo<v8::Value>& info);
|
|
204
|
+
static void IsSessionReused(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
205
|
+
static void LoadSession(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
206
|
+
static void NewSessionDone(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
207
|
+
static void OnClientHelloParseEnd(void* arg);
|
|
208
|
+
static void Receive(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
209
|
+
static void Renegotiate(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
210
|
+
static void RequestOCSP(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
211
|
+
static void SetALPNProtocols(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
212
|
+
static void SetOCSPResponse(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
169
213
|
static void SetServername(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
170
|
-
static
|
|
214
|
+
static void SetSession(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
215
|
+
static void SetVerifyMode(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
216
|
+
static void Start(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
217
|
+
static void VerifyError(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
218
|
+
static void Wrap(const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
171
219
|
|
|
172
|
-
#
|
|
173
|
-
static void
|
|
220
|
+
#ifdef SSL_set_max_send_fragment
|
|
221
|
+
static void SetMaxSendFragment(
|
|
174
222
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
223
|
+
#endif // SSL_set_max_send_fragment
|
|
224
|
+
|
|
225
|
+
#ifndef OPENSSL_NO_PSK
|
|
175
226
|
static void EnablePskCallback(
|
|
176
227
|
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
228
|
+
static void SetPskIdentityHint(
|
|
229
|
+
const v8::FunctionCallbackInfo<v8::Value>& args);
|
|
177
230
|
static unsigned int PskServerCallback(SSL* s,
|
|
178
231
|
const char* identity,
|
|
179
232
|
unsigned char* psk,
|
|
@@ -185,37 +238,55 @@ class TLSWrap : public AsyncWrap,
|
|
|
185
238
|
unsigned char* psk,
|
|
186
239
|
unsigned int max_psk_len);
|
|
187
240
|
#endif
|
|
241
|
+
public:
|
|
242
|
+
Environment* const env_;
|
|
243
|
+
Kind kind_;
|
|
244
|
+
SSLSessionPointer next_sess_;
|
|
245
|
+
SSLPointer ssl_;
|
|
246
|
+
ClientHelloParser hello_parser_;
|
|
247
|
+
v8::Global<v8::ArrayBufferView> ocsp_response_;
|
|
248
|
+
BaseObjectPtr<SecureContext> sni_context_;
|
|
249
|
+
BaseObjectPtr<SecureContext> sc_;
|
|
188
250
|
|
|
189
|
-
crypto::SecureContext* sc_;
|
|
190
251
|
// BIO buffers hold encrypted data.
|
|
191
252
|
BIO* enc_in_ = nullptr; // StreamListener fills this for SSL_read().
|
|
192
253
|
BIO* enc_out_ = nullptr; // SSL_write()/handshake fills this for EncOut().
|
|
193
254
|
// Waiting for ClearIn() to pass to SSL_write().
|
|
194
|
-
|
|
255
|
+
std::unique_ptr<v8::BackingStore> pending_cleartext_input_;
|
|
195
256
|
size_t write_size_ = 0;
|
|
196
|
-
|
|
257
|
+
BaseObjectPtr<AsyncWrap> current_write_;
|
|
258
|
+
BaseObjectPtr<AsyncWrap> current_empty_write_;
|
|
259
|
+
std::string error_;
|
|
260
|
+
|
|
261
|
+
bool session_callbacks_ = false;
|
|
262
|
+
bool awaiting_new_session_ = false;
|
|
197
263
|
bool in_dowrite_ = false;
|
|
198
|
-
WriteWrap* current_empty_write_ = nullptr;
|
|
199
|
-
bool write_callback_scheduled_ = false;
|
|
200
264
|
bool started_ = false;
|
|
201
|
-
bool established_ = false;
|
|
202
265
|
bool shutdown_ = false;
|
|
203
|
-
|
|
204
|
-
int cycle_depth_ = 0;
|
|
205
|
-
|
|
206
|
-
// If true - delivered EOF to the js-land, either after `close_notify`, or
|
|
207
|
-
// after the `UV_EOF` on socket.
|
|
266
|
+
bool cert_cb_running_ = false;
|
|
208
267
|
bool eof_ = false;
|
|
209
268
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
269
|
+
// TODO(@jasnell): These state flags should be revisited.
|
|
270
|
+
// The established_ flag indicates that the handshake is
|
|
271
|
+
// completed. The write_callback_scheduled_ flag is less
|
|
272
|
+
// clear -- once it is set to true, it is never set to
|
|
273
|
+
// false and it is only set to true after established_
|
|
274
|
+
// is set to true, so it's likely redundant.
|
|
275
|
+
bool established_ = false;
|
|
276
|
+
bool write_callback_scheduled_ = false;
|
|
277
|
+
|
|
278
|
+
int cycle_depth_ = 0;
|
|
279
|
+
|
|
280
|
+
// SSL_set_cert_cb
|
|
281
|
+
CertCb cert_cb_ = nullptr;
|
|
282
|
+
void* cert_cb_arg_ = nullptr;
|
|
213
283
|
|
|
214
|
-
|
|
284
|
+
BIOPointer bio_trace_;
|
|
215
285
|
};
|
|
216
286
|
|
|
287
|
+
} // namespace crypto
|
|
217
288
|
} // namespace node
|
|
218
289
|
|
|
219
290
|
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
|
|
220
291
|
|
|
221
|
-
#endif //
|
|
292
|
+
#endif // SRC_CRYPTO_CRYPTO_TLS_H_
|