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
@@ -32,8 +32,6 @@ typedef struct { uint32_t words[16]; } block_t;
|
|
32
32
|
|
33
33
|
OPENSSL_STATIC_ASSERT(sizeof(block_t) == 64, "block_t has padding");
|
34
34
|
|
35
|
-
#define R(a, b) (((a) << (b)) | ((a) >> (32 - (b))))
|
36
|
-
|
37
35
|
// salsa208_word_specification implements the Salsa20/8 core function, also
|
38
36
|
// described in RFC 7914, section 3. It modifies the block at |inout|
|
39
37
|
// in-place.
|
@@ -42,38 +40,38 @@ static void salsa208_word_specification(block_t *inout) {
|
|
42
40
|
OPENSSL_memcpy(&x, inout, sizeof(x));
|
43
41
|
|
44
42
|
for (int i = 8; i > 0; i -= 2) {
|
45
|
-
x.words[4] ^=
|
46
|
-
x.words[8] ^=
|
47
|
-
x.words[12] ^=
|
48
|
-
x.words[0] ^=
|
49
|
-
x.words[9] ^=
|
50
|
-
x.words[13] ^=
|
51
|
-
x.words[1] ^=
|
52
|
-
x.words[5] ^=
|
53
|
-
x.words[14] ^=
|
54
|
-
x.words[2] ^=
|
55
|
-
x.words[6] ^=
|
56
|
-
x.words[10] ^=
|
57
|
-
x.words[3] ^=
|
58
|
-
x.words[7] ^=
|
59
|
-
x.words[11] ^=
|
60
|
-
x.words[15] ^=
|
61
|
-
x.words[1] ^=
|
62
|
-
x.words[2] ^=
|
63
|
-
x.words[3] ^=
|
64
|
-
x.words[0] ^=
|
65
|
-
x.words[6] ^=
|
66
|
-
x.words[7] ^=
|
67
|
-
x.words[4] ^=
|
68
|
-
x.words[5] ^=
|
69
|
-
x.words[11] ^=
|
70
|
-
x.words[8] ^=
|
71
|
-
x.words[9] ^=
|
72
|
-
x.words[10] ^=
|
73
|
-
x.words[12] ^=
|
74
|
-
x.words[13] ^=
|
75
|
-
x.words[14] ^=
|
76
|
-
x.words[15] ^=
|
43
|
+
x.words[4] ^= CRYPTO_rotl_u32(x.words[0] + x.words[12], 7);
|
44
|
+
x.words[8] ^= CRYPTO_rotl_u32(x.words[4] + x.words[0], 9);
|
45
|
+
x.words[12] ^= CRYPTO_rotl_u32(x.words[8] + x.words[4], 13);
|
46
|
+
x.words[0] ^= CRYPTO_rotl_u32(x.words[12] + x.words[8], 18);
|
47
|
+
x.words[9] ^= CRYPTO_rotl_u32(x.words[5] + x.words[1], 7);
|
48
|
+
x.words[13] ^= CRYPTO_rotl_u32(x.words[9] + x.words[5], 9);
|
49
|
+
x.words[1] ^= CRYPTO_rotl_u32(x.words[13] + x.words[9], 13);
|
50
|
+
x.words[5] ^= CRYPTO_rotl_u32(x.words[1] + x.words[13], 18);
|
51
|
+
x.words[14] ^= CRYPTO_rotl_u32(x.words[10] + x.words[6], 7);
|
52
|
+
x.words[2] ^= CRYPTO_rotl_u32(x.words[14] + x.words[10], 9);
|
53
|
+
x.words[6] ^= CRYPTO_rotl_u32(x.words[2] + x.words[14], 13);
|
54
|
+
x.words[10] ^= CRYPTO_rotl_u32(x.words[6] + x.words[2], 18);
|
55
|
+
x.words[3] ^= CRYPTO_rotl_u32(x.words[15] + x.words[11], 7);
|
56
|
+
x.words[7] ^= CRYPTO_rotl_u32(x.words[3] + x.words[15], 9);
|
57
|
+
x.words[11] ^= CRYPTO_rotl_u32(x.words[7] + x.words[3], 13);
|
58
|
+
x.words[15] ^= CRYPTO_rotl_u32(x.words[11] + x.words[7], 18);
|
59
|
+
x.words[1] ^= CRYPTO_rotl_u32(x.words[0] + x.words[3], 7);
|
60
|
+
x.words[2] ^= CRYPTO_rotl_u32(x.words[1] + x.words[0], 9);
|
61
|
+
x.words[3] ^= CRYPTO_rotl_u32(x.words[2] + x.words[1], 13);
|
62
|
+
x.words[0] ^= CRYPTO_rotl_u32(x.words[3] + x.words[2], 18);
|
63
|
+
x.words[6] ^= CRYPTO_rotl_u32(x.words[5] + x.words[4], 7);
|
64
|
+
x.words[7] ^= CRYPTO_rotl_u32(x.words[6] + x.words[5], 9);
|
65
|
+
x.words[4] ^= CRYPTO_rotl_u32(x.words[7] + x.words[6], 13);
|
66
|
+
x.words[5] ^= CRYPTO_rotl_u32(x.words[4] + x.words[7], 18);
|
67
|
+
x.words[11] ^= CRYPTO_rotl_u32(x.words[10] + x.words[9], 7);
|
68
|
+
x.words[8] ^= CRYPTO_rotl_u32(x.words[11] + x.words[10], 9);
|
69
|
+
x.words[9] ^= CRYPTO_rotl_u32(x.words[8] + x.words[11], 13);
|
70
|
+
x.words[10] ^= CRYPTO_rotl_u32(x.words[9] + x.words[8], 18);
|
71
|
+
x.words[12] ^= CRYPTO_rotl_u32(x.words[15] + x.words[14], 7);
|
72
|
+
x.words[13] ^= CRYPTO_rotl_u32(x.words[12] + x.words[15], 9);
|
73
|
+
x.words[14] ^= CRYPTO_rotl_u32(x.words[13] + x.words[12], 13);
|
74
|
+
x.words[15] ^= CRYPTO_rotl_u32(x.words[14] + x.words[13], 18);
|
77
75
|
}
|
78
76
|
|
79
77
|
for (int i = 0; i < 16; ++i) {
|
@@ -456,7 +456,7 @@ void bn_mod_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
456
456
|
|
457
457
|
int bn_div_consttime(BIGNUM *quotient, BIGNUM *remainder,
|
458
458
|
const BIGNUM *numerator, const BIGNUM *divisor,
|
459
|
-
BN_CTX *ctx) {
|
459
|
+
unsigned divisor_min_bits, BN_CTX *ctx) {
|
460
460
|
if (BN_is_negative(numerator) || BN_is_negative(divisor)) {
|
461
461
|
OPENSSL_PUT_ERROR(BN, BN_R_NEGATIVE_NUMBER);
|
462
462
|
return 0;
|
@@ -496,8 +496,26 @@ int bn_div_consttime(BIGNUM *quotient, BIGNUM *remainder,
|
|
496
496
|
r->neg = 0;
|
497
497
|
|
498
498
|
// Incorporate |numerator| into |r|, one bit at a time, reducing after each
|
499
|
-
// step.
|
500
|
-
|
499
|
+
// step. We maintain the invariant that |0 <= r < divisor| and
|
500
|
+
// |q * divisor + r = n| where |n| is the portion of |numerator| incorporated
|
501
|
+
// so far.
|
502
|
+
//
|
503
|
+
// First, we short-circuit the loop: if we know |divisor| has at least
|
504
|
+
// |divisor_min_bits| bits, the top |divisor_min_bits - 1| can be incorporated
|
505
|
+
// without reductions. This significantly speeds up |RSA_check_key|. For
|
506
|
+
// simplicity, we round down to a whole number of words.
|
507
|
+
assert(divisor_min_bits <= BN_num_bits(divisor));
|
508
|
+
int initial_words = 0;
|
509
|
+
if (divisor_min_bits > 0) {
|
510
|
+
initial_words = (divisor_min_bits - 1) / BN_BITS2;
|
511
|
+
if (initial_words > numerator->width) {
|
512
|
+
initial_words = numerator->width;
|
513
|
+
}
|
514
|
+
OPENSSL_memcpy(r->d, numerator->d + numerator->width - initial_words,
|
515
|
+
initial_words * sizeof(BN_ULONG));
|
516
|
+
}
|
517
|
+
|
518
|
+
for (int i = numerator->width - initial_words - 1; i >= 0; i--) {
|
501
519
|
for (int bit = BN_BITS2 - 1; bit >= 0; bit--) {
|
502
520
|
// Incorporate the next bit of the numerator, by computing
|
503
521
|
// r = 2*r or 2*r + 1. Note the result fits in one more word. We store the
|
@@ -157,10 +157,11 @@ int bn_lcm_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx) {
|
|
157
157
|
BN_CTX_start(ctx);
|
158
158
|
unsigned shift;
|
159
159
|
BIGNUM *gcd = BN_CTX_get(ctx);
|
160
|
-
int ret = gcd != NULL &&
|
160
|
+
int ret = gcd != NULL && //
|
161
161
|
bn_mul_consttime(r, a, b, ctx) &&
|
162
162
|
bn_gcd_consttime(gcd, &shift, a, b, ctx) &&
|
163
|
-
|
163
|
+
// |gcd| has a secret bit width.
|
164
|
+
bn_div_consttime(r, NULL, r, gcd, /*divisor_min_bits=*/0, ctx) &&
|
164
165
|
bn_rshift_secret_shift(r, r, shift, ctx);
|
165
166
|
BN_CTX_end(ctx);
|
166
167
|
return ret;
|
@@ -552,12 +552,15 @@ int bn_sqr_consttime(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
|
|
552
552
|
// bn_div_consttime behaves like |BN_div|, but it rejects negative inputs and
|
553
553
|
// treats both inputs, including their magnitudes, as secret. It is, as a
|
554
554
|
// result, much slower than |BN_div| and should only be used for rare operations
|
555
|
-
// where Montgomery reduction is not available.
|
555
|
+
// where Montgomery reduction is not available. |divisor_min_bits| is a
|
556
|
+
// public lower bound for |BN_num_bits(divisor)|. When |divisor|'s bit width is
|
557
|
+
// public, this can speed up the operation.
|
556
558
|
//
|
557
559
|
// Note that |quotient->width| will be set pessimally to |numerator->width|.
|
558
560
|
OPENSSL_EXPORT int bn_div_consttime(BIGNUM *quotient, BIGNUM *remainder,
|
559
561
|
const BIGNUM *numerator,
|
560
|
-
const BIGNUM *divisor,
|
562
|
+
const BIGNUM *divisor,
|
563
|
+
unsigned divisor_min_bits, BN_CTX *ctx);
|
561
564
|
|
562
565
|
// bn_is_relatively_prime checks whether GCD(|x|, |y|) is one. On success, it
|
563
566
|
// returns one and sets |*out_relatively_prime| to one if the GCD was one and
|
@@ -75,10 +75,8 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) {
|
|
75
75
|
if (ret == NULL) {
|
76
76
|
ret = BN_new();
|
77
77
|
}
|
78
|
-
if (ret == NULL
|
79
|
-
|
80
|
-
}
|
81
|
-
if (!BN_set_word(ret, BN_is_bit_set(a, 0))) {
|
78
|
+
if (ret == NULL ||
|
79
|
+
!BN_set_word(ret, BN_is_bit_set(a, 0))) {
|
82
80
|
if (ret != in) {
|
83
81
|
BN_free(ret);
|
84
82
|
}
|
@@ -88,17 +86,15 @@ BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) {
|
|
88
86
|
}
|
89
87
|
|
90
88
|
OPENSSL_PUT_ERROR(BN, BN_R_P_IS_NOT_PRIME);
|
91
|
-
return
|
89
|
+
return NULL;
|
92
90
|
}
|
93
91
|
|
94
92
|
if (BN_is_zero(a) || BN_is_one(a)) {
|
95
93
|
if (ret == NULL) {
|
96
94
|
ret = BN_new();
|
97
95
|
}
|
98
|
-
if (ret == NULL
|
99
|
-
|
100
|
-
}
|
101
|
-
if (!BN_set_word(ret, BN_is_one(a))) {
|
96
|
+
if (ret == NULL ||
|
97
|
+
!BN_set_word(ret, BN_is_one(a))) {
|
102
98
|
if (ret != in) {
|
103
99
|
BN_free(ret);
|
104
100
|
}
|
@@ -911,6 +911,16 @@ static int aead_aes_gcm_init_impl(struct aead_aes_gcm_ctx *gcm_ctx,
|
|
911
911
|
size_t key_len, size_t tag_len) {
|
912
912
|
const size_t key_bits = key_len * 8;
|
913
913
|
|
914
|
+
switch (key_bits) {
|
915
|
+
case 128:
|
916
|
+
boringssl_fips_inc_counter(fips_counter_evp_aes_128_gcm);
|
917
|
+
break;
|
918
|
+
|
919
|
+
case 256:
|
920
|
+
boringssl_fips_inc_counter(fips_counter_evp_aes_256_gcm);
|
921
|
+
break;
|
922
|
+
}
|
923
|
+
|
914
924
|
if (key_bits != 128 && key_bits != 192 && key_bits != 256) {
|
915
925
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_KEY_LENGTH);
|
916
926
|
return 0; // EVP_AEAD_CTX_init should catch this.
|
@@ -342,10 +342,10 @@ void DES_set_key(const DES_cblock *key, DES_key_schedule *schedule) {
|
|
342
342
|
|
343
343
|
// table contained 0213 4657
|
344
344
|
t2 = ((t << 16L) | (s & 0x0000ffffL)) & 0xffffffffL;
|
345
|
-
schedule->subkeys[i][0] =
|
345
|
+
schedule->subkeys[i][0] = CRYPTO_rotr_u32(t2, 30);
|
346
346
|
|
347
347
|
t2 = ((s >> 16L) | (t & 0xffff0000L));
|
348
|
-
schedule->subkeys[i][1] =
|
348
|
+
schedule->subkeys[i][1] = CRYPTO_rotr_u32(t2, 26);
|
349
349
|
}
|
350
350
|
}
|
351
351
|
|
@@ -392,8 +392,8 @@ static void DES_encrypt1(uint32_t *data, const DES_key_schedule *ks, int enc) {
|
|
392
392
|
// <71755.204@CompuServe.COM> for pointing this out.
|
393
393
|
// clear the top bits on machines with 8byte longs
|
394
394
|
// shift left by 2
|
395
|
-
r =
|
396
|
-
l =
|
395
|
+
r = CRYPTO_rotr_u32(r, 29);
|
396
|
+
l = CRYPTO_rotr_u32(l, 29);
|
397
397
|
|
398
398
|
// I don't know if it is worth the effort of loop unrolling the
|
399
399
|
// inner loop
|
@@ -434,8 +434,8 @@ static void DES_encrypt1(uint32_t *data, const DES_key_schedule *ks, int enc) {
|
|
434
434
|
}
|
435
435
|
|
436
436
|
// rotate and clear the top bits on machines with 8byte longs
|
437
|
-
l =
|
438
|
-
r =
|
437
|
+
l = CRYPTO_rotr_u32(l, 3);
|
438
|
+
r = CRYPTO_rotr_u32(r, 3);
|
439
439
|
|
440
440
|
FP(r, l);
|
441
441
|
data[0] = l;
|
@@ -454,8 +454,8 @@ static void DES_encrypt2(uint32_t *data, const DES_key_schedule *ks, int enc) {
|
|
454
454
|
// sparc2. Thanks to Richard Outerbridge <71755.204@CompuServe.COM> for
|
455
455
|
// pointing this out.
|
456
456
|
// clear the top bits on machines with 8byte longs
|
457
|
-
r =
|
458
|
-
l =
|
457
|
+
r = CRYPTO_rotr_u32(r, 29);
|
458
|
+
l = CRYPTO_rotr_u32(l, 29);
|
459
459
|
|
460
460
|
// I don't know if it is worth the effort of loop unrolling the
|
461
461
|
// inner loop
|
@@ -495,8 +495,8 @@ static void DES_encrypt2(uint32_t *data, const DES_key_schedule *ks, int enc) {
|
|
495
495
|
D_ENCRYPT(ks, r, l, 0);
|
496
496
|
}
|
497
497
|
// rotate and clear the top bits on machines with 8byte longs
|
498
|
-
data[0] =
|
499
|
-
data[1] =
|
498
|
+
data[0] = CRYPTO_rotr_u32(l, 3);
|
499
|
+
data[1] = CRYPTO_rotr_u32(r, 3);
|
500
500
|
}
|
501
501
|
|
502
502
|
void DES_encrypt3(uint32_t *data, const DES_key_schedule *ks1,
|
@@ -782,4 +782,3 @@ void DES_set_key_unchecked(const DES_cblock *key, DES_key_schedule *schedule) {
|
|
782
782
|
#undef D_ENCRYPT
|
783
783
|
#undef ITERATIONS
|
784
784
|
#undef HALF_ITERATIONS
|
785
|
-
#undef ROTATE
|
@@ -218,7 +218,7 @@ how to use xors :-) I got it to its final state.
|
|
218
218
|
#define D_ENCRYPT(ks, LL, R, S) \
|
219
219
|
do { \
|
220
220
|
LOAD_DATA(ks, R, S, u, t, E0, E1); \
|
221
|
-
t =
|
221
|
+
t = CRYPTO_rotr_u32(t, 4); \
|
222
222
|
(LL) ^= \
|
223
223
|
DES_SPtrans[0][(u >> 2L) & 0x3f] ^ DES_SPtrans[2][(u >> 10L) & 0x3f] ^ \
|
224
224
|
DES_SPtrans[4][(u >> 18L) & 0x3f] ^ \
|
@@ -230,8 +230,6 @@ how to use xors :-) I got it to its final state.
|
|
230
230
|
#define ITERATIONS 16
|
231
231
|
#define HALF_ITERATIONS 8
|
232
232
|
|
233
|
-
#define ROTATE(a, n) (((a) >> (n)) + ((a) << (32 - (n))))
|
234
|
-
|
235
233
|
|
236
234
|
#if defined(__cplusplus)
|
237
235
|
} // extern C
|
@@ -72,7 +72,7 @@ uint8_t *MD4(const uint8_t *data, size_t len, uint8_t out[MD4_DIGEST_LENGTH]) {
|
|
72
72
|
return out;
|
73
73
|
}
|
74
74
|
|
75
|
-
// Implemented from
|
75
|
+
// Implemented from RFC 1186 The MD4 Message-Digest Algorithm.
|
76
76
|
|
77
77
|
int MD4_Init(MD4_CTX *md4) {
|
78
78
|
OPENSSL_memset(md4, 0, sizeof(MD4_CTX));
|
@@ -113,24 +113,22 @@ int MD4_Final(uint8_t out[MD4_DIGEST_LENGTH], MD4_CTX *c) {
|
|
113
113
|
#define G(b, c, d) (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
|
114
114
|
#define H(b, c, d) ((b) ^ (c) ^ (d))
|
115
115
|
|
116
|
-
#define ROTATE(a, n) (((a) << (n)) | ((a) >> (32 - (n))))
|
117
|
-
|
118
116
|
#define R0(a, b, c, d, k, s, t) \
|
119
117
|
do { \
|
120
118
|
(a) += ((k) + (t) + F((b), (c), (d))); \
|
121
|
-
(a) =
|
119
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
122
120
|
} while (0)
|
123
121
|
|
124
122
|
#define R1(a, b, c, d, k, s, t) \
|
125
123
|
do { \
|
126
124
|
(a) += ((k) + (t) + G((b), (c), (d))); \
|
127
|
-
(a) =
|
125
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
128
126
|
} while (0)
|
129
127
|
|
130
128
|
#define R2(a, b, c, d, k, s, t) \
|
131
129
|
do { \
|
132
130
|
(a) += ((k) + (t) + H((b), (c), (d))); \
|
133
|
-
(a) =
|
131
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
134
132
|
} while (0)
|
135
133
|
|
136
134
|
void md4_block_data_order(uint32_t *state, const uint8_t *data, size_t num) {
|
@@ -237,7 +235,6 @@ void md4_block_data_order(uint32_t *state, const uint8_t *data, size_t num) {
|
|
237
235
|
#undef F
|
238
236
|
#undef G
|
239
237
|
#undef H
|
240
|
-
#undef ROTATE
|
241
238
|
#undef R0
|
242
239
|
#undef R1
|
243
240
|
#undef R2
|
@@ -119,33 +119,31 @@ int MD5_Final(uint8_t out[MD5_DIGEST_LENGTH], MD5_CTX *c) {
|
|
119
119
|
#define H(b, c, d) ((b) ^ (c) ^ (d))
|
120
120
|
#define I(b, c, d) (((~(d)) | (b)) ^ (c))
|
121
121
|
|
122
|
-
#define ROTATE(a, n) (((a) << (n)) | ((a) >> (32 - (n))))
|
123
|
-
|
124
122
|
#define R0(a, b, c, d, k, s, t) \
|
125
123
|
do { \
|
126
124
|
(a) += ((k) + (t) + F((b), (c), (d))); \
|
127
|
-
(a) =
|
125
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
128
126
|
(a) += (b); \
|
129
127
|
} while (0)
|
130
128
|
|
131
129
|
#define R1(a, b, c, d, k, s, t) \
|
132
130
|
do { \
|
133
131
|
(a) += ((k) + (t) + G((b), (c), (d))); \
|
134
|
-
(a) =
|
132
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
135
133
|
(a) += (b); \
|
136
134
|
} while (0)
|
137
135
|
|
138
136
|
#define R2(a, b, c, d, k, s, t) \
|
139
137
|
do { \
|
140
138
|
(a) += ((k) + (t) + H((b), (c), (d))); \
|
141
|
-
(a) =
|
139
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
142
140
|
(a) += (b); \
|
143
141
|
} while (0)
|
144
142
|
|
145
143
|
#define R3(a, b, c, d, k, s, t) \
|
146
144
|
do { \
|
147
145
|
(a) += ((k) + (t) + I((b), (c), (d))); \
|
148
|
-
(a) =
|
146
|
+
(a) = CRYPTO_rotl_u32(a, s); \
|
149
147
|
(a) += (b); \
|
150
148
|
} while (0)
|
151
149
|
|
@@ -280,7 +278,6 @@ static void md5_block_data_order(uint32_t *state, const uint8_t *data,
|
|
280
278
|
#undef G
|
281
279
|
#undef H
|
282
280
|
#undef I
|
283
|
-
#undef ROTATE
|
284
281
|
#undef R0
|
285
282
|
#undef R1
|
286
283
|
#undef R2
|
@@ -193,7 +193,7 @@ static void gcm_mul64_nohw(uint64_t *out_lo, uint64_t *out_hi, uint64_t a,
|
|
193
193
|
#endif // BORINGSSL_HAS_UINT128
|
194
194
|
|
195
195
|
void gcm_init_nohw(u128 Htable[16], const uint64_t Xi[2]) {
|
196
|
-
// We implement GHASH in terms of POLYVAL, as described in
|
196
|
+
// We implement GHASH in terms of POLYVAL, as described in RFC 8452. This
|
197
197
|
// avoids a shift by 1 in the multiplication, needed to account for bit
|
198
198
|
// reversal losing a bit after multiplication, that is,
|
199
199
|
// rev128(X) * rev128(Y) = rev255(X*Y).
|
@@ -356,7 +356,7 @@ void RAND_bytes_with_additional_data(uint8_t *out, size_t out_len,
|
|
356
356
|
int used_cpu;
|
357
357
|
rand_get_seed(state, seed, &used_cpu);
|
358
358
|
|
359
|
-
uint8_t personalization[CTR_DRBG_ENTROPY_LEN];
|
359
|
+
uint8_t personalization[CTR_DRBG_ENTROPY_LEN] = {0};
|
360
360
|
size_t personalization_len = 0;
|
361
361
|
#if defined(OPENSSL_URANDOM)
|
362
362
|
// If we used RDRAND, also opportunistically read from the system. This
|
@@ -206,6 +206,12 @@ void RSA_get0_factors(const RSA *rsa, const BIGNUM **out_p,
|
|
206
206
|
}
|
207
207
|
}
|
208
208
|
|
209
|
+
const RSA_PSS_PARAMS *RSA_get0_pss_params(const RSA *rsa) {
|
210
|
+
// We do not support the id-RSASSA-PSS key encoding. If we add support later,
|
211
|
+
// the |maskHash| field should be filled in for OpenSSL compatibility.
|
212
|
+
return NULL;
|
213
|
+
}
|
214
|
+
|
209
215
|
void RSA_get0_crt_params(const RSA *rsa, const BIGNUM **out_dmp1,
|
210
216
|
const BIGNUM **out_dmq1, const BIGNUM **out_iqmp) {
|
211
217
|
if (out_dmp1 != NULL) {
|
@@ -657,7 +663,8 @@ err:
|
|
657
663
|
}
|
658
664
|
|
659
665
|
static int check_mod_inverse(int *out_ok, const BIGNUM *a, const BIGNUM *ainv,
|
660
|
-
const BIGNUM *m,
|
666
|
+
const BIGNUM *m, unsigned m_min_bits,
|
667
|
+
BN_CTX *ctx) {
|
661
668
|
if (BN_is_negative(ainv) || BN_cmp(ainv, m) >= 0) {
|
662
669
|
*out_ok = 0;
|
663
670
|
return 1;
|
@@ -670,7 +677,7 @@ static int check_mod_inverse(int *out_ok, const BIGNUM *a, const BIGNUM *ainv,
|
|
670
677
|
BIGNUM *tmp = BN_CTX_get(ctx);
|
671
678
|
int ret = tmp != NULL &&
|
672
679
|
bn_mul_consttime(tmp, a, ainv, ctx) &&
|
673
|
-
bn_div_consttime(NULL, tmp, tmp, m, ctx);
|
680
|
+
bn_div_consttime(NULL, tmp, tmp, m, m_min_bits, ctx);
|
674
681
|
if (ret) {
|
675
682
|
*out_ok = BN_is_one(tmp);
|
676
683
|
}
|
@@ -750,10 +757,15 @@ int RSA_check_key(const RSA *key) {
|
|
750
757
|
// simply check that d * e is one mod p-1 and mod q-1. Note d and e were bound
|
751
758
|
// by earlier checks in this function.
|
752
759
|
if (!bn_usub_consttime(&pm1, key->p, BN_value_one()) ||
|
753
|
-
!bn_usub_consttime(&qm1, key->q, BN_value_one())
|
754
|
-
|
755
|
-
|
756
|
-
|
760
|
+
!bn_usub_consttime(&qm1, key->q, BN_value_one())) {
|
761
|
+
OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
|
762
|
+
goto out;
|
763
|
+
}
|
764
|
+
const unsigned pm1_bits = BN_num_bits(&pm1);
|
765
|
+
const unsigned qm1_bits = BN_num_bits(&qm1);
|
766
|
+
if (!bn_mul_consttime(&de, key->d, key->e, ctx) ||
|
767
|
+
!bn_div_consttime(NULL, &tmp, &de, &pm1, pm1_bits, ctx) ||
|
768
|
+
!bn_div_consttime(NULL, &de, &de, &qm1, qm1_bits, ctx)) {
|
757
769
|
OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
|
758
770
|
goto out;
|
759
771
|
}
|
@@ -772,9 +784,12 @@ int RSA_check_key(const RSA *key) {
|
|
772
784
|
|
773
785
|
if (has_crt_values) {
|
774
786
|
int dmp1_ok, dmq1_ok, iqmp_ok;
|
775
|
-
if (!check_mod_inverse(&dmp1_ok, key->e, key->dmp1, &pm1, ctx) ||
|
776
|
-
!check_mod_inverse(&dmq1_ok, key->e, key->dmq1, &qm1, ctx) ||
|
777
|
-
|
787
|
+
if (!check_mod_inverse(&dmp1_ok, key->e, key->dmp1, &pm1, pm1_bits, ctx) ||
|
788
|
+
!check_mod_inverse(&dmq1_ok, key->e, key->dmq1, &qm1, qm1_bits, ctx) ||
|
789
|
+
// |p| is odd, so |pm1| and |p| have the same bit width. If they didn't,
|
790
|
+
// we only need a lower bound anyway.
|
791
|
+
!check_mod_inverse(&iqmp_ok, key->q, key->iqmp, key->p, pm1_bits,
|
792
|
+
ctx)) {
|
778
793
|
OPENSSL_PUT_ERROR(RSA, ERR_LIB_BN);
|
779
794
|
goto out;
|
780
795
|
}
|
@@ -1262,12 +1262,14 @@ static int rsa_generate_key_impl(RSA *rsa, int bits, const BIGNUM *e_value,
|
|
1262
1262
|
// values for d.
|
1263
1263
|
} while (BN_cmp(rsa->d, pow2_prime_bits) <= 0);
|
1264
1264
|
|
1265
|
+
assert(BN_num_bits(pm1) == (unsigned)prime_bits);
|
1266
|
+
assert(BN_num_bits(qm1) == (unsigned)prime_bits);
|
1265
1267
|
if (// Calculate n.
|
1266
1268
|
!bn_mul_consttime(rsa->n, rsa->p, rsa->q, ctx) ||
|
1267
1269
|
// Calculate d mod (p-1).
|
1268
|
-
!bn_div_consttime(NULL, rsa->dmp1, rsa->d, pm1, ctx) ||
|
1270
|
+
!bn_div_consttime(NULL, rsa->dmp1, rsa->d, pm1, prime_bits, ctx) ||
|
1269
1271
|
// Calculate d mod (q-1)
|
1270
|
-
!bn_div_consttime(NULL, rsa->dmq1, rsa->d, qm1, ctx)) {
|
1272
|
+
!bn_div_consttime(NULL, rsa->dmq1, rsa->d, qm1, prime_bits, ctx)) {
|
1271
1273
|
goto bn_err;
|
1272
1274
|
}
|
1273
1275
|
bn_set_minimal_width(rsa->n);
|
@@ -111,11 +111,10 @@ int SHA1_Final(uint8_t out[SHA_DIGEST_LENGTH], SHA_CTX *c) {
|
|
111
111
|
return 1;
|
112
112
|
}
|
113
113
|
|
114
|
-
#define
|
115
|
-
|
116
|
-
|
117
|
-
(
|
118
|
-
(ix) = (a) = ROTATE((a), 1); \
|
114
|
+
#define Xupdate(a, ix, ia, ib, ic, id) \
|
115
|
+
do { \
|
116
|
+
(a) = ((ia) ^ (ib) ^ (ic) ^ (id)); \
|
117
|
+
(ix) = (a) = CRYPTO_rotl_u32((a), 1); \
|
119
118
|
} while (0)
|
120
119
|
|
121
120
|
#define K_00_19 0x5a827999UL
|
@@ -133,45 +132,47 @@ int SHA1_Final(uint8_t out[SHA_DIGEST_LENGTH], SHA_CTX *c) {
|
|
133
132
|
#define F_40_59(b, c, d) (((b) & (c)) | (((b) | (c)) & (d)))
|
134
133
|
#define F_60_79(b, c, d) F_20_39(b, c, d)
|
135
134
|
|
136
|
-
#define BODY_00_15(i, a, b, c, d, e, f, xi)
|
137
|
-
do {
|
138
|
-
(f) = (xi) + (e) + K_00_19 +
|
139
|
-
|
135
|
+
#define BODY_00_15(i, a, b, c, d, e, f, xi) \
|
136
|
+
do { \
|
137
|
+
(f) = (xi) + (e) + K_00_19 + CRYPTO_rotl_u32((a), 5) + \
|
138
|
+
F_00_19((b), (c), (d)); \
|
139
|
+
(b) = CRYPTO_rotl_u32((b), 30); \
|
140
140
|
} while (0)
|
141
141
|
|
142
|
-
#define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd)
|
143
|
-
do {
|
144
|
-
Xupdate(f, xi, xa, xb, xc, xd);
|
145
|
-
(f) += (e) + K_00_19 +
|
146
|
-
(b) =
|
142
|
+
#define BODY_16_19(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
|
143
|
+
do { \
|
144
|
+
Xupdate(f, xi, xa, xb, xc, xd); \
|
145
|
+
(f) += (e) + K_00_19 + CRYPTO_rotl_u32((a), 5) + F_00_19((b), (c), (d)); \
|
146
|
+
(b) = CRYPTO_rotl_u32((b), 30); \
|
147
147
|
} while (0)
|
148
148
|
|
149
|
-
#define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd)
|
150
|
-
do {
|
151
|
-
Xupdate(f, xi, xa, xb, xc, xd);
|
152
|
-
(f) += (e) + K_20_39 +
|
153
|
-
(b) =
|
149
|
+
#define BODY_20_31(i, a, b, c, d, e, f, xi, xa, xb, xc, xd) \
|
150
|
+
do { \
|
151
|
+
Xupdate(f, xi, xa, xb, xc, xd); \
|
152
|
+
(f) += (e) + K_20_39 + CRYPTO_rotl_u32((a), 5) + F_20_39((b), (c), (d)); \
|
153
|
+
(b) = CRYPTO_rotl_u32((b), 30); \
|
154
154
|
} while (0)
|
155
155
|
|
156
|
-
#define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd)
|
157
|
-
do {
|
158
|
-
Xupdate(f, xa, xa, xb, xc, xd);
|
159
|
-
(f) += (e) + K_20_39 +
|
160
|
-
(b) =
|
156
|
+
#define BODY_32_39(i, a, b, c, d, e, f, xa, xb, xc, xd) \
|
157
|
+
do { \
|
158
|
+
Xupdate(f, xa, xa, xb, xc, xd); \
|
159
|
+
(f) += (e) + K_20_39 + CRYPTO_rotl_u32((a), 5) + F_20_39((b), (c), (d)); \
|
160
|
+
(b) = CRYPTO_rotl_u32((b), 30); \
|
161
161
|
} while (0)
|
162
162
|
|
163
|
-
#define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd)
|
164
|
-
do {
|
165
|
-
Xupdate(f, xa, xa, xb, xc, xd);
|
166
|
-
(f) += (e) + K_40_59 +
|
167
|
-
(b) =
|
163
|
+
#define BODY_40_59(i, a, b, c, d, e, f, xa, xb, xc, xd) \
|
164
|
+
do { \
|
165
|
+
Xupdate(f, xa, xa, xb, xc, xd); \
|
166
|
+
(f) += (e) + K_40_59 + CRYPTO_rotl_u32((a), 5) + F_40_59((b), (c), (d)); \
|
167
|
+
(b) = CRYPTO_rotl_u32((b), 30); \
|
168
168
|
} while (0)
|
169
169
|
|
170
|
-
#define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd)
|
171
|
-
do {
|
172
|
-
Xupdate(f, xa, xa, xb, xc, xd);
|
173
|
-
(f) = (xa) + (e) + K_60_79 +
|
174
|
-
|
170
|
+
#define BODY_60_79(i, a, b, c, d, e, f, xa, xb, xc, xd) \
|
171
|
+
do { \
|
172
|
+
Xupdate(f, xa, xa, xb, xc, xd); \
|
173
|
+
(f) = (xa) + (e) + K_60_79 + CRYPTO_rotl_u32((a), 5) + \
|
174
|
+
F_60_79((b), (c), (d)); \
|
175
|
+
(b) = CRYPTO_rotl_u32((b), 30); \
|
175
176
|
} while (0)
|
176
177
|
|
177
178
|
#ifdef X
|
@@ -338,7 +339,6 @@ static void sha1_block_data_order(uint32_t *state, const uint8_t *data,
|
|
338
339
|
}
|
339
340
|
#endif
|
340
341
|
|
341
|
-
#undef ROTATE
|
342
342
|
#undef Xupdate
|
343
343
|
#undef K_00_19
|
344
344
|
#undef K_20_39
|
@@ -184,15 +184,17 @@ static const uint32_t K256[64] = {
|
|
184
184
|
0x682e6ff3UL, 0x748f82eeUL, 0x78a5636fUL, 0x84c87814UL, 0x8cc70208UL,
|
185
185
|
0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL};
|
186
186
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
#define sigma0(x)
|
195
|
-
|
187
|
+
// See FIPS 180-4, section 4.1.2.
|
188
|
+
#define Sigma0(x) \
|
189
|
+
(CRYPTO_rotr_u32((x), 2) ^ CRYPTO_rotr_u32((x), 13) ^ \
|
190
|
+
CRYPTO_rotr_u32((x), 22))
|
191
|
+
#define Sigma1(x) \
|
192
|
+
(CRYPTO_rotr_u32((x), 6) ^ CRYPTO_rotr_u32((x), 11) ^ \
|
193
|
+
CRYPTO_rotr_u32((x), 25))
|
194
|
+
#define sigma0(x) \
|
195
|
+
(CRYPTO_rotr_u32((x), 7) ^ CRYPTO_rotr_u32((x), 18) ^ ((x) >> 3))
|
196
|
+
#define sigma1(x) \
|
197
|
+
(CRYPTO_rotr_u32((x), 17) ^ CRYPTO_rotr_u32((x), 19) ^ ((x) >> 10))
|
196
198
|
|
197
199
|
#define Ch(x, y, z) (((x) & (y)) ^ ((~(x)) & (z)))
|
198
200
|
#define Maj(x, y, z) (((x) & (y)) ^ ((x) & (z)) ^ ((y) & (z)))
|
@@ -309,7 +311,6 @@ void SHA256_TransformBlocks(uint32_t state[8], const uint8_t *data,
|
|
309
311
|
sha256_block_data_order(state, data, num_blocks);
|
310
312
|
}
|
311
313
|
|
312
|
-
#undef ROTATE
|
313
314
|
#undef Sigma0
|
314
315
|
#undef Sigma1
|
315
316
|
#undef sigma0
|