grpc 1.53.0 → 1.54.2
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 +80 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/impl/grpc_types.h +11 -2
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +137 -0
- data/src/core/ext/gcp/metadata_query.h +87 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +12 -8
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +5 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +149 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +118 -222
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +295 -113
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +466 -273
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +7 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +14 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +9 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +18 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +9 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/{ext/filters/client_channel/resolver/dns/dns_resolver_selection.h → lib/backoff/random_early_detection.cc} +14 -12
- data/src/core/lib/backoff/random_early_detection.h +59 -0
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/endpoint_pair.h +2 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +43 -42
- data/src/core/lib/surface/validate_metadata.h +9 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +9 -6
- data/src/core/lib/transport/metadata_batch.h +168 -18
- data/src/core/lib/transport/parsed_metadata.h +19 -9
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +105 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -240,8 +240,10 @@ int bn_mod_inverse_consttime(BIGNUM *r, int *out_no_inverse, const BIGNUM *a,
|
|
240
240
|
|
241
241
|
// Each loop iteration halves at least one of |u| and |v|. Thus we need at
|
242
242
|
// most the combined bit width of inputs for at least one value to be zero.
|
243
|
-
|
244
|
-
|
243
|
+
// |a_bits| and |n_bits| cannot overflow because |bn_wexpand| ensures bit
|
244
|
+
// counts fit in even |int|.
|
245
|
+
size_t a_bits = a_width * BN_BITS2, n_bits = n_width * BN_BITS2;
|
246
|
+
size_t num_iters = a_bits + n_bits;
|
245
247
|
if (num_iters < a_bits) {
|
246
248
|
OPENSSL_PUT_ERROR(BN, BN_R_BIGNUM_TOO_LONG);
|
247
249
|
goto err;
|
@@ -260,7 +262,7 @@ int bn_mod_inverse_consttime(BIGNUM *r, int *out_no_inverse, const BIGNUM *a,
|
|
260
262
|
//
|
261
263
|
// After each loop iteration, u and v only get smaller, and at least one of
|
262
264
|
// them shrinks by at least a factor of two.
|
263
|
-
for (
|
265
|
+
for (size_t i = 0; i < num_iters; i++) {
|
264
266
|
BN_ULONG both_odd = word_is_odd_mask(u->d[0]) & word_is_odd_mask(v->d[0]);
|
265
267
|
|
266
268
|
// If both |u| and |v| are odd, subtract the smaller from the larger.
|
@@ -61,11 +61,25 @@
|
|
61
61
|
#include "internal.h"
|
62
62
|
|
63
63
|
|
64
|
-
|
65
|
-
// asm/bn-586.pl
|
66
|
-
#
|
67
|
-
|
68
|
-
|
64
|
+
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86)
|
65
|
+
// See asm/bn-586.pl.
|
66
|
+
#define BN_ADD_ASM
|
67
|
+
#define BN_MUL_ASM
|
68
|
+
#endif
|
69
|
+
|
70
|
+
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
|
71
|
+
(defined(__GNUC__) || defined(__clang__))
|
72
|
+
// See asm/x86_64-gcc.c
|
73
|
+
#define BN_ADD_ASM
|
74
|
+
#define BN_MUL_ASM
|
75
|
+
#endif
|
76
|
+
|
77
|
+
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64)
|
78
|
+
// See asm/bn-armv8.pl.
|
79
|
+
#define BN_ADD_ASM
|
80
|
+
#endif
|
81
|
+
|
82
|
+
#if !defined(BN_MUL_ASM)
|
69
83
|
|
70
84
|
#ifdef BN_ULLONG
|
71
85
|
#define mul_add(r, a, w, c) \
|
@@ -201,157 +215,6 @@ void bn_sqr_words(BN_ULONG *r, const BN_ULONG *a, size_t n) {
|
|
201
215
|
}
|
202
216
|
}
|
203
217
|
|
204
|
-
#ifdef BN_ULLONG
|
205
|
-
BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
206
|
-
size_t n) {
|
207
|
-
BN_ULLONG ll = 0;
|
208
|
-
|
209
|
-
if (n == 0) {
|
210
|
-
return 0;
|
211
|
-
}
|
212
|
-
|
213
|
-
while (n & ~3) {
|
214
|
-
ll += (BN_ULLONG)a[0] + b[0];
|
215
|
-
r[0] = (BN_ULONG)ll;
|
216
|
-
ll >>= BN_BITS2;
|
217
|
-
ll += (BN_ULLONG)a[1] + b[1];
|
218
|
-
r[1] = (BN_ULONG)ll;
|
219
|
-
ll >>= BN_BITS2;
|
220
|
-
ll += (BN_ULLONG)a[2] + b[2];
|
221
|
-
r[2] = (BN_ULONG)ll;
|
222
|
-
ll >>= BN_BITS2;
|
223
|
-
ll += (BN_ULLONG)a[3] + b[3];
|
224
|
-
r[3] = (BN_ULONG)ll;
|
225
|
-
ll >>= BN_BITS2;
|
226
|
-
a += 4;
|
227
|
-
b += 4;
|
228
|
-
r += 4;
|
229
|
-
n -= 4;
|
230
|
-
}
|
231
|
-
while (n) {
|
232
|
-
ll += (BN_ULLONG)a[0] + b[0];
|
233
|
-
r[0] = (BN_ULONG)ll;
|
234
|
-
ll >>= BN_BITS2;
|
235
|
-
a++;
|
236
|
-
b++;
|
237
|
-
r++;
|
238
|
-
n--;
|
239
|
-
}
|
240
|
-
return (BN_ULONG)ll;
|
241
|
-
}
|
242
|
-
|
243
|
-
#else // !BN_ULLONG
|
244
|
-
|
245
|
-
BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
246
|
-
size_t n) {
|
247
|
-
BN_ULONG c, l, t;
|
248
|
-
|
249
|
-
if (n == 0) {
|
250
|
-
return (BN_ULONG)0;
|
251
|
-
}
|
252
|
-
|
253
|
-
c = 0;
|
254
|
-
while (n & ~3) {
|
255
|
-
t = a[0];
|
256
|
-
t += c;
|
257
|
-
c = (t < c);
|
258
|
-
l = t + b[0];
|
259
|
-
c += (l < t);
|
260
|
-
r[0] = l;
|
261
|
-
t = a[1];
|
262
|
-
t += c;
|
263
|
-
c = (t < c);
|
264
|
-
l = t + b[1];
|
265
|
-
c += (l < t);
|
266
|
-
r[1] = l;
|
267
|
-
t = a[2];
|
268
|
-
t += c;
|
269
|
-
c = (t < c);
|
270
|
-
l = t + b[2];
|
271
|
-
c += (l < t);
|
272
|
-
r[2] = l;
|
273
|
-
t = a[3];
|
274
|
-
t += c;
|
275
|
-
c = (t < c);
|
276
|
-
l = t + b[3];
|
277
|
-
c += (l < t);
|
278
|
-
r[3] = l;
|
279
|
-
a += 4;
|
280
|
-
b += 4;
|
281
|
-
r += 4;
|
282
|
-
n -= 4;
|
283
|
-
}
|
284
|
-
while (n) {
|
285
|
-
t = a[0];
|
286
|
-
t += c;
|
287
|
-
c = (t < c);
|
288
|
-
l = t + b[0];
|
289
|
-
c += (l < t);
|
290
|
-
r[0] = l;
|
291
|
-
a++;
|
292
|
-
b++;
|
293
|
-
r++;
|
294
|
-
n--;
|
295
|
-
}
|
296
|
-
return (BN_ULONG)c;
|
297
|
-
}
|
298
|
-
|
299
|
-
#endif // !BN_ULLONG
|
300
|
-
|
301
|
-
BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
302
|
-
size_t n) {
|
303
|
-
BN_ULONG t1, t2;
|
304
|
-
int c = 0;
|
305
|
-
|
306
|
-
if (n == 0) {
|
307
|
-
return (BN_ULONG)0;
|
308
|
-
}
|
309
|
-
|
310
|
-
while (n & ~3) {
|
311
|
-
t1 = a[0];
|
312
|
-
t2 = b[0];
|
313
|
-
r[0] = t1 - t2 - c;
|
314
|
-
if (t1 != t2) {
|
315
|
-
c = (t1 < t2);
|
316
|
-
}
|
317
|
-
t1 = a[1];
|
318
|
-
t2 = b[1];
|
319
|
-
r[1] = t1 - t2 - c;
|
320
|
-
if (t1 != t2) {
|
321
|
-
c = (t1 < t2);
|
322
|
-
}
|
323
|
-
t1 = a[2];
|
324
|
-
t2 = b[2];
|
325
|
-
r[2] = t1 - t2 - c;
|
326
|
-
if (t1 != t2) {
|
327
|
-
c = (t1 < t2);
|
328
|
-
}
|
329
|
-
t1 = a[3];
|
330
|
-
t2 = b[3];
|
331
|
-
r[3] = t1 - t2 - c;
|
332
|
-
if (t1 != t2) {
|
333
|
-
c = (t1 < t2);
|
334
|
-
}
|
335
|
-
a += 4;
|
336
|
-
b += 4;
|
337
|
-
r += 4;
|
338
|
-
n -= 4;
|
339
|
-
}
|
340
|
-
while (n) {
|
341
|
-
t1 = a[0];
|
342
|
-
t2 = b[0];
|
343
|
-
r[0] = t1 - t2 - c;
|
344
|
-
if (t1 != t2) {
|
345
|
-
c = (t1 < t2);
|
346
|
-
}
|
347
|
-
a++;
|
348
|
-
b++;
|
349
|
-
r++;
|
350
|
-
n--;
|
351
|
-
}
|
352
|
-
return c;
|
353
|
-
}
|
354
|
-
|
355
218
|
// mul_add_c(a,b,c0,c1,c2) -- c+=a*b for three word number c=(c2,c1,c0)
|
356
219
|
// mul_add_c2(a,b,c0,c1,c2) -- c+=2*a*b for three word number c=(c2,c1,c0)
|
357
220
|
// sqr_add_c(a,i,c0,c1,c2) -- c+=a[i]^2 for three word number c=(c2,c1,c0)
|
@@ -369,9 +232,7 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
369
232
|
(c0) = (BN_ULONG)Lw(t); \
|
370
233
|
hi = (BN_ULONG)Hw(t); \
|
371
234
|
(c1) += (hi); \
|
372
|
-
|
373
|
-
(c2)++; \
|
374
|
-
} \
|
235
|
+
(c2) += (c1) < hi; \
|
375
236
|
} while (0)
|
376
237
|
|
377
238
|
#define mul_add_c2(a, b, c0, c1, c2) \
|
@@ -382,16 +243,12 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
382
243
|
(c0) = (BN_ULONG)Lw(tt); \
|
383
244
|
hi = (BN_ULONG)Hw(tt); \
|
384
245
|
(c1) += hi; \
|
385
|
-
|
386
|
-
(c2)++; \
|
387
|
-
} \
|
246
|
+
(c2) += (c1) < hi; \
|
388
247
|
t += (c0); /* no carry */ \
|
389
248
|
(c0) = (BN_ULONG)Lw(t); \
|
390
249
|
hi = (BN_ULONG)Hw(t); \
|
391
250
|
(c1) += hi; \
|
392
|
-
|
393
|
-
(c2)++; \
|
394
|
-
} \
|
251
|
+
(c2) += (c1) < hi; \
|
395
252
|
} while (0)
|
396
253
|
|
397
254
|
#define sqr_add_c(a, i, c0, c1, c2) \
|
@@ -402,9 +259,7 @@ BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
402
259
|
(c0) = (BN_ULONG)Lw(t); \
|
403
260
|
hi = (BN_ULONG)Hw(t); \
|
404
261
|
(c1) += hi; \
|
405
|
-
|
406
|
-
(c2)++; \
|
407
|
-
} \
|
262
|
+
(c2) += (c1) < hi; \
|
408
263
|
} while (0)
|
409
264
|
|
410
265
|
#define sqr_add_c2(a, i, j, c0, c1, c2) mul_add_c2((a)[i], (a)[j], c0, c1, c2)
|
@@ -708,4 +563,93 @@ void bn_sqr_comba4(BN_ULONG r[8], const BN_ULONG a[4]) {
|
|
708
563
|
#undef sqr_add_c
|
709
564
|
#undef sqr_add_c2
|
710
565
|
|
566
|
+
#endif // !BN_MUL_ASM
|
567
|
+
|
568
|
+
#if !defined(BN_ADD_ASM)
|
569
|
+
|
570
|
+
// bn_add_with_carry returns |x + y + carry|, and sets |*out_carry| to the
|
571
|
+
// carry bit. |carry| must be zero or one.
|
572
|
+
static inline BN_ULONG bn_add_with_carry(BN_ULONG x, BN_ULONG y, BN_ULONG carry,
|
573
|
+
BN_ULONG *out_carry) {
|
574
|
+
assert(carry == 0 || carry == 1);
|
575
|
+
#if defined(BN_ULLONG)
|
576
|
+
BN_ULLONG ret = carry;
|
577
|
+
ret += (BN_ULLONG)x + y;
|
578
|
+
*out_carry = (BN_ULONG)(ret >> BN_BITS2);
|
579
|
+
return (BN_ULONG)ret;
|
580
|
+
#else
|
581
|
+
x += carry;
|
582
|
+
carry = x < carry;
|
583
|
+
BN_ULONG ret = x + y;
|
584
|
+
carry += ret < x;
|
585
|
+
*out_carry = carry;
|
586
|
+
return ret;
|
711
587
|
#endif
|
588
|
+
}
|
589
|
+
|
590
|
+
// bn_sub_with_borrow returns |x - y - borrow|, and sets |*out_borrow| to the
|
591
|
+
// borrow bit. |borrow| must be zero or one.
|
592
|
+
static inline BN_ULONG bn_sub_with_borrow(BN_ULONG x, BN_ULONG y,
|
593
|
+
BN_ULONG borrow,
|
594
|
+
BN_ULONG *out_borrow) {
|
595
|
+
assert(borrow == 0 || borrow == 1);
|
596
|
+
BN_ULONG ret = x - y - borrow;
|
597
|
+
*out_borrow = (x < y) | ((x == y) & borrow);
|
598
|
+
return ret;
|
599
|
+
}
|
600
|
+
|
601
|
+
BN_ULONG bn_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
602
|
+
size_t n) {
|
603
|
+
if (n == 0) {
|
604
|
+
return 0;
|
605
|
+
}
|
606
|
+
|
607
|
+
BN_ULONG carry = 0;
|
608
|
+
while (n & ~3) {
|
609
|
+
r[0] = bn_add_with_carry(a[0], b[0], carry, &carry);
|
610
|
+
r[1] = bn_add_with_carry(a[1], b[1], carry, &carry);
|
611
|
+
r[2] = bn_add_with_carry(a[2], b[2], carry, &carry);
|
612
|
+
r[3] = bn_add_with_carry(a[3], b[3], carry, &carry);
|
613
|
+
a += 4;
|
614
|
+
b += 4;
|
615
|
+
r += 4;
|
616
|
+
n -= 4;
|
617
|
+
}
|
618
|
+
while (n) {
|
619
|
+
r[0] = bn_add_with_carry(a[0], b[0], carry, &carry);
|
620
|
+
a++;
|
621
|
+
b++;
|
622
|
+
r++;
|
623
|
+
n--;
|
624
|
+
}
|
625
|
+
return carry;
|
626
|
+
}
|
627
|
+
|
628
|
+
BN_ULONG bn_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
629
|
+
size_t n) {
|
630
|
+
if (n == 0) {
|
631
|
+
return (BN_ULONG)0;
|
632
|
+
}
|
633
|
+
|
634
|
+
BN_ULONG borrow = 0;
|
635
|
+
while (n & ~3) {
|
636
|
+
r[0] = bn_sub_with_borrow(a[0], b[0], borrow, &borrow);
|
637
|
+
r[1] = bn_sub_with_borrow(a[1], b[1], borrow, &borrow);
|
638
|
+
r[2] = bn_sub_with_borrow(a[2], b[2], borrow, &borrow);
|
639
|
+
r[3] = bn_sub_with_borrow(a[3], b[3], borrow, &borrow);
|
640
|
+
a += 4;
|
641
|
+
b += 4;
|
642
|
+
r += 4;
|
643
|
+
n -= 4;
|
644
|
+
}
|
645
|
+
while (n) {
|
646
|
+
r[0] = bn_sub_with_borrow(a[0], b[0], borrow, &borrow);
|
647
|
+
a++;
|
648
|
+
b++;
|
649
|
+
r++;
|
650
|
+
n--;
|
651
|
+
}
|
652
|
+
return borrow;
|
653
|
+
}
|
654
|
+
|
655
|
+
#endif // !BN_ADD_ASM
|
@@ -189,14 +189,20 @@ extern "C" {
|
|
189
189
|
#define BN_CAN_USE_INLINE_ASM
|
190
190
|
#endif
|
191
191
|
|
192
|
-
//
|
193
|
-
//
|
194
|
-
|
195
|
-
|
196
|
-
//
|
197
|
-
//
|
198
|
-
//
|
199
|
-
//
|
192
|
+
// MOD_EXP_CTIME_ALIGN is the alignment needed for |BN_mod_exp_mont_consttime|'s
|
193
|
+
// tables.
|
194
|
+
//
|
195
|
+
// TODO(davidben): Historically, this alignment came from cache line
|
196
|
+
// assumptions, which we've since removed. Is 64-byte alignment still necessary
|
197
|
+
// or ideal? The true alignment requirement seems to now be 32 bytes, coming
|
198
|
+
// from RSAZ's use of VMOVDQA to a YMM register. Non-x86_64 has even fewer
|
199
|
+
// requirements.
|
200
|
+
#define MOD_EXP_CTIME_ALIGN 64
|
201
|
+
|
202
|
+
// MOD_EXP_CTIME_STORAGE_LEN is the number of |BN_ULONG|s needed for the
|
203
|
+
// |BN_mod_exp_mont_consttime| stack-allocated storage buffer. The buffer is
|
204
|
+
// just the right size for the RSAZ and is about ~1KB larger than what's
|
205
|
+
// necessary (4480 bytes) for 1024-bit inputs.
|
200
206
|
#define MOD_EXP_CTIME_STORAGE_LEN \
|
201
207
|
(((320u * 3u) + (32u * 9u * 16u)) / sizeof(BN_ULONG))
|
202
208
|
|
@@ -211,8 +217,8 @@ extern "C" {
|
|
211
217
|
#define Hw(t) ((BN_ULONG)((t) >> BN_BITS2))
|
212
218
|
#endif
|
213
219
|
|
214
|
-
// bn_minimal_width returns the minimal
|
215
|
-
//
|
220
|
+
// bn_minimal_width returns the minimal number of words needed to represent
|
221
|
+
// |bn|.
|
216
222
|
int bn_minimal_width(const BIGNUM *bn);
|
217
223
|
|
218
224
|
// bn_set_minimal_width sets |bn->width| to |bn_minimal_width(bn)|. If |bn| is
|
@@ -228,7 +234,7 @@ int bn_wexpand(BIGNUM *bn, size_t words);
|
|
228
234
|
// than a number of words.
|
229
235
|
int bn_expand(BIGNUM *bn, size_t bits);
|
230
236
|
|
231
|
-
// bn_resize_words adjusts |bn->
|
237
|
+
// bn_resize_words adjusts |bn->width| to be |words|. It returns one on success
|
232
238
|
// and zero on allocation error or if |bn|'s value is too large.
|
233
239
|
OPENSSL_EXPORT int bn_resize_words(BIGNUM *bn, size_t words);
|
234
240
|
|
@@ -257,6 +263,12 @@ int bn_fits_in_words(const BIGNUM *bn, size_t num);
|
|
257
263
|
// is representable in |num| words. Otherwise, it returns zero.
|
258
264
|
int bn_copy_words(BN_ULONG *out, size_t num, const BIGNUM *bn);
|
259
265
|
|
266
|
+
// bn_assert_fits_in_bytes asserts that |bn| fits in |num| bytes. This is a
|
267
|
+
// no-op in release builds, but triggers an assert in debug builds, and
|
268
|
+
// declassifies all bytes which are therefore known to be zero in constant-time
|
269
|
+
// validation.
|
270
|
+
void bn_assert_fits_in_bytes(const BIGNUM *bn, size_t num);
|
271
|
+
|
260
272
|
// bn_mul_add_words multiples |ap| by |w|, adds the result to |rp|, and places
|
261
273
|
// the result in |rp|. |ap| and |rp| must both be |num| words long. It returns
|
262
274
|
// the carry word of the operation. |ap| and |rp| may be equal but otherwise may
|
@@ -344,6 +356,12 @@ int bn_rand_range_words(BN_ULONG *out, BN_ULONG min_inclusive,
|
|
344
356
|
int bn_rand_secret_range(BIGNUM *r, int *out_is_uniform, BN_ULONG min_inclusive,
|
345
357
|
const BIGNUM *max_exclusive);
|
346
358
|
|
359
|
+
// BN_MONTGOMERY_MAX_WORDS is the maximum numer of words allowed in a |BIGNUM|
|
360
|
+
// used with Montgomery reduction. Ideally this limit would be applied to all
|
361
|
+
// |BIGNUM|s, in |bn_wexpand|, but the exactfloat library needs to create 8 MiB
|
362
|
+
// values for other operations.
|
363
|
+
#define BN_MONTGOMERY_MAX_WORDS (8 * 1024 / sizeof(BN_ULONG))
|
364
|
+
|
347
365
|
#if !defined(OPENSSL_NO_ASM) && \
|
348
366
|
(defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
|
349
367
|
defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
|
@@ -353,11 +371,16 @@ int bn_rand_secret_range(BIGNUM *r, int *out_is_uniform, BN_ULONG min_inclusive,
|
|
353
371
|
// corresponding field in |BN_MONT_CTX|. It returns one if |bn_mul_mont| handles
|
354
372
|
// inputs of this size and zero otherwise.
|
355
373
|
//
|
374
|
+
// If at least one of |ap| or |bp| is fully reduced, |rp| will be fully reduced.
|
375
|
+
// If neither is fully-reduced, the output may not be either.
|
376
|
+
//
|
377
|
+
// This function allocates |num| words on the stack, so |num| should be at most
|
378
|
+
// |BN_MONTGOMERY_MAX_WORDS|.
|
379
|
+
//
|
356
380
|
// TODO(davidben): The x86_64 implementation expects a 32-bit input and masks
|
357
381
|
// off upper bits. The aarch64 implementation expects a 64-bit input and does
|
358
382
|
// not. |size_t| is the safer option but not strictly correct for x86_64. But
|
359
|
-
//
|
360
|
-
// internally creates |num|-sized stack allocation.
|
383
|
+
// the |BN_MONTGOMERY_MAX_WORDS| bound makes this moot.
|
361
384
|
//
|
362
385
|
// See also discussion in |ToWord| in abi_test.h for notes on smaller-than-word
|
363
386
|
// inputs.
|
@@ -371,36 +394,39 @@ int bn_mul_mont(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
|
371
394
|
// bn_mul_mont_gather5 multiples loads index |power| of |table|, multiplies it
|
372
395
|
// by |ap| modulo |np|, and stores the result in |rp|. The values are |num|
|
373
396
|
// words long and represented in Montgomery form. |n0| is a pointer to the
|
374
|
-
// corresponding field in |BN_MONT_CTX|.
|
397
|
+
// corresponding field in |BN_MONT_CTX|. |table| must be aligned to at least
|
398
|
+
// 16 bytes. |power| must be less than 32 and is treated as secret.
|
399
|
+
//
|
400
|
+
// WARNING: This function implements Almost Montgomery Multiplication from
|
401
|
+
// https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
|
402
|
+
// However, even if they are fully reduced, the output may not be.
|
375
403
|
void bn_mul_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
376
404
|
const BN_ULONG *table, const BN_ULONG *np,
|
377
405
|
const BN_ULONG *n0, int num, int power);
|
378
406
|
|
379
407
|
// bn_scatter5 stores |inp| to index |power| of |table|. |inp| and each entry of
|
380
|
-
// |table| are |num| words long. |power| must be less than 32
|
381
|
-
// 32*|num| words long.
|
408
|
+
// |table| are |num| words long. |power| must be less than 32 and is treated as
|
409
|
+
// public. |table| must be 32*|num| words long. |table| must be aligned to at
|
410
|
+
// least 16 bytes.
|
382
411
|
void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
|
383
412
|
size_t power);
|
384
413
|
|
385
414
|
// bn_gather5 loads index |power| of |table| and stores it in |out|. |out| and
|
386
|
-
// each entry of |table| are |num| words long. |power| must be less than 32
|
387
|
-
|
415
|
+
// each entry of |table| are |num| words long. |power| must be less than 32 and
|
416
|
+
// is treated as secret. |table| must be aligned to at least 16 bytes.
|
417
|
+
void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table, size_t power);
|
388
418
|
|
389
419
|
// bn_power5 squares |ap| five times and multiplies it by the value stored at
|
390
420
|
// index |power| of |table|, modulo |np|. It stores the result in |rp|. The
|
391
421
|
// values are |num| words long and represented in Montgomery form. |n0| is a
|
392
422
|
// pointer to the corresponding field in |BN_MONT_CTX|. |num| must be divisible
|
393
|
-
// by 8.
|
423
|
+
// by 8. |power| must be less than 32 and is treated as secret.
|
424
|
+
//
|
425
|
+
// WARNING: This function implements Almost Montgomery Multiplication from
|
426
|
+
// https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
|
427
|
+
// However, even if they are fully reduced, the output may not be.
|
394
428
|
void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
|
395
429
|
const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
|
396
|
-
|
397
|
-
// bn_from_montgomery converts |ap| from Montgomery form modulo |np| and writes
|
398
|
-
// the result in |rp|, each of which is |num| words long. It returns one on
|
399
|
-
// success and zero if it cannot handle inputs of length |num|. |n0| is a
|
400
|
-
// pointer to the corresponding field in |BN_MONT_CTX|.
|
401
|
-
int bn_from_montgomery(BN_ULONG *rp, const BN_ULONG *ap,
|
402
|
-
const BN_ULONG *not_used, const BN_ULONG *np,
|
403
|
-
const BN_ULONG *n0, int num);
|
404
430
|
#endif // !OPENSSL_NO_ASM && OPENSSL_X86_64
|
405
431
|
|
406
432
|
uint64_t bn_mont_n0(const BIGNUM *n);
|
@@ -436,7 +462,7 @@ int bn_jacobi(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
|
436
462
|
|
437
463
|
// bn_is_bit_set_words returns one if bit |bit| is set in |a| and zero
|
438
464
|
// otherwise.
|
439
|
-
int bn_is_bit_set_words(const BN_ULONG *a, size_t num,
|
465
|
+
int bn_is_bit_set_words(const BN_ULONG *a, size_t num, size_t bit);
|
440
466
|
|
441
467
|
// bn_one_to_montgomery sets |r| to one in Montgomery form. It returns one on
|
442
468
|
// success and zero on error. This function treats the bit width of the modulus
|
@@ -632,6 +658,15 @@ int bn_mod_inverse_prime(BIGNUM *out, const BIGNUM *a, const BIGNUM *p,
|
|
632
658
|
int bn_mod_inverse_secret_prime(BIGNUM *out, const BIGNUM *a, const BIGNUM *p,
|
633
659
|
BN_CTX *ctx, const BN_MONT_CTX *mont_p);
|
634
660
|
|
661
|
+
// BN_MONT_CTX_set_locked takes |lock| and checks whether |*pmont| is NULL. If
|
662
|
+
// so, it creates a new |BN_MONT_CTX| and sets the modulus for it to |mod|. It
|
663
|
+
// then stores it as |*pmont|. It returns one on success and zero on error. Note
|
664
|
+
// this function assumes |mod| is public.
|
665
|
+
//
|
666
|
+
// If |*pmont| is already non-NULL then it does nothing and returns one.
|
667
|
+
int BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_MUTEX *lock,
|
668
|
+
const BIGNUM *mod, BN_CTX *bn_ctx);
|
669
|
+
|
635
670
|
|
636
671
|
// Low-level operations for small numbers.
|
637
672
|
//
|
@@ -687,9 +722,10 @@ void bn_mod_mul_montgomery_small(BN_ULONG *r, const BN_ULONG *a,
|
|
687
722
|
// bn_mod_exp_mont_small sets |r| to |a|^|p| mod |mont->N|. It returns one on
|
688
723
|
// success and zero on programmer or internal error. Both inputs and outputs are
|
689
724
|
// in the Montgomery domain. |r| and |a| are |num| words long, which must be
|
690
|
-
// |mont->N.width| and at most |BN_SMALL_MAX_WORDS|. |
|
691
|
-
//
|
692
|
-
//
|
725
|
+
// |mont->N.width| and at most |BN_SMALL_MAX_WORDS|. |num_p|, measured in bits,
|
726
|
+
// must fit in |size_t|. |a| must be fully-reduced. This function runs in time
|
727
|
+
// independent of |a|, but |p| and |mont->N| are public values. |a| must be
|
728
|
+
// fully-reduced and may alias with |r|.
|
693
729
|
//
|
694
730
|
// Note this function differs from |BN_mod_exp_mont| which uses Montgomery
|
695
731
|
// reduction but takes input and output outside the Montgomery domain. Combine
|
@@ -708,6 +744,25 @@ void bn_mod_inverse0_prime_mont_small(BN_ULONG *r, const BN_ULONG *a,
|
|
708
744
|
size_t num, const BN_MONT_CTX *mont);
|
709
745
|
|
710
746
|
|
747
|
+
// Word-based byte conversion functions.
|
748
|
+
|
749
|
+
// bn_big_endian_to_words interprets |in_len| bytes from |in| as a big-endian,
|
750
|
+
// unsigned integer and writes the result to |out_len| words in |out|. |out_len|
|
751
|
+
// must be large enough to represent any |in_len|-byte value. That is, |out_len|
|
752
|
+
// must be at least |BN_BYTES * in_len|.
|
753
|
+
void bn_big_endian_to_words(BN_ULONG *out, size_t out_len, const uint8_t *in,
|
754
|
+
size_t in_len);
|
755
|
+
|
756
|
+
// bn_words_to_big_endian represents |in_len| words from |in| as a big-endian,
|
757
|
+
// unsigned integer in |out_len| bytes. It writes the result to |out|. |out_len|
|
758
|
+
// must be large enough to represent |in| without truncation.
|
759
|
+
//
|
760
|
+
// Note |out_len| may be less than |BN_BYTES * in_len| if |in| is known to have
|
761
|
+
// leading zeros.
|
762
|
+
void bn_words_to_big_endian(uint8_t *out, size_t out_len, const BN_ULONG *in,
|
763
|
+
size_t in_len);
|
764
|
+
|
765
|
+
|
711
766
|
#if defined(__cplusplus)
|
712
767
|
} // extern C
|
713
768
|
#endif
|
@@ -116,7 +116,6 @@
|
|
116
116
|
#include <openssl/err.h>
|
117
117
|
#include <openssl/mem.h>
|
118
118
|
#include <openssl/thread.h>
|
119
|
-
#include <openssl/type_check.h>
|
120
119
|
|
121
120
|
#include "internal.h"
|
122
121
|
#include "../../internal.h"
|
@@ -173,6 +172,10 @@ static int bn_mont_ctx_set_N_and_n0(BN_MONT_CTX *mont, const BIGNUM *mod) {
|
|
173
172
|
OPENSSL_PUT_ERROR(BN, BN_R_NEGATIVE_NUMBER);
|
174
173
|
return 0;
|
175
174
|
}
|
175
|
+
if (!bn_fits_in_words(mod, BN_MONTGOMERY_MAX_WORDS)) {
|
176
|
+
OPENSSL_PUT_ERROR(BN, BN_R_BIGNUM_TOO_LONG);
|
177
|
+
return 0;
|
178
|
+
}
|
176
179
|
|
177
180
|
// Save the modulus.
|
178
181
|
if (!BN_copy(&mont->N, mod)) {
|
@@ -190,11 +193,10 @@ static int bn_mont_ctx_set_N_and_n0(BN_MONT_CTX *mont, const BIGNUM *mod) {
|
|
190
193
|
// others, we could use a shorter R value and use faster |BN_ULONG|-based
|
191
194
|
// math instead of |uint64_t|-based math, which would be double-precision.
|
192
195
|
// However, currently only the assembler files know which is which.
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
"uint64_t is insufficient precision for n0");
|
196
|
+
static_assert(BN_MONT_CTX_N0_LIMBS == 1 || BN_MONT_CTX_N0_LIMBS == 2,
|
197
|
+
"BN_MONT_CTX_N0_LIMBS value is invalid");
|
198
|
+
static_assert(sizeof(BN_ULONG) * BN_MONT_CTX_N0_LIMBS == sizeof(uint64_t),
|
199
|
+
"uint64_t is insufficient precision for n0");
|
198
200
|
uint64_t n0 = bn_mont_n0(&mont->N);
|
199
201
|
mont->n0[0] = (BN_ULONG)n0;
|
200
202
|
#if BN_MONT_CTX_N0_LIMBS == 2
|
@@ -430,6 +432,9 @@ int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
|
430
432
|
if (!bn_wexpand(r, num)) {
|
431
433
|
return 0;
|
432
434
|
}
|
435
|
+
// This bound is implied by |bn_mont_ctx_set_N_and_n0|. |bn_mul_mont|
|
436
|
+
// allocates |num| words on the stack, so |num| cannot be too large.
|
437
|
+
assert((size_t)num <= BN_MONTGOMERY_MAX_WORDS);
|
433
438
|
if (!bn_mul_mont(r->d, a->d, b->d, mont->N.d, mont->n0, num)) {
|
434
439
|
// The check above ensures this won't happen.
|
435
440
|
assert(0);
|
@@ -22,11 +22,10 @@
|
|
22
22
|
|
23
23
|
static uint64_t bn_neg_inv_mod_r_u64(uint64_t n);
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
"uint64_t is insufficient precision for n0");
|
25
|
+
static_assert(BN_MONT_CTX_N0_LIMBS == 1 || BN_MONT_CTX_N0_LIMBS == 2,
|
26
|
+
"BN_MONT_CTX_N0_LIMBS value is invalid");
|
27
|
+
static_assert(sizeof(BN_ULONG) * BN_MONT_CTX_N0_LIMBS == sizeof(uint64_t),
|
28
|
+
"uint64_t is insufficient precision for n0");
|
30
29
|
|
31
30
|
// LG_LITTLE_R is log_2(r).
|
32
31
|
#define LG_LITTLE_R (BN_MONT_CTX_N0_LIMBS * BN_BITS2)
|
@@ -62,7 +62,6 @@
|
|
62
62
|
|
63
63
|
#include <openssl/err.h>
|
64
64
|
#include <openssl/mem.h>
|
65
|
-
#include <openssl/type_check.h>
|
66
65
|
|
67
66
|
#include "internal.h"
|
68
67
|
#include "../../internal.h"
|
@@ -281,8 +280,8 @@ static void bn_mul_recursive(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
281
280
|
BN_ULONG c_neg = c - bn_sub_words(&t[n2 * 2], t, &t[n2], n2);
|
282
281
|
BN_ULONG c_pos = c + bn_add_words(&t[n2], t, &t[n2], n2);
|
283
282
|
bn_select_words(&t[n2], neg, &t[n2 * 2], &t[n2], n2);
|
284
|
-
|
285
|
-
|
283
|
+
static_assert(sizeof(BN_ULONG) <= sizeof(crypto_word_t),
|
284
|
+
"crypto_word_t is too small");
|
286
285
|
c = constant_time_select_w(neg, c_neg, c_pos);
|
287
286
|
|
288
287
|
// We now have our three components. Add them together.
|
@@ -395,8 +394,8 @@ static void bn_mul_part_recursive(BN_ULONG *r, const BN_ULONG *a,
|
|
395
394
|
BN_ULONG c_neg = c - bn_sub_words(&t[n2 * 2], t, &t[n2], n2);
|
396
395
|
BN_ULONG c_pos = c + bn_add_words(&t[n2], t, &t[n2], n2);
|
397
396
|
bn_select_words(&t[n2], neg, &t[n2 * 2], &t[n2], n2);
|
398
|
-
|
399
|
-
|
397
|
+
static_assert(sizeof(BN_ULONG) <= sizeof(crypto_word_t),
|
398
|
+
"crypto_word_t is too small");
|
400
399
|
c = constant_time_select_w(neg, c_neg, c_pos);
|
401
400
|
|
402
401
|
// We now have our three components. Add them together.
|
@@ -359,6 +359,17 @@ static int probable_prime_dh(BIGNUM *rnd, int bits, const BIGNUM *add,
|
|
359
359
|
static int probable_prime_dh_safe(BIGNUM *rnd, int bits, const BIGNUM *add,
|
360
360
|
const BIGNUM *rem, BN_CTX *ctx);
|
361
361
|
|
362
|
+
BN_GENCB *BN_GENCB_new(void) {
|
363
|
+
BN_GENCB *callback = OPENSSL_malloc(sizeof(BN_GENCB));
|
364
|
+
if (callback == NULL) {
|
365
|
+
return NULL;
|
366
|
+
}
|
367
|
+
OPENSSL_memset(callback, 0, sizeof(BN_GENCB));
|
368
|
+
return callback;
|
369
|
+
}
|
370
|
+
|
371
|
+
void BN_GENCB_free(BN_GENCB *callback) { OPENSSL_free(callback); }
|
372
|
+
|
362
373
|
void BN_GENCB_set(BN_GENCB *callback,
|
363
374
|
int (*f)(int event, int n, struct bn_gencb_st *),
|
364
375
|
void *arg) {
|
@@ -374,6 +385,8 @@ int BN_GENCB_call(BN_GENCB *callback, int event, int n) {
|
|
374
385
|
return callback->callback(event, n, callback);
|
375
386
|
}
|
376
387
|
|
388
|
+
void *BN_GENCB_get_arg(const BN_GENCB *callback) { return callback->arg; }
|
389
|
+
|
377
390
|
int BN_generate_prime_ex(BIGNUM *ret, int bits, int safe, const BIGNUM *add,
|
378
391
|
const BIGNUM *rem, BN_GENCB *cb) {
|
379
392
|
BIGNUM *t;
|