@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
|
@@ -66,11 +66,12 @@
|
|
|
66
66
|
#include <openssl/thread.h>
|
|
67
67
|
#include <openssl/type_check.h>
|
|
68
68
|
|
|
69
|
-
#include "internal.h"
|
|
70
|
-
#include "../bn/internal.h"
|
|
71
69
|
#include "../../internal.h"
|
|
70
|
+
#include "../bn/internal.h"
|
|
72
71
|
#include "../delocate.h"
|
|
73
72
|
#include "../rand/fork_detect.h"
|
|
73
|
+
#include "../service_indicator/internal.h"
|
|
74
|
+
#include "internal.h"
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
int rsa_check_public_key(const RSA *rsa) {
|
|
@@ -1419,6 +1420,10 @@ int RSA_generate_key_fips(RSA *rsa, int bits, BN_GENCB *cb) {
|
|
|
1419
1420
|
BN_set_word(e, RSA_F4) &&
|
|
1420
1421
|
RSA_generate_key_ex_maybe_fips(rsa, bits, e, cb, /*check_fips=*/1);
|
|
1421
1422
|
BN_free(e);
|
|
1423
|
+
|
|
1424
|
+
if (ret) {
|
|
1425
|
+
FIPS_service_indicator_update_state();
|
|
1426
|
+
}
|
|
1422
1427
|
return ret;
|
|
1423
1428
|
}
|
|
1424
1429
|
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
#include "../ecdsa/internal.h"
|
|
37
37
|
#include "../rand/internal.h"
|
|
38
38
|
#include "../rsa/internal.h"
|
|
39
|
+
#include "../service_indicator/internal.h"
|
|
39
40
|
#include "../tls/internal.h"
|
|
40
41
|
|
|
41
42
|
|
|
@@ -616,9 +617,11 @@ err:
|
|
|
616
617
|
#if defined(BORINGSSL_FIPS)
|
|
617
618
|
|
|
618
619
|
static void run_self_test_rsa(void) {
|
|
620
|
+
FIPS_service_indicator_lock_state();
|
|
619
621
|
if (!boringssl_self_test_rsa()) {
|
|
620
622
|
BORINGSSL_FIPS_abort();
|
|
621
623
|
}
|
|
624
|
+
FIPS_service_indicator_unlock_state();
|
|
622
625
|
}
|
|
623
626
|
|
|
624
627
|
DEFINE_STATIC_ONCE(g_self_test_once_rsa);
|
|
@@ -628,9 +631,11 @@ void boringssl_ensure_rsa_self_test(void) {
|
|
|
628
631
|
}
|
|
629
632
|
|
|
630
633
|
static void run_self_test_ecc(void) {
|
|
634
|
+
FIPS_service_indicator_lock_state();
|
|
631
635
|
if (!boringssl_self_test_ecc()) {
|
|
632
636
|
BORINGSSL_FIPS_abort();
|
|
633
637
|
}
|
|
638
|
+
FIPS_service_indicator_unlock_state();
|
|
634
639
|
}
|
|
635
640
|
|
|
636
641
|
DEFINE_STATIC_ONCE(g_self_test_once_ecc);
|
|
@@ -640,9 +645,11 @@ void boringssl_ensure_ecc_self_test(void) {
|
|
|
640
645
|
}
|
|
641
646
|
|
|
642
647
|
static void run_self_test_ffdh(void) {
|
|
648
|
+
FIPS_service_indicator_lock_state();
|
|
643
649
|
if (!boringssl_self_test_ffdh()) {
|
|
644
650
|
BORINGSSL_FIPS_abort();
|
|
645
651
|
}
|
|
652
|
+
FIPS_service_indicator_unlock_state();
|
|
646
653
|
}
|
|
647
654
|
|
|
648
655
|
DEFINE_STATIC_ONCE(g_self_test_once_ffdh);
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
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
|
+
#ifndef OPENSSL_HEADER_SERVICE_INDICATOR_INTERNAL_H
|
|
16
|
+
#define OPENSSL_HEADER_SERVICE_INDICATOR_INTERNAL_H
|
|
17
|
+
|
|
18
|
+
#include <openssl/base.h>
|
|
19
|
+
#include <openssl/service_indicator.h>
|
|
20
|
+
|
|
21
|
+
#if defined(BORINGSSL_FIPS)
|
|
22
|
+
|
|
23
|
+
// FIPS_service_indicator_update_state records that an approved service has been
|
|
24
|
+
// invoked.
|
|
25
|
+
void FIPS_service_indicator_update_state(void);
|
|
26
|
+
|
|
27
|
+
// FIPS_service_indicator_lock_state and |FIPS_service_indicator_unlock_state|
|
|
28
|
+
// stop |FIPS_service_indicator_update_state| from actually updating the service
|
|
29
|
+
// indicator. This is used when a primitive calls a potentially approved
|
|
30
|
+
// primitive to avoid false positives. For example, just because a key
|
|
31
|
+
// generation calls |RAND_bytes| (and thus the approved DRBG) doesn't mean that
|
|
32
|
+
// the key generation operation itself is approved.
|
|
33
|
+
//
|
|
34
|
+
// This lock nests: i.e. locking twice is fine so long as each lock is paired
|
|
35
|
+
// with an unlock. If the (64-bit) counter overflows, the process aborts.
|
|
36
|
+
void FIPS_service_indicator_lock_state(void);
|
|
37
|
+
void FIPS_service_indicator_unlock_state(void);
|
|
38
|
+
|
|
39
|
+
// The following functions may call |FIPS_service_indicator_update_state| if
|
|
40
|
+
// their parameter specifies an approved operation.
|
|
41
|
+
|
|
42
|
+
void AEAD_GCM_verify_service_indicator(const EVP_AEAD_CTX *ctx);
|
|
43
|
+
void AEAD_CCM_verify_service_indicator(const EVP_AEAD_CTX *ctx);
|
|
44
|
+
void EC_KEY_keygen_verify_service_indicator(const EC_KEY *eckey);
|
|
45
|
+
void ECDH_verify_service_indicator(const EC_KEY *ec_key);
|
|
46
|
+
void EVP_Cipher_verify_service_indicator(const EVP_CIPHER_CTX *ctx);
|
|
47
|
+
void EVP_DigestSign_verify_service_indicator(const EVP_MD_CTX *ctx);
|
|
48
|
+
void EVP_DigestVerify_verify_service_indicator(const EVP_MD_CTX *ctx);
|
|
49
|
+
void HMAC_verify_service_indicator(const EVP_MD *evp_md);
|
|
50
|
+
void TLSKDF_verify_service_indicator(const EVP_MD *dgst);
|
|
51
|
+
|
|
52
|
+
#else
|
|
53
|
+
|
|
54
|
+
// Service indicator functions are no-ops in non-FIPS builds.
|
|
55
|
+
|
|
56
|
+
OPENSSL_INLINE void FIPS_service_indicator_update_state(void) {}
|
|
57
|
+
OPENSSL_INLINE void FIPS_service_indicator_lock_state(void) {}
|
|
58
|
+
OPENSSL_INLINE void FIPS_service_indicator_unlock_state(void) {}
|
|
59
|
+
|
|
60
|
+
OPENSSL_INLINE void AEAD_GCM_verify_service_indicator(
|
|
61
|
+
OPENSSL_UNUSED const EVP_AEAD_CTX *ctx) {}
|
|
62
|
+
|
|
63
|
+
OPENSSL_INLINE void AEAD_CCM_verify_service_indicator(
|
|
64
|
+
OPENSSL_UNUSED const EVP_AEAD_CTX *ctx) {}
|
|
65
|
+
|
|
66
|
+
OPENSSL_INLINE void EC_KEY_keygen_verify_service_indicator(
|
|
67
|
+
OPENSSL_UNUSED const EC_KEY *eckey) {}
|
|
68
|
+
|
|
69
|
+
OPENSSL_INLINE void ECDH_verify_service_indicator(
|
|
70
|
+
OPENSSL_UNUSED const EC_KEY *ec_key) {}
|
|
71
|
+
|
|
72
|
+
OPENSSL_INLINE void EVP_Cipher_verify_service_indicator(
|
|
73
|
+
OPENSSL_UNUSED const EVP_CIPHER_CTX *ctx) {}
|
|
74
|
+
|
|
75
|
+
OPENSSL_INLINE void EVP_DigestSign_verify_service_indicator(
|
|
76
|
+
OPENSSL_UNUSED const EVP_MD_CTX *ctx) {}
|
|
77
|
+
|
|
78
|
+
OPENSSL_INLINE void EVP_DigestVerify_verify_service_indicator(
|
|
79
|
+
OPENSSL_UNUSED const EVP_MD_CTX *ctx) {}
|
|
80
|
+
|
|
81
|
+
OPENSSL_INLINE void HMAC_verify_service_indicator(
|
|
82
|
+
OPENSSL_UNUSED const EVP_MD *evp_md) {}
|
|
83
|
+
|
|
84
|
+
OPENSSL_INLINE void TLSKDF_verify_service_indicator(
|
|
85
|
+
OPENSSL_UNUSED const EVP_MD *dgst) {}
|
|
86
|
+
|
|
87
|
+
#endif // BORINGSSL_FIPS
|
|
88
|
+
|
|
89
|
+
#endif // OPENSSL_HEADER_SERVICE_INDICATOR_INTERNAL_H
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
/* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
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/crypto.h>
|
|
16
|
+
#include <openssl/ec.h>
|
|
17
|
+
#include <openssl/ec_key.h>
|
|
18
|
+
#include <openssl/evp.h>
|
|
19
|
+
#include <openssl/service_indicator.h>
|
|
20
|
+
|
|
21
|
+
#include "../../evp/internal.h"
|
|
22
|
+
#include "../../internal.h"
|
|
23
|
+
#include "internal.h"
|
|
24
|
+
|
|
25
|
+
#if defined(BORINGSSL_FIPS)
|
|
26
|
+
|
|
27
|
+
#define STATE_UNLOCKED 0
|
|
28
|
+
|
|
29
|
+
// fips_service_indicator_state is a thread-local structure that stores the
|
|
30
|
+
// state of the FIPS service indicator.
|
|
31
|
+
struct fips_service_indicator_state {
|
|
32
|
+
// lock_state records the number of times the indicator has been locked.
|
|
33
|
+
// When it is zero (i.e. |STATE_UNLOCKED|) then the indicator can be updated.
|
|
34
|
+
uint64_t lock_state;
|
|
35
|
+
// counter is the indicator state. It is incremented when an approved service
|
|
36
|
+
// completes.
|
|
37
|
+
uint64_t counter;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// service_indicator_get returns a pointer to the |fips_service_indicator_state|
|
|
41
|
+
// for the current thread. It returns NULL on error.
|
|
42
|
+
//
|
|
43
|
+
// FIPS 140-3 requires that the module should provide the service indicator
|
|
44
|
+
// for approved services irrespective of whether the user queries it or not.
|
|
45
|
+
// Hence, it is lazily initialized in any call to an approved service.
|
|
46
|
+
static struct fips_service_indicator_state *service_indicator_get(void) {
|
|
47
|
+
struct fips_service_indicator_state *indicator = CRYPTO_get_thread_local(
|
|
48
|
+
OPENSSL_THREAD_LOCAL_FIPS_SERVICE_INDICATOR_STATE);
|
|
49
|
+
|
|
50
|
+
if (indicator == NULL) {
|
|
51
|
+
indicator = OPENSSL_malloc(sizeof(struct fips_service_indicator_state));
|
|
52
|
+
if (indicator == NULL) {
|
|
53
|
+
OPENSSL_PUT_ERROR(CRYPTO, ERR_R_MALLOC_FAILURE);
|
|
54
|
+
return NULL;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
indicator->lock_state = STATE_UNLOCKED;
|
|
58
|
+
indicator->counter = 0;
|
|
59
|
+
|
|
60
|
+
if (!CRYPTO_set_thread_local(
|
|
61
|
+
OPENSSL_THREAD_LOCAL_FIPS_SERVICE_INDICATOR_STATE, indicator,
|
|
62
|
+
OPENSSL_free)) {
|
|
63
|
+
OPENSSL_PUT_ERROR(CRYPTO, ERR_R_INTERNAL_ERROR);
|
|
64
|
+
return NULL;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return indicator;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
static uint64_t service_indicator_get_counter(void) {
|
|
72
|
+
struct fips_service_indicator_state *indicator = service_indicator_get();
|
|
73
|
+
if (indicator == NULL) {
|
|
74
|
+
return 0;
|
|
75
|
+
}
|
|
76
|
+
return indicator->counter;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
uint64_t FIPS_service_indicator_before_call(void) {
|
|
80
|
+
return service_indicator_get_counter();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
uint64_t FIPS_service_indicator_after_call(void) {
|
|
84
|
+
return service_indicator_get_counter();
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
void FIPS_service_indicator_update_state(void) {
|
|
88
|
+
struct fips_service_indicator_state *indicator = service_indicator_get();
|
|
89
|
+
if (indicator && indicator->lock_state == STATE_UNLOCKED) {
|
|
90
|
+
indicator->counter++;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
void FIPS_service_indicator_lock_state(void) {
|
|
95
|
+
struct fips_service_indicator_state *indicator = service_indicator_get();
|
|
96
|
+
if (indicator == NULL) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// |FIPS_service_indicator_lock_state| and
|
|
101
|
+
// |FIPS_service_indicator_unlock_state| should not under/overflow in normal
|
|
102
|
+
// operation. They are still checked and errors added to facilitate testing in
|
|
103
|
+
// service_indicator_test.cc. This should only happen if lock/unlock are
|
|
104
|
+
// called in an incorrect order or multiple times in the same function.
|
|
105
|
+
const uint64_t new_state = indicator->lock_state + 1;
|
|
106
|
+
if (new_state < indicator->lock_state) {
|
|
107
|
+
// Overflow. This would imply that our call stack length has exceeded a
|
|
108
|
+
// |uint64_t| which impossible on a 64-bit system.
|
|
109
|
+
abort();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
indicator->lock_state = new_state;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
void FIPS_service_indicator_unlock_state(void) {
|
|
116
|
+
struct fips_service_indicator_state *indicator = service_indicator_get();
|
|
117
|
+
if (indicator == NULL) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (indicator->lock_state == 0) {
|
|
122
|
+
abort();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
indicator->lock_state--;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
void AEAD_GCM_verify_service_indicator(const EVP_AEAD_CTX *ctx) {
|
|
129
|
+
const size_t key_len = EVP_AEAD_key_length(ctx->aead);
|
|
130
|
+
if (key_len == 16 || key_len == 32) {
|
|
131
|
+
FIPS_service_indicator_update_state();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
void AEAD_CCM_verify_service_indicator(const EVP_AEAD_CTX *ctx) {
|
|
136
|
+
if (EVP_AEAD_key_length(ctx->aead) == 16 && ctx->tag_len == 4) {
|
|
137
|
+
FIPS_service_indicator_update_state();
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// is_ec_fips_approved returns one if the curve corresponding to the given NID
|
|
142
|
+
// is FIPS approved, and zero otherwise.
|
|
143
|
+
static int is_ec_fips_approved(int curve_nid) {
|
|
144
|
+
switch (curve_nid) {
|
|
145
|
+
case NID_secp224r1:
|
|
146
|
+
case NID_X9_62_prime256v1:
|
|
147
|
+
case NID_secp384r1:
|
|
148
|
+
case NID_secp521r1:
|
|
149
|
+
return 1;
|
|
150
|
+
default:
|
|
151
|
+
return 0;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// is_md_fips_approved_for_signing returns one if the given message digest type
|
|
156
|
+
// is FIPS approved for signing, and zero otherwise.
|
|
157
|
+
static int is_md_fips_approved_for_signing(int md_type) {
|
|
158
|
+
switch (md_type) {
|
|
159
|
+
case NID_sha224:
|
|
160
|
+
case NID_sha256:
|
|
161
|
+
case NID_sha384:
|
|
162
|
+
case NID_sha512:
|
|
163
|
+
case NID_sha512_256:
|
|
164
|
+
return 1;
|
|
165
|
+
default:
|
|
166
|
+
return 0;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// is_md_fips_approved_for_verifying returns one if the given message digest
|
|
171
|
+
// type is FIPS approved for verifying, and zero otherwise.
|
|
172
|
+
static int is_md_fips_approved_for_verifying(int md_type) {
|
|
173
|
+
switch (md_type) {
|
|
174
|
+
case NID_sha1:
|
|
175
|
+
case NID_sha224:
|
|
176
|
+
case NID_sha256:
|
|
177
|
+
case NID_sha384:
|
|
178
|
+
case NID_sha512:
|
|
179
|
+
case NID_sha512_256:
|
|
180
|
+
return 1;
|
|
181
|
+
default:
|
|
182
|
+
return 0;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
static void evp_md_ctx_verify_service_indicator(const EVP_MD_CTX *ctx,
|
|
187
|
+
int rsa_1024_ok,
|
|
188
|
+
int (*md_ok)(int md_type)) {
|
|
189
|
+
if (EVP_MD_CTX_md(ctx) == NULL) {
|
|
190
|
+
// Signature schemes without a prehash are currently never FIPS approved.
|
|
191
|
+
goto err;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
EVP_PKEY_CTX *const pctx = ctx->pctx;
|
|
195
|
+
const EVP_PKEY *const pkey = EVP_PKEY_CTX_get0_pkey(pctx);
|
|
196
|
+
const int pkey_type = EVP_PKEY_id(pkey);
|
|
197
|
+
const int md_type = EVP_MD_CTX_type(ctx);
|
|
198
|
+
|
|
199
|
+
// EVP_PKEY_RSA_PSS SPKIs aren't supported.
|
|
200
|
+
if (pkey_type == EVP_PKEY_RSA) {
|
|
201
|
+
// Message digest used in the private key should be of the same type
|
|
202
|
+
// as the given one, so we extract the MD type from the |EVP_PKEY|
|
|
203
|
+
// and compare it with the type in |ctx|.
|
|
204
|
+
const EVP_MD *pctx_md;
|
|
205
|
+
if (!EVP_PKEY_CTX_get_signature_md(pctx, &pctx_md)) {
|
|
206
|
+
goto err;
|
|
207
|
+
}
|
|
208
|
+
if (EVP_MD_type(pctx_md) != md_type) {
|
|
209
|
+
goto err;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
int padding;
|
|
213
|
+
if (!EVP_PKEY_CTX_get_rsa_padding(pctx, &padding)) {
|
|
214
|
+
goto err;
|
|
215
|
+
}
|
|
216
|
+
if (padding == RSA_PKCS1_PSS_PADDING) {
|
|
217
|
+
int salt_len;
|
|
218
|
+
const EVP_MD *mgf1_md;
|
|
219
|
+
if (!EVP_PKEY_CTX_get_rsa_pss_saltlen(pctx, &salt_len) ||
|
|
220
|
+
!EVP_PKEY_CTX_get_rsa_mgf1_md(pctx, &mgf1_md) ||
|
|
221
|
+
(salt_len != -1 && salt_len != (int)EVP_MD_size(pctx_md)) ||
|
|
222
|
+
EVP_MD_type(mgf1_md) != md_type) {
|
|
223
|
+
// Only PSS where saltLen == hashLen is tested with ACVP. Cases with
|
|
224
|
+
// non-standard padding functions are also excluded.
|
|
225
|
+
goto err;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
// The approved RSA key sizes for signing are 2048, 3072 and 4096 bits.
|
|
230
|
+
// Note: |EVP_PKEY_size| returns the size in bytes.
|
|
231
|
+
size_t pkey_size = EVP_PKEY_size(ctx->pctx->pkey);
|
|
232
|
+
|
|
233
|
+
// Check if the MD type and the RSA key size are approved.
|
|
234
|
+
if (md_ok(md_type) &&
|
|
235
|
+
((rsa_1024_ok && pkey_size == 128) || pkey_size == 256 ||
|
|
236
|
+
pkey_size == 384 || pkey_size == 512)) {
|
|
237
|
+
FIPS_service_indicator_update_state();
|
|
238
|
+
}
|
|
239
|
+
} else if (pkey_type == EVP_PKEY_EC) {
|
|
240
|
+
// Check if the MD type and the elliptic curve are approved.
|
|
241
|
+
if (md_ok(md_type) && is_ec_fips_approved(EC_GROUP_get_curve_name(
|
|
242
|
+
ctx->pctx->pkey->pkey.ec->group))) {
|
|
243
|
+
FIPS_service_indicator_update_state();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
err:
|
|
248
|
+
// Ensure that junk errors aren't left on the queue.
|
|
249
|
+
ERR_clear_error();
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
void EC_KEY_keygen_verify_service_indicator(const EC_KEY *eckey) {
|
|
253
|
+
if (is_ec_fips_approved(EC_GROUP_get_curve_name(eckey->group))) {
|
|
254
|
+
FIPS_service_indicator_update_state();
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
void ECDH_verify_service_indicator(const EC_KEY *ec_key) {
|
|
259
|
+
if (is_ec_fips_approved(EC_GROUP_get_curve_name(EC_KEY_get0_group(ec_key)))) {
|
|
260
|
+
FIPS_service_indicator_update_state();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
void EVP_Cipher_verify_service_indicator(const EVP_CIPHER_CTX *ctx) {
|
|
265
|
+
switch (EVP_CIPHER_CTX_nid(ctx)) {
|
|
266
|
+
case NID_aes_128_ecb:
|
|
267
|
+
case NID_aes_192_ecb:
|
|
268
|
+
case NID_aes_256_ecb:
|
|
269
|
+
|
|
270
|
+
case NID_aes_128_cbc:
|
|
271
|
+
case NID_aes_192_cbc:
|
|
272
|
+
case NID_aes_256_cbc:
|
|
273
|
+
|
|
274
|
+
case NID_aes_128_ctr:
|
|
275
|
+
case NID_aes_192_ctr:
|
|
276
|
+
case NID_aes_256_ctr:
|
|
277
|
+
FIPS_service_indicator_update_state();
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
void EVP_DigestVerify_verify_service_indicator(const EVP_MD_CTX *ctx) {
|
|
282
|
+
return evp_md_ctx_verify_service_indicator(ctx, /*rsa_1024_ok=*/1,
|
|
283
|
+
is_md_fips_approved_for_verifying);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
void EVP_DigestSign_verify_service_indicator(const EVP_MD_CTX *ctx) {
|
|
287
|
+
return evp_md_ctx_verify_service_indicator(ctx, /*rsa_1024_ok=*/0,
|
|
288
|
+
is_md_fips_approved_for_signing);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
void HMAC_verify_service_indicator(const EVP_MD *evp_md) {
|
|
292
|
+
switch (evp_md->type) {
|
|
293
|
+
case NID_sha1:
|
|
294
|
+
case NID_sha224:
|
|
295
|
+
case NID_sha256:
|
|
296
|
+
case NID_sha384:
|
|
297
|
+
case NID_sha512:
|
|
298
|
+
case NID_sha512_256:
|
|
299
|
+
FIPS_service_indicator_update_state();
|
|
300
|
+
break;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
void TLSKDF_verify_service_indicator(const EVP_MD *md) {
|
|
305
|
+
// HMAC-MD5, HMAC-SHA1, and HMAC-MD5/HMAC-SHA1 (both used concurrently) are
|
|
306
|
+
// approved for use in the KDF in TLS 1.0/1.1.
|
|
307
|
+
// HMAC-SHA{256, 384, 512} are approved for use in the KDF in TLS 1.2.
|
|
308
|
+
// These Key Derivation functions are to be used in the context of the TLS
|
|
309
|
+
// protocol.
|
|
310
|
+
switch (EVP_MD_type(md)) {
|
|
311
|
+
case NID_md5:
|
|
312
|
+
case NID_sha1:
|
|
313
|
+
case NID_md5_sha1:
|
|
314
|
+
case NID_sha256:
|
|
315
|
+
case NID_sha384:
|
|
316
|
+
case NID_sha512:
|
|
317
|
+
FIPS_service_indicator_update_state();
|
|
318
|
+
break;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
#else
|
|
323
|
+
|
|
324
|
+
uint64_t FIPS_service_indicator_before_call(void) { return 0; }
|
|
325
|
+
|
|
326
|
+
uint64_t FIPS_service_indicator_after_call(void) {
|
|
327
|
+
// One is returned so that the return value is always greater than zero, the
|
|
328
|
+
// return value of |FIPS_service_indicator_before_call|. This makes everything
|
|
329
|
+
// report as "approved" in non-FIPS builds.
|
|
330
|
+
return 1;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
#endif // BORINGSSL_FIPS
|