grpc 1.42.0 → 1.43.1
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 +85 -34
- data/include/grpc/event_engine/event_engine.h +37 -13
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -31
- data/include/grpc/event_engine/memory_allocator.h +27 -11
- data/include/grpc/event_engine/memory_request.h +57 -0
- data/include/grpc/grpc_security.h +276 -145
- data/include/grpc/grpc_security_constants.h +1 -14
- data/include/grpc/impl/codegen/port_platform.h +7 -3
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -7
- data/src/core/ext/filters/client_channel/backend_metric.h +3 -2
- data/src/core/ext/filters/client_channel/client_channel.cc +81 -40
- data/src/core/ext/filters/client_channel/client_channel.h +5 -4
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -2
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +4 -4
- data/src/core/ext/filters/client_channel/health/health_check_client.h +1 -1
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +12 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +27 -80
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +82 -34
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +47 -91
- data/src/core/ext/filters/client_channel/lb_policy.h +75 -59
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +8 -12
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +6 -12
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +222 -294
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -7
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -2
- data/src/core/ext/filters/client_channel/subchannel.cc +4 -4
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +14 -30
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -5
- data/src/core/ext/filters/http/server/http_server_filter.cc +11 -28
- data/src/core/ext/filters/server_config_selector/server_config_selector.cc +67 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +265 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.h +32 -0
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +4 -20
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +8 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +11 -14
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +6 -3
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +54 -79
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +9 -13
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +6 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +53 -62
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -2
- data/src/core/ext/transport/chttp2/transport/context_list.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/context_list.h +2 -3
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +83 -19
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +33 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +66 -92
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +16 -7
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -1
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c +197 -165
- data/src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +41 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +18 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +26 -2
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +107 -82
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +188 -160
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +35 -22
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +253 -218
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +36 -25
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +56 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +162 -128
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +51 -36
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +114 -90
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +89 -71
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +117 -93
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +18 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +41 -27
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +59 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +58 -43
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +73 -57
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +81 -64
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +25 -14
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +19 -7
- data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c +63 -45
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +66 -47
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +93 -75
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +41 -28
- data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +503 -440
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +26 -13
- data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +21 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c +35 -20
- data/src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +44 -31
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +22 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +210 -181
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +64 -48
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +33 -20
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +81 -65
- data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +75 -58
- data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +12 -1
- data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +61 -46
- data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +26 -12
- data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +22 -10
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c +17 -6
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +16 -5
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +27 -14
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +25 -13
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c +20 -8
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +30 -17
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +38 -21
- data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +41 -26
- data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.c +7 -0
- data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +17 -5
- data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +22 -9
- data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +2 -0
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +15 -4
- data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.c +20 -0
- data/src/core/ext/upb-generated/google/api/annotations.upb.h +7 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +116 -93
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.c +102 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/eval.upb.h +306 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.c +56 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/explain.upb.h +135 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +122 -98
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +2 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.c +115 -0
- data/src/core/ext/upb-generated/google/api/expr/v1alpha1/value.upb.h +371 -0
- data/src/core/ext/upb-generated/google/api/http.upb.c +35 -22
- data/src/core/ext/upb-generated/google/api/http.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/any.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/any.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +247 -210
- data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +12 -1
- data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +37 -23
- data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +14 -3
- data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +2 -0
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +37 -18
- data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +2 -0
- data/src/core/ext/upb-generated/google/rpc/status.upb.c +17 -6
- data/src/core/ext/upb-generated/google/rpc/status.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +26 -14
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +105 -83
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +20 -8
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +16 -4
- data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +2 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +65 -47
- data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +34 -36
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +26 -13
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +2 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +67 -7
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +27 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +19 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +27 -3
- data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +7 -0
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +26 -2
- data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +320 -251
- data/src/core/ext/upb-generated/validate/validate.upb.h +20 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +54 -9
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +17 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +13 -2
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +24 -12
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +19 -7
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +27 -15
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +18 -7
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +28 -15
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +2 -0
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +16 -5
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +2 -0
- data/src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c +2 -49
- data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +2 -35
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +2 -41
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +2 -55
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +2 -53
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +2 -33
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c +2 -21
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +2 -111
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +2 -43
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +2 -17
- data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +2 -19
- data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +2 -15
- data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +2 -59
- data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +2 -23
- data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +2 -11
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +2 -2
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +2 -51
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +2 -13
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +2 -9
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +2 -7
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +2 -7
- data/src/core/ext/xds/certificate_provider_registry.cc +1 -1
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/xds_api.cc +409 -304
- data/src/core/ext/xds/xds_api.h +3 -1
- data/src/core/ext/xds/xds_bootstrap.cc +6 -3
- data/src/core/ext/xds/xds_certificate_provider.h +1 -2
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +3 -4
- data/src/core/ext/xds/xds_client.cc +395 -291
- data/src/core/ext/xds/xds_client.h +47 -38
- data/src/core/ext/xds/xds_routing.cc +247 -0
- data/src/core/ext/xds/xds_routing.h +98 -0
- data/src/core/ext/xds/xds_server_config_fetcher.cc +975 -261
- data/src/core/lib/avl/avl.h +389 -88
- data/src/core/lib/backoff/backoff.cc +2 -2
- data/src/core/lib/channel/channel_args.cc +17 -17
- data/src/core/lib/channel/channel_args.h +11 -10
- data/src/core/lib/channel/channel_args_preconditioning.cc +47 -0
- data/src/core/lib/channel/channel_args_preconditioning.h +62 -0
- data/src/core/lib/channel/channel_stack_builder.cc +0 -2
- data/src/core/lib/channel/channel_trace.cc +6 -6
- data/src/core/lib/channel/channelz.cc +1 -1
- data/src/core/lib/compression/compression_args.cc +7 -5
- data/src/core/lib/compression/compression_args.h +6 -4
- data/src/core/lib/config/core_configuration.cc +3 -1
- data/src/core/lib/config/core_configuration.h +11 -0
- data/src/core/lib/debug/trace.h +2 -2
- data/src/core/lib/event_engine/{endpoint_config.cc → channel_args_endpoint_config.cc} +2 -1
- data/src/core/lib/event_engine/{endpoint_config_internal.h → channel_args_endpoint_config.h} +3 -3
- data/src/core/lib/event_engine/event_engine.cc +0 -13
- data/src/core/lib/event_engine/event_engine_factory.cc +49 -0
- data/src/core/lib/event_engine/event_engine_factory.h +33 -0
- data/src/core/lib/event_engine/memory_allocator.cc +70 -0
- data/src/core/lib/gpr/tls.h +6 -0
- data/src/core/lib/gprpp/cpp_impl_of.h +45 -0
- data/src/core/lib/gprpp/global_config_env.cc +7 -7
- data/src/core/lib/gprpp/global_config_env.h +2 -2
- data/src/core/lib/gprpp/manual_constructor.h +2 -3
- data/src/core/lib/gprpp/orphanable.h +1 -1
- data/src/core/lib/gprpp/ref_counted.h +1 -1
- data/src/core/lib/gprpp/ref_counted_ptr.h +2 -4
- data/src/core/lib/gprpp/status_helper.h +1 -1
- data/src/core/lib/gprpp/table.h +13 -1
- data/src/core/lib/http/httpcli.cc +30 -26
- data/src/core/lib/http/httpcli.h +14 -12
- data/src/core/lib/iomgr/buffer_list.cc +9 -9
- data/src/core/lib/iomgr/buffer_list.h +13 -13
- data/src/core/lib/iomgr/call_combiner.cc +2 -3
- data/src/core/lib/iomgr/endpoint.h +0 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -24
- data/src/core/lib/iomgr/endpoint_cfstream.h +4 -4
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +9 -11
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -14
- data/src/core/lib/iomgr/event_engine/endpoint.cc +2 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +5 -25
- data/src/core/lib/iomgr/event_engine/resolver.cc +3 -2
- data/src/core/lib/iomgr/event_engine/tcp.cc +7 -5
- data/src/core/lib/iomgr/event_engine/timer.cc +4 -3
- data/src/core/lib/iomgr/exec_ctx.h +11 -11
- data/src/core/lib/iomgr/executor.cc +12 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/tcp_client.cc +2 -4
- data/src/core/lib/iomgr/tcp_client.h +1 -3
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +1 -9
- data/src/core/lib/iomgr/tcp_client_custom.cc +4 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -23
- data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
- data/src/core/lib/iomgr/tcp_client_windows.cc +1 -10
- data/src/core/lib/iomgr/tcp_custom.cc +9 -36
- data/src/core/lib/iomgr/tcp_custom.h +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +28 -33
- data/src/core/lib/iomgr/tcp_posix.h +1 -3
- data/src/core/lib/iomgr/tcp_server.cc +4 -6
- data/src/core/lib/iomgr/tcp_server.h +6 -8
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -15
- data/src/core/lib/iomgr/tcp_server_posix.cc +18 -22
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +19 -18
- data/src/core/lib/iomgr/tcp_server_windows.cc +5 -12
- data/src/core/lib/iomgr/tcp_windows.cc +2 -7
- data/src/core/lib/iomgr/tcp_windows.h +1 -2
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix.h +1 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +1 -1
- data/src/core/lib/iomgr/work_serializer.cc +115 -44
- data/src/core/lib/iomgr/work_serializer.h +16 -4
- data/src/core/lib/json/json_reader.cc +83 -35
- data/src/core/lib/json/json_util.cc +1 -1
- data/src/core/lib/promise/activity.cc +115 -0
- data/src/core/lib/promise/activity.h +499 -0
- data/src/core/lib/promise/context.h +86 -0
- data/src/core/lib/promise/detail/basic_seq.h +407 -0
- data/src/core/lib/promise/detail/promise_factory.h +189 -0
- data/src/core/lib/promise/detail/promise_like.h +85 -0
- data/src/core/lib/promise/detail/status.h +44 -0
- data/src/core/lib/promise/detail/switch.h +1455 -0
- data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +48 -0
- data/src/core/lib/promise/loop.h +108 -0
- data/src/core/lib/promise/map.h +88 -0
- data/src/core/lib/promise/poll.h +60 -0
- data/src/core/lib/promise/race.h +84 -0
- data/src/core/lib/promise/seq.h +71 -0
- data/src/core/lib/resource_quota/api.cc +108 -0
- data/src/core/lib/resource_quota/api.h +41 -0
- data/src/core/lib/resource_quota/memory_quota.cc +454 -0
- data/src/core/lib/resource_quota/memory_quota.h +421 -0
- data/src/core/lib/resource_quota/resource_quota.cc +33 -0
- data/src/core/lib/resource_quota/resource_quota.h +58 -0
- data/src/core/lib/resource_quota/thread_quota.cc +43 -0
- data/src/core/lib/resource_quota/thread_quota.h +57 -0
- data/src/core/lib/resource_quota/trace.cc +19 -0
- data/src/core/lib/resource_quota/trace.h +24 -0
- data/src/core/lib/security/authorization/evaluate_args.cc +13 -19
- data/src/core/lib/security/authorization/evaluate_args.h +2 -1
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +3 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +11 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -10
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +3 -4
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +4 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +18 -22
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +11 -12
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -8
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +201 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +106 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +11 -90
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +19 -82
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +21 -10
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +28 -33
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +3 -3
- data/src/core/lib/security/security_connector/alts/alts_security_connector.h +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +3 -4
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +7 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -2
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +10 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +344 -195
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +64 -41
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/slice/percent_encoding.cc +30 -86
- data/src/core/lib/slice/percent_encoding.h +5 -11
- data/src/core/lib/slice/slice.cc +7 -7
- data/src/core/lib/slice/slice.h +341 -0
- data/src/core/lib/slice/slice_buffer.cc +4 -0
- data/src/core/lib/slice/slice_intern.cc +1 -1
- data/src/core/lib/slice/slice_refcount.h +5 -1
- data/src/core/lib/slice/slice_refcount_base.h +19 -11
- data/src/core/lib/slice/static_slice.cc +331 -483
- data/src/core/lib/slice/static_slice.h +101 -132
- data/src/core/lib/surface/builtins.cc +1 -1
- data/src/core/lib/surface/call.cc +85 -59
- data/src/core/lib/surface/channel.cc +4 -29
- data/src/core/lib/surface/channel.h +2 -12
- data/src/core/lib/surface/completion_queue.cc +2 -2
- data/src/core/lib/surface/init.cc +0 -1
- data/src/core/lib/surface/lame_client.cc +24 -17
- data/src/core/lib/surface/server.cc +22 -22
- data/src/core/lib/surface/server.h +8 -9
- data/src/core/lib/surface/validate_metadata.cc +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +1 -1
- data/src/core/lib/transport/byte_stream.cc +4 -0
- data/src/core/lib/transport/metadata.h +4 -4
- data/src/core/lib/transport/metadata_batch.cc +5 -0
- data/src/core/lib/transport/metadata_batch.h +174 -99
- data/src/core/lib/transport/parsed_metadata.cc +35 -0
- data/src/core/lib/transport/parsed_metadata.h +180 -61
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +529 -614
- data/src/core/lib/transport/static_metadata.h +0 -18
- data/src/core/lib/transport/transport.cc +4 -26
- data/src/core/lib/transport/transport.h +0 -1
- data/src/core/lib/transport/transport_op_string.cc +1 -1
- data/src/core/lib/uri/uri_parser.cc +19 -19
- data/src/core/lib/uri/uri_parser.h +2 -0
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -2
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/local_transport_security.cc +15 -15
- data/src/core/tsi/ssl_transport_security.cc +30 -1
- data/src/core/tsi/ssl_transport_security.h +1 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -10
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +9 -15
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/algorithm/container.h +101 -91
- data/third_party/abseil-cpp/absl/base/attributes.h +64 -31
- data/third_party/abseil-cpp/absl/base/config.h +67 -37
- data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +1 -26
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +3 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +2 -0
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +69 -0
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +4 -4
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +16 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +4 -4
- data/third_party/abseil-cpp/absl/base/options.h +1 -1
- data/third_party/abseil-cpp/absl/container/fixed_array.h +0 -5
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +105 -97
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +17 -15
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +18 -102
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +37 -78
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +388 -423
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +3 -2
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -8
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +251 -120
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +11 -1
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +12 -11
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +6 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +12 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +110 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +234 -0
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +25 -7
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +8 -2
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +21 -3
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +2 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +14 -0
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +72 -0
- data/third_party/abseil-cpp/absl/functional/function_ref.h +4 -1
- data/third_party/abseil-cpp/absl/hash/hash.h +22 -0
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +15 -16
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +88 -37
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.cc → low_level_hash.cc} +23 -11
- data/third_party/abseil-cpp/absl/hash/internal/{wyhash.h → low_level_hash.h} +14 -12
- data/third_party/abseil-cpp/absl/memory/memory.h +1 -1
- data/third_party/abseil-cpp/absl/meta/type_traits.h +32 -2
- data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -10
- data/third_party/abseil-cpp/absl/numeric/int128.h +146 -73
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +19 -25
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +73 -70
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.cc +4 -4
- data/third_party/abseil-cpp/absl/{base → profiling}/internal/exponential_biased.h +6 -6
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +230 -0
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +5 -5
- data/third_party/abseil-cpp/absl/status/status.cc +9 -17
- data/third_party/abseil-cpp/absl/status/status.h +19 -15
- data/third_party/abseil-cpp/absl/status/statusor.cc +34 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +31 -21
- data/third_party/abseil-cpp/absl/strings/charconv.cc +3 -3
- data/third_party/abseil-cpp/absl/strings/charconv.h +3 -2
- data/third_party/abseil-cpp/absl/strings/cord.cc +453 -359
- data/third_party/abseil-cpp/absl/strings/cord.h +197 -70
- data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +140 -63
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc +1128 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.h +939 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc +185 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.h +265 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc +68 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.h +211 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc +129 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.h +50 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +7 -7
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +55 -181
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +42 -24
- data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +4 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc +96 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_functions.h +85 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +139 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.h +131 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +445 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +298 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_statistics.h +87 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_scope.h +71 -0
- data/third_party/abseil-cpp/absl/strings/internal/cordz_update_tracker.h +121 -0
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +48 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +8 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +3 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +1 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +36 -18
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +62 -73
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +24 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +35 -35
- data/third_party/abseil-cpp/absl/strings/numbers.cc +1 -1
- data/third_party/abseil-cpp/absl/strings/numbers.h +34 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
- data/third_party/abseil-cpp/absl/strings/str_format.h +1 -2
- data/third_party/abseil-cpp/absl/strings/string_view.cc +16 -21
- data/third_party/abseil-cpp/absl/strings/string_view.h +120 -39
- data/third_party/abseil-cpp/absl/strings/substitute.cc +2 -1
- data/third_party/abseil-cpp/absl/strings/substitute.h +99 -74
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +25 -15
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +5 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +3 -3
- data/third_party/abseil-cpp/absl/time/civil_time.cc +1 -3
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +93 -20
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +2 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +83 -21
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +49 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +1 -1
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -3
- data/third_party/abseil-cpp/absl/time/time.h +67 -36
- data/third_party/abseil-cpp/absl/types/bad_optional_access.h +1 -1
- data/third_party/abseil-cpp/absl/types/bad_variant_access.h +2 -2
- data/third_party/abseil-cpp/absl/types/span.h +3 -3
- data/third_party/boringssl-with-bazel/err_data.c +681 -677
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +19 -11
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +41 -30
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +59 -47
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +24 -28
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +28 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +48 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +8 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +3 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +5 -1
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +59 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +2 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +8 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +216 -11
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +21 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +971 -253
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +0 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +4 -12
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +17 -41
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +12 -27
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +8 -10
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +29 -55
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +3 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/pool.h +7 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +24 -28
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +6 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +12 -43
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +4 -3
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +4 -0
- data/third_party/upb/upb/decode.c +309 -178
- data/third_party/upb/upb/decode_fast.c +1 -1
- data/third_party/upb/upb/decode_internal.h +1 -0
- data/third_party/upb/upb/def.c +330 -85
- data/third_party/upb/upb/def.h +45 -14
- data/third_party/upb/upb/def.hpp +17 -4
- data/third_party/upb/upb/encode.c +100 -40
- data/third_party/upb/upb/msg.c +22 -9
- data/third_party/upb/upb/msg_internal.h +90 -8
- data/third_party/upb/upb/reflection.c +98 -58
- data/third_party/upb/upb/reflection.h +6 -2
- data/third_party/upb/upb/text_encode.c +3 -3
- data/third_party/upb/upb/upb.c +8 -0
- metadata +116 -56
- data/src/core/lib/avl/avl.cc +0 -306
- data/src/core/lib/gprpp/match.h +0 -73
- data/src/core/lib/gprpp/overload.h +0 -59
- data/src/core/lib/iomgr/event_engine/iomgr.h +0 -42
- data/src/core/lib/iomgr/resource_quota.cc +0 -1106
- data/src/core/lib/iomgr/resource_quota.h +0 -226
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +0 -93
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +0 -217
@@ -60,7 +60,6 @@
|
|
60
60
|
#include <string.h>
|
61
61
|
|
62
62
|
#include <openssl/asn1t.h>
|
63
|
-
#include <openssl/buf.h>
|
64
63
|
#include <openssl/err.h>
|
65
64
|
#include <openssl/mem.h>
|
66
65
|
|
@@ -76,16 +75,9 @@
|
|
76
75
|
#define ASN1_MAX_CONSTRUCTED_NEST 30
|
77
76
|
|
78
77
|
static int asn1_check_eoc(const unsigned char **in, long len);
|
79
|
-
static int asn1_find_end(const unsigned char **in, long len, char inf);
|
80
|
-
|
81
|
-
static int asn1_collect(BUF_MEM *buf, const unsigned char **in, long len,
|
82
|
-
char inf, int tag, int aclass, int depth);
|
83
|
-
|
84
|
-
static int collect_data(BUF_MEM *buf, const unsigned char **p, long plen);
|
85
78
|
|
86
79
|
static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass,
|
87
|
-
char *
|
88
|
-
const unsigned char **in, long len,
|
80
|
+
char *cst, const unsigned char **in, long len,
|
89
81
|
int exptag, int expclass, char opt, ASN1_TLC *ctx);
|
90
82
|
|
91
83
|
static int asn1_template_ex_d2i(ASN1_VALUE **pval,
|
@@ -97,7 +89,7 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
|
|
97
89
|
const ASN1_TEMPLATE *tt, char opt,
|
98
90
|
ASN1_TLC *ctx, int depth);
|
99
91
|
static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
|
100
|
-
int utype,
|
92
|
+
int utype, const ASN1_ITEM *it);
|
101
93
|
static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
|
102
94
|
const unsigned char **in, long len,
|
103
95
|
const ASN1_ITEM *it,
|
@@ -172,7 +164,7 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
172
164
|
const ASN1_EXTERN_FUNCS *ef;
|
173
165
|
const unsigned char *p = NULL, *q;
|
174
166
|
unsigned char oclass;
|
175
|
-
char
|
167
|
+
char cst, isopt;
|
176
168
|
int i;
|
177
169
|
int otag;
|
178
170
|
int ret = 0;
|
@@ -228,7 +220,7 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
228
220
|
|
229
221
|
p = *in;
|
230
222
|
/* Just read in tag and class */
|
231
|
-
ret = asn1_check_tlen(NULL, &otag, &oclass, NULL,
|
223
|
+
ret = asn1_check_tlen(NULL, &otag, &oclass, NULL,
|
232
224
|
&p, len, -1, 0, 1, ctx);
|
233
225
|
if (!ret) {
|
234
226
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
@@ -334,15 +326,13 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
334
326
|
aclass = V_ASN1_UNIVERSAL;
|
335
327
|
}
|
336
328
|
/* Get SEQUENCE length and update len, p */
|
337
|
-
ret = asn1_check_tlen(&len, NULL, NULL, &
|
329
|
+
ret = asn1_check_tlen(&len, NULL, NULL, &cst,
|
338
330
|
&p, len, tag, aclass, opt, ctx);
|
339
331
|
if (!ret) {
|
340
332
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
341
333
|
goto err;
|
342
334
|
} else if (ret == -1)
|
343
335
|
return -1;
|
344
|
-
/* If indefinite we don't do a length check */
|
345
|
-
seq_nolen = seq_eoc;
|
346
336
|
if (!cst) {
|
347
337
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_SEQUENCE_NOT_CONSTRUCTED);
|
348
338
|
goto err;
|
@@ -383,15 +373,12 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
383
373
|
if (!len)
|
384
374
|
break;
|
385
375
|
q = p;
|
376
|
+
/* TODO(https://crbug.com/boringssl/455): Although we've removed
|
377
|
+
* indefinite-length support, this check is not quite a no-op.
|
378
|
+
* Reject [UNIVERSAL 0] in the tag parsers themselves. */
|
386
379
|
if (asn1_check_eoc(&p, len)) {
|
387
|
-
|
388
|
-
|
389
|
-
goto err;
|
390
|
-
}
|
391
|
-
len -= p - q;
|
392
|
-
seq_eoc = 0;
|
393
|
-
q = p;
|
394
|
-
break;
|
380
|
+
OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNEXPECTED_EOC);
|
381
|
+
goto err;
|
395
382
|
}
|
396
383
|
/*
|
397
384
|
* This determines the OPTIONAL flag value. The field cannot be
|
@@ -423,13 +410,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
423
410
|
len -= p - q;
|
424
411
|
}
|
425
412
|
|
426
|
-
/* Check for EOC if expecting one */
|
427
|
-
if (seq_eoc && !asn1_check_eoc(&p, len)) {
|
428
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_MISSING_EOC);
|
429
|
-
goto err;
|
430
|
-
}
|
431
413
|
/* Check all data read */
|
432
|
-
if (
|
414
|
+
if (len) {
|
433
415
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_SEQUENCE_LENGTH_MISMATCH);
|
434
416
|
goto err;
|
435
417
|
}
|
@@ -500,7 +482,6 @@ static int asn1_template_ex_d2i(ASN1_VALUE **val,
|
|
500
482
|
int ret;
|
501
483
|
long len;
|
502
484
|
const unsigned char *p, *q;
|
503
|
-
char exp_eoc;
|
504
485
|
if (!val)
|
505
486
|
return 0;
|
506
487
|
flags = tt->flags;
|
@@ -515,7 +496,7 @@ static int asn1_template_ex_d2i(ASN1_VALUE **val,
|
|
515
496
|
* Need to work out amount of data available to the inner content and
|
516
497
|
* where it starts: so read in EXPLICIT header to get the info.
|
517
498
|
*/
|
518
|
-
ret = asn1_check_tlen(&len, NULL, NULL, &
|
499
|
+
ret = asn1_check_tlen(&len, NULL, NULL, &cst,
|
519
500
|
&p, inlen, tt->tag, aclass, opt, ctx);
|
520
501
|
q = p;
|
521
502
|
if (!ret) {
|
@@ -535,20 +516,10 @@ static int asn1_template_ex_d2i(ASN1_VALUE **val,
|
|
535
516
|
}
|
536
517
|
/* We read the field in OK so update length */
|
537
518
|
len -= p - q;
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
goto err;
|
543
|
-
}
|
544
|
-
} else {
|
545
|
-
/*
|
546
|
-
* Otherwise we must hit the EXPLICIT tag end or its an error
|
547
|
-
*/
|
548
|
-
if (len) {
|
549
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_EXPLICIT_LENGTH_MISMATCH);
|
550
|
-
goto err;
|
551
|
-
}
|
519
|
+
/* Check for trailing data. */
|
520
|
+
if (len) {
|
521
|
+
OPENSSL_PUT_ERROR(ASN1, ASN1_R_EXPLICIT_LENGTH_MISMATCH);
|
522
|
+
goto err;
|
552
523
|
}
|
553
524
|
} else
|
554
525
|
return asn1_template_noexp_d2i(val, in, inlen, tt, opt, ctx, depth);
|
@@ -579,7 +550,6 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
|
|
579
550
|
if (flags & ASN1_TFLG_SK_MASK) {
|
580
551
|
/* SET OF, SEQUENCE OF */
|
581
552
|
int sktag, skaclass;
|
582
|
-
char sk_eoc;
|
583
553
|
/* First work out expected inner tag value */
|
584
554
|
if (flags & ASN1_TFLG_IMPTAG) {
|
585
555
|
sktag = tt->tag;
|
@@ -592,7 +562,7 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
|
|
592
562
|
sktag = V_ASN1_SEQUENCE;
|
593
563
|
}
|
594
564
|
/* Get the tag */
|
595
|
-
ret = asn1_check_tlen(&len, NULL, NULL,
|
565
|
+
ret = asn1_check_tlen(&len, NULL, NULL, NULL,
|
596
566
|
&p, len, sktag, skaclass, opt, ctx);
|
597
567
|
if (!ret) {
|
598
568
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
@@ -622,15 +592,12 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
|
|
622
592
|
while (len > 0) {
|
623
593
|
ASN1_VALUE *skfield;
|
624
594
|
const unsigned char *q = p;
|
625
|
-
/*
|
595
|
+
/* TODO(https://crbug.com/boringssl/455): Although we've removed
|
596
|
+
* indefinite-length support, this check is not quite a no-op.
|
597
|
+
* Reject [UNIVERSAL 0] in the tag parsers themselves. */
|
626
598
|
if (asn1_check_eoc(&p, len)) {
|
627
|
-
|
628
|
-
|
629
|
-
goto err;
|
630
|
-
}
|
631
|
-
len -= p - q;
|
632
|
-
sk_eoc = 0;
|
633
|
-
break;
|
599
|
+
OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNEXPECTED_EOC);
|
600
|
+
goto err;
|
634
601
|
}
|
635
602
|
skfield = NULL;
|
636
603
|
if (!asn1_item_ex_d2i(&skfield, &p, len, ASN1_ITEM_ptr(tt->item),
|
@@ -645,10 +612,6 @@ static int asn1_template_noexp_d2i(ASN1_VALUE **val,
|
|
645
612
|
goto err;
|
646
613
|
}
|
647
614
|
}
|
648
|
-
if (sk_eoc) {
|
649
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_MISSING_EOC);
|
650
|
-
goto err;
|
651
|
-
}
|
652
615
|
} else if (flags & ASN1_TFLG_IMPTAG) {
|
653
616
|
/* IMPLICIT tagging */
|
654
617
|
ret = asn1_item_ex_d2i(val, &p, len, ASN1_ITEM_ptr(tt->item), tt->tag,
|
@@ -685,9 +648,8 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
|
|
685
648
|
{
|
686
649
|
int ret = 0, utype;
|
687
650
|
long plen;
|
688
|
-
char cst
|
651
|
+
char cst;
|
689
652
|
const unsigned char *p;
|
690
|
-
BUF_MEM buf = {0, NULL, 0 };
|
691
653
|
const unsigned char *cont = NULL;
|
692
654
|
long len;
|
693
655
|
if (!pval) {
|
@@ -713,7 +675,7 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
|
|
713
675
|
return 0;
|
714
676
|
}
|
715
677
|
p = *in;
|
716
|
-
ret = asn1_check_tlen(NULL, &utype, &oclass, NULL,
|
678
|
+
ret = asn1_check_tlen(NULL, &utype, &oclass, NULL,
|
717
679
|
&p, inlen, -1, 0, 0, ctx);
|
718
680
|
if (!ret) {
|
719
681
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
@@ -728,7 +690,7 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
|
|
728
690
|
}
|
729
691
|
p = *in;
|
730
692
|
/* Check header */
|
731
|
-
ret = asn1_check_tlen(&plen, NULL, NULL, &
|
693
|
+
ret = asn1_check_tlen(&plen, NULL, NULL, &cst,
|
732
694
|
&p, inlen, tag, aclass, opt, ctx);
|
733
695
|
if (!ret) {
|
734
696
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
@@ -753,43 +715,14 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
|
|
753
715
|
}
|
754
716
|
|
755
717
|
cont = *in;
|
756
|
-
|
757
|
-
|
758
|
-
if (!asn1_find_end(&p, plen, inf))
|
759
|
-
goto err;
|
760
|
-
len = p - cont;
|
761
|
-
} else {
|
762
|
-
len = p - cont + plen;
|
763
|
-
p += plen;
|
764
|
-
}
|
718
|
+
len = p - cont + plen;
|
719
|
+
p += plen;
|
765
720
|
} else if (cst) {
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
return 0;
|
772
|
-
}
|
773
|
-
|
774
|
-
/* Free any returned 'buf' content */
|
775
|
-
free_cont = 1;
|
776
|
-
/*
|
777
|
-
* Should really check the internal tags are correct but some things
|
778
|
-
* may get this wrong. The relevant specs say that constructed string
|
779
|
-
* types should be OCTET STRINGs internally irrespective of the type.
|
780
|
-
* So instead just check for UNIVERSAL class and ignore the tag.
|
781
|
-
*/
|
782
|
-
if (!asn1_collect(&buf, &p, plen, inf, -1, V_ASN1_UNIVERSAL, 0)) {
|
783
|
-
goto err;
|
784
|
-
}
|
785
|
-
len = buf.length;
|
786
|
-
/* Append a final null to string */
|
787
|
-
if (!BUF_MEM_grow_clean(&buf, len + 1)) {
|
788
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
789
|
-
goto err;
|
790
|
-
}
|
791
|
-
buf.data[len] = 0;
|
792
|
-
cont = (const unsigned char *)buf.data;
|
721
|
+
/* This parser historically supported BER constructed strings. We no
|
722
|
+
* longer do and will gradually tighten this parser into a DER
|
723
|
+
* parser. BER types should use |CBS_asn1_ber_to_der|. */
|
724
|
+
OPENSSL_PUT_ERROR(ASN1, ASN1_R_TYPE_NOT_PRIMITIVE);
|
725
|
+
return 0;
|
793
726
|
} else {
|
794
727
|
cont = p;
|
795
728
|
len = plen;
|
@@ -797,22 +730,19 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval,
|
|
797
730
|
}
|
798
731
|
|
799
732
|
/* We now have content length and type: translate into a structure */
|
800
|
-
|
801
|
-
if (!asn1_ex_c2i(pval, cont, len, utype, &free_cont, it))
|
733
|
+
if (!asn1_ex_c2i(pval, cont, len, utype, it))
|
802
734
|
goto err;
|
803
735
|
|
804
736
|
*in = p;
|
805
737
|
ret = 1;
|
806
738
|
err:
|
807
|
-
if (free_cont && buf.data)
|
808
|
-
OPENSSL_free(buf.data);
|
809
739
|
return ret;
|
810
740
|
}
|
811
741
|
|
812
742
|
/* Translate ASN1 content octets into a structure */
|
813
743
|
|
814
744
|
static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
|
815
|
-
int utype,
|
745
|
+
int utype, const ASN1_ITEM *it)
|
816
746
|
{
|
817
747
|
ASN1_VALUE **opval = NULL;
|
818
748
|
ASN1_STRING *stmp;
|
@@ -916,20 +846,11 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
|
|
916
846
|
stmp = (ASN1_STRING *)*pval;
|
917
847
|
stmp->type = utype;
|
918
848
|
}
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
stmp->length = len;
|
925
|
-
*free_cont = 0;
|
926
|
-
} else {
|
927
|
-
if (!ASN1_STRING_set(stmp, cont, len)) {
|
928
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
929
|
-
ASN1_STRING_free(stmp);
|
930
|
-
*pval = NULL;
|
931
|
-
goto err;
|
932
|
-
}
|
849
|
+
if (!ASN1_STRING_set(stmp, cont, len)) {
|
850
|
+
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
851
|
+
ASN1_STRING_free(stmp);
|
852
|
+
*pval = NULL;
|
853
|
+
goto err;
|
933
854
|
}
|
934
855
|
break;
|
935
856
|
}
|
@@ -947,145 +868,6 @@ static int asn1_ex_c2i(ASN1_VALUE **pval, const unsigned char *cont, int len,
|
|
947
868
|
return ret;
|
948
869
|
}
|
949
870
|
|
950
|
-
/*
|
951
|
-
* This function finds the end of an ASN1 structure when passed its maximum
|
952
|
-
* length, whether it is indefinite length and a pointer to the content. This
|
953
|
-
* is more efficient than calling asn1_collect because it does not recurse on
|
954
|
-
* each indefinite length header.
|
955
|
-
*/
|
956
|
-
|
957
|
-
static int asn1_find_end(const unsigned char **in, long len, char inf)
|
958
|
-
{
|
959
|
-
int expected_eoc;
|
960
|
-
long plen;
|
961
|
-
const unsigned char *p = *in, *q;
|
962
|
-
/* If not indefinite length constructed just add length */
|
963
|
-
if (inf == 0) {
|
964
|
-
*in += len;
|
965
|
-
return 1;
|
966
|
-
}
|
967
|
-
expected_eoc = 1;
|
968
|
-
/*
|
969
|
-
* Indefinite length constructed form. Find the end when enough EOCs are
|
970
|
-
* found. If more indefinite length constructed headers are encountered
|
971
|
-
* increment the expected eoc count otherwise just skip to the end of the
|
972
|
-
* data.
|
973
|
-
*/
|
974
|
-
while (len > 0) {
|
975
|
-
if (asn1_check_eoc(&p, len)) {
|
976
|
-
expected_eoc--;
|
977
|
-
if (expected_eoc == 0)
|
978
|
-
break;
|
979
|
-
len -= 2;
|
980
|
-
continue;
|
981
|
-
}
|
982
|
-
q = p;
|
983
|
-
/* Just read in a header: only care about the length */
|
984
|
-
if (!asn1_check_tlen(&plen, NULL, NULL, &inf, NULL, &p, len,
|
985
|
-
-1, 0, 0, NULL)) {
|
986
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
987
|
-
return 0;
|
988
|
-
}
|
989
|
-
if (inf)
|
990
|
-
expected_eoc++;
|
991
|
-
else
|
992
|
-
p += plen;
|
993
|
-
len -= p - q;
|
994
|
-
}
|
995
|
-
if (expected_eoc) {
|
996
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_MISSING_EOC);
|
997
|
-
return 0;
|
998
|
-
}
|
999
|
-
*in = p;
|
1000
|
-
return 1;
|
1001
|
-
}
|
1002
|
-
|
1003
|
-
/*
|
1004
|
-
* This function collects the asn1 data from a constructred string type into
|
1005
|
-
* a buffer. The values of 'in' and 'len' should refer to the contents of the
|
1006
|
-
* constructed type and 'inf' should be set if it is indefinite length.
|
1007
|
-
*/
|
1008
|
-
|
1009
|
-
/*
|
1010
|
-
* This determines how many levels of recursion are permitted in ASN1 string
|
1011
|
-
* types. If it is not limited stack overflows can occur. If set to zero no
|
1012
|
-
* recursion is allowed at all. Although zero should be adequate examples
|
1013
|
-
* exist that require a value of 1. So 5 should be more than enough.
|
1014
|
-
*/
|
1015
|
-
#define ASN1_MAX_STRING_NEST 5
|
1016
|
-
|
1017
|
-
static int asn1_collect(BUF_MEM *buf, const unsigned char **in, long len,
|
1018
|
-
char inf, int tag, int aclass, int depth)
|
1019
|
-
{
|
1020
|
-
const unsigned char *p, *q;
|
1021
|
-
long plen;
|
1022
|
-
char cst, ininf;
|
1023
|
-
p = *in;
|
1024
|
-
inf &= 1;
|
1025
|
-
/*
|
1026
|
-
* If no buffer and not indefinite length constructed just pass over the
|
1027
|
-
* encoded data
|
1028
|
-
*/
|
1029
|
-
if (!buf && !inf) {
|
1030
|
-
*in += len;
|
1031
|
-
return 1;
|
1032
|
-
}
|
1033
|
-
while (len > 0) {
|
1034
|
-
q = p;
|
1035
|
-
/* Check for EOC */
|
1036
|
-
if (asn1_check_eoc(&p, len)) {
|
1037
|
-
/*
|
1038
|
-
* EOC is illegal outside indefinite length constructed form
|
1039
|
-
*/
|
1040
|
-
if (!inf) {
|
1041
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_UNEXPECTED_EOC);
|
1042
|
-
return 0;
|
1043
|
-
}
|
1044
|
-
inf = 0;
|
1045
|
-
break;
|
1046
|
-
}
|
1047
|
-
|
1048
|
-
if (!asn1_check_tlen(&plen, NULL, NULL, &ininf, &cst, &p,
|
1049
|
-
len, tag, aclass, 0, NULL)) {
|
1050
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_ERROR);
|
1051
|
-
return 0;
|
1052
|
-
}
|
1053
|
-
|
1054
|
-
/* If indefinite length constructed update max length */
|
1055
|
-
if (cst) {
|
1056
|
-
if (depth >= ASN1_MAX_STRING_NEST) {
|
1057
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NESTED_ASN1_STRING);
|
1058
|
-
return 0;
|
1059
|
-
}
|
1060
|
-
if (!asn1_collect(buf, &p, plen, ininf, tag, aclass, depth + 1))
|
1061
|
-
return 0;
|
1062
|
-
} else if (plen && !collect_data(buf, &p, plen))
|
1063
|
-
return 0;
|
1064
|
-
len -= p - q;
|
1065
|
-
}
|
1066
|
-
if (inf) {
|
1067
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_MISSING_EOC);
|
1068
|
-
return 0;
|
1069
|
-
}
|
1070
|
-
*in = p;
|
1071
|
-
return 1;
|
1072
|
-
}
|
1073
|
-
|
1074
|
-
static int collect_data(BUF_MEM *buf, const unsigned char **p, long plen)
|
1075
|
-
{
|
1076
|
-
int len;
|
1077
|
-
if (buf) {
|
1078
|
-
len = buf->length;
|
1079
|
-
if (!BUF_MEM_grow_clean(buf, len + plen)) {
|
1080
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
1081
|
-
return 0;
|
1082
|
-
}
|
1083
|
-
OPENSSL_memcpy(buf->data + len, *p, plen);
|
1084
|
-
}
|
1085
|
-
*p += plen;
|
1086
|
-
return 1;
|
1087
|
-
}
|
1088
|
-
|
1089
871
|
/* Check for ASN1 EOC and swallow it if found */
|
1090
872
|
|
1091
873
|
static int asn1_check_eoc(const unsigned char **in, long len)
|
@@ -1102,15 +884,12 @@ static int asn1_check_eoc(const unsigned char **in, long len)
|
|
1102
884
|
}
|
1103
885
|
|
1104
886
|
/*
|
1105
|
-
* Check an ASN1 tag and length: a bit like ASN1_get_object but it
|
1106
|
-
*
|
1107
|
-
* length but we can set an upper bound to the amount of data available minus
|
1108
|
-
* the header length just read.
|
887
|
+
* Check an ASN1 tag and length: a bit like ASN1_get_object but it handles
|
888
|
+
* the ASN1_TLC cache and checks the expected tag.
|
1109
889
|
*/
|
1110
890
|
|
1111
891
|
static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass,
|
1112
|
-
char *
|
1113
|
-
const unsigned char **in, long len,
|
892
|
+
char *cst, const unsigned char **in, long len,
|
1114
893
|
int exptag, int expclass, char opt, ASN1_TLC *ctx)
|
1115
894
|
{
|
1116
895
|
int i;
|
@@ -1136,10 +915,13 @@ static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass,
|
|
1136
915
|
ctx->hdrlen = p - q;
|
1137
916
|
ctx->valid = 1;
|
1138
917
|
/*
|
1139
|
-
* If
|
1140
|
-
*
|
918
|
+
* If no error, length + header can't exceed total amount of data
|
919
|
+
* available.
|
920
|
+
*
|
921
|
+
* TODO(davidben): Is this check necessary? |ASN1_get_object|
|
922
|
+
* should already guarantee this.
|
1141
923
|
*/
|
1142
|
-
if (!(i &
|
924
|
+
if (!(i & 0x80) && ((plen + ctx->hdrlen) > len)) {
|
1143
925
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
|
1144
926
|
asn1_tlc_clear(ctx);
|
1145
927
|
return 0;
|
@@ -1170,12 +952,6 @@ static int asn1_check_tlen(long *olen, int *otag, unsigned char *oclass,
|
|
1170
952
|
asn1_tlc_clear(ctx);
|
1171
953
|
}
|
1172
954
|
|
1173
|
-
if (i & 1)
|
1174
|
-
plen = len - (p - q);
|
1175
|
-
|
1176
|
-
if (inf)
|
1177
|
-
*inf = i & 1;
|
1178
|
-
|
1179
955
|
if (cst)
|
1180
956
|
*cst = i & V_ASN1_CONSTRUCTED;
|
1181
957
|
|
@@ -62,7 +62,7 @@
|
|
62
62
|
|
63
63
|
#define IMPLEMENT_ASN1_STRING_FUNCTIONS(sname) \
|
64
64
|
IMPLEMENT_ASN1_TYPE(sname) \
|
65
|
-
|
65
|
+
IMPLEMENT_ASN1_ENCODE_FUNCTIONS_const_fname(sname, sname, sname) \
|
66
66
|
sname *sname##_new(void) \
|
67
67
|
{ \
|
68
68
|
return ASN1_STRING_type_new(V_##sname); \
|
@@ -88,7 +88,7 @@ IMPLEMENT_ASN1_STRING_FUNCTIONS(ASN1_UNIVERSALSTRING)
|
|
88
88
|
IMPLEMENT_ASN1_STRING_FUNCTIONS(ASN1_BMPSTRING)
|
89
89
|
|
90
90
|
IMPLEMENT_ASN1_TYPE(ASN1_NULL)
|
91
|
-
|
91
|
+
IMPLEMENT_ASN1_FUNCTIONS_const(ASN1_NULL)
|
92
92
|
|
93
93
|
IMPLEMENT_ASN1_TYPE(ASN1_OBJECT)
|
94
94
|
|
@@ -97,18 +97,20 @@ IMPLEMENT_ASN1_TYPE(ASN1_ANY)
|
|
97
97
|
/* Just swallow an ASN1_SEQUENCE in an ASN1_STRING */
|
98
98
|
IMPLEMENT_ASN1_TYPE(ASN1_SEQUENCE)
|
99
99
|
|
100
|
-
|
100
|
+
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_TYPE, ASN1_ANY, ASN1_TYPE)
|
101
101
|
|
102
102
|
/* Multistring types */
|
103
103
|
|
104
104
|
IMPLEMENT_ASN1_MSTRING(ASN1_PRINTABLE, B_ASN1_PRINTABLE)
|
105
|
-
|
105
|
+
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_STRING, ASN1_PRINTABLE,
|
106
|
+
ASN1_PRINTABLE)
|
106
107
|
|
107
108
|
IMPLEMENT_ASN1_MSTRING(DISPLAYTEXT, B_ASN1_DISPLAYTEXT)
|
108
|
-
|
109
|
+
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_STRING, DISPLAYTEXT, DISPLAYTEXT)
|
109
110
|
|
110
111
|
IMPLEMENT_ASN1_MSTRING(DIRECTORYSTRING, B_ASN1_DIRECTORYSTRING)
|
111
|
-
|
112
|
+
IMPLEMENT_ASN1_FUNCTIONS_const_fname(ASN1_STRING, DIRECTORYSTRING,
|
113
|
+
DIRECTORYSTRING)
|
112
114
|
|
113
115
|
/* Three separate BOOLEAN type: normal, DEFAULT TRUE and DEFAULT FALSE */
|
114
116
|
IMPLEMENT_ASN1_TYPE_ex(ASN1_BOOLEAN, ASN1_BOOLEAN, -1)
|
@@ -29,8 +29,10 @@ static const unsigned kMaxDepth = 2048;
|
|
29
29
|
// is_string_type returns one if |tag| is a string type and zero otherwise. It
|
30
30
|
// ignores the constructed bit.
|
31
31
|
static int is_string_type(unsigned tag) {
|
32
|
+
// While BER supports constructed BIT STRINGS, OpenSSL misparses them. To
|
33
|
+
// avoid acting on an ambiguous input, we do not support constructed BIT
|
34
|
+
// STRINGS. See https://github.com/openssl/openssl/issues/12810.
|
32
35
|
switch (tag & ~CBS_ASN1_CONSTRUCTED) {
|
33
|
-
case CBS_ASN1_BITSTRING:
|
34
36
|
case CBS_ASN1_OCTETSTRING:
|
35
37
|
case CBS_ASN1_UTF8STRING:
|
36
38
|
case CBS_ASN1_NUMERICSTRING:
|
@@ -369,8 +369,8 @@ EVP_PKEY *d2i_PublicKey(int type, EVP_PKEY **out, const uint8_t **inp,
|
|
369
369
|
// Unlike OpenSSL, we do not support EC keys with this API. The raw EC
|
370
370
|
// public key serialization requires knowing the group. In OpenSSL, calling
|
371
371
|
// this function with |EVP_PKEY_EC| and setting |out| to NULL does not work.
|
372
|
-
// It requires |*out| to include a partially-
|
373
|
-
// the group.
|
372
|
+
// It requires |*out| to include a partially-initialized |EVP_PKEY| to
|
373
|
+
// extract the group.
|
374
374
|
default:
|
375
375
|
OPENSSL_PUT_ERROR(EVP, EVP_R_UNSUPPORTED_PUBLIC_KEY_TYPE);
|
376
376
|
goto err;
|
@@ -290,27 +290,27 @@ err:
|
|
290
290
|
}
|
291
291
|
|
292
292
|
#if defined(OPENSSL_ANDROID)
|
293
|
-
|
293
|
+
#define MODULE_DIGEST_SIZE SHA256_DIGEST_LENGTH
|
294
294
|
#else
|
295
|
-
|
295
|
+
#define MODULE_DIGEST_SIZE SHA512_DIGEST_LENGTH
|
296
296
|
#endif
|
297
297
|
|
298
298
|
int boringssl_fips_self_test(
|
299
299
|
const uint8_t *module_hash, size_t module_hash_len) {
|
300
300
|
#if defined(BORINGSSL_FIPS_SELF_TEST_FLAG_FILE)
|
301
|
-
char flag_path[sizeof(kFlagPrefix) + 2*
|
301
|
+
char flag_path[sizeof(kFlagPrefix) + 2 * MODULE_DIGEST_SIZE];
|
302
302
|
if (module_hash_len != 0) {
|
303
|
-
if (module_hash_len !=
|
303
|
+
if (module_hash_len != MODULE_DIGEST_SIZE) {
|
304
304
|
fprintf(stderr,
|
305
|
-
"module hash of length %zu does not match expected length %
|
306
|
-
module_hash_len,
|
305
|
+
"module hash of length %zu does not match expected length %d\n",
|
306
|
+
module_hash_len, MODULE_DIGEST_SIZE);
|
307
307
|
BORINGSSL_FIPS_abort();
|
308
308
|
}
|
309
309
|
|
310
310
|
// Test whether the flag file exists.
|
311
311
|
memcpy(flag_path, kFlagPrefix, sizeof(kFlagPrefix) - 1);
|
312
312
|
static const char kHexTable[17] = "0123456789abcdef";
|
313
|
-
for (size_t i = 0; i <
|
313
|
+
for (size_t i = 0; i < MODULE_DIGEST_SIZE; i++) {
|
314
314
|
flag_path[sizeof(kFlagPrefix) - 1 + 2 * i] =
|
315
315
|
kHexTable[module_hash[i] >> 4];
|
316
316
|
flag_path[sizeof(kFlagPrefix) - 1 + 2 * i + 1] =
|
@@ -125,6 +125,16 @@ WEAK_SYMBOL_FUNC(void*, OPENSSL_memory_alloc, (size_t size));
|
|
125
125
|
WEAK_SYMBOL_FUNC(void, OPENSSL_memory_free, (void *ptr));
|
126
126
|
WEAK_SYMBOL_FUNC(size_t, OPENSSL_memory_get_size, (void *ptr));
|
127
127
|
|
128
|
+
// kBoringSSLBinaryTag is a distinctive byte sequence to identify binaries that
|
129
|
+
// are linking in BoringSSL and, roughly, what version they are using.
|
130
|
+
static const uint8_t kBoringSSLBinaryTag[18] = {
|
131
|
+
// 16 bytes of magic tag.
|
132
|
+
0x8c, 0x62, 0x20, 0x0b, 0xd2, 0xa0, 0x72, 0x58,
|
133
|
+
0x44, 0xa8, 0x96, 0x69, 0xad, 0x55, 0x7e, 0xec,
|
134
|
+
// Current source iteration. Incremented ~monthly.
|
135
|
+
1, 0,
|
136
|
+
};
|
137
|
+
|
128
138
|
void *OPENSSL_malloc(size_t size) {
|
129
139
|
if (OPENSSL_memory_alloc != NULL) {
|
130
140
|
assert(OPENSSL_memory_free != NULL);
|
@@ -133,6 +143,14 @@ void *OPENSSL_malloc(size_t size) {
|
|
133
143
|
}
|
134
144
|
|
135
145
|
if (size + OPENSSL_MALLOC_PREFIX < size) {
|
146
|
+
// |OPENSSL_malloc| is a central function in BoringSSL thus a reference to
|
147
|
+
// |kBoringSSLBinaryTag| is created here so that the tag isn't discarded by
|
148
|
+
// the linker. The following is sufficient to stop GCC, Clang, and MSVC
|
149
|
+
// optimising away the reference at the time of writing. Since this
|
150
|
+
// probably results in an actual memory reference, it is put in this very
|
151
|
+
// rare code path.
|
152
|
+
uint8_t unused = *(volatile uint8_t *)kBoringSSLBinaryTag;
|
153
|
+
(void) unused;
|
136
154
|
return NULL;
|
137
155
|
}
|
138
156
|
|
@@ -18,18 +18,22 @@
|
|
18
18
|
#include <openssl/lhash.h>
|
19
19
|
#include <openssl/thread.h>
|
20
20
|
|
21
|
+
#include "../lhash/internal.h"
|
22
|
+
|
23
|
+
|
21
24
|
#if defined(__cplusplus)
|
22
25
|
extern "C" {
|
23
26
|
#endif
|
24
27
|
|
25
28
|
|
26
|
-
|
29
|
+
DEFINE_LHASH_OF(CRYPTO_BUFFER)
|
27
30
|
|
28
31
|
struct crypto_buffer_st {
|
29
32
|
CRYPTO_BUFFER_POOL *pool;
|
30
33
|
uint8_t *data;
|
31
34
|
size_t len;
|
32
35
|
CRYPTO_refcount_t references;
|
36
|
+
int data_is_static;
|
33
37
|
};
|
34
38
|
|
35
39
|
struct crypto_buffer_pool_st {
|