grpc 1.41.0.pre2 → 1.42.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 +57 -44
- data/etc/roots.pem +335 -326
- data/include/grpc/event_engine/event_engine.h +82 -42
- data/include/grpc/event_engine/internal/memory_allocator_impl.h +98 -0
- data/include/grpc/event_engine/memory_allocator.h +210 -0
- data/include/grpc/grpc.h +4 -0
- data/include/grpc/grpc_security.h +18 -0
- data/include/grpc/grpc_security_constants.h +1 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +18 -19
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -1
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +71 -89
- data/src/core/ext/filters/client_channel/client_channel.cc +187 -252
- data/src/core/ext/filters/client_channel/client_channel.h +74 -27
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +1 -1
- data/src/core/ext/filters/client_channel/client_channel_factory.h +17 -19
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +8 -14
- data/src/core/ext/filters/client_channel/config_selector.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -5
- data/src/core/ext/filters/client_channel/connector.h +18 -18
- data/src/core/ext/filters/client_channel/dynamic_filters.cc +1 -1
- data/src/core/ext/filters/client_channel/global_subchannel_pool.h +0 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +12 -11
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -15
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +166 -82
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +4 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -4
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +23 -7
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -10
- 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/rls/rls.cc +2502 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +7 -16
- data/src/core/ext/filters/client_channel/lb_policy.h +11 -1
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +139 -0
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +11 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +12 -39
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +21 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +3 -1
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +77 -68
- data/src/core/ext/filters/client_channel/resolver.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
- data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -8
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +1 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +48 -86
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +17 -48
- data/src/core/ext/filters/client_channel/server_address.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +49 -36
- data/src/core/ext/filters/client_channel/subchannel.cc +85 -143
- data/src/core/ext/filters/client_channel/subchannel.h +29 -49
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.cc +22 -7
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +11 -2
- data/src/core/ext/filters/client_idle/client_idle_filter.cc +27 -210
- data/src/core/ext/filters/client_idle/idle_filter_state.cc +96 -0
- data/src/core/ext/filters/client_idle/idle_filter_state.h +66 -0
- data/src/core/ext/filters/deadline/deadline_filter.cc +23 -26
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -19
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -1
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +41 -44
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -15
- data/src/core/ext/filters/http/http_filters_plugin.cc +53 -71
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +17 -12
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +1 -1
- data/src/core/ext/filters/http/server/http_server_filter.cc +72 -69
- data/src/core/ext/filters/max_age/max_age_filter.cc +24 -26
- data/src/core/ext/filters/message_size/message_size_filter.cc +19 -16
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/{filters/client_channel → service_config}/service_config.cc +2 -2
- data/src/core/ext/{filters/client_channel → service_config}/service_config.h +4 -4
- data/src/core/ext/service_config/service_config_call_data.h +72 -0
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.cc +3 -3
- data/src/core/ext/{filters/client_channel → service_config}/service_config_parser.h +8 -6
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +19 -24
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +27 -50
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +14 -16
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +59 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +19 -16
- data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_constants.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +41 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +136 -98
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +27 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -25
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +37 -30
- data/src/core/ext/transport/chttp2/transport/internal.h +4 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +30 -173
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +1 -1
- data/src/core/ext/transport/chttp2/transport/writing.cc +29 -22
- data/src/core/ext/transport/inproc/inproc_transport.cc +105 -109
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +68 -34
- data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +139 -1
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +16 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +53 -4
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +3 -2
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +15 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +23 -0
- data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +14 -11
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +17 -0
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +15 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +49 -19
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c +55 -0
- data/src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.h +154 -0
- data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +0 -2
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/annotations/v3/status.upb.h +182 -0
- data/src/core/ext/upb-generated/xds/core/v3/authority.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/context_params.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c +1 -1
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +58 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +130 -0
- data/src/core/ext/upb-generated/{udpa/type/v1 → xds/type/v3}/typed_struct.upb.c +7 -7
- data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.h +83 -0
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +310 -286
- data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +10 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +101 -88
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +59 -56
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +59 -46
- data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +78 -82
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +323 -316
- data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +19 -23
- data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +4 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +5 -3
- data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +5 -4
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.h +50 -0
- data/src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c +13 -12
- data/src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c +25 -24
- data/src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c +16 -15
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c +17 -16
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c +33 -32
- data/src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c +19 -18
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +45 -0
- data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.h +35 -0
- data/src/core/ext/xds/xds_api.cc +325 -362
- data/src/core/ext/xds/xds_api.h +134 -82
- data/src/core/ext/xds/xds_bootstrap.h +10 -0
- data/src/core/ext/xds/xds_certificate_provider.cc +3 -3
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +113 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.h +52 -0
- data/src/core/ext/xds/xds_client.cc +527 -314
- data/src/core/ext/xds/xds_client.h +42 -37
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_server_config_fetcher.cc +5 -7
- data/src/core/lib/address_utils/parse_address.cc +2 -0
- data/src/core/lib/avl/avl.cc +5 -5
- data/src/core/lib/backoff/backoff.cc +1 -1
- data/src/core/lib/channel/channel_args.cc +24 -6
- data/src/core/lib/channel/channel_args.h +9 -0
- data/src/core/lib/channel/channel_stack_builder.cc +3 -3
- data/src/core/lib/channel/channel_trace.cc +1 -1
- data/src/core/lib/channel/channel_trace.h +1 -1
- data/src/core/lib/channel/channelz.cc +3 -3
- data/src/core/lib/channel/channelz.h +2 -2
- data/src/core/lib/channel/channelz_registry.cc +1 -1
- data/src/core/lib/channel/channelz_registry.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +1 -3
- data/src/core/lib/channel/connected_channel.h +1 -2
- data/src/core/lib/compression/compression.cc +2 -2
- data/src/core/lib/compression/compression_args.cc +6 -4
- data/src/core/lib/compression/compression_internal.cc +2 -2
- data/src/core/lib/compression/compression_internal.h +1 -1
- data/src/core/lib/config/core_configuration.cc +44 -2
- data/src/core/lib/config/core_configuration.h +39 -1
- data/src/core/lib/debug/stats.cc +1 -1
- data/src/core/lib/debug/stats_data.cc +13 -13
- data/src/core/lib/gpr/atm.cc +1 -1
- data/src/core/lib/gpr/cpu_posix.cc +1 -1
- data/src/core/lib/gpr/string.cc +2 -2
- data/src/core/lib/gpr/tls.h +1 -1
- data/src/core/lib/gpr/useful.h +79 -32
- data/src/core/lib/gprpp/arena.h +10 -0
- data/src/core/lib/gprpp/bitset.h +38 -16
- data/src/core/lib/gprpp/chunked_vector.h +211 -0
- data/src/core/lib/gprpp/construct_destruct.h +1 -1
- data/src/core/lib/gprpp/match.h +1 -1
- data/src/core/lib/gprpp/memory.h +6 -0
- data/src/core/lib/gprpp/overload.h +1 -1
- data/src/core/lib/gprpp/status_helper.cc +23 -3
- data/src/core/lib/gprpp/status_helper.h +12 -1
- data/src/core/lib/gprpp/table.h +411 -0
- data/src/core/lib/http/httpcli.cc +200 -182
- data/src/core/lib/http/parser.cc +2 -2
- data/src/core/lib/iomgr/call_combiner.cc +28 -10
- data/src/core/lib/iomgr/combiner.cc +6 -21
- data/src/core/lib/iomgr/endpoint_cfstream.cc +7 -6
- data/src/core/lib/iomgr/error.cc +113 -52
- data/src/core/lib/iomgr/error.h +50 -9
- data/src/core/lib/iomgr/error_cfstream.cc +5 -0
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +3 -2
- data/src/core/lib/iomgr/ev_epollex_linux.cc +7 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +29 -20
- data/src/core/lib/iomgr/event_engine/closure.cc +41 -18
- data/src/core/lib/iomgr/event_engine/closure.h +10 -1
- data/src/core/lib/iomgr/event_engine/endpoint.cc +3 -3
- data/src/core/lib/iomgr/event_engine/iomgr.cc +1 -1
- data/src/core/lib/iomgr/event_engine/pollset.cc +5 -4
- data/src/core/lib/iomgr/event_engine/resolver.cc +10 -7
- data/src/core/lib/iomgr/event_engine/tcp.cc +9 -8
- data/src/core/lib/iomgr/event_engine/timer.cc +7 -2
- data/src/core/lib/iomgr/exec_ctx.cc +1 -9
- data/src/core/lib/iomgr/executor/mpmcqueue.cc +5 -7
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -8
- data/src/core/lib/iomgr/executor.cc +6 -20
- data/src/core/lib/iomgr/iomgr.cc +3 -1
- data/src/core/lib/iomgr/iomgr_internal.cc +4 -9
- data/src/core/lib/iomgr/iomgr_internal.h +3 -2
- data/src/core/lib/iomgr/load_file.cc +2 -2
- data/src/core/lib/iomgr/lockfree_event.cc +18 -0
- data/src/core/lib/iomgr/pollset_custom.cc +1 -1
- data/src/core/lib/iomgr/pollset_custom.h +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +5 -7
- data/src/core/lib/iomgr/resource_quota.cc +13 -11
- data/src/core/lib/iomgr/socket_factory_posix.cc +2 -2
- data/src/core/lib/iomgr/socket_mutator.cc +2 -2
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -3
- data/src/core/lib/iomgr/tcp_client_custom.cc +1 -1
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -18
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
- data/src/core/lib/iomgr/tcp_posix.cc +4 -5
- data/src/core/lib/iomgr/tcp_server_custom.cc +2 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -4
- data/src/core/lib/iomgr/tcp_server_windows.cc +4 -5
- data/src/core/lib/iomgr/tcp_windows.cc +2 -2
- data/src/core/lib/iomgr/timer_generic.cc +13 -13
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/json/json_util.cc +68 -0
- data/src/core/lib/json/json_util.h +57 -99
- data/src/core/lib/json/json_writer.cc +0 -3
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +14 -12
- data/src/core/lib/security/authorization/sdk_server_authz_filter.cc +13 -1
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/credentials.cc +4 -2
- data/src/core/lib/security/credentials/credentials.h +6 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +47 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -9
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -2
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
- data/src/core/lib/security/security_connector/security_connector.cc +9 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +0 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +5 -5
- data/src/core/lib/security/transport/security_handshaker.cc +73 -43
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -5
- data/src/core/lib/security/transport/tsi_error.cc +3 -5
- data/src/core/lib/slice/slice.cc +0 -16
- data/src/core/lib/slice/slice_api.cc +39 -0
- data/src/core/lib/slice/slice_buffer.cc +5 -5
- data/src/core/lib/slice/slice_intern.cc +8 -13
- data/src/core/lib/slice/slice_internal.h +1 -244
- data/src/core/lib/slice/slice_refcount.cc +17 -0
- data/src/core/lib/slice/slice_refcount.h +121 -0
- data/src/core/lib/slice/slice_refcount_base.h +173 -0
- data/src/core/lib/slice/slice_split.cc +100 -0
- data/src/core/lib/slice/slice_split.h +40 -0
- data/src/core/lib/slice/slice_string_helpers.cc +0 -83
- data/src/core/lib/slice/slice_string_helpers.h +0 -11
- data/src/core/lib/slice/static_slice.cc +529 -0
- data/src/core/lib/slice/static_slice.h +331 -0
- data/src/core/lib/surface/builtins.cc +49 -0
- data/src/core/{ext/filters/workarounds/workaround_cronet_compression_filter.h → lib/surface/builtins.h} +8 -9
- data/src/core/lib/surface/call.cc +103 -120
- data/src/core/lib/surface/call.h +0 -6
- data/src/core/lib/surface/channel.cc +19 -32
- data/src/core/lib/surface/channel.h +0 -9
- data/src/core/lib/surface/channel_init.cc +23 -76
- data/src/core/lib/surface/channel_init.h +52 -44
- data/src/core/lib/surface/completion_queue.cc +6 -5
- data/src/core/lib/surface/init.cc +0 -39
- data/src/core/lib/surface/init_secure.cc +17 -14
- data/src/core/lib/surface/lame_client.cc +18 -11
- data/src/core/lib/surface/lame_client.h +1 -1
- data/src/core/lib/surface/server.cc +25 -17
- data/src/core/lib/surface/server.h +17 -10
- data/src/core/lib/surface/validate_metadata.cc +5 -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/error_utils.cc +42 -17
- data/src/core/lib/transport/error_utils.h +1 -1
- data/src/core/lib/transport/metadata.cc +31 -10
- data/src/core/lib/transport/metadata.h +2 -1
- data/src/core/lib/transport/metadata_batch.cc +35 -371
- data/src/core/lib/transport/metadata_batch.h +905 -71
- data/src/core/lib/transport/parsed_metadata.h +263 -0
- data/src/core/lib/transport/pid_controller.cc +4 -4
- data/src/core/lib/transport/static_metadata.cc +714 -846
- data/src/core/lib/transport/static_metadata.h +115 -379
- data/src/core/lib/transport/status_metadata.cc +1 -0
- data/src/core/lib/transport/transport.cc +4 -5
- data/src/core/lib/transport/transport_op_string.cc +40 -20
- data/src/core/plugin_registry/grpc_plugin_registry.cc +64 -43
- data/src/core/tsi/alts/crypt/aes_gcm.cc +3 -1
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +13 -12
- data/src/core/tsi/alts/frame_protector/frame_handler.cc +10 -11
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +12 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +2 -2
- data/src/core/tsi/fake_transport_security.cc +15 -7
- data/src/core/tsi/local_transport_security.cc +36 -73
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +16 -50
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -3
- data/src/core/tsi/ssl_transport_security.cc +10 -2
- data/src/core/tsi/transport_security.cc +12 -0
- data/src/core/tsi/transport_security.h +16 -1
- data/src/core/tsi/transport_security_interface.h +26 -0
- data/src/ruby/ext/grpc/extconf.rb +12 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -2
- data/src/ruby/spec/client_server_spec.rb +1 -1
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +4 -4
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +11 -6
- data/third_party/address_sorting/address_sorting_posix.c +1 -0
- data/third_party/boringssl-with-bazel/err_data.c +278 -272
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +21 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +15 -22
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +19 -29
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/a_strex.c +268 -271
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +106 -153
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +0 -39
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/{x509 → asn1}/charmap.h +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +38 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +289 -198
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +9 -13
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +1 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -17
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +4 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +9 -0
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +38 -47
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +45 -65
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +21 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +5 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +10 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/des.c +10 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/des/internal.h +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +4 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +24 -9
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +35 -35
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +11 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +10 -37
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +12 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +0 -9
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/internal.h +16 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +151 -12
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +181 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +246 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +11 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +0 -179
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +11 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +0 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +22 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +11 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +16 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_int.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +24 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +17 -8
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +6 -6
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +112 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +71 -26
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +366 -227
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +2 -9
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +10 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +3 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +9 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +8 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/hkdf.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +9 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +12 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +37 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +28 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +31 -32
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +529 -91
- data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +16 -695
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +48 -8
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +266 -357
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +90 -152
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +75 -79
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +96 -97
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +63 -43
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +6 -12
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +14 -17
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +14 -27
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +203 -203
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +30 -41
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +47 -33
- data/third_party/re2/re2/compile.cc +91 -109
- data/third_party/re2/re2/dfa.cc +27 -39
- data/third_party/re2/re2/filtered_re2.cc +18 -2
- data/third_party/re2/re2/filtered_re2.h +10 -5
- data/third_party/re2/re2/nfa.cc +1 -1
- data/third_party/re2/re2/parse.cc +42 -23
- data/third_party/re2/re2/perl_groups.cc +34 -34
- data/third_party/re2/re2/prefilter.cc +3 -2
- data/third_party/re2/re2/prog.cc +182 -4
- data/third_party/re2/re2/prog.h +28 -9
- data/third_party/re2/re2/re2.cc +87 -118
- data/third_party/re2/re2/re2.h +156 -141
- data/third_party/re2/re2/regexp.cc +12 -5
- data/third_party/re2/re2/regexp.h +8 -2
- data/third_party/re2/re2/set.cc +31 -9
- data/third_party/re2/re2/set.h +9 -4
- data/third_party/re2/re2/simplify.cc +11 -3
- data/third_party/re2/re2/tostring.cc +1 -1
- data/third_party/re2/re2/walker-inl.h +1 -1
- data/third_party/re2/util/mutex.h +2 -2
- data/third_party/re2/util/pcre.h +3 -3
- metadata +81 -68
- data/include/grpc/event_engine/slice_allocator.h +0 -71
- data/src/core/ext/filters/client_channel/service_config_call_data.h +0 -126
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +0 -211
- data/src/core/ext/filters/workarounds/workaround_utils.cc +0 -53
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -39
- data/src/core/ext/transport/chttp2/client/authority.cc +0 -42
- data/src/core/ext/transport/chttp2/client/authority.h +0 -36
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.cc +0 -67
- data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +0 -74
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +0 -66
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +0 -58
- data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +0 -130
- data/src/core/ext/upb-generated/udpa/type/v1/typed_struct.upb.h +0 -83
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.c +0 -44
- data/src/core/ext/upbdefs-generated/udpa/type/v1/typed_struct.upbdefs.h +0 -35
- data/src/core/lib/iomgr/udp_server.cc +0 -747
- data/src/core/lib/iomgr/udp_server.h +0 -103
- data/src/core/lib/transport/authority_override.cc +0 -40
- data/src/core/lib/transport/authority_override.h +0 -37
@@ -56,98 +56,68 @@
|
|
56
56
|
|
57
57
|
#include <openssl/asn1.h>
|
58
58
|
|
59
|
-
#include <
|
59
|
+
#include <assert.h>
|
60
|
+
#include <stdlib.h>
|
60
61
|
#include <string.h>
|
61
62
|
|
62
63
|
#include <openssl/err.h>
|
63
64
|
#include <openssl/mem.h>
|
64
65
|
#include <openssl/obj.h>
|
65
|
-
#include <openssl/stack.h>
|
66
66
|
|
67
|
-
|
67
|
+
#include "../internal.h"
|
68
|
+
#include "../lhash/internal.h"
|
69
|
+
#include "internal.h"
|
68
70
|
|
69
|
-
static STACK_OF(ASN1_STRING_TABLE) *stable = NULL;
|
70
|
-
static void st_free(ASN1_STRING_TABLE *tbl);
|
71
71
|
|
72
|
-
|
73
|
-
* This is the global mask for the mbstring functions: this is use to mask
|
74
|
-
* out certain types (such as BMPString and UTF8String) because certain
|
75
|
-
* software (e.g. Netscape) has problems with them.
|
76
|
-
*/
|
72
|
+
DEFINE_LHASH_OF(ASN1_STRING_TABLE)
|
77
73
|
|
78
|
-
static
|
74
|
+
static LHASH_OF(ASN1_STRING_TABLE) *string_tables = NULL;
|
75
|
+
static struct CRYPTO_STATIC_MUTEX string_tables_lock = CRYPTO_STATIC_MUTEX_INIT;
|
79
76
|
|
80
77
|
void ASN1_STRING_set_default_mask(unsigned long mask)
|
81
78
|
{
|
82
|
-
global_mask = mask;
|
83
79
|
}
|
84
80
|
|
85
81
|
unsigned long ASN1_STRING_get_default_mask(void)
|
86
82
|
{
|
87
|
-
return
|
83
|
+
return B_ASN1_UTF8STRING;
|
88
84
|
}
|
89
85
|
|
90
|
-
/*
|
91
|
-
* This function sets the default to various "flavours" of configuration.
|
92
|
-
* based on an ASCII string. Currently this is: MASK:XXXX : a numerical mask
|
93
|
-
* value. nobmp : Don't use BMPStrings (just Printable, T61). pkix : PKIX
|
94
|
-
* recommendation in RFC2459. utf8only : only use UTF8Strings (RFC2459
|
95
|
-
* recommendation for 2004). default: the default value, Printable, T61, BMP.
|
96
|
-
*/
|
97
|
-
|
98
86
|
int ASN1_STRING_set_default_mask_asc(const char *p)
|
99
87
|
{
|
100
|
-
unsigned long mask;
|
101
|
-
char *end;
|
102
|
-
if (!strncmp(p, "MASK:", 5)) {
|
103
|
-
if (!p[5])
|
104
|
-
return 0;
|
105
|
-
mask = strtoul(p + 5, &end, 0);
|
106
|
-
if (*end)
|
107
|
-
return 0;
|
108
|
-
} else if (!strcmp(p, "nombstr"))
|
109
|
-
mask = ~((unsigned long)(B_ASN1_BMPSTRING | B_ASN1_UTF8STRING));
|
110
|
-
else if (!strcmp(p, "pkix"))
|
111
|
-
mask = ~((unsigned long)B_ASN1_T61STRING);
|
112
|
-
else if (!strcmp(p, "utf8only"))
|
113
|
-
mask = B_ASN1_UTF8STRING;
|
114
|
-
else if (!strcmp(p, "default"))
|
115
|
-
mask = 0xFFFFFFFFL;
|
116
|
-
else
|
117
|
-
return 0;
|
118
|
-
ASN1_STRING_set_default_mask(mask);
|
119
88
|
return 1;
|
120
89
|
}
|
121
90
|
|
91
|
+
static const ASN1_STRING_TABLE *asn1_string_table_get(int nid);
|
92
|
+
|
122
93
|
/*
|
123
94
|
* The following function generates an ASN1_STRING based on limits in a
|
124
95
|
* table. Frequently the types and length of an ASN1_STRING are restricted by
|
125
96
|
* a corresponding OID. For example certificates and certificate requests.
|
126
97
|
*/
|
127
98
|
|
128
|
-
ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
|
129
|
-
|
130
|
-
int inform, int nid)
|
99
|
+
ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in,
|
100
|
+
int len, int inform, int nid)
|
131
101
|
{
|
132
|
-
ASN1_STRING_TABLE *tbl;
|
133
102
|
ASN1_STRING *str = NULL;
|
134
|
-
unsigned long mask;
|
135
103
|
int ret;
|
136
|
-
if (!out)
|
104
|
+
if (!out) {
|
137
105
|
out = &str;
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
106
|
+
}
|
107
|
+
const ASN1_STRING_TABLE *tbl = asn1_string_table_get(nid);
|
108
|
+
if (tbl != NULL) {
|
109
|
+
unsigned long mask = tbl->mask;
|
110
|
+
if (!(tbl->flags & STABLE_NO_MASK)) {
|
111
|
+
mask &= B_ASN1_UTF8STRING;
|
112
|
+
}
|
113
|
+
ret = ASN1_mbstring_ncopy(out, in, len, inform, mask, tbl->minsize,
|
114
|
+
tbl->maxsize);
|
115
|
+
} else {
|
116
|
+
ret = ASN1_mbstring_copy(out, in, len, inform, B_ASN1_UTF8STRING);
|
117
|
+
}
|
118
|
+
if (ret <= 0) {
|
150
119
|
return NULL;
|
120
|
+
}
|
151
121
|
return *out;
|
152
122
|
}
|
153
123
|
|
@@ -155,15 +125,13 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
|
|
155
125
|
* Now the tables and helper functions for the string table:
|
156
126
|
*/
|
157
127
|
|
158
|
-
/*
|
159
|
-
|
128
|
+
/* See RFC 5280. */
|
160
129
|
#define ub_name 32768
|
161
130
|
#define ub_common_name 64
|
162
131
|
#define ub_locality_name 128
|
163
132
|
#define ub_state_name 128
|
164
133
|
#define ub_organization_name 64
|
165
134
|
#define ub_organization_unit_name 64
|
166
|
-
#define ub_title 64
|
167
135
|
#define ub_email_address 128
|
168
136
|
#define ub_serial_number 64
|
169
137
|
|
@@ -194,120 +162,105 @@ static const ASN1_STRING_TABLE tbl_standard[] = {
|
|
194
162
|
{NID_ms_csp_name, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK}
|
195
163
|
};
|
196
164
|
|
197
|
-
static int
|
198
|
-
const ASN1_STRING_TABLE **b)
|
165
|
+
static int table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b)
|
199
166
|
{
|
200
|
-
|
167
|
+
if (a->nid < b->nid) {
|
168
|
+
return -1;
|
169
|
+
}
|
170
|
+
if (a->nid > b->nid) {
|
171
|
+
return 1;
|
172
|
+
}
|
173
|
+
return 0;
|
201
174
|
}
|
202
175
|
|
203
|
-
static int
|
176
|
+
static int table_cmp_void(const void *a, const void *b)
|
204
177
|
{
|
205
|
-
|
206
|
-
const ASN1_STRING_TABLE *b = in_b;
|
207
|
-
return a->nid - b->nid;
|
178
|
+
return table_cmp(a, b);
|
208
179
|
}
|
209
180
|
|
210
|
-
ASN1_STRING_TABLE *
|
181
|
+
static uint32_t table_hash(const ASN1_STRING_TABLE *tbl)
|
211
182
|
{
|
212
|
-
|
213
|
-
size_t idx;
|
214
|
-
ASN1_STRING_TABLE *ttmp;
|
215
|
-
ASN1_STRING_TABLE fnd;
|
216
|
-
fnd.nid = nid;
|
217
|
-
|
218
|
-
ttmp =
|
219
|
-
bsearch(&fnd, tbl_standard,
|
220
|
-
sizeof(tbl_standard) / sizeof(ASN1_STRING_TABLE),
|
221
|
-
sizeof(ASN1_STRING_TABLE), table_cmp);
|
222
|
-
if (ttmp)
|
223
|
-
return ttmp;
|
224
|
-
if (!stable)
|
225
|
-
return NULL;
|
226
|
-
sk_ASN1_STRING_TABLE_sort(stable);
|
227
|
-
found = sk_ASN1_STRING_TABLE_find(stable, &idx, &fnd);
|
228
|
-
if (!found)
|
229
|
-
return NULL;
|
230
|
-
return sk_ASN1_STRING_TABLE_value(stable, idx);
|
183
|
+
return OPENSSL_hash32(&tbl->nid, sizeof(tbl->nid));
|
231
184
|
}
|
232
185
|
|
233
|
-
|
234
|
-
long minsize, long maxsize, unsigned long mask,
|
235
|
-
unsigned long flags)
|
186
|
+
static const ASN1_STRING_TABLE *asn1_string_table_get(int nid)
|
236
187
|
{
|
237
|
-
ASN1_STRING_TABLE
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
if (
|
243
|
-
|
244
|
-
return 0;
|
188
|
+
ASN1_STRING_TABLE key;
|
189
|
+
key.nid = nid;
|
190
|
+
const ASN1_STRING_TABLE *tbl =
|
191
|
+
bsearch(&key, tbl_standard, OPENSSL_ARRAY_SIZE(tbl_standard),
|
192
|
+
sizeof(ASN1_STRING_TABLE), table_cmp_void);
|
193
|
+
if (tbl != NULL) {
|
194
|
+
return tbl;
|
245
195
|
}
|
246
|
-
if (!(tmp = ASN1_STRING_TABLE_get(nid))) {
|
247
|
-
tmp = OPENSSL_malloc(sizeof(ASN1_STRING_TABLE));
|
248
|
-
if (!tmp) {
|
249
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
250
|
-
return 0;
|
251
|
-
}
|
252
|
-
tmp->flags = flags | STABLE_FLAGS_MALLOC;
|
253
|
-
tmp->nid = nid;
|
254
|
-
tmp->minsize = tmp->maxsize = -1;
|
255
|
-
new_nid = 1;
|
256
|
-
} else
|
257
|
-
tmp->flags = (tmp->flags & STABLE_FLAGS_MALLOC) | flags;
|
258
|
-
if (minsize != -1)
|
259
|
-
tmp->minsize = minsize;
|
260
|
-
if (maxsize != -1)
|
261
|
-
tmp->maxsize = maxsize;
|
262
|
-
tmp->mask = mask;
|
263
|
-
if (new_nid)
|
264
|
-
sk_ASN1_STRING_TABLE_push(stable, tmp);
|
265
|
-
return 1;
|
266
|
-
}
|
267
196
|
|
268
|
-
|
269
|
-
{
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
197
|
+
CRYPTO_STATIC_MUTEX_lock_read(&string_tables_lock);
|
198
|
+
if (string_tables != NULL) {
|
199
|
+
tbl = lh_ASN1_STRING_TABLE_retrieve(string_tables, &key);
|
200
|
+
}
|
201
|
+
CRYPTO_STATIC_MUTEX_unlock_read(&string_tables_lock);
|
202
|
+
/* Note returning |tbl| without the lock is only safe because
|
203
|
+
* |ASN1_STRING_TABLE_add| cannot modify or delete existing entries. If we
|
204
|
+
* wish to support that, this function must copy the result under a lock. */
|
205
|
+
return tbl;
|
276
206
|
}
|
277
207
|
|
278
|
-
|
208
|
+
int ASN1_STRING_TABLE_add(int nid, long minsize, long maxsize,
|
209
|
+
unsigned long mask, unsigned long flags)
|
279
210
|
{
|
280
|
-
|
281
|
-
|
282
|
-
|
211
|
+
/* Existing entries cannot be overwritten. */
|
212
|
+
if (asn1_string_table_get(nid) != NULL) {
|
213
|
+
OPENSSL_PUT_ERROR(ASN1, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
|
214
|
+
return 0;
|
215
|
+
}
|
283
216
|
|
284
|
-
|
217
|
+
int ret = 0;
|
218
|
+
CRYPTO_STATIC_MUTEX_lock_write(&string_tables_lock);
|
285
219
|
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
220
|
+
if (string_tables == NULL) {
|
221
|
+
string_tables = lh_ASN1_STRING_TABLE_new(table_hash, table_cmp);
|
222
|
+
if (string_tables == NULL) {
|
223
|
+
goto err;
|
224
|
+
}
|
225
|
+
} else {
|
226
|
+
/* Check again for an existing entry. One may have been added while
|
227
|
+
* unlocked. */
|
228
|
+
ASN1_STRING_TABLE key;
|
229
|
+
key.nid = nid;
|
230
|
+
if (lh_ASN1_STRING_TABLE_retrieve(string_tables, &key) != NULL) {
|
231
|
+
OPENSSL_PUT_ERROR(ASN1, ERR_R_SHOULD_NOT_HAVE_BEEN_CALLED);
|
232
|
+
goto err;
|
296
233
|
}
|
297
|
-
last_nid = tmp->nid;
|
298
234
|
}
|
299
235
|
|
300
|
-
|
301
|
-
|
302
|
-
|
236
|
+
ASN1_STRING_TABLE *tbl = OPENSSL_malloc(sizeof(ASN1_STRING_TABLE));
|
237
|
+
if (tbl == NULL) {
|
238
|
+
goto err;
|
303
239
|
}
|
240
|
+
tbl->nid = nid;
|
241
|
+
tbl->flags = flags;
|
242
|
+
tbl->minsize = minsize;
|
243
|
+
tbl->maxsize = maxsize;
|
244
|
+
tbl->mask = mask;
|
245
|
+
ASN1_STRING_TABLE *old_tbl;
|
246
|
+
if (!lh_ASN1_STRING_TABLE_insert(string_tables, &old_tbl, tbl)) {
|
247
|
+
OPENSSL_free(tbl);
|
248
|
+
goto err;
|
249
|
+
}
|
250
|
+
assert(old_tbl == NULL);
|
251
|
+
ret = 1;
|
304
252
|
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
253
|
+
err:
|
254
|
+
CRYPTO_STATIC_MUTEX_unlock_write(&string_tables_lock);
|
255
|
+
return ret;
|
256
|
+
}
|
309
257
|
|
310
|
-
|
258
|
+
void ASN1_STRING_TABLE_cleanup(void)
|
259
|
+
{
|
311
260
|
}
|
312
261
|
|
313
|
-
|
262
|
+
void asn1_get_string_table_for_testing(const ASN1_STRING_TABLE **out_ptr,
|
263
|
+
size_t *out_len) {
|
264
|
+
*out_ptr = tbl_standard;
|
265
|
+
*out_len = OPENSSL_ARRAY_SIZE(tbl_standard);
|
266
|
+
}
|
@@ -200,7 +200,7 @@ static int asn1_time_to_tm(struct tm *tm, const ASN1_TIME *t)
|
|
200
200
|
return 0;
|
201
201
|
}
|
202
202
|
|
203
|
-
int ASN1_TIME_diff(int *
|
203
|
+
int ASN1_TIME_diff(int *out_days, int *out_seconds,
|
204
204
|
const ASN1_TIME *from, const ASN1_TIME *to)
|
205
205
|
{
|
206
206
|
struct tm tm_from, tm_to;
|
@@ -208,5 +208,5 @@ int ASN1_TIME_diff(int *pday, int *psec,
|
|
208
208
|
return 0;
|
209
209
|
if (!asn1_time_to_tm(&tm_to, to))
|
210
210
|
return 0;
|
211
|
-
return OPENSSL_gmtime_diff(
|
211
|
+
return OPENSSL_gmtime_diff(out_days, out_seconds, &tm_from, &tm_to);
|
212
212
|
}
|
@@ -262,42 +262,3 @@ int ASN1_UTCTIME_cmp_time_t(const ASN1_UTCTIME *s, time_t t)
|
|
262
262
|
return -1;
|
263
263
|
return 0;
|
264
264
|
}
|
265
|
-
|
266
|
-
#if 0
|
267
|
-
time_t ASN1_UTCTIME_get(const ASN1_UTCTIME *s)
|
268
|
-
{
|
269
|
-
struct tm tm;
|
270
|
-
int offset;
|
271
|
-
|
272
|
-
OPENSSL_memset(&tm, '\0', sizeof tm);
|
273
|
-
|
274
|
-
# define g2(p) (((p)[0]-'0')*10+(p)[1]-'0')
|
275
|
-
tm.tm_year = g2(s->data);
|
276
|
-
if (tm.tm_year < 50)
|
277
|
-
tm.tm_year += 100;
|
278
|
-
tm.tm_mon = g2(s->data + 2) - 1;
|
279
|
-
tm.tm_mday = g2(s->data + 4);
|
280
|
-
tm.tm_hour = g2(s->data + 6);
|
281
|
-
tm.tm_min = g2(s->data + 8);
|
282
|
-
tm.tm_sec = g2(s->data + 10);
|
283
|
-
if (s->data[12] == 'Z')
|
284
|
-
offset = 0;
|
285
|
-
else {
|
286
|
-
offset = g2(s->data + 13) * 60 + g2(s->data + 15);
|
287
|
-
if (s->data[12] == '-')
|
288
|
-
offset = -offset;
|
289
|
-
}
|
290
|
-
# undef g2
|
291
|
-
|
292
|
-
return mktime(&tm) - offset * 60; /* FIXME: mktime assumes the current
|
293
|
-
* timezone instead of UTC, and unless
|
294
|
-
* we rewrite OpenSSL in Lisp we cannot
|
295
|
-
* locally change the timezone without
|
296
|
-
* possibly interfering with other
|
297
|
-
* parts of the program. timegm, which
|
298
|
-
* uses UTC, is non-standard. Also
|
299
|
-
* time_t is inappropriate for general
|
300
|
-
* UTC times because it may a 32 bit
|
301
|
-
* type. */
|
302
|
-
}
|
303
|
-
#endif
|
File without changes
|
@@ -123,15 +123,31 @@ int ASN1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in, long len,
|
|
123
123
|
const ASN1_ITEM *it, int tag, int aclass, char opt,
|
124
124
|
ASN1_TLC *ctx);
|
125
125
|
|
126
|
+
/* ASN1_item_ex_i2d encodes |*pval| as a value of type |it| to |out| under the
|
127
|
+
* i2d output convention. It returns a non-zero length on success and -1 on
|
128
|
+
* error. If |tag| is -1. the tag and class come from |it|. Otherwise, the tag
|
129
|
+
* number is |tag| and the class is |aclass|. This is used for implicit tagging.
|
130
|
+
* This function treats a missing value as an error, not an optional field. */
|
126
131
|
int ASN1_item_ex_i2d(ASN1_VALUE **pval, unsigned char **out,
|
127
132
|
const ASN1_ITEM *it, int tag, int aclass);
|
133
|
+
|
128
134
|
void ASN1_primitive_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
129
135
|
|
136
|
+
/* asn1_get_choice_selector returns the CHOICE selector value for |*pval|, which
|
137
|
+
* must of type |it|. */
|
130
138
|
int asn1_get_choice_selector(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
139
|
+
|
131
140
|
int asn1_set_choice_selector(ASN1_VALUE **pval, int value, const ASN1_ITEM *it);
|
132
141
|
|
142
|
+
/* asn1_get_field_ptr returns a pointer to the field in |*pval| corresponding to
|
143
|
+
* |tt|. */
|
133
144
|
ASN1_VALUE **asn1_get_field_ptr(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt);
|
134
145
|
|
146
|
+
/* asn1_do_adb returns the |ASN1_TEMPLATE| for the ANY DEFINED BY field |tt|,
|
147
|
+
* based on the selector INTEGER or OID in |*pval|. If |tt| is not an ADB field,
|
148
|
+
* it returns |tt|. If the selector does not match any value, it returns NULL.
|
149
|
+
* If |nullerr| is non-zero, it will additionally push an error to the error
|
150
|
+
* queue when there is no match. */
|
135
151
|
const ASN1_TEMPLATE *asn1_do_adb(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt,
|
136
152
|
int nullerr);
|
137
153
|
|
@@ -140,8 +156,13 @@ int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
|
140
156
|
|
141
157
|
void asn1_enc_init(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
142
158
|
void asn1_enc_free(ASN1_VALUE **pval, const ASN1_ITEM *it);
|
159
|
+
|
160
|
+
/* asn1_enc_restore, if |*pval| has a saved encoding, writes it to |out| under
|
161
|
+
* the i2d output convention, sets |*len| to the length, and returns one. If it
|
162
|
+
* has no saved encoding, it returns zero. */
|
143
163
|
int asn1_enc_restore(int *len, unsigned char **out, ASN1_VALUE **pval,
|
144
164
|
const ASN1_ITEM *it);
|
165
|
+
|
145
166
|
int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
|
146
167
|
const ASN1_ITEM *it);
|
147
168
|
|
@@ -150,6 +171,23 @@ int asn1_enc_save(ASN1_VALUE **pval, const unsigned char *in, int inlen,
|
|
150
171
|
* a pointer. */
|
151
172
|
const void *asn1_type_value_as_pointer(const ASN1_TYPE *a);
|
152
173
|
|
174
|
+
/* asn1_is_printable returns one if |value| is a valid Unicode codepoint for an
|
175
|
+
* ASN.1 PrintableString, and zero otherwise. */
|
176
|
+
int asn1_is_printable(uint32_t value);
|
177
|
+
|
178
|
+
typedef struct {
|
179
|
+
int nid;
|
180
|
+
long minsize;
|
181
|
+
long maxsize;
|
182
|
+
unsigned long mask;
|
183
|
+
unsigned long flags;
|
184
|
+
} ASN1_STRING_TABLE;
|
185
|
+
|
186
|
+
/* asn1_get_string_table_for_testing sets |*out_ptr| and |*out_len| to the table
|
187
|
+
* of built-in |ASN1_STRING_TABLE| values. It is exported for testing. */
|
188
|
+
OPENSSL_EXPORT void asn1_get_string_table_for_testing(
|
189
|
+
const ASN1_STRING_TABLE **out_ptr, size_t *out_len);
|
190
|
+
|
153
191
|
|
154
192
|
#if defined(__cplusplus)
|
155
193
|
} /* extern C */
|
@@ -170,8 +170,6 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
170
170
|
{
|
171
171
|
const ASN1_TEMPLATE *tt, *errtt = NULL;
|
172
172
|
const ASN1_EXTERN_FUNCS *ef;
|
173
|
-
const ASN1_AUX *aux = it->funcs;
|
174
|
-
ASN1_aux_cb *asn1_cb;
|
175
173
|
const unsigned char *p = NULL, *q;
|
176
174
|
unsigned char oclass;
|
177
175
|
char seq_eoc, seq_nolen, cst, isopt;
|
@@ -183,10 +181,6 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
183
181
|
aclass &= ~ASN1_TFLG_COMBINE;
|
184
182
|
if (!pval)
|
185
183
|
return 0;
|
186
|
-
if (aux && aux->asn1_cb)
|
187
|
-
asn1_cb = aux->asn1_cb;
|
188
|
-
else
|
189
|
-
asn1_cb = 0;
|
190
184
|
|
191
185
|
/*
|
192
186
|
* Bound |len| to comfortably fit in an int. Lengths in this module often
|
@@ -264,7 +258,7 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
264
258
|
ef = it->funcs;
|
265
259
|
return ef->asn1_ex_d2i(pval, in, len, it, tag, aclass, opt, ctx);
|
266
260
|
|
267
|
-
case ASN1_ITYPE_CHOICE:
|
261
|
+
case ASN1_ITYPE_CHOICE: {
|
268
262
|
/*
|
269
263
|
* It never makes sense for CHOICE types to have implicit tagging, so if
|
270
264
|
* tag != -1, then this looks like an error in the template.
|
@@ -274,6 +268,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
274
268
|
goto err;
|
275
269
|
}
|
276
270
|
|
271
|
+
const ASN1_AUX *aux = it->funcs;
|
272
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
277
273
|
if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
|
278
274
|
goto auxerr;
|
279
275
|
|
@@ -327,8 +323,9 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
327
323
|
goto auxerr;
|
328
324
|
*in = p;
|
329
325
|
return 1;
|
326
|
+
}
|
330
327
|
|
331
|
-
case ASN1_ITYPE_SEQUENCE:
|
328
|
+
case ASN1_ITYPE_SEQUENCE: {
|
332
329
|
p = *in;
|
333
330
|
|
334
331
|
/* If no IMPLICIT tagging set to SEQUENCE, UNIVERSAL */
|
@@ -356,6 +353,8 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
356
353
|
goto err;
|
357
354
|
}
|
358
355
|
|
356
|
+
const ASN1_AUX *aux = it->funcs;
|
357
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
359
358
|
if (asn1_cb && !asn1_cb(ASN1_OP_D2I_PRE, pval, it, NULL))
|
360
359
|
goto auxerr;
|
361
360
|
|
@@ -462,6 +461,7 @@ static int asn1_item_ex_d2i(ASN1_VALUE **pval, const unsigned char **in,
|
|
462
461
|
goto auxerr;
|
463
462
|
*in = p;
|
464
463
|
return 1;
|
464
|
+
}
|
465
465
|
|
466
466
|
default:
|
467
467
|
return 0;
|