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
@@ -79,17 +79,11 @@ void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine)
|
|
79
79
|
{
|
80
80
|
const ASN1_TEMPLATE *tt = NULL, *seqtt;
|
81
81
|
const ASN1_EXTERN_FUNCS *ef;
|
82
|
-
const ASN1_AUX *aux = it->funcs;
|
83
|
-
ASN1_aux_cb *asn1_cb;
|
84
82
|
int i;
|
85
83
|
if (!pval)
|
86
84
|
return;
|
87
85
|
if ((it->itype != ASN1_ITYPE_PRIMITIVE) && !*pval)
|
88
86
|
return;
|
89
|
-
if (aux && aux->asn1_cb)
|
90
|
-
asn1_cb = aux->asn1_cb;
|
91
|
-
else
|
92
|
-
asn1_cb = 0;
|
93
87
|
|
94
88
|
switch (it->itype) {
|
95
89
|
|
@@ -104,7 +98,9 @@ void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine)
|
|
104
98
|
ASN1_primitive_free(pval, it);
|
105
99
|
break;
|
106
100
|
|
107
|
-
case ASN1_ITYPE_CHOICE:
|
101
|
+
case ASN1_ITYPE_CHOICE: {
|
102
|
+
const ASN1_AUX *aux = it->funcs;
|
103
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
108
104
|
if (asn1_cb) {
|
109
105
|
i = asn1_cb(ASN1_OP_FREE_PRE, pval, it, NULL);
|
110
106
|
if (i == 2)
|
@@ -124,6 +120,7 @@ void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine)
|
|
124
120
|
*pval = NULL;
|
125
121
|
}
|
126
122
|
break;
|
123
|
+
}
|
127
124
|
|
128
125
|
case ASN1_ITYPE_EXTERN:
|
129
126
|
ef = it->funcs;
|
@@ -131,9 +128,11 @@ void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine)
|
|
131
128
|
ef->asn1_ex_free(pval, it);
|
132
129
|
break;
|
133
130
|
|
134
|
-
case ASN1_ITYPE_SEQUENCE:
|
131
|
+
case ASN1_ITYPE_SEQUENCE: {
|
135
132
|
if (!asn1_refcount_dec_and_test_zero(pval, it))
|
136
133
|
return;
|
134
|
+
const ASN1_AUX *aux = it->funcs;
|
135
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
137
136
|
if (asn1_cb) {
|
138
137
|
i = asn1_cb(ASN1_OP_FREE_PRE, pval, it, NULL);
|
139
138
|
if (i == 2)
|
@@ -162,6 +161,7 @@ void asn1_item_combine_free(ASN1_VALUE **pval, const ASN1_ITEM *it, int combine)
|
|
162
161
|
}
|
163
162
|
break;
|
164
163
|
}
|
164
|
+
}
|
165
165
|
}
|
166
166
|
|
167
167
|
void ASN1_template_free(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt)
|
@@ -95,14 +95,8 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
95
95
|
{
|
96
96
|
const ASN1_TEMPLATE *tt = NULL;
|
97
97
|
const ASN1_EXTERN_FUNCS *ef;
|
98
|
-
const ASN1_AUX *aux = it->funcs;
|
99
|
-
ASN1_aux_cb *asn1_cb;
|
100
98
|
ASN1_VALUE **pseqval;
|
101
99
|
int i;
|
102
|
-
if (aux && aux->asn1_cb)
|
103
|
-
asn1_cb = aux->asn1_cb;
|
104
|
-
else
|
105
|
-
asn1_cb = 0;
|
106
100
|
|
107
101
|
switch (it->itype) {
|
108
102
|
|
@@ -127,7 +121,9 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
127
121
|
goto memerr;
|
128
122
|
break;
|
129
123
|
|
130
|
-
case ASN1_ITYPE_CHOICE:
|
124
|
+
case ASN1_ITYPE_CHOICE: {
|
125
|
+
const ASN1_AUX *aux = it->funcs;
|
126
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
131
127
|
if (asn1_cb) {
|
132
128
|
i = asn1_cb(ASN1_OP_NEW_PRE, pval, it, NULL);
|
133
129
|
if (!i)
|
@@ -146,8 +142,11 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
146
142
|
if (asn1_cb && !asn1_cb(ASN1_OP_NEW_POST, pval, it, NULL))
|
147
143
|
goto auxerr2;
|
148
144
|
break;
|
145
|
+
}
|
149
146
|
|
150
|
-
case ASN1_ITYPE_SEQUENCE:
|
147
|
+
case ASN1_ITYPE_SEQUENCE: {
|
148
|
+
const ASN1_AUX *aux = it->funcs;
|
149
|
+
ASN1_aux_cb *asn1_cb = aux != NULL ? aux->asn1_cb : NULL;
|
151
150
|
if (asn1_cb) {
|
152
151
|
i = asn1_cb(ASN1_OP_NEW_PRE, pval, it, NULL);
|
153
152
|
if (!i)
|
@@ -173,6 +172,7 @@ static int asn1_item_ex_combine_new(ASN1_VALUE **pval, const ASN1_ITEM *it,
|
|
173
172
|
goto auxerr2;
|
174
173
|
break;
|
175
174
|
}
|
175
|
+
}
|
176
176
|
return 1;
|
177
177
|
|
178
178
|
memerr2:
|
@@ -271,7 +271,6 @@ static void asn1_template_clear(ASN1_VALUE **pval, const ASN1_TEMPLATE *tt)
|
|
271
271
|
static int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
|
272
272
|
{
|
273
273
|
ASN1_TYPE *typ;
|
274
|
-
ASN1_STRING *str;
|
275
274
|
int utype;
|
276
275
|
|
277
276
|
if (!it)
|
@@ -308,10 +307,7 @@ static int ASN1_primitive_new(ASN1_VALUE **pval, const ASN1_ITEM *it)
|
|
308
307
|
break;
|
309
308
|
|
310
309
|
default:
|
311
|
-
|
312
|
-
if (it->itype == ASN1_ITYPE_MSTRING && str)
|
313
|
-
str->flags |= ASN1_STRING_FLAG_MSTRING;
|
314
|
-
*pval = (ASN1_VALUE *)str;
|
310
|
+
*pval = (ASN1_VALUE *)ASN1_STRING_type_new(utype);
|
315
311
|
break;
|
316
312
|
}
|
317
313
|
if (*pval)
|
@@ -118,6 +118,7 @@ int asn1_refcount_dec_and_test_zero(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
|
118
118
|
}
|
119
119
|
|
120
120
|
static ASN1_ENCODING *asn1_get_enc_ptr(ASN1_VALUE **pval, const ASN1_ITEM *it) {
|
121
|
+
assert(it->itype == ASN1_ITYPE_SEQUENCE);
|
121
122
|
const ASN1_AUX *aux;
|
122
123
|
if (!pval || !*pval) {
|
123
124
|
return NULL;
|
@@ -265,14 +265,17 @@ static uint8_t base64_ascii_to_bin(uint8_t a) {
|
|
265
265
|
const uint8_t is_slash = constant_time_eq_8(a, '/');
|
266
266
|
const uint8_t is_equals = constant_time_eq_8(a, '=');
|
267
267
|
|
268
|
-
uint8_t ret =
|
269
|
-
ret
|
270
|
-
ret
|
271
|
-
ret
|
272
|
-
ret
|
273
|
-
ret
|
274
|
-
//
|
275
|
-
|
268
|
+
uint8_t ret = 0;
|
269
|
+
ret |= is_upper & (a - 'A'); // [0,26)
|
270
|
+
ret |= is_lower & (a - 'a' + 26); // [26,52)
|
271
|
+
ret |= is_digit & (a - '0' + 52); // [52,62)
|
272
|
+
ret |= is_plus & 62;
|
273
|
+
ret |= is_slash & 63;
|
274
|
+
// Invalid inputs, 'A', and '=' have all been mapped to zero. Map invalid
|
275
|
+
// inputs to 0xff. Note '=' is padding and handled separately by the caller.
|
276
|
+
const uint8_t is_valid =
|
277
|
+
is_upper | is_lower | is_digit | is_plus | is_slash | is_equals;
|
278
|
+
ret |= ~is_valid;
|
276
279
|
return ret;
|
277
280
|
}
|
278
281
|
|
@@ -116,17 +116,11 @@ static int mem_new(BIO *bio) {
|
|
116
116
|
}
|
117
117
|
|
118
118
|
static int mem_free(BIO *bio) {
|
119
|
-
BUF_MEM *b;
|
120
|
-
|
121
|
-
if (bio == NULL) {
|
122
|
-
return 0;
|
123
|
-
}
|
124
|
-
|
125
119
|
if (!bio->shutdown || !bio->init || bio->ptr == NULL) {
|
126
120
|
return 1;
|
127
121
|
}
|
128
122
|
|
129
|
-
b = (BUF_MEM *)bio->ptr;
|
123
|
+
BUF_MEM *b = (BUF_MEM *)bio->ptr;
|
130
124
|
if (bio->flags & BIO_FLAGS_MEM_RDONLY) {
|
131
125
|
b->data = NULL;
|
132
126
|
}
|
@@ -320,7 +320,7 @@ static int conn_new(BIO *bio) {
|
|
320
320
|
bio->init = 0;
|
321
321
|
bio->num = -1;
|
322
322
|
bio->flags = 0;
|
323
|
-
bio->ptr =
|
323
|
+
bio->ptr = BIO_CONNECT_new();
|
324
324
|
return bio->ptr != NULL;
|
325
325
|
}
|
326
326
|
|
@@ -340,10 +340,6 @@ static void conn_close_socket(BIO *bio) {
|
|
340
340
|
}
|
341
341
|
|
342
342
|
static int conn_free(BIO *bio) {
|
343
|
-
if (bio == NULL) {
|
344
|
-
return 0;
|
345
|
-
}
|
346
|
-
|
347
343
|
if (bio->shutdown) {
|
348
344
|
conn_close_socket(bio);
|
349
345
|
}
|
@@ -126,13 +126,7 @@ BIO *BIO_new_fp(FILE *stream, int close_flag) {
|
|
126
126
|
return ret;
|
127
127
|
}
|
128
128
|
|
129
|
-
static int file_new(BIO *bio) { return 1; }
|
130
|
-
|
131
129
|
static int file_free(BIO *bio) {
|
132
|
-
if (bio == NULL) {
|
133
|
-
return 0;
|
134
|
-
}
|
135
|
-
|
136
130
|
if (!bio->shutdown) {
|
137
131
|
return 1;
|
138
132
|
}
|
@@ -279,7 +273,7 @@ static const BIO_METHOD methods_filep = {
|
|
279
273
|
BIO_TYPE_FILE, "FILE pointer",
|
280
274
|
file_write, file_read,
|
281
275
|
NULL /* puts */, file_gets,
|
282
|
-
file_ctrl,
|
276
|
+
file_ctrl, NULL /* create */,
|
283
277
|
file_free, NULL /* callback_ctrl */,
|
284
278
|
};
|
285
279
|
|
@@ -127,12 +127,7 @@ static void bio_destroy_pair(BIO *bio) {
|
|
127
127
|
}
|
128
128
|
|
129
129
|
static int bio_free(BIO *bio) {
|
130
|
-
struct bio_bio_st *b;
|
131
|
-
|
132
|
-
if (bio == NULL) {
|
133
|
-
return 0;
|
134
|
-
}
|
135
|
-
b = bio->ptr;
|
130
|
+
struct bio_bio_st *b = bio->ptr;
|
136
131
|
|
137
132
|
assert(b != NULL);
|
138
133
|
|
@@ -81,19 +81,7 @@ static int closesocket(int sock) {
|
|
81
81
|
}
|
82
82
|
#endif
|
83
83
|
|
84
|
-
static int sock_new(BIO *bio) {
|
85
|
-
bio->init = 0;
|
86
|
-
bio->num = 0;
|
87
|
-
bio->ptr = NULL;
|
88
|
-
bio->flags = 0;
|
89
|
-
return 1;
|
90
|
-
}
|
91
|
-
|
92
84
|
static int sock_free(BIO *bio) {
|
93
|
-
if (bio == NULL) {
|
94
|
-
return 0;
|
95
|
-
}
|
96
|
-
|
97
85
|
if (bio->shutdown) {
|
98
86
|
if (bio->init) {
|
99
87
|
closesocket(bio->num);
|
@@ -105,17 +93,15 @@ static int sock_free(BIO *bio) {
|
|
105
93
|
}
|
106
94
|
|
107
95
|
static int sock_read(BIO *b, char *out, int outl) {
|
108
|
-
int ret = 0;
|
109
|
-
|
110
96
|
if (out == NULL) {
|
111
97
|
return 0;
|
112
98
|
}
|
113
99
|
|
114
100
|
bio_clear_socket_error();
|
115
101
|
#if defined(OPENSSL_WINDOWS)
|
116
|
-
ret = recv(b->num, out, outl, 0);
|
102
|
+
int ret = recv(b->num, out, outl, 0);
|
117
103
|
#else
|
118
|
-
ret = read(b->num, out, outl);
|
104
|
+
int ret = read(b->num, out, outl);
|
119
105
|
#endif
|
120
106
|
BIO_clear_retry_flags(b);
|
121
107
|
if (ret <= 0) {
|
@@ -186,7 +172,7 @@ static const BIO_METHOD methods_sockp = {
|
|
186
172
|
BIO_TYPE_SOCKET, "socket",
|
187
173
|
sock_write, sock_read,
|
188
174
|
NULL /* puts */, NULL /* gets, */,
|
189
|
-
sock_ctrl,
|
175
|
+
sock_ctrl, NULL /* create */,
|
190
176
|
sock_free, NULL /* callback_ctrl */,
|
191
177
|
};
|
192
178
|
|
@@ -42,19 +42,17 @@ static const uint8_t kSigma[10 * 16] = {
|
|
42
42
|
// clang-format on
|
43
43
|
};
|
44
44
|
|
45
|
-
#define RIGHT_ROTATE(v, n) (((v) >> (n)) | ((v) << (64 - (n))))
|
46
|
-
|
47
45
|
// https://tools.ietf.org/html/rfc7693#section-3.1
|
48
46
|
static void blake2b_mix(uint64_t v[16], int a, int b, int c, int d, uint64_t x,
|
49
47
|
uint64_t y) {
|
50
48
|
v[a] = v[a] + v[b] + x;
|
51
|
-
v[d] =
|
49
|
+
v[d] = CRYPTO_rotr_u64(v[d] ^ v[a], 32);
|
52
50
|
v[c] = v[c] + v[d];
|
53
|
-
v[b] =
|
51
|
+
v[b] = CRYPTO_rotr_u64(v[b] ^ v[c], 24);
|
54
52
|
v[a] = v[a] + v[b] + y;
|
55
|
-
v[d] =
|
53
|
+
v[d] = CRYPTO_rotr_u64(v[d] ^ v[a], 16);
|
56
54
|
v[c] = v[c] + v[d];
|
57
|
-
v[b] =
|
55
|
+
v[b] = CRYPTO_rotr_u64(v[b] ^ v[c], 63);
|
58
56
|
}
|
59
57
|
|
60
58
|
static void blake2b_transform(
|
@@ -404,6 +404,15 @@ int CBB_add_bytes(CBB *cbb, const uint8_t *data, size_t len) {
|
|
404
404
|
return 1;
|
405
405
|
}
|
406
406
|
|
407
|
+
int CBB_add_zeros(CBB *cbb, size_t len) {
|
408
|
+
uint8_t *out;
|
409
|
+
if (!CBB_add_space(cbb, &out, len)) {
|
410
|
+
return 0;
|
411
|
+
}
|
412
|
+
OPENSSL_memset(out, 0, len);
|
413
|
+
return 1;
|
414
|
+
}
|
415
|
+
|
407
416
|
int CBB_add_space(CBB *cbb, uint8_t **out_data, size_t len) {
|
408
417
|
if (!CBB_flush(cbb) ||
|
409
418
|
!cbb_buffer_add(cbb->base, out_data, len)) {
|
@@ -216,6 +216,14 @@ int CBS_get_u24_length_prefixed(CBS *cbs, CBS *out) {
|
|
216
216
|
return cbs_get_length_prefixed(cbs, out, 3);
|
217
217
|
}
|
218
218
|
|
219
|
+
int CBS_get_until_first(CBS *cbs, CBS *out, uint8_t c) {
|
220
|
+
const uint8_t *split = OPENSSL_memchr(CBS_data(cbs), c, CBS_len(cbs));
|
221
|
+
if (split == NULL) {
|
222
|
+
return 0;
|
223
|
+
}
|
224
|
+
return CBS_get_bytes(cbs, out, split - CBS_data(cbs));
|
225
|
+
}
|
226
|
+
|
219
227
|
// parse_base128_integer reads a big-endian base-128 integer from |cbs| and sets
|
220
228
|
// |*out| to the result. This is the encoding used in DER for both high tag
|
221
229
|
// number form and OID components.
|
@@ -25,22 +25,20 @@
|
|
25
25
|
#include "internal.h"
|
26
26
|
|
27
27
|
|
28
|
-
#define U8TO32_LITTLE(p) \
|
29
|
-
(((uint32_t)((p)[0])) | ((uint32_t)((p)[1]) << 8) | \
|
30
|
-
((uint32_t)((p)[2]) << 16) | ((uint32_t)((p)[3]) << 24))
|
31
|
-
|
32
28
|
// sigma contains the ChaCha constants, which happen to be an ASCII string.
|
33
29
|
static const uint8_t sigma[16] = { 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3',
|
34
30
|
'2', '-', 'b', 'y', 't', 'e', ' ', 'k' };
|
35
31
|
|
36
|
-
#define ROTATE(v, n) (((v) << (n)) | ((v) >> (32 - (n))))
|
37
|
-
|
38
32
|
// QUARTERROUND updates a, b, c, d with a ChaCha "quarter" round.
|
39
|
-
#define QUARTERROUND(a, b, c, d)
|
40
|
-
x[a] += x[b];
|
41
|
-
x[
|
42
|
-
x[
|
43
|
-
x[
|
33
|
+
#define QUARTERROUND(a, b, c, d) \
|
34
|
+
x[a] += x[b]; \
|
35
|
+
x[d] = CRYPTO_rotl_u32(x[d] ^ x[a], 16); \
|
36
|
+
x[c] += x[d]; \
|
37
|
+
x[b] = CRYPTO_rotl_u32(x[b] ^ x[c], 12); \
|
38
|
+
x[a] += x[b]; \
|
39
|
+
x[d] = CRYPTO_rotl_u32(x[d] ^ x[a], 8); \
|
40
|
+
x[c] += x[d]; \
|
41
|
+
x[b] = CRYPTO_rotl_u32(x[b] ^ x[c], 7);
|
44
42
|
|
45
43
|
void CRYPTO_hchacha20(uint8_t out[32], const uint8_t key[32],
|
46
44
|
const uint8_t nonce[16]) {
|
@@ -71,24 +69,25 @@ void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
|
|
71
69
|
uint32_t counter) {
|
72
70
|
assert(!buffers_alias(out, in_len, in, in_len) || in == out);
|
73
71
|
|
74
|
-
uint32_t counter_nonce[4];
|
75
|
-
counter_nonce[
|
76
|
-
counter_nonce[
|
77
|
-
counter_nonce[
|
72
|
+
uint32_t counter_nonce[4];
|
73
|
+
counter_nonce[0] = counter;
|
74
|
+
counter_nonce[1] = CRYPTO_load_u32_le(nonce + 0);
|
75
|
+
counter_nonce[2] = CRYPTO_load_u32_le(nonce + 4);
|
76
|
+
counter_nonce[3] = CRYPTO_load_u32_le(nonce + 8);
|
78
77
|
|
79
78
|
const uint32_t *key_ptr = (const uint32_t *)key;
|
80
79
|
#if !defined(OPENSSL_X86) && !defined(OPENSSL_X86_64)
|
81
80
|
// The assembly expects the key to be four-byte aligned.
|
82
81
|
uint32_t key_u32[8];
|
83
82
|
if ((((uintptr_t)key) & 3) != 0) {
|
84
|
-
key_u32[0] =
|
85
|
-
key_u32[1] =
|
86
|
-
key_u32[2] =
|
87
|
-
key_u32[3] =
|
88
|
-
key_u32[4] =
|
89
|
-
key_u32[5] =
|
90
|
-
key_u32[6] =
|
91
|
-
key_u32[7] =
|
83
|
+
key_u32[0] = CRYPTO_load_u32_le(key + 0);
|
84
|
+
key_u32[1] = CRYPTO_load_u32_le(key + 4);
|
85
|
+
key_u32[2] = CRYPTO_load_u32_le(key + 8);
|
86
|
+
key_u32[3] = CRYPTO_load_u32_le(key + 12);
|
87
|
+
key_u32[4] = CRYPTO_load_u32_le(key + 16);
|
88
|
+
key_u32[5] = CRYPTO_load_u32_le(key + 20);
|
89
|
+
key_u32[6] = CRYPTO_load_u32_le(key + 24);
|
90
|
+
key_u32[7] = CRYPTO_load_u32_le(key + 28);
|
92
91
|
|
93
92
|
key_ptr = key_u32;
|
94
93
|
}
|
@@ -99,14 +98,6 @@ void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
|
|
99
98
|
|
100
99
|
#else
|
101
100
|
|
102
|
-
#define U32TO8_LITTLE(p, v) \
|
103
|
-
{ \
|
104
|
-
(p)[0] = (v >> 0) & 0xff; \
|
105
|
-
(p)[1] = (v >> 8) & 0xff; \
|
106
|
-
(p)[2] = (v >> 16) & 0xff; \
|
107
|
-
(p)[3] = (v >> 24) & 0xff; \
|
108
|
-
}
|
109
|
-
|
110
101
|
// chacha_core performs 20 rounds of ChaCha on the input words in
|
111
102
|
// |input| and writes the 64 output bytes to |output|.
|
112
103
|
static void chacha_core(uint8_t output[64], const uint32_t input[16]) {
|
@@ -129,7 +120,7 @@ static void chacha_core(uint8_t output[64], const uint32_t input[16]) {
|
|
129
120
|
x[i] += input[i];
|
130
121
|
}
|
131
122
|
for (i = 0; i < 16; ++i) {
|
132
|
-
|
123
|
+
CRYPTO_store_u32_le(output + 4 * i, x[i]);
|
133
124
|
}
|
134
125
|
}
|
135
126
|
|
@@ -142,25 +133,25 @@ void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in, size_t in_len,
|
|
142
133
|
uint8_t buf[64];
|
143
134
|
size_t todo, i;
|
144
135
|
|
145
|
-
input[0] =
|
146
|
-
input[1] =
|
147
|
-
input[2] =
|
148
|
-
input[3] =
|
136
|
+
input[0] = CRYPTO_load_u32_le(sigma + 0);
|
137
|
+
input[1] = CRYPTO_load_u32_le(sigma + 4);
|
138
|
+
input[2] = CRYPTO_load_u32_le(sigma + 8);
|
139
|
+
input[3] = CRYPTO_load_u32_le(sigma + 12);
|
149
140
|
|
150
|
-
input[4] =
|
151
|
-
input[5] =
|
152
|
-
input[6] =
|
153
|
-
input[7] =
|
141
|
+
input[4] = CRYPTO_load_u32_le(key + 0);
|
142
|
+
input[5] = CRYPTO_load_u32_le(key + 4);
|
143
|
+
input[6] = CRYPTO_load_u32_le(key + 8);
|
144
|
+
input[7] = CRYPTO_load_u32_le(key + 12);
|
154
145
|
|
155
|
-
input[8] =
|
156
|
-
input[9] =
|
157
|
-
input[10] =
|
158
|
-
input[11] =
|
146
|
+
input[8] = CRYPTO_load_u32_le(key + 16);
|
147
|
+
input[9] = CRYPTO_load_u32_le(key + 20);
|
148
|
+
input[10] = CRYPTO_load_u32_le(key + 24);
|
149
|
+
input[11] = CRYPTO_load_u32_le(key + 28);
|
159
150
|
|
160
151
|
input[12] = counter;
|
161
|
-
input[13] =
|
162
|
-
input[14] =
|
163
|
-
input[15] =
|
152
|
+
input[13] = CRYPTO_load_u32_le(nonce + 0);
|
153
|
+
input[14] = CRYPTO_load_u32_le(nonce + 4);
|
154
|
+
input[15] = CRYPTO_load_u32_le(nonce + 8);
|
164
155
|
|
165
156
|
while (in_len > 0) {
|
166
157
|
todo = sizeof(buf);
|
@@ -67,25 +67,42 @@
|
|
67
67
|
#include "../internal.h"
|
68
68
|
|
69
69
|
|
70
|
+
static const struct {
|
71
|
+
int nid;
|
72
|
+
const char *name;
|
73
|
+
const EVP_CIPHER *(*func)(void);
|
74
|
+
} kCiphers[] = {
|
75
|
+
{NID_aes_128_cbc, "aes-128-cbc", EVP_aes_128_cbc},
|
76
|
+
{NID_aes_128_ctr, "aes-128-ctr", EVP_aes_128_ctr},
|
77
|
+
{NID_aes_128_ecb, "aes-128-ecb", EVP_aes_128_ecb},
|
78
|
+
{NID_aes_128_gcm, "aes-128-gcm", EVP_aes_128_gcm},
|
79
|
+
{NID_aes_128_ofb128, "aes-128-ofb", EVP_aes_128_ofb},
|
80
|
+
{NID_aes_192_cbc, "aes-192-cbc", EVP_aes_192_cbc},
|
81
|
+
{NID_aes_192_ctr, "aes-192-ctr", EVP_aes_192_ctr},
|
82
|
+
{NID_aes_192_ecb, "aes-192-ecb", EVP_aes_192_ecb},
|
83
|
+
{NID_aes_192_gcm, "aes-192-gcm", EVP_aes_192_gcm},
|
84
|
+
{NID_aes_192_ofb128, "aes-192-ofb", EVP_aes_192_ofb},
|
85
|
+
{NID_aes_256_cbc, "aes-256-cbc", EVP_aes_256_cbc},
|
86
|
+
{NID_aes_256_ctr, "aes-256-ctr", EVP_aes_256_ctr},
|
87
|
+
{NID_aes_256_ecb, "aes-256-ecb", EVP_aes_256_ecb},
|
88
|
+
{NID_aes_256_gcm, "aes-256-gcm", EVP_aes_256_gcm},
|
89
|
+
{NID_aes_256_ofb128, "aes-256-ofb", EVP_aes_256_ofb},
|
90
|
+
{NID_des_cbc, "des-cbc", EVP_des_cbc},
|
91
|
+
{NID_des_ecb, "des-ecb", EVP_des_ecb},
|
92
|
+
{NID_des_ede_cbc, "des-ede-cbc", EVP_des_ede_cbc},
|
93
|
+
{NID_des_ede_ecb, "des-ede", EVP_des_ede},
|
94
|
+
{NID_des_ede3_cbc, "des-ede3-cbc", EVP_des_ede3_cbc},
|
95
|
+
{NID_rc2_cbc, "rc2-cbc", EVP_rc2_cbc},
|
96
|
+
{NID_rc4, "rc4", EVP_rc4},
|
97
|
+
};
|
98
|
+
|
70
99
|
const EVP_CIPHER *EVP_get_cipherbynid(int nid) {
|
71
|
-
|
72
|
-
|
73
|
-
return
|
74
|
-
|
75
|
-
return EVP_rc2_40_cbc();
|
76
|
-
case NID_des_ede3_cbc:
|
77
|
-
return EVP_des_ede3_cbc();
|
78
|
-
case NID_des_ede_cbc:
|
79
|
-
return EVP_des_cbc();
|
80
|
-
case NID_aes_128_cbc:
|
81
|
-
return EVP_aes_128_cbc();
|
82
|
-
case NID_aes_192_cbc:
|
83
|
-
return EVP_aes_192_cbc();
|
84
|
-
case NID_aes_256_cbc:
|
85
|
-
return EVP_aes_256_cbc();
|
86
|
-
default:
|
87
|
-
return NULL;
|
100
|
+
for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kCiphers); i++) {
|
101
|
+
if (kCiphers[i].nid == nid) {
|
102
|
+
return kCiphers[i].func();
|
103
|
+
}
|
88
104
|
}
|
105
|
+
return NULL;
|
89
106
|
}
|
90
107
|
|
91
108
|
const EVP_CIPHER *EVP_get_cipherbyname(const char *name) {
|
@@ -93,54 +110,17 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name) {
|
|
93
110
|
return NULL;
|
94
111
|
}
|
95
112
|
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
return EVP_aes_128_cbc();
|
108
|
-
} else if (OPENSSL_strcasecmp(name, "aes-192-cbc") == 0) {
|
109
|
-
return EVP_aes_192_cbc();
|
110
|
-
} else if (OPENSSL_strcasecmp(name, "aes-256-cbc") == 0) {
|
111
|
-
return EVP_aes_256_cbc();
|
112
|
-
} else if (OPENSSL_strcasecmp(name, "aes-128-ctr") == 0) {
|
113
|
-
return EVP_aes_128_ctr();
|
114
|
-
} else if (OPENSSL_strcasecmp(name, "aes-192-ctr") == 0) {
|
115
|
-
return EVP_aes_192_ctr();
|
116
|
-
} else if (OPENSSL_strcasecmp(name, "aes-256-ctr") == 0) {
|
117
|
-
return EVP_aes_256_ctr();
|
118
|
-
} else if (OPENSSL_strcasecmp(name, "aes-128-ecb") == 0) {
|
119
|
-
return EVP_aes_128_ecb();
|
120
|
-
} else if (OPENSSL_strcasecmp(name, "aes-192-ecb") == 0) {
|
121
|
-
return EVP_aes_192_ecb();
|
122
|
-
} else if (OPENSSL_strcasecmp(name, "aes-256-ecb") == 0) {
|
123
|
-
return EVP_aes_256_ecb();
|
124
|
-
} else if (OPENSSL_strcasecmp(name, "aes-128-gcm") == 0) {
|
125
|
-
return EVP_aes_128_gcm();
|
126
|
-
} else if (OPENSSL_strcasecmp(name, "aes-192-gcm") == 0) {
|
127
|
-
return EVP_aes_192_gcm();
|
128
|
-
} else if (OPENSSL_strcasecmp(name, "aes-256-gcm") == 0) {
|
129
|
-
return EVP_aes_256_gcm();
|
130
|
-
} else if (OPENSSL_strcasecmp(name, "aes-128-ofb") == 0) {
|
131
|
-
return EVP_aes_128_ofb();
|
132
|
-
} else if (OPENSSL_strcasecmp(name, "aes-192-ofb") == 0) {
|
133
|
-
return EVP_aes_192_ofb();
|
134
|
-
} else if (OPENSSL_strcasecmp(name, "aes-256-ofb") == 0) {
|
135
|
-
return EVP_aes_256_ofb();
|
136
|
-
} else if (OPENSSL_strcasecmp(name, "des-ecb") == 0) {
|
137
|
-
return EVP_des_ecb();
|
138
|
-
} else if (OPENSSL_strcasecmp(name, "des-ede") == 0) {
|
139
|
-
return EVP_des_ede();
|
140
|
-
} else if (OPENSSL_strcasecmp(name, "des-ede-cbc") == 0) {
|
141
|
-
return EVP_des_ede_cbc();
|
142
|
-
} else if (OPENSSL_strcasecmp(name, "rc2-cbc") == 0) {
|
143
|
-
return EVP_rc2_cbc();
|
113
|
+
// This is not a name used by OpenSSL, but tcpdump registers it with
|
114
|
+
// |EVP_add_cipher_alias|. Our |EVP_add_cipher_alias| is a no-op, so we
|
115
|
+
// support the name here.
|
116
|
+
if (OPENSSL_strcasecmp(name, "3des") == 0) {
|
117
|
+
name = "des-ede3-cbc";
|
118
|
+
}
|
119
|
+
|
120
|
+
for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kCiphers); i++) {
|
121
|
+
if (OPENSSL_strcasecmp(kCiphers[i].name, name) == 0) {
|
122
|
+
return kCiphers[i].func();
|
123
|
+
}
|
144
124
|
}
|
145
125
|
|
146
126
|
return NULL;
|
@@ -83,6 +83,7 @@ static const struct nid_to_digest nid_to_digest_mapping[] = {
|
|
83
83
|
{NID_sha256, EVP_sha256, SN_sha256, LN_sha256},
|
84
84
|
{NID_sha384, EVP_sha384, SN_sha384, LN_sha384},
|
85
85
|
{NID_sha512, EVP_sha512, SN_sha512, LN_sha512},
|
86
|
+
{NID_sha512_256, EVP_sha512_256, SN_sha512_256, LN_sha512_256},
|
86
87
|
{NID_md5_sha1, EVP_md5_sha1, SN_md5_sha1, LN_md5_sha1},
|
87
88
|
// As a remnant of signing |EVP_MD|s, OpenSSL returned the corresponding
|
88
89
|
// hash function when given a signature OID. To avoid unintended lax parsing
|