grpc 1.35.0 → 1.38.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +168 -131
- data/include/grpc/event_engine/README.md +38 -0
- data/include/grpc/event_engine/channel_args.h +28 -0
- data/include/grpc/event_engine/event_engine.h +336 -0
- data/include/grpc/event_engine/port.h +39 -0
- data/include/grpc/event_engine/slice_allocator.h +81 -0
- data/include/grpc/grpc.h +15 -1
- data/include/grpc/grpc_security.h +16 -11
- data/include/grpc/grpc_security_constants.h +14 -0
- data/include/grpc/impl/codegen/grpc_types.h +11 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/module.modulemap +14 -14
- data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
- data/src/core/ext/filters/client_channel/client_channel.cc +740 -3185
- data/src/core/ext/filters/client_channel/client_channel.h +488 -56
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -1
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
- data/src/core/ext/filters/client_channel/config_selector.h +10 -2
- data/src/core/ext/filters/client_channel/connector.h +1 -1
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +18 -14
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -142
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +15 -10
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
- data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +26 -23
- data/src/core/ext/filters/client_channel/lb_policy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +49 -48
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +22 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +23 -0
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +27 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +318 -193
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +30 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +32 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +316 -171
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/local_subchannel_pool.cc +27 -67
- data/src/core/ext/filters/client_channel/local_subchannel_pool.h +10 -9
- data/src/core/ext/filters/client_channel/resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver.h +3 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +59 -60
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +17 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +33 -23
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +38 -43
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +379 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +346 -178
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
- data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
- data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
- data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
- data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
- data/src/core/ext/filters/client_channel/server_address.cc +10 -1
- data/src/core/ext/filters/client_channel/server_address.h +31 -0
- data/src/core/ext/filters/client_channel/service_config.cc +15 -14
- data/src/core/ext/filters/client_channel/service_config.h +7 -6
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
- data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
- data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
- data/src/core/ext/filters/client_channel/subchannel.cc +86 -162
- data/src/core/ext/filters/client_channel/subchannel.h +68 -99
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +16 -2
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +10 -8
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +17 -16
- data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +501 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +39 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +189 -0
- data/src/core/ext/filters/fault_injection/service_config_parser.h +85 -0
- data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
- data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
- data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
- data/src/core/ext/filters/max_age/max_age_filter.cc +47 -42
- data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -4
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +5 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +507 -196
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -2
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +13 -4
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -3
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +64 -21
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +167 -122
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +12 -1
- data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
- data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +13 -9
- data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +32 -27
- data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
- data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +406 -0
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +1459 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +350 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +1348 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +11 -16
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +42 -59
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +25 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +75 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +9 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +7 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +28 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +6 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +25 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +11 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +41 -7
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -21
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +13 -9
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +37 -5
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +488 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +141 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +452 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +11 -9
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +44 -27
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +57 -16
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +150 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +67 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +79 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +268 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +78 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +281 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +113 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +19 -21
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +64 -51
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +16 -13
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +50 -18
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +4 -7
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +0 -17
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +30 -23
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +85 -73
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +0 -3
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +0 -2
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +93 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +323 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +36 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +90 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +46 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +124 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +21 -4
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +29 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.c +33 -0
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +77 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/authority.upb.c +5 -5
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +60 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +52 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +143 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +42 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +84 -0
- data/src/core/ext/upb-generated/{udpa/core/v1 → xds/core/v3}/resource.upb.c +9 -9
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +94 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +54 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +166 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +36 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +85 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +354 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.h +140 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +168 -171
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +383 -0
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +115 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +405 -420
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +2 -2
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +177 -171
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +88 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +153 -153
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +10 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +33 -20
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +56 -59
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +116 -111
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +129 -121
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +21 -24
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +141 -0
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +17 -13
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +753 -724
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +22 -25
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +51 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +102 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +120 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.h +45 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +76 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +371 -377
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +12 -16
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +112 -108
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +45 -53
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +177 -180
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +92 -102
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +32 -42
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +30 -40
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +4 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +38 -44
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +130 -0
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +30 -33
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +63 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +14 -11
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +42 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +62 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +49 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.h +35 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +67 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.h +35 -0
- data/src/core/ext/xds/certificate_provider_factory.h +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
- data/src/core/ext/xds/xds_api.cc +2179 -688
- data/src/core/ext/xds/xds_api.h +326 -124
- data/src/core/ext/xds/xds_bootstrap.cc +115 -142
- data/src/core/ext/xds/xds_bootstrap.h +24 -17
- data/src/core/ext/xds/xds_certificate_provider.cc +184 -78
- data/src/core/ext/xds/xds_certificate_provider.h +84 -45
- data/src/core/ext/xds/xds_channel_args.h +5 -2
- data/src/core/ext/xds/xds_client.cc +462 -183
- data/src/core/ext/xds/xds_client.h +65 -22
- data/src/core/ext/xds/xds_client_stats.cc +2 -1
- data/src/core/ext/xds/xds_client_stats.h +5 -4
- data/src/core/ext/xds/xds_http_fault_filter.cc +226 -0
- data/src/core/ext/xds/xds_http_fault_filter.h +63 -0
- data/src/core/ext/xds/xds_http_filters.cc +114 -0
- data/src/core/ext/xds/xds_http_filters.h +130 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +444 -29
- data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
- data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +108 -5
- data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +26 -6
- data/src/core/lib/channel/channel_stack.cc +22 -9
- data/src/core/lib/channel/channel_stack.h +17 -9
- data/src/core/lib/channel/channel_stack_builder.cc +2 -2
- data/src/core/lib/channel/channel_stack_builder.h +1 -1
- data/src/core/lib/channel/channelz.cc +108 -12
- data/src/core/lib/channel/channelz.h +30 -1
- data/src/core/lib/channel/channelz_registry.cc +14 -0
- data/src/core/lib/channel/connected_channel.cc +4 -4
- data/src/core/lib/channel/handshaker.cc +9 -50
- data/src/core/lib/channel/handshaker.h +6 -23
- data/src/core/lib/channel/status_util.cc +12 -2
- data/src/core/lib/channel/status_util.h +5 -0
- data/src/core/lib/event_engine/slice_allocator.cc +59 -0
- data/src/core/lib/event_engine/sockaddr.cc +38 -0
- data/src/core/lib/gpr/log.cc +6 -1
- data/src/core/lib/gpr/sync_abseil.cc +3 -6
- data/src/core/lib/gpr/sync_windows.cc +2 -2
- data/src/core/lib/gprpp/atomic.h +3 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +3 -3
- data/src/core/lib/gprpp/mpscq.cc +2 -2
- data/src/core/lib/gprpp/ref_counted.h +29 -15
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -0
- data/src/core/lib/gprpp/status_helper.cc +407 -0
- data/src/core/lib/gprpp/status_helper.h +180 -0
- data/src/core/lib/gprpp/sync.h +129 -40
- data/src/core/lib/gprpp/thd.h +1 -1
- data/src/core/lib/gprpp/time_util.cc +77 -0
- data/src/core/lib/gprpp/time_util.h +42 -0
- data/src/core/lib/http/httpcli.cc +11 -11
- data/src/core/lib/http/httpcli_security_connector.cc +13 -9
- data/src/core/lib/http/parser.cc +16 -16
- data/src/core/lib/http/parser.h +4 -4
- data/src/core/lib/iomgr/buffer_list.cc +7 -9
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +15 -12
- data/src/core/lib/iomgr/call_combiner.h +12 -14
- data/src/core/lib/iomgr/cfstream_handle.cc +5 -5
- data/src/core/lib/iomgr/cfstream_handle.h +1 -1
- data/src/core/lib/iomgr/closure.h +7 -6
- data/src/core/lib/iomgr/combiner.cc +14 -12
- data/src/core/lib/iomgr/combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint.cc +1 -1
- data/src/core/lib/iomgr/endpoint.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/error.cc +167 -61
- data/src/core/lib/iomgr/error.h +218 -107
- data/src/core/lib/iomgr/error_cfstream.cc +3 -2
- data/src/core/lib/iomgr/error_cfstream.h +2 -2
- data/src/core/lib/iomgr/error_internal.h +5 -1
- data/src/core/lib/iomgr/ev_apple.cc +16 -13
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +22 -22
- data/src/core/lib/iomgr/ev_epollex_linux.cc +52 -49
- data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
- data/src/core/lib/iomgr/ev_posix.cc +12 -11
- data/src/core/lib/iomgr/ev_posix.h +9 -9
- data/src/core/lib/iomgr/exec_ctx.cc +10 -6
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +8 -8
- data/src/core/lib/iomgr/executor.h +2 -2
- data/src/core/lib/iomgr/iomgr.cc +1 -1
- data/src/core/lib/iomgr/iomgr.h +1 -1
- data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
- data/src/core/lib/iomgr/iomgr_internal.h +3 -3
- data/src/core/lib/iomgr/iomgr_posix.cc +1 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -3
- data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +4 -4
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +5 -5
- data/src/core/lib/iomgr/lockfree_event.h +1 -1
- data/src/core/lib/iomgr/pollset.cc +5 -5
- data/src/core/lib/iomgr/pollset.h +9 -9
- data/src/core/lib/iomgr/pollset_custom.cc +5 -5
- data/src/core/lib/iomgr/pollset_windows.cc +5 -5
- data/src/core/lib/iomgr/port.h +1 -1
- data/src/core/lib/iomgr/python_util.h +1 -1
- data/src/core/lib/iomgr/resolve_address.cc +3 -3
- data/src/core/lib/iomgr/resolve_address.h +6 -6
- data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
- data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
- data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
- data/src/core/lib/iomgr/resource_quota.cc +12 -11
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +23 -20
- data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
- data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
- data/src/core/lib/iomgr/tcp_client_posix.cc +16 -18
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
- data/src/core/lib/iomgr/tcp_custom.cc +14 -16
- data/src/core/lib/iomgr/tcp_custom.h +13 -12
- data/src/core/lib/iomgr/tcp_posix.cc +41 -42
- data/src/core/lib/iomgr/tcp_server.cc +6 -6
- data/src/core/lib/iomgr/tcp_server.h +12 -11
- data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
- data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
- data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
- data/src/core/lib/iomgr/tcp_uv.cc +27 -25
- data/src/core/lib/iomgr/tcp_windows.cc +13 -13
- data/src/core/lib/iomgr/tcp_windows.h +2 -2
- data/src/core/lib/iomgr/timer_custom.cc +2 -1
- data/src/core/lib/iomgr/timer_custom.h +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +8 -8
- data/src/core/lib/iomgr/timer_manager.cc +1 -1
- data/src/core/lib/iomgr/udp_server.cc +21 -20
- data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
- data/src/core/lib/iomgr/work_serializer.h +17 -1
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_reader.cc +4 -4
- data/src/core/lib/matchers/matchers.cc +339 -0
- data/src/core/lib/matchers/matchers.h +160 -0
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -1
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.h +4 -3
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +18 -14
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
- data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
- data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +17 -14
- data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +6 -5
- data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +9 -9
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +3 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +16 -15
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
- data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
- data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +2 -2
- data/src/core/lib/security/credentials/jwt/json_token.cc +2 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -8
- data/src/core/lib/security/credentials/local/local_credentials.cc +2 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +2 -1
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +2 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +1 -1
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +130 -61
- data/src/core/lib/security/credentials/xds/xds_credentials.h +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +5 -5
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
- data/src/core/lib/security/security_connector/security_connector.h +9 -4
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
- data/src/core/lib/security/security_connector/ssl_utils.cc +31 -8
- data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +88 -74
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
- data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
- data/src/core/lib/security/transport/security_handshaker.cc +66 -37
- data/src/core/lib/security/transport/server_auth_filter.cc +24 -11
- data/src/core/lib/security/transport/tsi_error.cc +2 -1
- data/src/core/lib/security/transport/tsi_error.h +2 -1
- data/src/core/lib/security/util/json_util.cc +2 -2
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice_intern.cc +5 -6
- data/src/core/lib/surface/call.cc +46 -45
- data/src/core/lib/surface/call.h +2 -2
- data/src/core/lib/surface/channel.cc +6 -6
- data/src/core/lib/surface/channel.h +6 -5
- data/src/core/lib/surface/channel_ping.cc +1 -1
- data/src/core/lib/surface/completion_queue.cc +46 -47
- data/src/core/lib/surface/completion_queue.h +2 -1
- data/src/core/lib/surface/init.cc +13 -15
- data/src/core/lib/surface/lame_client.cc +43 -24
- data/src/core/lib/surface/lame_client.h +4 -3
- data/src/core/lib/surface/server.cc +71 -58
- data/src/core/lib/surface/server.h +91 -28
- data/src/core/lib/surface/validate_metadata.cc +7 -7
- data/src/core/lib/surface/validate_metadata.h +3 -2
- data/src/core/lib/surface/version.cc +4 -2
- data/src/core/lib/transport/byte_stream.cc +5 -5
- data/src/core/lib/transport/byte_stream.h +8 -8
- data/src/core/lib/transport/connectivity_state.cc +1 -1
- data/src/core/lib/transport/error_utils.cc +19 -8
- data/src/core/lib/transport/error_utils.h +11 -5
- data/src/core/lib/transport/metadata.cc +6 -2
- data/src/core/lib/transport/metadata_batch.cc +64 -37
- data/src/core/lib/transport/metadata_batch.h +33 -18
- data/src/core/lib/transport/transport.cc +4 -3
- data/src/core/lib/transport/transport.h +4 -4
- data/src/core/lib/transport/transport_op_string.cc +5 -5
- data/src/core/plugin_registry/grpc_plugin_registry.cc +12 -0
- data/src/core/tsi/alts/crypt/gsec.h +4 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -28
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +1 -3
- data/src/core/tsi/fake_transport_security.cc +11 -2
- data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +0 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +2 -4
- data/src/core/tsi/ssl_transport_security.cc +32 -17
- data/src/core/tsi/ssl_transport_security.h +3 -7
- data/src/ruby/bin/math_services_pb.rb +1 -1
- data/src/ruby/ext/grpc/extconf.rb +9 -1
- data/src/ruby/ext/grpc/rb_channel.c +10 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +11 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
- data/src/ruby/ext/grpc/rb_enable_cpp.cc +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -1
- data/src/ruby/ext/grpc/rb_server.c +13 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +19 -3
- data/src/ruby/ext/grpc/rb_server_credentials.h +4 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +215 -0
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.h +35 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +169 -0
- data/src/ruby/ext/grpc/rb_xds_server_credentials.h +35 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +7 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
- data/src/ruby/spec/call_spec.rb +1 -1
- data/src/ruby/spec/channel_credentials_spec.rb +32 -0
- data/src/ruby/spec/channel_spec.rb +17 -6
- data/src/ruby/spec/client_auth_spec.rb +27 -1
- data/src/ruby/spec/errors_spec.rb +1 -1
- data/src/ruby/spec/generic/active_call_spec.rb +2 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/rpc_server_spec.rb +1 -1
- data/src/ruby/spec/server_credentials_spec.rb +25 -0
- data/src/ruby/spec/server_spec.rb +22 -0
- data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
- data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
- data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
- data/third_party/abseil-cpp/absl/base/config.h +37 -9
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
- data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
- data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
- data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
- data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
- data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
- data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
- data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
- data/third_party/abseil-cpp/absl/base/macros.h +11 -0
- data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/base/port.h +0 -1
- data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
- data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
- data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
- data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
- data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
- data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
- data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
- data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
- data/third_party/abseil-cpp/absl/status/status.cc +29 -22
- data/third_party/abseil-cpp/absl/status/status.h +81 -20
- data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
- data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
- data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
- data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
- data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
- data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
- data/third_party/abseil-cpp/absl/strings/match.h +16 -6
- data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
- data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
- data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
- data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +1 -0
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
- data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
- data/third_party/abseil-cpp/absl/time/clock.h +2 -2
- data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
- data/third_party/abseil-cpp/absl/time/time.cc +4 -3
- data/third_party/abseil-cpp/absl/time/time.h +26 -24
- data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
- data/third_party/abseil-cpp/absl/types/variant.h +9 -4
- data/third_party/boringssl-with-bazel/err_data.c +742 -724
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +4 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +22 -10
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +16 -16
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +28 -79
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +40 -86
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +6 -17
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +10 -61
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +158 -0
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c +3 -10
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +8 -9
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +60 -45
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +6 -81
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +101 -3
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
- data/third_party/boringssl-with-bazel/src/crypto/cpu-aarch64-win.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/cpu-arm.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/dh_asn1.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → dh_extra}/params.c +179 -0
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +25 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +2 -17
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +13 -20
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/check.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/{dh → fipsmodule/dh}/dh.c +136 -213
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +9 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +135 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +51 -32
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +161 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +121 -71
- data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +71 -41
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +13 -11
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/is_fips.c → rand_extra/passive.c} +16 -11
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +4 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +10 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +17 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +29 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +21 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +6 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +39 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +40 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +25 -36
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +6 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +737 -551
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +0 -167
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +62 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +22 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +15 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +22 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +56 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +20 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +13 -40
- data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
- data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +5 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +2 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +239 -37
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +28 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +702 -219
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +141 -36
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +47 -15
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +11 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +159 -13
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +253 -58
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +0 -1
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +90 -25
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +7 -8
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +5 -7
- data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +450 -104
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +48 -15
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +232 -85
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
- data/third_party/xxhash/xxhash.h +5443 -0
- metadata +174 -95
- data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +0 -60
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +0 -52
- data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +0 -143
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +0 -42
- data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +0 -84
- data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +0 -94
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +0 -54
- data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +0 -173
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +0 -36
- data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +0 -92
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +0 -42
- data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +0 -62
- data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +0 -45
- data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +0 -49
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +0 -35
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +0 -68
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +0 -40
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +0 -51
- data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +0 -35
- data/src/core/lib/iomgr/iomgr_posix.h +0 -26
- data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
- data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
- data/src/core/lib/security/authorization/authorization_engine.cc +0 -177
- data/src/core/lib/security/authorization/authorization_engine.h +0 -84
- data/src/core/lib/security/authorization/evaluate_args.cc +0 -148
- data/src/core/lib/security/authorization/evaluate_args.h +0 -59
- data/src/core/lib/security/authorization/mock_cel/activation.h +0 -57
- data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +0 -44
- data/src/core/lib/security/authorization/mock_cel/cel_expression.h +0 -69
- data/src/core/lib/security/authorization/mock_cel/cel_value.h +0 -97
- data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +0 -67
- data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +0 -57
- data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +0 -504
- data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
- data/third_party/upb/upb/json_decode.c +0 -1443
- data/third_party/upb/upb/json_decode.h +0 -23
- data/third_party/upb/upb/json_encode.c +0 -713
- data/third_party/upb/upb/json_encode.h +0 -36
@@ -18,18 +18,15 @@
|
|
18
18
|
|
19
19
|
#include <openssl/chacha.h>
|
20
20
|
#include <openssl/cipher.h>
|
21
|
-
#include <openssl/cpu.h>
|
22
21
|
#include <openssl/err.h>
|
23
22
|
#include <openssl/mem.h>
|
24
23
|
#include <openssl/poly1305.h>
|
25
24
|
#include <openssl/type_check.h>
|
26
25
|
|
26
|
+
#include "internal.h"
|
27
|
+
#include "../chacha/internal.h"
|
27
28
|
#include "../fipsmodule/cipher/internal.h"
|
28
29
|
#include "../internal.h"
|
29
|
-
#include "../chacha/internal.h"
|
30
|
-
|
31
|
-
|
32
|
-
#define POLY1305_TAG_LEN 16
|
33
30
|
|
34
31
|
struct aead_chacha20_poly1305_ctx {
|
35
32
|
uint8_t key[32];
|
@@ -44,78 +41,6 @@ OPENSSL_STATIC_ASSERT(alignof(union evp_aead_ctx_st_state) >=
|
|
44
41
|
"AEAD state has insufficient alignment");
|
45
42
|
#endif
|
46
43
|
|
47
|
-
// For convenience (the x86_64 calling convention allows only six parameters in
|
48
|
-
// registers), the final parameter for the assembly functions is both an input
|
49
|
-
// and output parameter.
|
50
|
-
union open_data {
|
51
|
-
struct {
|
52
|
-
alignas(16) uint8_t key[32];
|
53
|
-
uint32_t counter;
|
54
|
-
uint8_t nonce[12];
|
55
|
-
} in;
|
56
|
-
struct {
|
57
|
-
uint8_t tag[POLY1305_TAG_LEN];
|
58
|
-
} out;
|
59
|
-
};
|
60
|
-
|
61
|
-
union seal_data {
|
62
|
-
struct {
|
63
|
-
alignas(16) uint8_t key[32];
|
64
|
-
uint32_t counter;
|
65
|
-
uint8_t nonce[12];
|
66
|
-
const uint8_t *extra_ciphertext;
|
67
|
-
size_t extra_ciphertext_len;
|
68
|
-
} in;
|
69
|
-
struct {
|
70
|
-
uint8_t tag[POLY1305_TAG_LEN];
|
71
|
-
} out;
|
72
|
-
};
|
73
|
-
|
74
|
-
#if defined(OPENSSL_X86_64) && !defined(OPENSSL_NO_ASM) && \
|
75
|
-
!defined(OPENSSL_WINDOWS)
|
76
|
-
static int asm_capable(void) {
|
77
|
-
const int sse41_capable = (OPENSSL_ia32cap_P[1] & (1 << 19)) != 0;
|
78
|
-
return sse41_capable;
|
79
|
-
}
|
80
|
-
|
81
|
-
OPENSSL_STATIC_ASSERT(sizeof(union open_data) == 48, "wrong open_data size");
|
82
|
-
OPENSSL_STATIC_ASSERT(sizeof(union seal_data) == 48 + 8 + 8,
|
83
|
-
"wrong seal_data size");
|
84
|
-
|
85
|
-
// chacha20_poly1305_open is defined in chacha20_poly1305_x86_64.pl. It decrypts
|
86
|
-
// |plaintext_len| bytes from |ciphertext| and writes them to |out_plaintext|.
|
87
|
-
// Additional input parameters are passed in |aead_data->in|. On exit, it will
|
88
|
-
// write calculated tag value to |aead_data->out.tag|, which the caller must
|
89
|
-
// check.
|
90
|
-
extern void chacha20_poly1305_open(uint8_t *out_plaintext,
|
91
|
-
const uint8_t *ciphertext,
|
92
|
-
size_t plaintext_len, const uint8_t *ad,
|
93
|
-
size_t ad_len, union open_data *aead_data);
|
94
|
-
|
95
|
-
// chacha20_poly1305_open is defined in chacha20_poly1305_x86_64.pl. It encrypts
|
96
|
-
// |plaintext_len| bytes from |plaintext| and writes them to |out_ciphertext|.
|
97
|
-
// Additional input parameters are passed in |aead_data->in|. The calculated tag
|
98
|
-
// value is over the computed ciphertext concatenated with |extra_ciphertext|
|
99
|
-
// and written to |aead_data->out.tag|.
|
100
|
-
extern void chacha20_poly1305_seal(uint8_t *out_ciphertext,
|
101
|
-
const uint8_t *plaintext,
|
102
|
-
size_t plaintext_len, const uint8_t *ad,
|
103
|
-
size_t ad_len, union seal_data *aead_data);
|
104
|
-
#else
|
105
|
-
static int asm_capable(void) { return 0; }
|
106
|
-
|
107
|
-
|
108
|
-
static void chacha20_poly1305_open(uint8_t *out_plaintext,
|
109
|
-
const uint8_t *ciphertext,
|
110
|
-
size_t plaintext_len, const uint8_t *ad,
|
111
|
-
size_t ad_len, union open_data *aead_data) {}
|
112
|
-
|
113
|
-
static void chacha20_poly1305_seal(uint8_t *out_ciphertext,
|
114
|
-
const uint8_t *plaintext,
|
115
|
-
size_t plaintext_len, const uint8_t *ad,
|
116
|
-
size_t ad_len, union seal_data *aead_data) {}
|
117
|
-
#endif
|
118
|
-
|
119
44
|
static int aead_chacha20_poly1305_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
|
120
45
|
size_t key_len, size_t tag_len) {
|
121
46
|
struct aead_chacha20_poly1305_ctx *c20_ctx =
|
@@ -238,8 +163,8 @@ static int chacha20_poly1305_seal_scatter(
|
|
238
163
|
}
|
239
164
|
}
|
240
165
|
|
241
|
-
union
|
242
|
-
if (
|
166
|
+
union chacha20_poly1305_seal_data data;
|
167
|
+
if (chacha20_poly1305_asm_capable()) {
|
243
168
|
OPENSSL_memcpy(data.in.key, key, 32);
|
244
169
|
data.in.counter = 0;
|
245
170
|
OPENSSL_memcpy(data.in.nonce, nonce, 12);
|
@@ -321,8 +246,8 @@ static int chacha20_poly1305_open_gather(
|
|
321
246
|
return 0;
|
322
247
|
}
|
323
248
|
|
324
|
-
union
|
325
|
-
if (
|
249
|
+
union chacha20_poly1305_open_data data;
|
250
|
+
if (chacha20_poly1305_asm_capable()) {
|
326
251
|
OPENSSL_memcpy(data.in.key, key, 32);
|
327
252
|
data.in.counter = 0;
|
328
253
|
OPENSSL_memcpy(data.in.nonce, nonce, 12);
|
@@ -343,7 +343,7 @@ static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len,
|
|
343
343
|
if (EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE &&
|
344
344
|
EVP_tls_cbc_record_digest_supported(tls_ctx->hmac_ctx.md)) {
|
345
345
|
if (!EVP_tls_cbc_digest_record(tls_ctx->hmac_ctx.md, mac, &mac_len,
|
346
|
-
ad_fixed, out,
|
346
|
+
ad_fixed, out, data_len, total,
|
347
347
|
tls_ctx->mac_key, tls_ctx->mac_key_len)) {
|
348
348
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
|
349
349
|
return 0;
|
@@ -406,14 +406,6 @@ static int aead_aes_128_cbc_sha1_tls_implicit_iv_init(
|
|
406
406
|
EVP_sha1(), 1);
|
407
407
|
}
|
408
408
|
|
409
|
-
static int aead_aes_128_cbc_sha256_tls_init(EVP_AEAD_CTX *ctx,
|
410
|
-
const uint8_t *key, size_t key_len,
|
411
|
-
size_t tag_len,
|
412
|
-
enum evp_aead_direction_t dir) {
|
413
|
-
return aead_tls_init(ctx, key, key_len, tag_len, dir, EVP_aes_128_cbc(),
|
414
|
-
EVP_sha256(), 0);
|
415
|
-
}
|
416
|
-
|
417
409
|
static int aead_aes_256_cbc_sha1_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
|
418
410
|
size_t key_len, size_t tag_len,
|
419
411
|
enum evp_aead_direction_t dir) {
|
@@ -428,22 +420,6 @@ static int aead_aes_256_cbc_sha1_tls_implicit_iv_init(
|
|
428
420
|
EVP_sha1(), 1);
|
429
421
|
}
|
430
422
|
|
431
|
-
static int aead_aes_256_cbc_sha256_tls_init(EVP_AEAD_CTX *ctx,
|
432
|
-
const uint8_t *key, size_t key_len,
|
433
|
-
size_t tag_len,
|
434
|
-
enum evp_aead_direction_t dir) {
|
435
|
-
return aead_tls_init(ctx, key, key_len, tag_len, dir, EVP_aes_256_cbc(),
|
436
|
-
EVP_sha256(), 0);
|
437
|
-
}
|
438
|
-
|
439
|
-
static int aead_aes_256_cbc_sha384_tls_init(EVP_AEAD_CTX *ctx,
|
440
|
-
const uint8_t *key, size_t key_len,
|
441
|
-
size_t tag_len,
|
442
|
-
enum evp_aead_direction_t dir) {
|
443
|
-
return aead_tls_init(ctx, key, key_len, tag_len, dir, EVP_aes_256_cbc(),
|
444
|
-
EVP_sha384(), 0);
|
445
|
-
}
|
446
|
-
|
447
423
|
static int aead_des_ede3_cbc_sha1_tls_init(EVP_AEAD_CTX *ctx,
|
448
424
|
const uint8_t *key, size_t key_len,
|
449
425
|
size_t tag_len,
|
@@ -513,23 +489,6 @@ static const EVP_AEAD aead_aes_128_cbc_sha1_tls_implicit_iv = {
|
|
513
489
|
aead_tls_tag_len,
|
514
490
|
};
|
515
491
|
|
516
|
-
static const EVP_AEAD aead_aes_128_cbc_sha256_tls = {
|
517
|
-
SHA256_DIGEST_LENGTH + 16, // key len (SHA256 + AES128)
|
518
|
-
16, // nonce len (IV)
|
519
|
-
16 + SHA256_DIGEST_LENGTH, // overhead (padding + SHA256)
|
520
|
-
SHA256_DIGEST_LENGTH, // max tag length
|
521
|
-
0, // seal_scatter_supports_extra_in
|
522
|
-
|
523
|
-
NULL, // init
|
524
|
-
aead_aes_128_cbc_sha256_tls_init,
|
525
|
-
aead_tls_cleanup,
|
526
|
-
aead_tls_open,
|
527
|
-
aead_tls_seal_scatter,
|
528
|
-
NULL, // open_gather
|
529
|
-
NULL, // get_iv
|
530
|
-
aead_tls_tag_len,
|
531
|
-
};
|
532
|
-
|
533
492
|
static const EVP_AEAD aead_aes_256_cbc_sha1_tls = {
|
534
493
|
SHA_DIGEST_LENGTH + 32, // key len (SHA1 + AES256)
|
535
494
|
16, // nonce len (IV)
|
@@ -564,40 +523,6 @@ static const EVP_AEAD aead_aes_256_cbc_sha1_tls_implicit_iv = {
|
|
564
523
|
aead_tls_tag_len,
|
565
524
|
};
|
566
525
|
|
567
|
-
static const EVP_AEAD aead_aes_256_cbc_sha256_tls = {
|
568
|
-
SHA256_DIGEST_LENGTH + 32, // key len (SHA256 + AES256)
|
569
|
-
16, // nonce len (IV)
|
570
|
-
16 + SHA256_DIGEST_LENGTH, // overhead (padding + SHA256)
|
571
|
-
SHA256_DIGEST_LENGTH, // max tag length
|
572
|
-
0, // seal_scatter_supports_extra_in
|
573
|
-
|
574
|
-
NULL, // init
|
575
|
-
aead_aes_256_cbc_sha256_tls_init,
|
576
|
-
aead_tls_cleanup,
|
577
|
-
aead_tls_open,
|
578
|
-
aead_tls_seal_scatter,
|
579
|
-
NULL, // open_gather
|
580
|
-
NULL, // get_iv
|
581
|
-
aead_tls_tag_len,
|
582
|
-
};
|
583
|
-
|
584
|
-
static const EVP_AEAD aead_aes_256_cbc_sha384_tls = {
|
585
|
-
SHA384_DIGEST_LENGTH + 32, // key len (SHA384 + AES256)
|
586
|
-
16, // nonce len (IV)
|
587
|
-
16 + SHA384_DIGEST_LENGTH, // overhead (padding + SHA384)
|
588
|
-
SHA384_DIGEST_LENGTH, // max tag length
|
589
|
-
0, // seal_scatter_supports_extra_in
|
590
|
-
|
591
|
-
NULL, // init
|
592
|
-
aead_aes_256_cbc_sha384_tls_init,
|
593
|
-
aead_tls_cleanup,
|
594
|
-
aead_tls_open,
|
595
|
-
aead_tls_seal_scatter,
|
596
|
-
NULL, // open_gather
|
597
|
-
NULL, // get_iv
|
598
|
-
aead_tls_tag_len,
|
599
|
-
};
|
600
|
-
|
601
526
|
static const EVP_AEAD aead_des_ede3_cbc_sha1_tls = {
|
602
527
|
SHA_DIGEST_LENGTH + 24, // key len (SHA1 + 3DES)
|
603
528
|
8, // nonce len (IV)
|
@@ -657,10 +582,6 @@ const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls_implicit_iv(void) {
|
|
657
582
|
return &aead_aes_128_cbc_sha1_tls_implicit_iv;
|
658
583
|
}
|
659
584
|
|
660
|
-
const EVP_AEAD *EVP_aead_aes_128_cbc_sha256_tls(void) {
|
661
|
-
return &aead_aes_128_cbc_sha256_tls;
|
662
|
-
}
|
663
|
-
|
664
585
|
const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls(void) {
|
665
586
|
return &aead_aes_256_cbc_sha1_tls;
|
666
587
|
}
|
@@ -669,14 +590,6 @@ const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls_implicit_iv(void) {
|
|
669
590
|
return &aead_aes_256_cbc_sha1_tls_implicit_iv;
|
670
591
|
}
|
671
592
|
|
672
|
-
const EVP_AEAD *EVP_aead_aes_256_cbc_sha256_tls(void) {
|
673
|
-
return &aead_aes_256_cbc_sha256_tls;
|
674
|
-
}
|
675
|
-
|
676
|
-
const EVP_AEAD *EVP_aead_aes_256_cbc_sha384_tls(void) {
|
677
|
-
return &aead_aes_256_cbc_sha384_tls;
|
678
|
-
}
|
679
|
-
|
680
593
|
const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls(void) {
|
681
594
|
return &aead_des_ede3_cbc_sha1_tls;
|
682
595
|
}
|
@@ -57,7 +57,11 @@
|
|
57
57
|
#ifndef OPENSSL_HEADER_CIPHER_EXTRA_INTERNAL_H
|
58
58
|
#define OPENSSL_HEADER_CIPHER_EXTRA_INTERNAL_H
|
59
59
|
|
60
|
+
#include <stdlib.h>
|
61
|
+
|
60
62
|
#include <openssl/base.h>
|
63
|
+
#include <openssl/cpu.h>
|
64
|
+
#include <openssl/type_check.h>
|
61
65
|
|
62
66
|
#include "../internal.h"
|
63
67
|
|
@@ -95,6 +99,17 @@ void EVP_tls_cbc_copy_mac(uint8_t *out, size_t md_size, const uint8_t *in,
|
|
95
99
|
// which EVP_tls_cbc_digest_record supports.
|
96
100
|
int EVP_tls_cbc_record_digest_supported(const EVP_MD *md);
|
97
101
|
|
102
|
+
// EVP_sha1_final_with_secret_suffix computes the result of hashing |len| bytes
|
103
|
+
// from |in| to |ctx| and writes the resulting hash to |out|. |len| is treated
|
104
|
+
// as secret and must be at most |max_len|, which is treated as public. |in|
|
105
|
+
// must point to a buffer of at least |max_len| bytes. It returns one on success
|
106
|
+
// and zero if inputs are too long.
|
107
|
+
//
|
108
|
+
// This function is exported for unit tests.
|
109
|
+
OPENSSL_EXPORT int EVP_sha1_final_with_secret_suffix(
|
110
|
+
SHA_CTX *ctx, uint8_t out[SHA_DIGEST_LENGTH], const uint8_t *in, size_t len,
|
111
|
+
size_t max_len);
|
112
|
+
|
98
113
|
// EVP_tls_cbc_digest_record computes the MAC of a decrypted, padded TLS
|
99
114
|
// record.
|
100
115
|
//
|
@@ -104,8 +119,8 @@ int EVP_tls_cbc_record_digest_supported(const EVP_MD *md);
|
|
104
119
|
// md_out_size: the number of output bytes is written here.
|
105
120
|
// header: the 13-byte, TLS record header.
|
106
121
|
// data: the record data itself
|
107
|
-
//
|
108
|
-
//
|
122
|
+
// data_size: the secret, reported length of the data once the padding and MAC
|
123
|
+
// have been removed.
|
109
124
|
// data_plus_mac_plus_padding_size: the public length of the whole
|
110
125
|
// record, including padding.
|
111
126
|
//
|
@@ -115,11 +130,94 @@ int EVP_tls_cbc_record_digest_supported(const EVP_MD *md);
|
|
115
130
|
// padding too. )
|
116
131
|
int EVP_tls_cbc_digest_record(const EVP_MD *md, uint8_t *md_out,
|
117
132
|
size_t *md_out_size, const uint8_t header[13],
|
118
|
-
const uint8_t *data, size_t
|
133
|
+
const uint8_t *data, size_t data_size,
|
119
134
|
size_t data_plus_mac_plus_padding_size,
|
120
135
|
const uint8_t *mac_secret,
|
121
136
|
unsigned mac_secret_length);
|
122
137
|
|
138
|
+
#define POLY1305_TAG_LEN 16
|
139
|
+
|
140
|
+
// For convenience (the x86_64 calling convention allows only six parameters in
|
141
|
+
// registers), the final parameter for the assembly functions is both an input
|
142
|
+
// and output parameter.
|
143
|
+
union chacha20_poly1305_open_data {
|
144
|
+
struct {
|
145
|
+
alignas(16) uint8_t key[32];
|
146
|
+
uint32_t counter;
|
147
|
+
uint8_t nonce[12];
|
148
|
+
} in;
|
149
|
+
struct {
|
150
|
+
uint8_t tag[POLY1305_TAG_LEN];
|
151
|
+
} out;
|
152
|
+
};
|
153
|
+
|
154
|
+
union chacha20_poly1305_seal_data {
|
155
|
+
struct {
|
156
|
+
alignas(16) uint8_t key[32];
|
157
|
+
uint32_t counter;
|
158
|
+
uint8_t nonce[12];
|
159
|
+
const uint8_t *extra_ciphertext;
|
160
|
+
size_t extra_ciphertext_len;
|
161
|
+
} in;
|
162
|
+
struct {
|
163
|
+
uint8_t tag[POLY1305_TAG_LEN];
|
164
|
+
} out;
|
165
|
+
};
|
166
|
+
|
167
|
+
#if defined(OPENSSL_X86_64) && !defined(OPENSSL_NO_ASM)
|
168
|
+
|
169
|
+
OPENSSL_STATIC_ASSERT(sizeof(union chacha20_poly1305_open_data) == 48,
|
170
|
+
"wrong chacha20_poly1305_open_data size");
|
171
|
+
OPENSSL_STATIC_ASSERT(sizeof(union chacha20_poly1305_seal_data) == 48 + 8 + 8,
|
172
|
+
"wrong chacha20_poly1305_seal_data size");
|
173
|
+
|
174
|
+
OPENSSL_INLINE int chacha20_poly1305_asm_capable(void) {
|
175
|
+
const int sse41_capable = (OPENSSL_ia32cap_P[1] & (1 << 19)) != 0;
|
176
|
+
return sse41_capable;
|
177
|
+
}
|
178
|
+
|
179
|
+
// chacha20_poly1305_open is defined in chacha20_poly1305_x86_64.pl. It decrypts
|
180
|
+
// |plaintext_len| bytes from |ciphertext| and writes them to |out_plaintext|.
|
181
|
+
// Additional input parameters are passed in |aead_data->in|. On exit, it will
|
182
|
+
// write calculated tag value to |aead_data->out.tag|, which the caller must
|
183
|
+
// check.
|
184
|
+
extern void chacha20_poly1305_open(uint8_t *out_plaintext,
|
185
|
+
const uint8_t *ciphertext,
|
186
|
+
size_t plaintext_len, const uint8_t *ad,
|
187
|
+
size_t ad_len,
|
188
|
+
union chacha20_poly1305_open_data *data);
|
189
|
+
|
190
|
+
// chacha20_poly1305_open is defined in chacha20_poly1305_x86_64.pl. It encrypts
|
191
|
+
// |plaintext_len| bytes from |plaintext| and writes them to |out_ciphertext|.
|
192
|
+
// Additional input parameters are passed in |aead_data->in|. The calculated tag
|
193
|
+
// value is over the computed ciphertext concatenated with |extra_ciphertext|
|
194
|
+
// and written to |aead_data->out.tag|.
|
195
|
+
extern void chacha20_poly1305_seal(uint8_t *out_ciphertext,
|
196
|
+
const uint8_t *plaintext,
|
197
|
+
size_t plaintext_len, const uint8_t *ad,
|
198
|
+
size_t ad_len,
|
199
|
+
union chacha20_poly1305_seal_data *data);
|
200
|
+
#else
|
201
|
+
|
202
|
+
OPENSSL_INLINE int chacha20_poly1305_asm_capable(void) { return 0; }
|
203
|
+
|
204
|
+
OPENSSL_INLINE void chacha20_poly1305_open(uint8_t *out_plaintext,
|
205
|
+
const uint8_t *ciphertext,
|
206
|
+
size_t plaintext_len, const uint8_t *ad,
|
207
|
+
size_t ad_len,
|
208
|
+
union chacha20_poly1305_open_data *data) {
|
209
|
+
abort();
|
210
|
+
}
|
211
|
+
|
212
|
+
OPENSSL_INLINE void chacha20_poly1305_seal(uint8_t *out_ciphertext,
|
213
|
+
const uint8_t *plaintext,
|
214
|
+
size_t plaintext_len, const uint8_t *ad,
|
215
|
+
size_t ad_len,
|
216
|
+
union chacha20_poly1305_seal_data *data) {
|
217
|
+
abort();
|
218
|
+
}
|
219
|
+
#endif
|
220
|
+
|
123
221
|
|
124
222
|
#if defined(__cplusplus)
|
125
223
|
} // extern C
|
@@ -62,15 +62,6 @@
|
|
62
62
|
#include "../fipsmodule/cipher/internal.h"
|
63
63
|
|
64
64
|
|
65
|
-
// MAX_HASH_BIT_COUNT_BYTES is the maximum number of bytes in the hash's length
|
66
|
-
// field. (SHA-384/512 have 128-bit length.)
|
67
|
-
#define MAX_HASH_BIT_COUNT_BYTES 16
|
68
|
-
|
69
|
-
// MAX_HASH_BLOCK_SIZE is the maximum hash block size that we'll support.
|
70
|
-
// Currently SHA-384/512 has a 128-byte block size and that's the largest
|
71
|
-
// supported by TLS.)
|
72
|
-
#define MAX_HASH_BLOCK_SIZE 128
|
73
|
-
|
74
65
|
int EVP_tls_cbc_remove_padding(crypto_word_t *out_padding_ok, size_t *out_len,
|
75
66
|
const uint8_t *in, size_t in_len,
|
76
67
|
size_t block_size, size_t mac_size) {
|
@@ -183,134 +174,110 @@ void EVP_tls_cbc_copy_mac(uint8_t *out, size_t md_size, const uint8_t *in,
|
|
183
174
|
OPENSSL_memcpy(out, rotated_mac, md_size);
|
184
175
|
}
|
185
176
|
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
*((p)++) = (uint8_t)((n) >> 56); \
|
201
|
-
*((p)++) = (uint8_t)((n) >> 48); \
|
202
|
-
*((p)++) = (uint8_t)((n) >> 40); \
|
203
|
-
*((p)++) = (uint8_t)((n) >> 32); \
|
204
|
-
*((p)++) = (uint8_t)((n) >> 24); \
|
205
|
-
*((p)++) = (uint8_t)((n) >> 16); \
|
206
|
-
*((p)++) = (uint8_t)((n) >> 8); \
|
207
|
-
*((p)++) = (uint8_t)((n)); \
|
208
|
-
} while (0)
|
209
|
-
|
210
|
-
typedef union {
|
211
|
-
SHA_CTX sha1;
|
212
|
-
SHA256_CTX sha256;
|
213
|
-
SHA512_CTX sha512;
|
214
|
-
} HASH_CTX;
|
215
|
-
|
216
|
-
static void tls1_sha1_transform(HASH_CTX *ctx, const uint8_t *block) {
|
217
|
-
SHA1_Transform(&ctx->sha1, block);
|
218
|
-
}
|
177
|
+
int EVP_sha1_final_with_secret_suffix(SHA_CTX *ctx,
|
178
|
+
uint8_t out[SHA_DIGEST_LENGTH],
|
179
|
+
const uint8_t *in, size_t len,
|
180
|
+
size_t max_len) {
|
181
|
+
// Bound the input length so |total_bits| below fits in four bytes. This is
|
182
|
+
// redundant with TLS record size limits. This also ensures |input_idx| below
|
183
|
+
// does not overflow.
|
184
|
+
size_t max_len_bits = max_len << 3;
|
185
|
+
if (ctx->Nh != 0 ||
|
186
|
+
(max_len_bits >> 3) != max_len || // Overflow
|
187
|
+
ctx->Nl + max_len_bits < max_len_bits ||
|
188
|
+
ctx->Nl + max_len_bits > UINT32_MAX) {
|
189
|
+
return 0;
|
190
|
+
}
|
219
191
|
|
220
|
-
|
221
|
-
|
222
|
-
|
192
|
+
// We need to hash the following into |ctx|:
|
193
|
+
//
|
194
|
+
// - ctx->data[:ctx->num]
|
195
|
+
// - in[:len]
|
196
|
+
// - A 0x80 byte
|
197
|
+
// - However many zero bytes are needed to pad up to a block.
|
198
|
+
// - Eight bytes of length.
|
199
|
+
size_t num_blocks = (ctx->num + len + 1 + 8 + SHA_CBLOCK - 1) >> 6;
|
200
|
+
size_t last_block = num_blocks - 1;
|
201
|
+
size_t max_blocks = (ctx->num + max_len + 1 + 8 + SHA_CBLOCK - 1) >> 6;
|
202
|
+
|
203
|
+
// The bounds above imply |total_bits| fits in four bytes.
|
204
|
+
size_t total_bits = ctx->Nl + (len << 3);
|
205
|
+
uint8_t length_bytes[4];
|
206
|
+
length_bytes[0] = (uint8_t)(total_bits >> 24);
|
207
|
+
length_bytes[1] = (uint8_t)(total_bits >> 16);
|
208
|
+
length_bytes[2] = (uint8_t)(total_bits >> 8);
|
209
|
+
length_bytes[3] = (uint8_t)total_bits;
|
210
|
+
|
211
|
+
// We now construct and process each expected block in constant-time.
|
212
|
+
uint8_t block[SHA_CBLOCK] = {0};
|
213
|
+
uint32_t result[5] = {0};
|
214
|
+
// input_idx is the index into |in| corresponding to the current block.
|
215
|
+
// However, we allow this index to overflow beyond |max_len|, to simplify the
|
216
|
+
// 0x80 byte.
|
217
|
+
size_t input_idx = 0;
|
218
|
+
for (size_t i = 0; i < max_blocks; i++) {
|
219
|
+
// Fill |block| with data from the partial block in |ctx| and |in|. We copy
|
220
|
+
// as if we were hashing up to |max_len| and then zero the excess later.
|
221
|
+
size_t block_start = 0;
|
222
|
+
if (i == 0) {
|
223
|
+
OPENSSL_memcpy(block, ctx->data, ctx->num);
|
224
|
+
block_start = ctx->num;
|
225
|
+
}
|
226
|
+
if (input_idx < max_len) {
|
227
|
+
size_t to_copy = SHA_CBLOCK - block_start;
|
228
|
+
if (to_copy > max_len - input_idx) {
|
229
|
+
to_copy = max_len - input_idx;
|
230
|
+
}
|
231
|
+
OPENSSL_memcpy(block + block_start, in + input_idx, to_copy);
|
232
|
+
}
|
223
233
|
|
224
|
-
|
225
|
-
|
226
|
-
|
234
|
+
// Zero any bytes beyond |len| and add the 0x80 byte.
|
235
|
+
for (size_t j = block_start; j < SHA_CBLOCK; j++) {
|
236
|
+
// input[idx] corresponds to block[j].
|
237
|
+
size_t idx = input_idx + j - block_start;
|
238
|
+
// The barriers on |len| are not strictly necessary. However, without
|
239
|
+
// them, GCC compiles this code by incorporating |len| into the loop
|
240
|
+
// counter and subtracting it out later. This is still constant-time, but
|
241
|
+
// it frustrates attempts to validate this.
|
242
|
+
uint8_t is_in_bounds = constant_time_lt_8(idx, value_barrier_w(len));
|
243
|
+
uint8_t is_padding_byte = constant_time_eq_8(idx, value_barrier_w(len));
|
244
|
+
block[j] &= is_in_bounds;
|
245
|
+
block[j] |= 0x80 & is_padding_byte;
|
246
|
+
}
|
227
247
|
|
228
|
-
|
229
|
-
// "final" operation without adding the padding and length that such a function
|
230
|
-
// typically does.
|
231
|
-
static void tls1_sha1_final_raw(HASH_CTX *ctx, uint8_t *md_out) {
|
232
|
-
SHA_CTX *sha1 = &ctx->sha1;
|
233
|
-
u32toBE(sha1->h[0], md_out);
|
234
|
-
u32toBE(sha1->h[1], md_out);
|
235
|
-
u32toBE(sha1->h[2], md_out);
|
236
|
-
u32toBE(sha1->h[3], md_out);
|
237
|
-
u32toBE(sha1->h[4], md_out);
|
238
|
-
}
|
248
|
+
input_idx += SHA_CBLOCK - block_start;
|
239
249
|
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
250
|
+
// Fill in the length if this is the last block.
|
251
|
+
crypto_word_t is_last_block = constant_time_eq_w(i, last_block);
|
252
|
+
for (size_t j = 0; j < 4; j++) {
|
253
|
+
block[SHA_CBLOCK - 4 + j] |= is_last_block & length_bytes[j];
|
254
|
+
}
|
255
|
+
|
256
|
+
// Process the block and save the hash state if it is the final value.
|
257
|
+
SHA1_Transform(ctx, block);
|
258
|
+
for (size_t j = 0; j < 5; j++) {
|
259
|
+
result[j] |= is_last_block & ctx->h[j];
|
260
|
+
}
|
244
261
|
}
|
245
|
-
}
|
246
262
|
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
u64toBE(sha512->h[i], md_out);
|
263
|
+
// Write the output.
|
264
|
+
for (size_t i = 0; i < 5; i++) {
|
265
|
+
CRYPTO_store_u32_be(out + 4 * i, result[i]);
|
251
266
|
}
|
267
|
+
return 1;
|
252
268
|
}
|
253
269
|
|
254
270
|
int EVP_tls_cbc_record_digest_supported(const EVP_MD *md) {
|
255
|
-
|
256
|
-
case NID_sha1:
|
257
|
-
case NID_sha256:
|
258
|
-
case NID_sha384:
|
259
|
-
return 1;
|
260
|
-
|
261
|
-
default:
|
262
|
-
return 0;
|
263
|
-
}
|
271
|
+
return EVP_MD_type(md) == NID_sha1;
|
264
272
|
}
|
265
273
|
|
266
274
|
int EVP_tls_cbc_digest_record(const EVP_MD *md, uint8_t *md_out,
|
267
275
|
size_t *md_out_size, const uint8_t header[13],
|
268
|
-
const uint8_t *data, size_t
|
276
|
+
const uint8_t *data, size_t data_size,
|
269
277
|
size_t data_plus_mac_plus_padding_size,
|
270
278
|
const uint8_t *mac_secret,
|
271
279
|
unsigned mac_secret_length) {
|
272
|
-
|
273
|
-
void (*md_final_raw)(HASH_CTX *ctx, uint8_t *md_out);
|
274
|
-
void (*md_transform)(HASH_CTX *ctx, const uint8_t *block);
|
275
|
-
unsigned md_size, md_block_size = 64, md_block_shift = 6;
|
276
|
-
// md_length_size is the number of bytes in the length field that terminates
|
277
|
-
// the hash.
|
278
|
-
unsigned md_length_size = 8;
|
279
|
-
|
280
|
-
// Bound the acceptable input so we can forget about many possible overflows
|
281
|
-
// later in this function. This is redundant with the record size limits in
|
282
|
-
// TLS.
|
283
|
-
if (data_plus_mac_plus_padding_size >= 1024 * 1024) {
|
284
|
-
assert(0);
|
285
|
-
return 0;
|
286
|
-
}
|
287
|
-
|
288
|
-
switch (EVP_MD_type(md)) {
|
289
|
-
case NID_sha1:
|
290
|
-
SHA1_Init(&md_state.sha1);
|
291
|
-
md_final_raw = tls1_sha1_final_raw;
|
292
|
-
md_transform = tls1_sha1_transform;
|
293
|
-
md_size = SHA_DIGEST_LENGTH;
|
294
|
-
break;
|
295
|
-
|
296
|
-
case NID_sha256:
|
297
|
-
SHA256_Init(&md_state.sha256);
|
298
|
-
md_final_raw = tls1_sha256_final_raw;
|
299
|
-
md_transform = tls1_sha256_transform;
|
300
|
-
md_size = SHA256_DIGEST_LENGTH;
|
301
|
-
break;
|
302
|
-
|
303
|
-
case NID_sha384:
|
304
|
-
SHA384_Init(&md_state.sha512);
|
305
|
-
md_final_raw = tls1_sha512_final_raw;
|
306
|
-
md_transform = tls1_sha512_transform;
|
307
|
-
md_size = SHA384_DIGEST_LENGTH;
|
308
|
-
md_block_size = 128;
|
309
|
-
md_block_shift = 7;
|
310
|
-
md_length_size = 16;
|
311
|
-
break;
|
312
|
-
|
313
|
-
default:
|
280
|
+
if (EVP_MD_type(md) != NID_sha1) {
|
314
281
|
// EVP_tls_cbc_record_digest_supported should have been called first to
|
315
282
|
// check that the hash function is supported.
|
316
283
|
assert(0);
|
@@ -318,175 +285,54 @@ int EVP_tls_cbc_digest_record(const EVP_MD *md, uint8_t *md_out,
|
|
318
285
|
return 0;
|
319
286
|
}
|
320
287
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
static const size_t kHeaderLength = 13;
|
327
|
-
|
328
|
-
// kVarianceBlocks is the number of blocks of the hash that we have to
|
329
|
-
// calculate in constant time because they could be altered by the
|
330
|
-
// padding value.
|
331
|
-
//
|
332
|
-
// TLSv1 has MACs up to 48 bytes long (SHA-384) and the padding is not
|
333
|
-
// required to be minimal. Therefore we say that the final |kVarianceBlocks|
|
334
|
-
// blocks can vary based on the padding and on the hash used. This value
|
335
|
-
// must be derived from public information.
|
336
|
-
const size_t kVarianceBlocks =
|
337
|
-
( 255 + 1 + // maximum padding bytes + padding length
|
338
|
-
md_size + // length of hash's output
|
339
|
-
md_block_size - 1 // ceiling
|
340
|
-
) / md_block_size
|
341
|
-
+ 1; // the 0x80 marker and the encoded message length could or not
|
342
|
-
// require an extra block; since the exact value depends on the
|
343
|
-
// message length; thus, one extra block is always added to run
|
344
|
-
// in constant time.
|
345
|
-
|
346
|
-
// From now on we're dealing with the MAC, which conceptually has 13
|
347
|
-
// bytes of `header' before the start of the data.
|
348
|
-
size_t len = data_plus_mac_plus_padding_size + kHeaderLength;
|
349
|
-
// max_mac_bytes contains the maximum bytes of bytes in the MAC, including
|
350
|
-
// |header|, assuming that there's no padding.
|
351
|
-
size_t max_mac_bytes = len - md_size - 1;
|
352
|
-
// num_blocks is the maximum number of hash blocks.
|
353
|
-
size_t num_blocks =
|
354
|
-
(max_mac_bytes + 1 + md_length_size + md_block_size - 1) / md_block_size;
|
355
|
-
// In order to calculate the MAC in constant time we have to handle
|
356
|
-
// the final blocks specially because the padding value could cause the
|
357
|
-
// end to appear somewhere in the final |kVarianceBlocks| blocks and we
|
358
|
-
// can't leak where. However, |num_starting_blocks| worth of data can
|
359
|
-
// be hashed right away because no padding value can affect whether
|
360
|
-
// they are plaintext.
|
361
|
-
size_t num_starting_blocks = 0;
|
362
|
-
// k is the starting byte offset into the conceptual header||data where
|
363
|
-
// we start processing.
|
364
|
-
size_t k = 0;
|
365
|
-
// mac_end_offset is the index just past the end of the data to be MACed.
|
366
|
-
size_t mac_end_offset = data_plus_mac_size + kHeaderLength - md_size;
|
367
|
-
// c is the index of the 0x80 byte in the final hash block that contains
|
368
|
-
// application data.
|
369
|
-
size_t c = mac_end_offset & (md_block_size - 1);
|
370
|
-
// index_a is the hash block number that contains the 0x80 terminating value.
|
371
|
-
size_t index_a = mac_end_offset >> md_block_shift;
|
372
|
-
// index_b is the hash block number that contains the 64-bit hash length, in
|
373
|
-
// bits.
|
374
|
-
size_t index_b = (mac_end_offset + md_length_size) >> md_block_shift;
|
375
|
-
|
376
|
-
if (num_blocks > kVarianceBlocks) {
|
377
|
-
num_starting_blocks = num_blocks - kVarianceBlocks;
|
378
|
-
k = md_block_size * num_starting_blocks;
|
288
|
+
if (mac_secret_length > SHA_CBLOCK) {
|
289
|
+
// HMAC pads small keys with zeros and hashes large keys down. This function
|
290
|
+
// should never reach the large key case.
|
291
|
+
assert(0);
|
292
|
+
return 0;
|
379
293
|
}
|
380
294
|
|
381
|
-
// bits is the hash-length in bits. It includes the additional hash
|
382
|
-
// block for the masked HMAC key.
|
383
|
-
size_t bits = 8 * mac_end_offset; // at most 18 bits to represent
|
384
|
-
|
385
295
|
// Compute the initial HMAC block.
|
386
|
-
|
387
|
-
|
388
|
-
uint8_t hmac_pad[MAX_HASH_BLOCK_SIZE];
|
389
|
-
OPENSSL_memset(hmac_pad, 0, md_block_size);
|
390
|
-
assert(mac_secret_length <= sizeof(hmac_pad));
|
296
|
+
uint8_t hmac_pad[SHA_CBLOCK];
|
297
|
+
OPENSSL_memset(hmac_pad, 0, sizeof(hmac_pad));
|
391
298
|
OPENSSL_memcpy(hmac_pad, mac_secret, mac_secret_length);
|
392
|
-
for (size_t i = 0; i <
|
299
|
+
for (size_t i = 0; i < SHA_CBLOCK; i++) {
|
393
300
|
hmac_pad[i] ^= 0x36;
|
394
301
|
}
|
395
302
|
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
OPENSSL_memset(length_bytes, 0, md_length_size - 4);
|
401
|
-
length_bytes[md_length_size - 4] = (uint8_t)(bits >> 24);
|
402
|
-
length_bytes[md_length_size - 3] = (uint8_t)(bits >> 16);
|
403
|
-
length_bytes[md_length_size - 2] = (uint8_t)(bits >> 8);
|
404
|
-
length_bytes[md_length_size - 1] = (uint8_t)bits;
|
405
|
-
|
406
|
-
if (k > 0) {
|
407
|
-
// k is a multiple of md_block_size.
|
408
|
-
uint8_t first_block[MAX_HASH_BLOCK_SIZE];
|
409
|
-
OPENSSL_memcpy(first_block, header, 13);
|
410
|
-
OPENSSL_memcpy(first_block + 13, data, md_block_size - 13);
|
411
|
-
md_transform(&md_state, first_block);
|
412
|
-
for (size_t i = 1; i < k / md_block_size; i++) {
|
413
|
-
md_transform(&md_state, data + md_block_size * i - 13);
|
414
|
-
}
|
415
|
-
}
|
416
|
-
|
417
|
-
uint8_t mac_out[EVP_MAX_MD_SIZE];
|
418
|
-
OPENSSL_memset(mac_out, 0, sizeof(mac_out));
|
419
|
-
|
420
|
-
// We now process the final hash blocks. For each block, we construct
|
421
|
-
// it in constant time. If the |i==index_a| then we'll include the 0x80
|
422
|
-
// bytes and zero pad etc. For each block we selectively copy it, in
|
423
|
-
// constant time, to |mac_out|.
|
424
|
-
for (size_t i = num_starting_blocks;
|
425
|
-
i <= num_starting_blocks + kVarianceBlocks; i++) {
|
426
|
-
uint8_t block[MAX_HASH_BLOCK_SIZE];
|
427
|
-
uint8_t is_block_a = constant_time_eq_8(i, index_a);
|
428
|
-
uint8_t is_block_b = constant_time_eq_8(i, index_b);
|
429
|
-
for (size_t j = 0; j < md_block_size; j++) {
|
430
|
-
uint8_t b = 0;
|
431
|
-
if (k < kHeaderLength) {
|
432
|
-
b = header[k];
|
433
|
-
} else if (k < data_plus_mac_plus_padding_size + kHeaderLength) {
|
434
|
-
b = data[k - kHeaderLength];
|
435
|
-
}
|
436
|
-
k++;
|
437
|
-
|
438
|
-
uint8_t is_past_c = is_block_a & constant_time_ge_8(j, c);
|
439
|
-
uint8_t is_past_cp1 = is_block_a & constant_time_ge_8(j, c + 1);
|
440
|
-
// If this is the block containing the end of the
|
441
|
-
// application data, and we are at the offset for the
|
442
|
-
// 0x80 value, then overwrite b with 0x80.
|
443
|
-
b = constant_time_select_8(is_past_c, 0x80, b);
|
444
|
-
// If this the the block containing the end of the
|
445
|
-
// application data and we're past the 0x80 value then
|
446
|
-
// just write zero.
|
447
|
-
b = b & ~is_past_cp1;
|
448
|
-
// If this is index_b (the final block), but not
|
449
|
-
// index_a (the end of the data), then the 64-bit
|
450
|
-
// length didn't fit into index_a and we're having to
|
451
|
-
// add an extra block of zeros.
|
452
|
-
b &= ~is_block_b | is_block_a;
|
453
|
-
|
454
|
-
// The final bytes of one of the blocks contains the
|
455
|
-
// length.
|
456
|
-
if (j >= md_block_size - md_length_size) {
|
457
|
-
// If this is index_b, write a length byte.
|
458
|
-
b = constant_time_select_8(
|
459
|
-
is_block_b, length_bytes[j - (md_block_size - md_length_size)], b);
|
460
|
-
}
|
461
|
-
block[j] = b;
|
462
|
-
}
|
303
|
+
SHA_CTX ctx;
|
304
|
+
SHA1_Init(&ctx);
|
305
|
+
SHA1_Update(&ctx, hmac_pad, SHA_CBLOCK);
|
306
|
+
SHA1_Update(&ctx, header, 13);
|
463
307
|
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
}
|
308
|
+
// There are at most 256 bytes of padding, so we can compute the public
|
309
|
+
// minimum length for |data_size|.
|
310
|
+
size_t min_data_size = 0;
|
311
|
+
if (data_plus_mac_plus_padding_size > SHA_DIGEST_LENGTH + 256) {
|
312
|
+
min_data_size = data_plus_mac_plus_padding_size - SHA_DIGEST_LENGTH - 256;
|
470
313
|
}
|
471
314
|
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
315
|
+
// Hash the public minimum length directly. This reduces the number of blocks
|
316
|
+
// that must be computed in constant-time.
|
317
|
+
SHA1_Update(&ctx, data, min_data_size);
|
318
|
+
|
319
|
+
// Hash the remaining data without leaking |data_size|.
|
320
|
+
uint8_t mac_out[SHA_DIGEST_LENGTH];
|
321
|
+
if (!EVP_sha1_final_with_secret_suffix(
|
322
|
+
&ctx, mac_out, data + min_data_size, data_size - min_data_size,
|
323
|
+
data_plus_mac_plus_padding_size - min_data_size)) {
|
476
324
|
return 0;
|
477
325
|
}
|
478
326
|
|
479
327
|
// Complete the HMAC in the standard manner.
|
480
|
-
|
328
|
+
SHA1_Init(&ctx);
|
329
|
+
for (size_t i = 0; i < SHA_CBLOCK; i++) {
|
481
330
|
hmac_pad[i] ^= 0x6a;
|
482
331
|
}
|
483
332
|
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
*md_out_size = md_out_size_u;
|
489
|
-
EVP_MD_CTX_cleanup(&md_ctx);
|
490
|
-
|
333
|
+
SHA1_Update(&ctx, hmac_pad, SHA_CBLOCK);
|
334
|
+
SHA1_Update(&ctx, mac_out, SHA_DIGEST_LENGTH);
|
335
|
+
SHA1_Final(md_out, &ctx);
|
336
|
+
*md_out_size = SHA_DIGEST_LENGTH;
|
491
337
|
return 1;
|
492
338
|
}
|