@fails-components/webtransport 0.0.1-rc.0 → 0.0.1-rc.1
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/.github/workflows/npm-publish-packages.yml +0 -0
- package/CMakeLists.txt +2 -0
- package/package.json +1 -1
- package/readme.md +0 -0
- package/src/http3serversession.h +1 -1
- package/src/webtransport.js +4 -2
- package/third_party/boringssl/src/CMakeLists.txt +9 -12
- package/third_party/boringssl/src/crypto/CMakeLists.txt +2 -3
- package/third_party/boringssl/src/crypto/asn1/time_support.c +206 -206
- package/third_party/boringssl/src/crypto/bio/socket_helper.c +124 -122
- package/third_party/boringssl/src/crypto/evp/digestsign.c +268 -231
- package/third_party/boringssl/src/crypto/evp/p_ec.c +286 -286
- package/third_party/boringssl/src/crypto/fipsmodule/aes/key_wrap.c +246 -236
- package/third_party/boringssl/src/crypto/fipsmodule/aes/mode_wrappers.c +124 -122
- package/third_party/boringssl/src/crypto/fipsmodule/bcm.c +3 -0
- package/third_party/boringssl/src/crypto/fipsmodule/bn/bytes.c +246 -230
- package/third_party/boringssl/src/crypto/fipsmodule/bn/internal.h +734 -715
- package/third_party/boringssl/src/crypto/fipsmodule/bn/random.c +349 -341
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/cipher.c +670 -648
- package/third_party/boringssl/src/crypto/fipsmodule/cipher/e_aes.c +1504 -1472
- package/third_party/boringssl/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +435 -446
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_3des_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes128_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes192_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cavp_aes256_cmac_tests.txt +0 -0
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +318 -278
- package/third_party/boringssl/src/crypto/{cmac → fipsmodule/cmac}/cmac_test.cc +268 -267
- package/third_party/boringssl/src/crypto/fipsmodule/dh/dh.c +5 -1
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec.c +11 -17
- package/third_party/boringssl/src/crypto/fipsmodule/ec/ec_key.c +15 -4
- package/third_party/boringssl/src/crypto/fipsmodule/ec/internal.h +2 -6
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p224-64.c +1164 -1180
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz.c +3 -3
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256-nistz_test.cc +2 -2
- package/third_party/boringssl/src/crypto/fipsmodule/ec/p256.c +44 -33
- package/third_party/boringssl/src/crypto/fipsmodule/ec/scalar.c +169 -175
- package/third_party/boringssl/src/crypto/fipsmodule/ec/simple.c +352 -357
- package/third_party/boringssl/src/crypto/fipsmodule/ecdh/ecdh.c +4 -0
- package/third_party/boringssl/src/crypto/fipsmodule/ecdsa/ecdsa.c +14 -9
- package/third_party/boringssl/src/crypto/fipsmodule/hmac/hmac.c +256 -235
- package/third_party/boringssl/src/crypto/fipsmodule/rand/ctrdrbg.c +204 -202
- package/third_party/boringssl/src/crypto/fipsmodule/rsa/padding.c +702 -695
- package/third_party/boringssl/src/crypto/fipsmodule/rsa/rsa_impl.c +7 -2
- package/third_party/boringssl/src/crypto/fipsmodule/self_check/self_check.c +7 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator.c +333 -0
- package/third_party/boringssl/src/crypto/fipsmodule/service_indicator/service_indicator_test.cc +2410 -0
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha1.c +359 -357
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha256.c +325 -321
- package/third_party/boringssl/src/crypto/fipsmodule/sha/sha512.c +510 -508
- package/third_party/boringssl/src/crypto/fipsmodule/tls/kdf.c +177 -165
- package/third_party/boringssl/src/crypto/internal.h +13 -0
- package/third_party/boringssl/src/crypto/trust_token/trust_token_test.cc +884 -884
- package/third_party/boringssl/src/crypto/x509/internal.h +0 -2
- package/third_party/boringssl/src/crypto/x509/t_crl.c +148 -148
- package/third_party/boringssl/src/crypto/x509/t_req.c +249 -250
- package/third_party/boringssl/src/crypto/x509/t_x509.c +2 -3
- package/third_party/boringssl/src/crypto/x509/x509_req.c +262 -304
- package/third_party/boringssl/src/crypto/x509/x509_set.c +250 -240
- package/third_party/boringssl/src/crypto/x509/x509_test.cc +466 -4
- package/third_party/boringssl/src/crypto/x509/x509cset.c +292 -279
- package/third_party/boringssl/src/crypto/x509/x509rset.c +89 -86
- package/third_party/boringssl/src/crypto/x509/x_crl.c +37 -125
- package/third_party/boringssl/src/crypto/x509/x_req.c +114 -109
- package/third_party/boringssl/src/crypto/x509/x_x509.c +394 -394
- package/third_party/boringssl/src/crypto/x509v3/v3_akey.c +11 -16
- package/third_party/boringssl/src/crypto/x509v3/v3_alt.c +644 -642
- package/third_party/boringssl/src/crypto/x509v3/v3_bcons.c +130 -133
- package/third_party/boringssl/src/crypto/x509v3/v3_bitst.c +149 -144
- package/third_party/boringssl/src/crypto/x509v3/v3_cpols.c +496 -500
- package/third_party/boringssl/src/crypto/x509v3/v3_enum.c +105 -106
- package/third_party/boringssl/src/crypto/x509v3/v3_ia5.c +126 -121
- package/third_party/boringssl/src/crypto/x509v3/v3_info.c +206 -218
- package/third_party/boringssl/src/crypto/x509v3/v3_int.c +97 -91
- package/third_party/boringssl/src/crypto/x509v3/v3_pci.c +290 -289
- package/third_party/boringssl/src/crypto/x509v3/v3_skey.c +161 -156
- package/third_party/boringssl/src/crypto/x509v3/v3_utl.c +5 -3
- package/third_party/boringssl/src/include/openssl/aead.h +480 -480
- package/third_party/boringssl/src/include/openssl/asn1.h +2 -0
- package/third_party/boringssl/src/include/openssl/base.h +1 -1
- package/third_party/boringssl/src/include/openssl/service_indicator.h +96 -0
- package/third_party/boringssl/src/include/openssl/ssl.h +7 -0
- package/third_party/boringssl/src/include/openssl/x509.h +11 -33
- package/third_party/boringssl/src/include/openssl/x509v3.h +990 -1018
- package/third_party/boringssl/src/sources.cmake +4 -4
- package/third_party/boringssl/src/ssl/internal.h +10 -0
- package/third_party/boringssl/src/ssl/ssl_lib.cc +3081 -3072
- package/third_party/boringssl/src/ssl/ssl_test.cc +46 -0
- package/third_party/boringssl/src/ssl/tls13_server.cc +4 -6
- package/third_party/boringssl/src/util/bot/DEPS +14 -27
- package/third_party/boringssl/src/util/bot/UPDATING +3 -9
- package/third_party/boringssl/src/util/bot/update_clang.py +172 -172
- package/third_party/boringssl/src/util/bot/vs_toolchain.py +3 -3
- package/third_party/quiche/.bazelrc +8 -0
- package/third_party/quiche/BUILD.bazel +7 -0
- package/third_party/quiche/WHITESPACE +3 -1
- package/third_party/quiche/WORKSPACE.bazel +87 -0
- package/third_party/quiche/build/BUILD.bazel +7 -0
- package/third_party/quiche/build/source_list.bzl +1511 -0
- package/third_party/quiche/build/source_list.gni +1511 -0
- package/third_party/quiche/build/source_list.json +1511 -0
- package/third_party/quiche/build/test.bzl +26 -0
- package/third_party/quiche/build/zlib.BUILD +25 -0
- package/third_party/quiche/quiche/BUILD.bazel +270 -0
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.cc +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_enums.h +7 -7
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.cc +39 -18
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame.h +11 -10
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_frame_test.cc +67 -63
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.cc +13 -12
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers.h +16 -8
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_headers_test.cc +9 -9
- package/third_party/quiche/quiche/{common/balsa → balsa}/balsa_visitor_interface.h +4 -4
- package/third_party/quiche/quiche/{common/balsa → balsa}/framer_interface.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_api.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/header_properties_test.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/http_validation_policy.h +3 -3
- package/third_party/quiche/quiche/{common/balsa → balsa}/noop_balsa_visitor.h +4 -4
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.cc +22 -29
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer.h +18 -16
- package/third_party/quiche/quiche/{common/balsa → balsa}/simple_buffer_test.cc +79 -32
- package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.cc +1 -1
- package/third_party/quiche/quiche/{common/balsa → balsa}/standard_header_map.h +3 -3
- package/third_party/quiche/quiche/common/platform/api/quiche_command_line_flags.h +6 -1
- package/third_party/quiche/quiche/common/platform/api/quiche_flags.h +8 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_logging.h +0 -3
- package/third_party/quiche/quiche/common/platform/api/quiche_lower_case_string_test.cc +29 -0
- package/third_party/quiche/quiche/common/platform/api/quiche_test.h +5 -7
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quic_flags_impl.h +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_bug_tracker_impl.h +3 -2
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.cc +41 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_command_line_flags_impl.h +33 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_expect_bug_impl.h +15 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_logging_impl.h +84 -50
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_lower_case_string_impl.h +25 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_stack_trace_impl.cc +1 -1
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.cc +25 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_impl.h +56 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_test_output_impl.h +27 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_thread_impl.h +26 -0
- package/third_party/quiche/quiche/common/platform/default/quiche_platform_impl/quiche_url_utils_impl.cc +1 -0
- package/third_party/quiche/quiche/common/quiche_buffer_allocator_test.cc +1 -1
- package/third_party/quiche/quiche/common/quiche_mem_slice_storage.h +2 -3
- package/third_party/quiche/quiche/common/structured_headers.cc +14 -12
- package/third_party/quiche/quiche/http2/adapter/event_forwarder.cc +7 -5
- package/third_party/quiche/quiche/http2/adapter/event_forwarder.h +4 -2
- package/third_party/quiche/quiche/http2/adapter/event_forwarder_test.cc +14 -9
- package/third_party/quiche/quiche/http2/adapter/header_validator.cc +43 -19
- package/third_party/quiche/quiche/http2/adapter/header_validator.h +11 -40
- package/third_party/quiche/quiche/http2/adapter/header_validator_base.h +69 -0
- package/third_party/quiche/quiche/http2/adapter/header_validator_test.cc +73 -1
- package/third_party/quiche/quiche/http2/adapter/nghttp2_adapter_test.cc +66 -0
- package/third_party/quiche/quiche/http2/adapter/nghttp2_session_test.cc +8 -5
- package/third_party/quiche/quiche/http2/adapter/nghttp2_test.cc +1 -1
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator.cc +22 -0
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator.h +25 -0
- package/third_party/quiche/quiche/http2/adapter/noop_header_validator_test.cc +523 -0
- package/third_party/quiche/quiche/http2/adapter/oghttp2_adapter_test.cc +186 -5
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.cc +37 -43
- package/third_party/quiche/quiche/http2/adapter/oghttp2_session.h +22 -23
- package/third_party/quiche/quiche/http2/adapter/test_utils.cc +1 -1
- package/third_party/quiche/quiche/http2/adapter/window_manager_test.cc +11 -5
- package/third_party/quiche/quiche/http2/core/http2_trace_logging.cc +13 -11
- package/third_party/quiche/quiche/http2/core/http2_trace_logging.h +5 -4
- package/third_party/quiche/quiche/http2/core/priority_write_scheduler.h +42 -36
- package/third_party/quiche/quiche/http2/core/priority_write_scheduler_test.cc +2 -2
- package/third_party/quiche/quiche/http2/decoder/decode_buffer_test.cc +9 -9
- package/third_party/quiche/quiche/http2/decoder/decode_http2_structures_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/http2_frame_decoder_test.cc +14 -14
- package/third_party/quiche/quiche/http2/decoder/http2_structure_decoder_test.cc +17 -17
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/altsvc_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/continuation_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/data_payload_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/goaway_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/headers_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/ping_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/priority_update_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/push_promise_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/rst_stream_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/settings_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/unknown_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/decoder/payload_decoders/window_update_payload_decoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_block_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_state_test.cc +8 -8
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_string_buffer_test.cc +4 -3
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_tables_test.cc +17 -17
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_decoder_test.cc +25 -25
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_entry_type_decoder_test.cc +7 -6
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_string_decoder_test.cc +6 -6
- package/third_party/quiche/quiche/http2/hpack/decoder/hpack_whole_entry_buffer_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_decoder_test.cc +2 -2
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_encoder_test.cc +1 -1
- package/third_party/quiche/quiche/http2/hpack/huffman/hpack_huffman_transcoder_test.cc +5 -5
- package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_decoder_test.cc +4 -4
- package/third_party/quiche/quiche/http2/hpack/varint/hpack_varint_round_trip_test.cc +1 -1
- package/third_party/quiche/quiche/http2/http2_constants_test.cc +1 -1
- package/third_party/quiche/quiche/http2/http2_structures_test.cc +23 -22
- package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.cc +1 -1
- package/third_party/quiche/quiche/http2/test_tools/frame_decoder_state_test_util.h +1 -1
- package/third_party/quiche/quiche/http2/test_tools/frame_parts.cc +38 -38
- package/third_party/quiche/quiche/http2/test_tools/hpack_block_collector.cc +15 -15
- package/third_party/quiche/quiche/http2/test_tools/hpack_entry_collector.cc +24 -22
- package/third_party/quiche/quiche/http2/test_tools/hpack_string_collector.cc +5 -5
- package/third_party/quiche/quiche/http2/test_tools/http2_frame_builder_test.cc +70 -89
- package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.cc +1 -1
- package/third_party/quiche/quiche/http2/test_tools/payload_decoder_base_test_util.h +29 -26
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.cc → random_decoder_test_base.cc} +13 -10
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test.h → random_decoder_test_base.h} +15 -17
- package/third_party/quiche/quiche/http2/test_tools/{random_decoder_test_test.cc → random_decoder_test_base_test.cc} +1 -1
- package/third_party/quiche/quiche/http2/test_tools/verify_macros.h +32 -0
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_sender.cc +2 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr2_simulator_test.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/bbr_sender_test.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.cc +3 -2
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats.h +2 -1
- package/third_party/quiche/quiche/quic/core/congestion_control/rtt_stats_test.cc +2 -13
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view.cc +15 -0
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view.h +7 -0
- package/third_party/quiche/quiche/quic/core/crypto/certificate_view_test.cc +16 -0
- package/third_party/quiche/quiche/quic/core/crypto/crypto_protocol.h +1 -0
- package/third_party/quiche/quiche/quic/core/crypto/proof_source.h +2 -2
- package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.cc +3 -5
- package/third_party/quiche/quiche/quic/core/crypto/proof_source_x509.h +1 -2
- package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.cc +1 -1
- package/third_party/quiche/quiche/quic/core/crypto/quic_crypto_server_config.h +3 -3
- package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.cc +2 -8
- package/third_party/quiche/quiche/quic/core/frames/quic_blocked_frame.h +0 -1
- package/third_party/quiche/quiche/quic/core/frames/quic_crypto_frame.h +2 -0
- package/third_party/quiche/quiche/quic/core/frames/quic_frames_test.cc +2 -1
- package/third_party/quiche/quiche/quic/core/http/capsule.cc +2 -22
- package/third_party/quiche/quiche/quic/core/http/capsule.h +0 -2
- package/third_party/quiche/quiche/quic/core/http/capsule_test.cc +1 -2
- package/third_party/quiche/quiche/quic/core/http/end_to_end_test.cc +148 -57
- package/third_party/quiche/quiche/quic/core/http/http_constants.cc +1 -1
- package/third_party/quiche/quiche/quic/core/http/http_constants.h +2 -2
- package/third_party/quiche/quiche/quic/core/http/quic_header_list_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/http/quic_headers_stream_test.cc +18 -14
- package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream.h +2 -1
- package/third_party/quiche/quiche/quic/core/http/quic_send_control_stream_test.cc +3 -7
- package/third_party/quiche/quiche/quic/core/http/quic_server_session_base.h +4 -0
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.cc +47 -65
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session.h +5 -17
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_session_test.cc +63 -54
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.cc +34 -91
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream.h +1 -9
- package/third_party/quiche/quiche/quic/core/http/quic_spdy_stream_test.cc +27 -134
- package/third_party/quiche/quiche/quic/core/http/spdy_utils.cc +0 -41
- package/third_party/quiche/quiche/quic/core/http/spdy_utils.h +0 -9
- package/third_party/quiche/quiche/quic/core/http/spdy_utils_test.cc +0 -32
- package/third_party/quiche/quiche/quic/core/http/web_transport_http3.cc +0 -1
- package/third_party/quiche/quiche/quic/core/packet_number_indexed_queue_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/qpack/qpack_header_table.cc +2 -1
- package/third_party/quiche/quiche/quic/core/qpack/qpack_send_stream.h +2 -1
- package/third_party/quiche/quiche/quic/core/quic_arena_scoped_ptr_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection.cc +68 -46
- package/third_party/quiche/quiche/quic/core/quic_connection.h +7 -6
- package/third_party/quiche/quiche/quic/core/quic_connection_context_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_id_manager_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_id_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_connection_test.cc +45 -132
- package/third_party/quiche/quiche/quic/core/quic_constants.h +0 -7
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.cc +11 -3
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager.h +1 -1
- package/third_party/quiche/quiche/quic/core/quic_control_frame_manager_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.cc +13 -1
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker.h +3 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_handshaker_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.cc +6 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_client_stream.h +8 -0
- package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.cc +26 -13
- package/third_party/quiche/quiche/quic/core/quic_crypto_server_stream.h +5 -2
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.cc +55 -47
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream.h +15 -10
- package/third_party/quiche/quiche/quic/core/quic_crypto_stream_test.cc +34 -5
- package/third_party/quiche/quiche/quic/core/quic_dispatcher.cc +20 -11
- package/third_party/quiche/quiche/quic/core/quic_dispatcher_test.cc +37 -13
- package/third_party/quiche/quiche/quic/core/quic_flags_list.h +6 -10
- package/third_party/quiche/quiche/quic/core/quic_flow_controller.cc +3 -3
- package/third_party/quiche/quiche/quic/core/quic_flow_controller.h +2 -2
- package/third_party/quiche/quiche/quic/core/quic_flow_controller_test.cc +15 -10
- package/third_party/quiche/quiche/quic/core/quic_framer.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_one_block_arena.h +3 -2
- package/third_party/quiche/quiche/quic/core/quic_one_block_arena_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.cc +3 -11
- package/third_party/quiche/quiche/quic/core/quic_packet_creator.h +0 -8
- package/third_party/quiche/quiche/quic/core/quic_ping_manager.cc +14 -14
- package/third_party/quiche/quiche/quic/core/quic_ping_manager_test.cc +48 -0
- package/third_party/quiche/quiche/quic/core/quic_received_packet_manager.cc +3 -18
- package/third_party/quiche/quiche/quic/core/quic_received_packet_manager_test.cc +4 -14
- package/third_party/quiche/quiche/quic/core/quic_server_id_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_session.cc +4 -4
- package/third_party/quiche/quiche/quic/core/quic_session.h +1 -1
- package/third_party/quiche/quiche/quic/core/quic_session_test.cc +21 -1
- package/third_party/quiche/quiche/quic/core/quic_stream.cc +4 -7
- package/third_party/quiche/quiche/quic/core/quic_stream_test.cc +2 -4
- package/third_party/quiche/quiche/quic/core/quic_trace_visitor_test.cc +2 -2
- package/third_party/quiche/quiche/quic/core/quic_types.h +3 -8
- package/third_party/quiche/quiche/quic/core/quic_udp_socket_posix.cc +5 -4
- package/third_party/quiche/quiche/quic/core/quic_unacked_packet_map_test.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_utils.cc +1 -1
- package/third_party/quiche/quiche/quic/core/quic_utils.h +2 -2
- package/third_party/quiche/quiche/quic/core/quic_versions_test.cc +0 -1
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker.cc +13 -0
- package/third_party/quiche/quiche/quic/core/tls_client_handshaker.h +2 -0
- package/third_party/quiche/quiche/quic/core/tls_server_handshaker.cc +17 -3
- package/third_party/quiche/quiche/quic/core/tls_server_handshaker.h +3 -1
- package/third_party/quiche/quiche/quic/core/uber_received_packet_manager_test.cc +18 -10
- package/third_party/quiche/quiche/quic/masque/masque_client_bin.cc +6 -4
- package/third_party/quiche/quiche/quic/masque/masque_client_session.cc +23 -7
- package/third_party/quiche/quiche/quic/masque/masque_client_session.h +1 -1
- package/third_party/quiche/quiche/quic/masque/masque_server_backend.cc +13 -0
- package/third_party/quiche/quiche/quic/masque/masque_server_backend.h +2 -0
- package/third_party/quiche/quiche/quic/masque/masque_server_bin.cc +5 -4
- package/third_party/quiche/quiche/quic/masque/masque_server_session.cc +30 -40
- package/third_party/quiche/quiche/quic/masque/masque_server_session.h +1 -1
- package/third_party/quiche/quiche/quic/platform/api/quic_export.h +4 -4
- package/third_party/quiche/quiche/quic/platform/api/quic_flags.h +0 -1
- package/third_party/quiche/quiche/quic/platform/api/quic_logging.h +0 -6
- package/third_party/quiche/quiche/quic/platform/api/quic_test.h +6 -5
- package/third_party/quiche/quiche/quic/qbone/bonnet/icmp_reachable_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/mock_qbone_tunnel.h +2 -0
- package/third_party/quiche/quiche/quic/qbone/bonnet/qbone_tunnel_interface.h +2 -0
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_controller_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_packet_exchanger_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/bonnet/tun_device_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/platform/netlink_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/platform/tcp_packet.cc +5 -4
- package/third_party/quiche/quiche/quic/qbone/qbone_client_session.cc +4 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor.cc +2 -1
- package/third_party/quiche/quiche/quic/qbone/qbone_packet_processor_test.cc +2 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_server_session.cc +4 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_session_base.cc +3 -2
- package/third_party/quiche/quiche/quic/qbone/qbone_stream.cc +4 -4
- package/third_party/quiche/quiche/quic/test_tools/quic_connection_peer.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/index.html +63 -0
- package/third_party/quiche/quiche/quic/test_tools/quic_http_response_cache_data/test.example.com/map.html +65 -0
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.cc +4 -3
- package/third_party/quiche/quiche/quic/test_tools/quic_test_utils.h +18 -1
- package/third_party/quiche/quiche/quic/test_tools/simulator/quic_endpoint_test.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/simulator/simulator_test.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.cc +1 -1
- package/third_party/quiche/quiche/quic/test_tools/test_ticket_crypter.h +2 -2
- package/third_party/quiche/quiche/quic/{core/crypto → tools}/crypto_message_printer_bin.cc +0 -0
- package/third_party/quiche/quiche/quic/{core/qpack → tools}/qpack_offline_decoder_bin.cc +0 -0
- package/third_party/quiche/quiche/quic/tools/quic_client_interop_test_bin.cc +4 -3
- package/third_party/quiche/quiche/quic/tools/quic_memory_cache_backend_test.cc +3 -31
- package/third_party/quiche/quiche/quic/tools/quic_packet_printer_bin.cc +2 -2
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_session.h +1 -1
- package/third_party/quiche/quiche/quic/tools/quic_simple_server_session_test.cc +1 -1
- package/third_party/quiche/quiche/quic/tools/quic_toy_client.cc +52 -38
- package/third_party/quiche/quiche/quic/tools/quic_toy_server.cc +10 -7
- package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.cc +1 -1
- package/third_party/quiche/quiche/quic/tools/simple_ticket_crypter.h +1 -1
- package/third_party/quiche/quiche/quic/tools/web_transport_test_visitors.h +3 -2
- package/third_party/quiche/quiche/spdy/core/array_output_buffer.h +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_decoder_adapter_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_encoder_test.cc +2 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_header_table_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_round_trip_test.cc +2 -1
- package/third_party/quiche/quiche/spdy/core/hpack/hpack_static_table_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.cc +8 -6
- package/third_party/quiche/quiche/spdy/core/http2_frame_decoder_adapter.h +17 -6
- package/third_party/quiche/quiche/spdy/core/metadata_extension.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/metadata_extension_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_framer_test.cc +21 -17
- package/third_party/quiche/quiche/spdy/core/spdy_intrusive_list_test.cc +3 -3
- package/third_party/quiche/quiche/spdy/core/spdy_no_op_visitor.h +6 -4
- package/third_party/quiche/quiche/spdy/core/spdy_pinnable_buffer_piece_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_prefixed_buffer_reader_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/core/spdy_protocol_test.cc +1 -1
- package/third_party/quiche/quiche/spdy/test_tools/mock_spdy_framer_visitor.h +5 -4
- package/third_party/boringssl/src/util/bot/cmake-win32.zip.sha1 +0 -1
- package/third_party/quiche/quiche/common/platform/api/quiche_mock_log.h +0 -18
- package/third_party/quiche/quiche/common/platform/api/quiche_test_helpers.h +0 -8
- package/third_party/quiche/quiche/quic/platform/api/quic_mock_log.h +0 -19
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.cc +0 -51
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_dispatcher.h +0 -41
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.cc +0 -168
- package/third_party/quiche/quiche/quic/tools/quic_transport_simple_server_session.h +0 -78
|
@@ -201,7 +201,7 @@ static void ecp_nistz256_windowed_mul(const EC_GROUP *group, P256_POINT *r,
|
|
|
201
201
|
// ~1599 ((96 * 16) + 63) bytes of stack space.
|
|
202
202
|
alignas(64) P256_POINT table[16];
|
|
203
203
|
uint8_t p_str[33];
|
|
204
|
-
OPENSSL_memcpy(p_str, p_scalar->
|
|
204
|
+
OPENSSL_memcpy(p_str, p_scalar->words, 32);
|
|
205
205
|
p_str[32] = 0;
|
|
206
206
|
|
|
207
207
|
// table[0] is implicitly (0,0,0) (the point at infinity), therefore it is
|
|
@@ -321,7 +321,7 @@ static void ecp_nistz256_point_mul_base(const EC_GROUP *group, EC_RAW_POINT *r,
|
|
|
321
321
|
alignas(32) p256_point_union_t t, p;
|
|
322
322
|
|
|
323
323
|
uint8_t p_str[33];
|
|
324
|
-
OPENSSL_memcpy(p_str, scalar->
|
|
324
|
+
OPENSSL_memcpy(p_str, scalar->words, 32);
|
|
325
325
|
p_str[32] = 0;
|
|
326
326
|
|
|
327
327
|
// First window
|
|
@@ -366,7 +366,7 @@ static void ecp_nistz256_points_mul_public(const EC_GROUP *group,
|
|
|
366
366
|
|
|
367
367
|
alignas(32) p256_point_union_t t, p;
|
|
368
368
|
uint8_t p_str[33];
|
|
369
|
-
OPENSSL_memcpy(p_str, g_scalar->
|
|
369
|
+
OPENSSL_memcpy(p_str, g_scalar->words, 32);
|
|
370
370
|
p_str[32] = 0;
|
|
371
371
|
|
|
372
372
|
// First window
|
|
@@ -149,8 +149,8 @@ TEST(P256_NistzTest, BEEU) {
|
|
|
149
149
|
EXPECT_TRUE(bn_less_than_words(out, order_words, P256_LIMBS));
|
|
150
150
|
|
|
151
151
|
// Calculate out*in and confirm that it equals one, modulo the order.
|
|
152
|
-
OPENSSL_memcpy(in_scalar.
|
|
153
|
-
OPENSSL_memcpy(out_scalar.
|
|
152
|
+
OPENSSL_memcpy(in_scalar.words, in, sizeof(in));
|
|
153
|
+
OPENSSL_memcpy(out_scalar.words, out, sizeof(out));
|
|
154
154
|
ec_scalar_to_montgomery(group.get(), &in_scalar, &in_scalar);
|
|
155
155
|
ec_scalar_to_montgomery(group.get(), &out_scalar, &out_scalar);
|
|
156
156
|
ec_scalar_mul_montgomery(group.get(), &result, &in_scalar, &out_scalar);
|
|
@@ -81,17 +81,22 @@ static void fiat_p256_cmovznz(fiat_p256_limb_t out[FIAT_P256_NLIMBS],
|
|
|
81
81
|
fiat_p256_selectznz(out, !!t, z, nz);
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
+
static void fiat_p256_from_words(fiat_p256_felem out,
|
|
85
|
+
const BN_ULONG in[32 / sizeof(BN_ULONG)]) {
|
|
86
|
+
// Typically, |BN_ULONG| and |fiat_p256_limb_t| will be the same type, but on
|
|
87
|
+
// 64-bit platforms without |uint128_t|, they are different. However, on
|
|
88
|
+
// little-endian systems, |uint64_t[4]| and |uint32_t[8]| have the same
|
|
89
|
+
// layout.
|
|
90
|
+
OPENSSL_memcpy(out, in, 32);
|
|
91
|
+
}
|
|
92
|
+
|
|
84
93
|
static void fiat_p256_from_generic(fiat_p256_felem out, const EC_FELEM *in) {
|
|
85
|
-
|
|
94
|
+
fiat_p256_from_words(out, in->words);
|
|
86
95
|
}
|
|
87
96
|
|
|
88
97
|
static void fiat_p256_to_generic(EC_FELEM *out, const fiat_p256_felem in) {
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
OPENSSL_STATIC_ASSERT(
|
|
92
|
-
256 / 8 == sizeof(BN_ULONG) * ((256 + BN_BITS2 - 1) / BN_BITS2),
|
|
93
|
-
"fiat_p256_to_bytes leaves bytes uninitialized");
|
|
94
|
-
fiat_p256_to_bytes(out->bytes, in);
|
|
98
|
+
// See |fiat_p256_from_words|.
|
|
99
|
+
OPENSSL_memcpy(out->words, in, 32);
|
|
95
100
|
}
|
|
96
101
|
|
|
97
102
|
// fiat_p256_inv_square calculates |out| = |in|^{-2}
|
|
@@ -394,12 +399,18 @@ static void fiat_p256_select_point(const fiat_p256_limb_t idx, size_t size,
|
|
|
394
399
|
}
|
|
395
400
|
}
|
|
396
401
|
|
|
397
|
-
// fiat_p256_get_bit returns the |i|th bit in |in
|
|
398
|
-
static crypto_word_t fiat_p256_get_bit(const
|
|
402
|
+
// fiat_p256_get_bit returns the |i|th bit in |in|.
|
|
403
|
+
static crypto_word_t fiat_p256_get_bit(const EC_SCALAR *in, int i) {
|
|
399
404
|
if (i < 0 || i >= 256) {
|
|
400
405
|
return 0;
|
|
401
406
|
}
|
|
402
|
-
|
|
407
|
+
#if defined(OPENSSL_64_BIT)
|
|
408
|
+
static_assert(sizeof(BN_ULONG) == 8, "BN_ULONG was not 64-bit");
|
|
409
|
+
return (in->words[i >> 6] >> (i & 63)) & 1;
|
|
410
|
+
#else
|
|
411
|
+
static_assert(sizeof(BN_ULONG) == 4, "BN_ULONG was not 32-bit");
|
|
412
|
+
return (in->words[i >> 5] >> (i & 31)) & 1;
|
|
413
|
+
#endif
|
|
403
414
|
}
|
|
404
415
|
|
|
405
416
|
// OPENSSL EC_METHOD FUNCTIONS
|
|
@@ -500,12 +511,12 @@ static void ec_GFp_nistp256_point_mul(const EC_GROUP *group, EC_RAW_POINT *r,
|
|
|
500
511
|
|
|
501
512
|
// do other additions every 5 doublings
|
|
502
513
|
if (i % 5 == 0) {
|
|
503
|
-
crypto_word_t bits = fiat_p256_get_bit(scalar
|
|
504
|
-
bits |= fiat_p256_get_bit(scalar
|
|
505
|
-
bits |= fiat_p256_get_bit(scalar
|
|
506
|
-
bits |= fiat_p256_get_bit(scalar
|
|
507
|
-
bits |= fiat_p256_get_bit(scalar
|
|
508
|
-
bits |= fiat_p256_get_bit(scalar
|
|
514
|
+
crypto_word_t bits = fiat_p256_get_bit(scalar, i + 4) << 5;
|
|
515
|
+
bits |= fiat_p256_get_bit(scalar, i + 3) << 4;
|
|
516
|
+
bits |= fiat_p256_get_bit(scalar, i + 2) << 3;
|
|
517
|
+
bits |= fiat_p256_get_bit(scalar, i + 1) << 2;
|
|
518
|
+
bits |= fiat_p256_get_bit(scalar, i) << 1;
|
|
519
|
+
bits |= fiat_p256_get_bit(scalar, i - 1);
|
|
509
520
|
crypto_word_t sign, digit;
|
|
510
521
|
ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
|
511
522
|
|
|
@@ -545,10 +556,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
|
|
|
545
556
|
}
|
|
546
557
|
|
|
547
558
|
// First, look 32 bits upwards.
|
|
548
|
-
crypto_word_t bits = fiat_p256_get_bit(scalar
|
|
549
|
-
bits |= fiat_p256_get_bit(scalar
|
|
550
|
-
bits |= fiat_p256_get_bit(scalar
|
|
551
|
-
bits |= fiat_p256_get_bit(scalar
|
|
559
|
+
crypto_word_t bits = fiat_p256_get_bit(scalar, i + 224) << 3;
|
|
560
|
+
bits |= fiat_p256_get_bit(scalar, i + 160) << 2;
|
|
561
|
+
bits |= fiat_p256_get_bit(scalar, i + 96) << 1;
|
|
562
|
+
bits |= fiat_p256_get_bit(scalar, i + 32);
|
|
552
563
|
// Select the point to add, in constant time.
|
|
553
564
|
fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
|
|
554
565
|
fiat_p256_g_pre_comp[1], tmp);
|
|
@@ -564,10 +575,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
|
|
|
564
575
|
}
|
|
565
576
|
|
|
566
577
|
// Second, look at the current position.
|
|
567
|
-
bits = fiat_p256_get_bit(scalar
|
|
568
|
-
bits |= fiat_p256_get_bit(scalar
|
|
569
|
-
bits |= fiat_p256_get_bit(scalar
|
|
570
|
-
bits |= fiat_p256_get_bit(scalar
|
|
578
|
+
bits = fiat_p256_get_bit(scalar, i + 192) << 3;
|
|
579
|
+
bits |= fiat_p256_get_bit(scalar, i + 128) << 2;
|
|
580
|
+
bits |= fiat_p256_get_bit(scalar, i + 64) << 1;
|
|
581
|
+
bits |= fiat_p256_get_bit(scalar, i);
|
|
571
582
|
// Select the point to add, in constant time.
|
|
572
583
|
fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
|
|
573
584
|
fiat_p256_g_pre_comp[0], tmp);
|
|
@@ -617,10 +628,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
|
|
|
617
628
|
// constant-time lookup.
|
|
618
629
|
if (i <= 31) {
|
|
619
630
|
// First, look 32 bits upwards.
|
|
620
|
-
crypto_word_t bits = fiat_p256_get_bit(g_scalar
|
|
621
|
-
bits |= fiat_p256_get_bit(g_scalar
|
|
622
|
-
bits |= fiat_p256_get_bit(g_scalar
|
|
623
|
-
bits |= fiat_p256_get_bit(g_scalar
|
|
631
|
+
crypto_word_t bits = fiat_p256_get_bit(g_scalar, i + 224) << 3;
|
|
632
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 160) << 2;
|
|
633
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 96) << 1;
|
|
634
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 32);
|
|
624
635
|
if (bits != 0) {
|
|
625
636
|
size_t index = (size_t)(bits - 1);
|
|
626
637
|
fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
|
|
@@ -631,10 +642,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
|
|
|
631
642
|
}
|
|
632
643
|
|
|
633
644
|
// Second, look at the current position.
|
|
634
|
-
bits = fiat_p256_get_bit(g_scalar
|
|
635
|
-
bits |= fiat_p256_get_bit(g_scalar
|
|
636
|
-
bits |= fiat_p256_get_bit(g_scalar
|
|
637
|
-
bits |= fiat_p256_get_bit(g_scalar
|
|
645
|
+
bits = fiat_p256_get_bit(g_scalar, i + 192) << 3;
|
|
646
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 128) << 2;
|
|
647
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 64) << 1;
|
|
648
|
+
bits |= fiat_p256_get_bit(g_scalar, i);
|
|
638
649
|
if (bits != 0) {
|
|
639
650
|
size_t index = (size_t)(bits - 1);
|
|
640
651
|
fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
|
|
@@ -687,7 +698,7 @@ static int ec_GFp_nistp256_cmp_x_coordinate(const EC_GROUP *group,
|
|
|
687
698
|
fiat_p256_mul(Z2_mont, Z2_mont, Z2_mont);
|
|
688
699
|
|
|
689
700
|
fiat_p256_felem r_Z2;
|
|
690
|
-
|
|
701
|
+
fiat_p256_from_words(r_Z2, r->words); // r < order < p, so this is valid.
|
|
691
702
|
fiat_p256_mul(r_Z2, r_Z2, Z2_mont);
|
|
692
703
|
|
|
693
704
|
fiat_p256_felem X;
|
|
@@ -1,175 +1,169 @@
|
|
|
1
|
-
/* Copyright (c) 2018, Google Inc.
|
|
2
|
-
*
|
|
3
|
-
* Permission to use, copy, modify, and/or distribute this software for any
|
|
4
|
-
* purpose with or without fee is hereby granted, provided that the above
|
|
5
|
-
* copyright notice and this permission notice appear in all copies.
|
|
6
|
-
*
|
|
7
|
-
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
8
|
-
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
9
|
-
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
10
|
-
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
11
|
-
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
12
|
-
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
13
|
-
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
|
14
|
-
|
|
15
|
-
#include <openssl/ec.h>
|
|
16
|
-
#include <openssl/err.h>
|
|
17
|
-
#include <openssl/mem.h>
|
|
18
|
-
|
|
19
|
-
#include "internal.h"
|
|
20
|
-
#include "../bn/internal.h"
|
|
21
|
-
#include "../../internal.h"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
int ec_bignum_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
25
|
-
const BIGNUM *in) {
|
|
26
|
-
if (!bn_copy_words(out->words, group->order.width, in) ||
|
|
27
|
-
!bn_less_than_words(out->words, group->order.d, group->order.width)) {
|
|
28
|
-
OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
|
|
29
|
-
return 0;
|
|
30
|
-
}
|
|
31
|
-
return 1;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
int ec_scalar_equal_vartime(const EC_GROUP *group, const EC_SCALAR *a,
|
|
35
|
-
const EC_SCALAR *b) {
|
|
36
|
-
return OPENSSL_memcmp(a->words, b->words,
|
|
37
|
-
group->order.width * sizeof(BN_ULONG)) == 0;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
int ec_scalar_is_zero(const EC_GROUP *group, const EC_SCALAR *a) {
|
|
41
|
-
BN_ULONG mask = 0;
|
|
42
|
-
for (int i = 0; i < group->order.width; i++) {
|
|
43
|
-
mask |= a->words[i];
|
|
44
|
-
}
|
|
45
|
-
return mask == 0;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
49
|
-
const uint8_t additional_data[32]) {
|
|
50
|
-
return bn_rand_range_words(out->words, 1, group->order.d, group->order.width,
|
|
51
|
-
additional_data);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
|
|
55
|
-
const EC_SCALAR *in) {
|
|
56
|
-
size_t len = BN_num_bytes(&group->order);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
void
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
void
|
|
116
|
-
|
|
117
|
-
const BIGNUM *order = &group->order;
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
void
|
|
122
|
-
|
|
123
|
-
const BIGNUM *order = &group->order;
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
//
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
int ec_scalar_to_montgomery_inv_vartime(const EC_GROUP *group, EC_SCALAR *r,
|
|
173
|
-
const EC_SCALAR *a) {
|
|
174
|
-
return group->meth->scalar_to_montgomery_inv_vartime(group, r, a);
|
|
175
|
-
}
|
|
1
|
+
/* Copyright (c) 2018, Google Inc.
|
|
2
|
+
*
|
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
|
6
|
+
*
|
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
|
14
|
+
|
|
15
|
+
#include <openssl/ec.h>
|
|
16
|
+
#include <openssl/err.h>
|
|
17
|
+
#include <openssl/mem.h>
|
|
18
|
+
|
|
19
|
+
#include "internal.h"
|
|
20
|
+
#include "../bn/internal.h"
|
|
21
|
+
#include "../../internal.h"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
int ec_bignum_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
25
|
+
const BIGNUM *in) {
|
|
26
|
+
if (!bn_copy_words(out->words, group->order.width, in) ||
|
|
27
|
+
!bn_less_than_words(out->words, group->order.d, group->order.width)) {
|
|
28
|
+
OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
int ec_scalar_equal_vartime(const EC_GROUP *group, const EC_SCALAR *a,
|
|
35
|
+
const EC_SCALAR *b) {
|
|
36
|
+
return OPENSSL_memcmp(a->words, b->words,
|
|
37
|
+
group->order.width * sizeof(BN_ULONG)) == 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
int ec_scalar_is_zero(const EC_GROUP *group, const EC_SCALAR *a) {
|
|
41
|
+
BN_ULONG mask = 0;
|
|
42
|
+
for (int i = 0; i < group->order.width; i++) {
|
|
43
|
+
mask |= a->words[i];
|
|
44
|
+
}
|
|
45
|
+
return mask == 0;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
49
|
+
const uint8_t additional_data[32]) {
|
|
50
|
+
return bn_rand_range_words(out->words, 1, group->order.d, group->order.width,
|
|
51
|
+
additional_data);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
|
|
55
|
+
const EC_SCALAR *in) {
|
|
56
|
+
size_t len = BN_num_bytes(&group->order);
|
|
57
|
+
bn_words_to_big_endian(out, len, in->words, group->order.width);
|
|
58
|
+
*out_len = len;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
int ec_scalar_from_bytes(const EC_GROUP *group, EC_SCALAR *out,
|
|
62
|
+
const uint8_t *in, size_t len) {
|
|
63
|
+
if (len != BN_num_bytes(&group->order)) {
|
|
64
|
+
OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
bn_big_endian_to_words(out->words, group->order.width, in, len);
|
|
69
|
+
|
|
70
|
+
if (!bn_less_than_words(out->words, group->order.d, group->order.width)) {
|
|
71
|
+
OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
return 1;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
void ec_scalar_reduce(const EC_GROUP *group, EC_SCALAR *out,
|
|
79
|
+
const BN_ULONG *words, size_t num) {
|
|
80
|
+
// Convert "from" Montgomery form so the value is reduced modulo the order.
|
|
81
|
+
bn_from_montgomery_small(out->words, group->order.width, words, num,
|
|
82
|
+
group->order_mont);
|
|
83
|
+
// Convert "to" Montgomery form to remove the R^-1 factor added.
|
|
84
|
+
ec_scalar_to_montgomery(group, out, out);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
void ec_scalar_add(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
|
|
88
|
+
const EC_SCALAR *b) {
|
|
89
|
+
const BIGNUM *order = &group->order;
|
|
90
|
+
BN_ULONG tmp[EC_MAX_WORDS];
|
|
91
|
+
bn_mod_add_words(r->words, a->words, b->words, order->d, tmp, order->width);
|
|
92
|
+
OPENSSL_cleanse(tmp, sizeof(tmp));
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
void ec_scalar_sub(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
|
|
96
|
+
const EC_SCALAR *b) {
|
|
97
|
+
const BIGNUM *order = &group->order;
|
|
98
|
+
BN_ULONG tmp[EC_MAX_WORDS];
|
|
99
|
+
bn_mod_sub_words(r->words, a->words, b->words, order->d, tmp, order->width);
|
|
100
|
+
OPENSSL_cleanse(tmp, sizeof(tmp));
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
void ec_scalar_neg(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a) {
|
|
104
|
+
EC_SCALAR zero;
|
|
105
|
+
OPENSSL_memset(&zero, 0, sizeof(EC_SCALAR));
|
|
106
|
+
ec_scalar_sub(group, r, &zero, a);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
void ec_scalar_select(const EC_GROUP *group, EC_SCALAR *out, BN_ULONG mask,
|
|
110
|
+
const EC_SCALAR *a, const EC_SCALAR *b) {
|
|
111
|
+
const BIGNUM *order = &group->order;
|
|
112
|
+
bn_select_words(out->words, mask, a->words, b->words, order->width);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void ec_scalar_to_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
116
|
+
const EC_SCALAR *a) {
|
|
117
|
+
const BIGNUM *order = &group->order;
|
|
118
|
+
bn_to_montgomery_small(r->words, a->words, order->width, group->order_mont);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
void ec_scalar_from_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
122
|
+
const EC_SCALAR *a) {
|
|
123
|
+
const BIGNUM *order = &group->order;
|
|
124
|
+
bn_from_montgomery_small(r->words, order->width, a->words, order->width,
|
|
125
|
+
group->order_mont);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
void ec_scalar_mul_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
129
|
+
const EC_SCALAR *a, const EC_SCALAR *b) {
|
|
130
|
+
const BIGNUM *order = &group->order;
|
|
131
|
+
bn_mod_mul_montgomery_small(r->words, a->words, b->words, order->width,
|
|
132
|
+
group->order_mont);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void ec_simple_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
136
|
+
const EC_SCALAR *a) {
|
|
137
|
+
const BIGNUM *order = &group->order;
|
|
138
|
+
bn_mod_inverse0_prime_mont_small(r->words, a->words, order->width,
|
|
139
|
+
group->order_mont);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
int ec_simple_scalar_to_montgomery_inv_vartime(const EC_GROUP *group,
|
|
143
|
+
EC_SCALAR *r,
|
|
144
|
+
const EC_SCALAR *a) {
|
|
145
|
+
if (ec_scalar_is_zero(group, a)) {
|
|
146
|
+
return 0;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// This implementation (in fact) runs in constant time,
|
|
150
|
+
// even though for this interface it is not mandatory.
|
|
151
|
+
|
|
152
|
+
// r = a^-1 in the Montgomery domain. This is
|
|
153
|
+
// |ec_scalar_to_montgomery| followed by |ec_scalar_inv0_montgomery|, but
|
|
154
|
+
// |ec_scalar_inv0_montgomery| followed by |ec_scalar_from_montgomery| is
|
|
155
|
+
// equivalent and slightly more efficient.
|
|
156
|
+
ec_scalar_inv0_montgomery(group, r, a);
|
|
157
|
+
ec_scalar_from_montgomery(group, r, r);
|
|
158
|
+
return 1;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
void ec_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
162
|
+
const EC_SCALAR *a) {
|
|
163
|
+
group->meth->scalar_inv0_montgomery(group, r, a);
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
int ec_scalar_to_montgomery_inv_vartime(const EC_GROUP *group, EC_SCALAR *r,
|
|
167
|
+
const EC_SCALAR *a) {
|
|
168
|
+
return group->meth->scalar_to_montgomery_inv_vartime(group, r, a);
|
|
169
|
+
}
|