grpc 1.84.0 → 1.85.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +40 -27
- data/include/grpc/event_engine/memory_allocator.h +1 -0
- data/include/grpc/grpc.h +3 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +4 -0
- data/src/core/call/call_filters.h +10 -10
- data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
- data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
- data/src/core/call/filter_fusion.h +15 -15
- data/src/core/call/interception_chain.h +3 -3
- data/src/core/call/metadata_batch.cc +1 -0
- data/src/core/call/metadata_batch.h +45 -33
- data/src/core/call/parsed_metadata.h +3 -3
- data/src/core/call/request_buffer.cc +6 -6
- data/src/core/call/request_buffer.h +1 -1
- data/src/core/channelz/channel_trace.cc +5 -5
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +9 -9
- data/src/core/channelz/channelz.h +12 -12
- data/src/core/channelz/channelz_registry.cc +10 -10
- data/src/core/channelz/ztrace_collector.h +5 -5
- data/src/core/client_channel/client_channel.cc +4 -4
- data/src/core/client_channel/client_channel_filter.cc +14 -14
- data/src/core/client_channel/global_subchannel_pool.cc +4 -4
- data/src/core/client_channel/subchannel.cc +24 -23
- data/src/core/client_channel/subchannel_stream_client.cc +5 -5
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
- data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
- data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
- data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
- data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
- data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
- data/src/core/credentials/transport/tls/tls_utils.h +9 -0
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
- data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
- data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
- data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
- data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
- data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
- data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
- data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
- data/src/core/handshaker/handshaker.cc +4 -4
- data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
- data/src/core/handshaker/security/secure_endpoint.cc +13 -13
- data/src/core/handshaker/security/security_handshaker.cc +6 -6
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
- data/src/core/lib/channel/channel_args.cc +20 -0
- data/src/core/lib/channel/channel_args.h +17 -17
- data/src/core/lib/channel/promise_based_filter.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.h +66 -27
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/ares_resolver.cc +14 -14
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
- data/src/core/lib/event_engine/default_event_engine.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
- data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
- data/src/core/lib/experiments/experiments.cc +48 -0
- data/src/core/lib/experiments/experiments.h +24 -0
- data/src/core/lib/iomgr/buffer_list.cc +3 -3
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/combiner.cc +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_posix.cc +7 -7
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +1 -1
- data/src/core/lib/promise/arena_promise.h +7 -7
- data/src/core/lib/promise/detail/promise_factory.h +8 -8
- data/src/core/lib/promise/detail/promise_like.h +4 -4
- data/src/core/lib/promise/inter_activity_latch.h +6 -6
- data/src/core/lib/promise/inter_activity_pipe.h +1 -1
- data/src/core/lib/promise/observable.h +3 -3
- data/src/core/lib/promise/party.cc +1 -1
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +3 -3
- data/src/core/lib/resource_quota/memory_quota.cc +16 -16
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/resource_quota/thread_quota.cc +3 -3
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.h +1 -1
- data/src/core/lib/surface/call.cc +8 -7
- data/src/core/lib/surface/call.h +3 -3
- data/src/core/lib/surface/call_utils.h +4 -0
- data/src/core/lib/surface/channel.cc +1 -1
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/init.cc +7 -7
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +2 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
- data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
- data/src/core/load_balancing/autosharding/autosharding.h +78 -0
- data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
- data/src/core/load_balancing/health_check_client.cc +7 -7
- data/src/core/load_balancing/lb_policy.cc +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +5 -5
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
- data/src/core/load_balancing/rls/rls.cc +23 -17
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
- data/src/core/load_balancing/xds/cds.cc +6 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
- data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
- data/src/core/mitigation_engine/mitigation_engine.h +28 -4
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
- data/src/core/resolver/dns/dns_resolver.cc +7 -7
- data/src/core/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
- data/src/core/server/server.cc +30 -30
- data/src/core/server/server.h +4 -3
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
- data/src/core/telemetry/default_tcp_tracer.cc +1 -1
- data/src/core/telemetry/instrument.cc +30 -16
- data/src/core/telemetry/instrument.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +46 -13
- data/src/core/tsi/ssl_transport_security.h +7 -0
- data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
- data/src/core/util/event_log.cc +3 -3
- data/src/core/util/http_client/httpcli.cc +5 -5
- data/src/core/util/http_client/httpcli.h +1 -1
- data/src/core/util/json/json_object_loader.cc +7 -0
- data/src/core/util/json/json_object_loader.h +17 -2
- data/src/core/util/latent_see.cc +123 -36
- data/src/core/util/latent_see.h +14 -1
- data/src/core/util/mpscq.cc +1 -1
- data/src/core/util/notification.h +4 -4
- data/src/core/util/sync.h +20 -6
- data/src/core/util/table.h +20 -22
- data/src/core/util/work_serializer.cc +2 -2
- data/src/core/xds/grpc/blackboard.cc +4 -3
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
- data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
- data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint.cc +1 -1
- data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
- data/src/core/xds/grpc/xds_matcher.h +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
- data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
- data/src/core/xds/xds_client/lrs_client.cc +22 -19
- data/src/core/xds/xds_client/xds_client.cc +19 -16
- data/src/core/xds/xds_client/xds_transport.h +49 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
- data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
- data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
- data/third_party/abseil-cpp/absl/base/casts.h +135 -2
- data/third_party/abseil-cpp/absl/base/config.h +63 -41
- data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- data/third_party/abseil-cpp/absl/base/macros.h +76 -37
- data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
- data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
- data/third_party/abseil-cpp/absl/base/options.h +46 -18
- data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
- data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
- data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
- data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
- data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
- data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
- data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
- data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
- data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
- data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
- data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
- data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
- data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
- data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- data/third_party/abseil-cpp/absl/log/log.h +2 -2
- data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
- data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
- data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
- data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
- data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
- data/third_party/abseil-cpp/absl/status/status.cc +66 -70
- data/third_party/abseil-cpp/absl/status/status.h +254 -23
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
- data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
- data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
- data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
- data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
- data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
- data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
- data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
- data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
- data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
- data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
- data/third_party/abseil-cpp/absl/time/clock.h +3 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
- data/third_party/abseil-cpp/absl/time/format.cc +3 -10
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- data/third_party/abseil-cpp/absl/time/time.cc +4 -4
- data/third_party/abseil-cpp/absl/time/time.h +14 -13
- data/third_party/abseil-cpp/absl/types/compare.h +64 -63
- data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
- data/third_party/abseil-cpp/absl/types/optional.h +31 -4
- data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
- data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
- data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
- data/third_party/abseil-cpp/absl/types/span.h +67 -38
- data/third_party/abseil-cpp/absl/types/variant.h +75 -18
- data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
- data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
- data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
- data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
- data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
- data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
- data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
- data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
- data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
- data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
- data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
- data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
- data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
- data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
- data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
- data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
- data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
- data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
- data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
- data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
- data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
- data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
- data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
- data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
- data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
- data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
- data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
- data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
- data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
- data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
- data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
- data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
- data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
- data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
- data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
- data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
- data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
- data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
- data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
- data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
- data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
- data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
- data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
- data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
- data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
- data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
- data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
- data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
- data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
- data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
- data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
- data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
- data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
- data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
- data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
- data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
- data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
- data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
- data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
- data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
- data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
- data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
- data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
- data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
- data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
- data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
- data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
- data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
- data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
- data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
- data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
- data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
- data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
- data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
- data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
- data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
- data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
- data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
- data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
- data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
- data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
- data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
- data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
- data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
- data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
- data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
- data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
- data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
- data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
- data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
- data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
- data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
- data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
- data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
- data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
- data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
- data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
- data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
- data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
- data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
- data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
- data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
- data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
- data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
- data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
- data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
- data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
- data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
- data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
- data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
- data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
- data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
- data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
- data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
- data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
- data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
- data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
- data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
- data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
- data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
- data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
- data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
- data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
- data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
- data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
- data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
- data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
- data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
- data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
- data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
- data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
- data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
- data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
- data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
- data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
- data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
- data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
- data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
- data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
- data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
- data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
- data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
- data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
- data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
- data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
- data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
- data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
- data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
- data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
- data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
- data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
- data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
- data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
- data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
- data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
- data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
- data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
- data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
- data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
- data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
- data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
- data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
- data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
- data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
- data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
- data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
- data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
- data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
- data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
- data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
- data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
- data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
- data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
- data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
- data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
- data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
- data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
- data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
- data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
- data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
- data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
- data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
- data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
- data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
- data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
- data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
- data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
- data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
- data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
- data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
- data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
- data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
- data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
- data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
- data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
- data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
- data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
- data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
- data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
- data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
- data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
- data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
- data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
- data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
- data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
- data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
- data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
- data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
- data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
- data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
- data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
- data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
- data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
- data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
- data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
- data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
- data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
- data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
- data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
- data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
- data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
- data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
- data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
- data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
- data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
- data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
- data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
- data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
- data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
- data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
- data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
- data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
- data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
- data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
- data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
- data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
- data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
- data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
- data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
- data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
- data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
- data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
- data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
- data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
- data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
- data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
- data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
- data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
- data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
- data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
- data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
- data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
- data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
- data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
- data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
- data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
- data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
- data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
- data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
- data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
- data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
- data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
- data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
- data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
- data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
- data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
- data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
- data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
- data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
- data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
- data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
- data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
- data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
- data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
- metadata +77 -52
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
- data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
- data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
- data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
- data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
- data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
- data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
- data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
- data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
- data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
|
@@ -25,9 +25,8 @@
|
|
|
25
25
|
|
|
26
26
|
#include "../../internal.h"
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
#endif
|
|
28
|
+
|
|
29
|
+
BSSL_NAMESPACE_BEGIN
|
|
31
30
|
|
|
32
31
|
#if defined(OPENSSL_64_BIT)
|
|
33
32
|
|
|
@@ -65,7 +64,7 @@ extern "C" {
|
|
|
65
64
|
#define BN_MASK2h1 (0xffff8000UL)
|
|
66
65
|
#define BN_MASK2h (0xffff0000UL)
|
|
67
66
|
// On some 32-bit platforms, Montgomery multiplication is done using 64-bit
|
|
68
|
-
// arithmetic with SIMD instructions. On such platforms,
|
|
67
|
+
// arithmetic with SIMD instructions. On such platforms, `BN_MONT_CTX::n0`
|
|
69
68
|
// needs to be two words long. Only certain 32-bit platforms actually make use
|
|
70
69
|
// of n0[1] and shorter R value would suffice for the others. However,
|
|
71
70
|
// currently only the assembly files know which is which.
|
|
@@ -82,7 +81,7 @@ extern "C" {
|
|
|
82
81
|
#define BN_CAN_USE_INLINE_ASM
|
|
83
82
|
#endif
|
|
84
83
|
|
|
85
|
-
// MOD_EXP_CTIME_ALIGN is the alignment needed for
|
|
84
|
+
// MOD_EXP_CTIME_ALIGN is the alignment needed for `BN_mod_exp_mont_consttime`'s
|
|
86
85
|
// tables.
|
|
87
86
|
//
|
|
88
87
|
// TODO(davidben): Historically, this alignment came from cache line
|
|
@@ -92,8 +91,8 @@ extern "C" {
|
|
|
92
91
|
// requirements.
|
|
93
92
|
#define MOD_EXP_CTIME_ALIGN 64
|
|
94
93
|
|
|
95
|
-
// MOD_EXP_CTIME_STORAGE_LEN is the number of
|
|
96
|
-
//
|
|
94
|
+
// MOD_EXP_CTIME_STORAGE_LEN is the number of `BN_ULONG`s needed for the
|
|
95
|
+
// `BN_mod_exp_mont_consttime` stack-allocated storage buffer. The buffer is
|
|
97
96
|
// just the right size for the RSAZ and is about ~1KB larger than what's
|
|
98
97
|
// necessary (4480 bytes) for 1024-bit inputs.
|
|
99
98
|
#define MOD_EXP_CTIME_STORAGE_LEN \
|
|
@@ -105,227 +104,300 @@ extern "C" {
|
|
|
105
104
|
sizeof(x) / sizeof(BN_ULONG), 0, BN_FLG_STATIC_DATA \
|
|
106
105
|
}
|
|
107
106
|
|
|
108
|
-
#if defined(BN_ULLONG)
|
|
109
|
-
#define Lw(t) ((BN_ULONG)(t))
|
|
110
|
-
#define Hw(t) ((BN_ULONG)((t) >> BN_BITS2))
|
|
111
|
-
#endif
|
|
112
|
-
|
|
113
107
|
// bn_minimal_width returns the minimal number of words needed to represent
|
|
114
|
-
//
|
|
108
|
+
// `bn`.
|
|
115
109
|
int bn_minimal_width(const BIGNUM *bn);
|
|
116
110
|
|
|
117
|
-
// bn_set_minimal_width sets
|
|
118
|
-
// zero,
|
|
111
|
+
// bn_set_minimal_width sets `bn->width` to `bn_minimal_width(bn)`. If `bn` is
|
|
112
|
+
// zero, `bn->neg` is set to zero.
|
|
119
113
|
void bn_set_minimal_width(BIGNUM *bn);
|
|
120
114
|
|
|
121
|
-
// bn_wexpand ensures that
|
|
115
|
+
// bn_wexpand ensures that `bn` has at least `words` works of space without
|
|
122
116
|
// altering its value. It returns one on success or zero on allocation
|
|
123
117
|
// failure.
|
|
124
118
|
int bn_wexpand(BIGNUM *bn, size_t words);
|
|
125
119
|
|
|
126
|
-
// bn_expand acts the same as
|
|
120
|
+
// bn_expand acts the same as `bn_wexpand`, but takes a number of bits rather
|
|
127
121
|
// than a number of words.
|
|
128
122
|
int bn_expand(BIGNUM *bn, size_t bits);
|
|
129
123
|
|
|
130
|
-
// bn_resize_words adjusts
|
|
131
|
-
// and zero on allocation error or if
|
|
124
|
+
// bn_resize_words adjusts `bn->width` to be `words`. It returns one on success
|
|
125
|
+
// and zero on allocation error or if `bn`'s value is too large.
|
|
132
126
|
OPENSSL_EXPORT int bn_resize_words(BIGNUM *bn, size_t words);
|
|
133
127
|
|
|
134
|
-
// bn_select_words sets
|
|
128
|
+
// bn_select_words sets `r` to `a` if `mask` is all ones or `b` if `mask` is
|
|
135
129
|
// all zeros.
|
|
136
130
|
void bn_select_words(BN_ULONG *r, BN_ULONG mask, const BN_ULONG *a,
|
|
137
131
|
const BN_ULONG *b, size_t num);
|
|
138
132
|
|
|
139
|
-
// bn_set_words sets
|
|
133
|
+
// bn_set_words sets `bn` to the value encoded in the `num` words in `words`,
|
|
140
134
|
// least significant word first.
|
|
141
135
|
int bn_set_words(BIGNUM *bn, const BN_ULONG *words, size_t num);
|
|
142
136
|
|
|
143
|
-
// bn_set_static_words acts like
|
|
144
|
-
// flag is set on
|
|
137
|
+
// bn_set_static_words acts like `bn_set_words`, but doesn't copy the data. A
|
|
138
|
+
// flag is set on `bn` so that `BN_free` won't attempt to free the data.
|
|
145
139
|
//
|
|
146
|
-
// The
|
|
140
|
+
// The `STATIC_BIGNUM` macro is probably a better solution for this outside of
|
|
147
141
|
// the FIPS module. Inside of the FIPS module that macro generates rel.ro data,
|
|
148
142
|
// which doesn't work with FIPS requirements.
|
|
149
143
|
void bn_set_static_words(BIGNUM *bn, const BN_ULONG *words, size_t num);
|
|
150
144
|
|
|
151
|
-
// bn_fits_in_words returns one if
|
|
145
|
+
// bn_fits_in_words returns one if `bn` may be represented in `num` words, plus
|
|
152
146
|
// a sign bit, and zero otherwise.
|
|
153
147
|
int bn_fits_in_words(const BIGNUM *bn, size_t num);
|
|
154
148
|
|
|
155
|
-
// bn_copy_words copies the value of
|
|
156
|
-
// is representable in
|
|
149
|
+
// bn_copy_words copies the value of `bn` to `out` and returns one if the value
|
|
150
|
+
// is representable in `num` words. Otherwise, it returns zero.
|
|
157
151
|
int bn_copy_words(BN_ULONG *out, size_t num, const BIGNUM *bn);
|
|
158
152
|
|
|
159
|
-
// bn_assert_fits_in_bytes asserts that
|
|
153
|
+
// bn_assert_fits_in_bytes asserts that `bn` fits in `num` bytes. This is a
|
|
160
154
|
// no-op in release builds, but triggers an assert in debug builds, and
|
|
161
155
|
// declassifies all bytes which are therefore known to be zero in constant-time
|
|
162
156
|
// validation.
|
|
163
157
|
void bn_assert_fits_in_bytes(const BIGNUM *bn, size_t num);
|
|
164
158
|
|
|
165
|
-
// bn_secret marks
|
|
166
|
-
//
|
|
159
|
+
// bn_secret marks `bn`'s contents, but not its width or sign, as secret. See
|
|
160
|
+
// `CONSTTIME_SECRET` for details.
|
|
167
161
|
inline void bn_secret(BIGNUM *bn) {
|
|
168
162
|
CONSTTIME_SECRET(bn->d, bn->width * sizeof(BN_ULONG));
|
|
169
163
|
}
|
|
170
164
|
|
|
171
|
-
// bn_declassify marks
|
|
165
|
+
// bn_declassify marks `bn`'s value as public. See `CONSTTIME_DECLASSIFY` for
|
|
172
166
|
// details.
|
|
173
167
|
inline void bn_declassify(BIGNUM *bn) {
|
|
174
168
|
CONSTTIME_DECLASSIFY(bn->d, bn->width * sizeof(BN_ULONG));
|
|
175
169
|
}
|
|
176
170
|
|
|
177
|
-
|
|
178
|
-
//
|
|
179
|
-
|
|
171
|
+
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86)
|
|
172
|
+
// See asm/bn-586.pl.
|
|
173
|
+
#define BN_ADD_ASM
|
|
174
|
+
#define BN_MUL_ASM
|
|
175
|
+
#endif
|
|
176
|
+
|
|
177
|
+
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64) && \
|
|
178
|
+
(defined(__GNUC__) || defined(__clang__))
|
|
179
|
+
// See asm/x86_64-gcc.c
|
|
180
|
+
#define BN_ADD_ASM
|
|
181
|
+
#define BN_MUL_ASM
|
|
182
|
+
#endif
|
|
183
|
+
|
|
184
|
+
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_AARCH64)
|
|
185
|
+
// See asm/bn-armv8.pl.
|
|
186
|
+
#define BN_ADD_ASM
|
|
187
|
+
#endif
|
|
188
|
+
|
|
189
|
+
// bn_mul_add_words multiples `ap` by `w`, adds the result to `rp`, and places
|
|
190
|
+
// the result in `rp`. `ap` and `rp` must both be `num` words long. It returns
|
|
191
|
+
// the carry word of the operation. `ap` and `rp` may be equal but otherwise may
|
|
180
192
|
// not alias.
|
|
181
|
-
|
|
193
|
+
#if defined(BN_MUL_ASM)
|
|
194
|
+
extern "C"
|
|
195
|
+
#endif
|
|
196
|
+
BN_ULONG bn_mul_add_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num,
|
|
197
|
+
BN_ULONG w);
|
|
198
|
+
|
|
199
|
+
// bn_mul_words multiples `ap` by `w` and places the result in `rp`. `ap` and
|
|
200
|
+
// `rp` must both be `num` words long. It returns the carry word of the
|
|
201
|
+
// operation. `ap` and `rp` may be equal but otherwise may not alias.
|
|
202
|
+
#if defined(BN_MUL_ASM)
|
|
203
|
+
extern "C"
|
|
204
|
+
#endif
|
|
205
|
+
BN_ULONG bn_mul_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num,
|
|
182
206
|
BN_ULONG w);
|
|
183
207
|
|
|
184
|
-
//
|
|
185
|
-
//
|
|
186
|
-
//
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
// bn_sqr_words sets |rp[2*i]| and |rp[2*i+1]| to |ap[i]|'s square, for all |i|
|
|
190
|
-
// up to |num|. |ap| is an array of |num| words and |rp| an array of |2*num|
|
|
191
|
-
// words. |ap| and |rp| may not alias.
|
|
208
|
+
// bn_sqr_add_words computes `tmp` where `tmp[2*i]` and `tmp[2*i+1]` are
|
|
209
|
+
// `ap[i]`'s square, for all `i` up to `num`, and adds the result to `rp`. If
|
|
210
|
+
// the result does not fit in `2*num` words, the final carry bit is truncated.
|
|
211
|
+
// `ap` is an array of `num` words and `rp` an array of `2*num` words. `ap` and
|
|
212
|
+
// `rp` may not alias.
|
|
192
213
|
//
|
|
193
|
-
// This gives the contribution of the
|
|
194
|
-
|
|
214
|
+
// This gives the contribution of the `ap[i]*ap[i]` terms when squaring `ap`.
|
|
215
|
+
#if defined(BN_MUL_ASM)
|
|
216
|
+
extern "C"
|
|
217
|
+
#endif
|
|
218
|
+
void bn_sqr_add_words(BN_ULONG *rp, const BN_ULONG *ap, size_t num);
|
|
195
219
|
|
|
196
|
-
// bn_add_words adds
|
|
197
|
-
// are
|
|
198
|
-
// overflowed and zero otherwise. Any pair of
|
|
220
|
+
// bn_add_words adds `ap` to `bp` and places the result in `rp`, each of which
|
|
221
|
+
// are `num` words long. It returns the carry bit, which is one if the operation
|
|
222
|
+
// overflowed and zero otherwise. Any pair of `ap`, `bp`, and `rp` may be equal
|
|
199
223
|
// to each other but otherwise may not alias.
|
|
200
|
-
BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
|
201
|
-
size_t num);
|
|
202
224
|
|
|
203
|
-
|
|
225
|
+
#if defined(BN_ADD_ASM)
|
|
226
|
+
extern "C"
|
|
227
|
+
#endif
|
|
228
|
+
BN_ULONG bn_add_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
|
229
|
+
size_t num);
|
|
230
|
+
|
|
231
|
+
// bn_sub_words subtracts `bp` from `ap` and places the result in `rp`. It
|
|
204
232
|
// returns the borrow bit, which is one if the computation underflowed and zero
|
|
205
|
-
// otherwise. Any pair of
|
|
233
|
+
// otherwise. Any pair of `ap`, `bp`, and `rp` may be equal to each other but
|
|
206
234
|
// otherwise may not alias.
|
|
207
|
-
|
|
208
|
-
|
|
235
|
+
#if defined(BN_ADD_ASM)
|
|
236
|
+
extern "C"
|
|
237
|
+
#endif
|
|
238
|
+
BN_ULONG bn_sub_words(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
|
239
|
+
size_t num);
|
|
209
240
|
|
|
210
|
-
// bn_mul_comba4 sets
|
|
211
|
-
|
|
241
|
+
// bn_mul_comba4 sets `r` to the product of `a` and `b`.
|
|
242
|
+
#if defined(BN_MUL_ASM)
|
|
243
|
+
extern "C"
|
|
244
|
+
#endif
|
|
245
|
+
void bn_mul_comba4(BN_ULONG r[8], const BN_ULONG a[4], const BN_ULONG b[4]);
|
|
212
246
|
|
|
213
|
-
// bn_mul_comba8 sets
|
|
214
|
-
|
|
247
|
+
// bn_mul_comba8 sets `r` to the product of `a` and `b`.
|
|
248
|
+
#if defined(BN_MUL_ASM)
|
|
249
|
+
extern "C"
|
|
250
|
+
#endif
|
|
251
|
+
void bn_mul_comba8(BN_ULONG r[16], const BN_ULONG a[8],
|
|
252
|
+
const BN_ULONG b[8]);
|
|
215
253
|
|
|
216
|
-
// bn_sqr_comba8 sets
|
|
217
|
-
|
|
254
|
+
// bn_sqr_comba8 sets `r` to `a`^2.
|
|
255
|
+
#if defined(BN_MUL_ASM)
|
|
256
|
+
extern "C"
|
|
257
|
+
#endif
|
|
258
|
+
void bn_sqr_comba8(BN_ULONG r[16], const BN_ULONG a[8]);
|
|
218
259
|
|
|
219
|
-
// bn_sqr_comba4 sets
|
|
220
|
-
|
|
260
|
+
// bn_sqr_comba4 sets `r` to `a`^2.
|
|
261
|
+
#if defined(BN_MUL_ASM)
|
|
262
|
+
extern "C"
|
|
263
|
+
#endif
|
|
264
|
+
void bn_sqr_comba4(BN_ULONG r[8], const BN_ULONG a[4]);
|
|
221
265
|
|
|
222
|
-
// bn_less_than_words returns one if
|
|
223
|
-
// and
|
|
266
|
+
// bn_less_than_words returns one if `a` < `b` and zero otherwise, where `a`
|
|
267
|
+
// and `b` both are `len` words long. It runs in constant time.
|
|
224
268
|
int bn_less_than_words(const BN_ULONG *a, const BN_ULONG *b, size_t len);
|
|
225
269
|
|
|
226
|
-
// bn_in_range_words returns one if
|
|
227
|
-
// where
|
|
228
|
-
//
|
|
270
|
+
// bn_in_range_words returns one if `min_inclusive` <= `a` < `max_exclusive`,
|
|
271
|
+
// where `a` and `max_exclusive` both are `len` words long. `a` and
|
|
272
|
+
// `max_exclusive` are treated as secret.
|
|
229
273
|
int bn_in_range_words(const BN_ULONG *a, BN_ULONG min_inclusive,
|
|
230
274
|
const BN_ULONG *max_exclusive, size_t len);
|
|
231
275
|
|
|
232
|
-
// bn_rand_range_words sets
|
|
233
|
-
//
|
|
276
|
+
// bn_rand_range_words sets `out` to a uniformly distributed random number from
|
|
277
|
+
// `min_inclusive` to `max_exclusive`. Both `out` and `max_exclusive` are `len`
|
|
234
278
|
// words long.
|
|
235
279
|
//
|
|
236
|
-
// This function runs in time independent of the result, but
|
|
237
|
-
//
|
|
280
|
+
// This function runs in time independent of the result, but `min_inclusive` and
|
|
281
|
+
// `max_exclusive` are public data. (Information about the range is unavoidably
|
|
238
282
|
// leaked by how many iterations it took to select a number.)
|
|
239
283
|
int bn_rand_range_words(BN_ULONG *out, BN_ULONG min_inclusive,
|
|
240
284
|
const BN_ULONG *max_exclusive, size_t len,
|
|
241
285
|
const uint8_t additional_data[32]);
|
|
242
286
|
|
|
243
|
-
// bn_range_secret_range behaves like
|
|
244
|
-
//
|
|
287
|
+
// bn_range_secret_range behaves like `BN_rand_range_ex`, but treats
|
|
288
|
+
// `max_exclusive` as secret. Because of this constraint, the distribution of
|
|
245
289
|
// values returned is more complex.
|
|
246
290
|
//
|
|
247
291
|
// Rather than repeatedly generating values until one is in range, which would
|
|
248
292
|
// leak information, it generates one value. If the value is in range, it sets
|
|
249
|
-
//
|
|
293
|
+
// `*out_is_uniform` to one. Otherwise, it sets `*out_is_uniform` to zero,
|
|
250
294
|
// fixing up the value to force it in range.
|
|
251
295
|
//
|
|
252
|
-
// The subset of calls to
|
|
296
|
+
// The subset of calls to `bn_rand_secret_range` which set `*out_is_uniform` to
|
|
253
297
|
// one are uniformly distributed in the target range. Calls overall are not.
|
|
254
298
|
// This function is intended for use in situations where the extra values are
|
|
255
299
|
// still usable and where the number of iterations needed to reach the target
|
|
256
300
|
// number of uniform outputs may be blinded for negligible probabilities of
|
|
257
301
|
// timing leaks.
|
|
258
302
|
//
|
|
259
|
-
// Although this function treats
|
|
260
|
-
// of bits in
|
|
303
|
+
// Although this function treats `max_exclusive` as secret, it treats the number
|
|
304
|
+
// of bits in `max_exclusive` as public.
|
|
261
305
|
int bn_rand_secret_range(BIGNUM *r, int *out_is_uniform, BN_ULONG min_inclusive,
|
|
262
306
|
const BIGNUM *max_exclusive);
|
|
263
307
|
|
|
264
|
-
// BN_MONTGOMERY_MAX_WORDS is the maximum number of words allowed in a
|
|
308
|
+
// BN_MONTGOMERY_MAX_WORDS is the maximum number of words allowed in a `BIGNUM`
|
|
265
309
|
// used with Montgomery reduction. Ideally this limit would be applied to all
|
|
266
|
-
//
|
|
310
|
+
// `BIGNUM`s, in `bn_wexpand`, but the exactfloat library needs to create 8 MiB
|
|
267
311
|
// values for other operations.
|
|
268
312
|
//
|
|
269
|
-
//
|
|
270
|
-
//
|
|
271
|
-
//
|
|
313
|
+
// This limit is set so that one number fits within 2 KiB, giving room to
|
|
314
|
+
// allocate a few of them on the stack. It is also set to limit the DoS impact
|
|
315
|
+
// of large RSA, DH, and DSA keys, which scale cubically.
|
|
272
316
|
#define BN_MONTGOMERY_MAX_WORDS (16384 / BN_BITS2)
|
|
273
317
|
|
|
318
|
+
BSSL_NAMESPACE_END
|
|
319
|
+
|
|
320
|
+
struct bn_mont_ctx_st {
|
|
321
|
+
// RR is R^2, reduced modulo `N`. It is used to convert to Montgomery form. It
|
|
322
|
+
// is guaranteed to have the same width as `N`.
|
|
323
|
+
BIGNUM RR;
|
|
324
|
+
// N is the modulus. It is always stored in minimal form, so `N.width`
|
|
325
|
+
// determines R.
|
|
326
|
+
BIGNUM N;
|
|
327
|
+
BN_ULONG n0[BN_MONT_CTX_N0_LIMBS]; // least significant words of (R*Ri-1)/N
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
BSSL_NAMESPACE_BEGIN
|
|
331
|
+
|
|
274
332
|
#if !defined(OPENSSL_NO_ASM) && \
|
|
275
333
|
(defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
|
|
276
334
|
defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
|
|
277
335
|
#define OPENSSL_BN_ASM_MONT
|
|
278
|
-
//
|
|
279
|
-
// long. Inputs and outputs are in Montgomery form.
|
|
280
|
-
// corresponding field in
|
|
336
|
+
// bn_mul_mont_words writes `ap` * `bp` mod `np` to `rp`, each `num` words
|
|
337
|
+
// long. Inputs and outputs are in Montgomery form. `n0` is a pointer to the
|
|
338
|
+
// corresponding field in `BN_MONT_CTX`.
|
|
281
339
|
//
|
|
282
|
-
// If at least one of
|
|
340
|
+
// If at least one of `ap` or `bp` is fully reduced, `rp` will be fully reduced.
|
|
283
341
|
// If neither is fully-reduced, the output may not be either.
|
|
284
342
|
//
|
|
285
|
-
// This function allocates up to 2 *
|
|
286
|
-
// the stack, so
|
|
287
|
-
// Additionally,
|
|
343
|
+
// This function allocates up to 2 * `num` words (plus a constant allocation) on
|
|
344
|
+
// the stack, so `num` should be at most `BN_MONTGOMERY_MAX_WORDS`.
|
|
345
|
+
// Additionally, `num` must be at least 128 / `BN_BITS2`.
|
|
288
346
|
//
|
|
289
347
|
// TODO(davidben): The x86_64 implementation expects a 32-bit input and masks
|
|
290
348
|
// off upper bits. The aarch64 implementation expects a 64-bit input and does
|
|
291
|
-
// not.
|
|
292
|
-
// the
|
|
349
|
+
// not. `size_t` is the safer option but not strictly correct for x86_64. But
|
|
350
|
+
// the `BN_MONTGOMERY_MAX_WORDS` bound makes this moot.
|
|
293
351
|
//
|
|
294
|
-
// See also discussion in
|
|
352
|
+
// See also discussion in `ToWord` in abi_test.h for notes on smaller-than-word
|
|
295
353
|
// inputs.
|
|
296
|
-
void
|
|
297
|
-
|
|
354
|
+
extern "C" void bn_mul_mont_words(BN_ULONG *rp, const BN_ULONG *ap,
|
|
355
|
+
const BN_ULONG *bp, const BN_ULONG *np,
|
|
356
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
357
|
+
size_t num);
|
|
298
358
|
|
|
299
359
|
#if defined(OPENSSL_X86_64)
|
|
300
|
-
inline int bn_mulx_adx_capable(
|
|
360
|
+
inline int bn_mulx_adx_capable() {
|
|
301
361
|
// MULX is in BMI2.
|
|
302
362
|
return CRYPTO_is_BMI2_capable() && CRYPTO_is_ADX_capable();
|
|
303
363
|
}
|
|
304
|
-
void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap,
|
|
305
|
-
|
|
364
|
+
extern "C" void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap,
|
|
365
|
+
const BN_ULONG *bp, const BN_ULONG *np,
|
|
366
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
367
|
+
size_t num);
|
|
306
368
|
inline int bn_mul4x_mont_capable(size_t num) {
|
|
307
369
|
return num >= 8 && (num & 3) == 0;
|
|
308
370
|
}
|
|
309
|
-
void bn_mul4x_mont(BN_ULONG *rp, const BN_ULONG *ap,
|
|
310
|
-
|
|
371
|
+
extern "C" void bn_mul4x_mont(BN_ULONG *rp, const BN_ULONG *ap,
|
|
372
|
+
const BN_ULONG *bp, const BN_ULONG *np,
|
|
373
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
374
|
+
size_t num);
|
|
311
375
|
inline int bn_mulx4x_mont_capable(size_t num) {
|
|
312
376
|
return bn_mul4x_mont_capable(num) && bn_mulx_adx_capable();
|
|
313
377
|
}
|
|
314
|
-
void bn_mulx4x_mont(BN_ULONG *rp, const BN_ULONG *ap,
|
|
315
|
-
|
|
378
|
+
extern "C" void bn_mulx4x_mont(BN_ULONG *rp, const BN_ULONG *ap,
|
|
379
|
+
const BN_ULONG *bp, const BN_ULONG *np,
|
|
380
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
381
|
+
size_t num);
|
|
316
382
|
inline int bn_sqr8x_mont_capable(size_t num) {
|
|
317
383
|
return num >= 8 && (num & 7) == 0;
|
|
318
384
|
}
|
|
319
|
-
void bn_sqr8x_mont(BN_ULONG *rp, const BN_ULONG *ap,
|
|
320
|
-
|
|
385
|
+
extern "C" void bn_sqr8x_mont(BN_ULONG *rp, const BN_ULONG *ap,
|
|
386
|
+
BN_ULONG mulx_adx_capable, const BN_ULONG *np,
|
|
387
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
388
|
+
size_t num);
|
|
321
389
|
#elif defined(OPENSSL_ARM)
|
|
322
390
|
inline int bn_mul8x_mont_neon_capable(size_t num) {
|
|
323
391
|
return (num & 7) == 0 && CRYPTO_is_NEON_capable();
|
|
324
392
|
}
|
|
325
|
-
void bn_mul8x_mont_neon(BN_ULONG *rp, const BN_ULONG *ap,
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
393
|
+
extern "C" void bn_mul8x_mont_neon(BN_ULONG *rp, const BN_ULONG *ap,
|
|
394
|
+
const BN_ULONG *bp, const BN_ULONG *np,
|
|
395
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
396
|
+
size_t num);
|
|
397
|
+
extern "C" void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap,
|
|
398
|
+
const BN_ULONG *bp, const BN_ULONG *np,
|
|
399
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
400
|
+
size_t num);
|
|
329
401
|
#endif
|
|
330
402
|
|
|
331
403
|
#endif // OPENSSL_BN_ASM_MONT
|
|
@@ -333,40 +405,46 @@ void bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
|
|
333
405
|
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64)
|
|
334
406
|
#define OPENSSL_BN_ASM_MONT5
|
|
335
407
|
|
|
336
|
-
// The following functions implement
|
|
337
|
-
//
|
|
408
|
+
// The following functions implement `bn_mul_mont_gather5`. See
|
|
409
|
+
// `bn_mul_mont_gather5` for details.
|
|
338
410
|
inline int bn_mul4x_mont_gather5_capable(int num) { return (num & 7) == 0; }
|
|
339
|
-
void bn_mul4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
|
340
|
-
|
|
341
|
-
|
|
411
|
+
extern "C" void bn_mul4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
|
412
|
+
const BN_ULONG *table, const BN_ULONG *np,
|
|
413
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
414
|
+
int num, int power);
|
|
342
415
|
|
|
343
416
|
inline int bn_mulx4x_mont_gather5_capable(int num) {
|
|
344
417
|
return bn_mul4x_mont_gather5_capable(num) && CRYPTO_is_ADX_capable() &&
|
|
345
418
|
CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
|
|
346
419
|
}
|
|
347
|
-
void bn_mulx4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
//
|
|
420
|
+
extern "C" void bn_mulx4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
|
421
|
+
const BN_ULONG *table,
|
|
422
|
+
const BN_ULONG *np,
|
|
423
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS],
|
|
424
|
+
int num, int power);
|
|
425
|
+
|
|
426
|
+
extern "C" void bn_mul_mont_gather5_nohw(
|
|
427
|
+
BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table, const BN_ULONG *np,
|
|
428
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS], int num, int power);
|
|
429
|
+
|
|
430
|
+
// bn_scatter5 stores `inp` to index `power` of `table`. `inp` and each entry of
|
|
431
|
+
// `table` are `num` words long. `power` must be less than 32 and is treated as
|
|
432
|
+
// public. `table` must be 32*`num` words long. `table` must be aligned to at
|
|
358
433
|
// least 16 bytes.
|
|
359
|
-
void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
|
|
360
|
-
|
|
434
|
+
extern "C" void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
|
|
435
|
+
size_t power);
|
|
361
436
|
|
|
362
|
-
// bn_gather5 loads index
|
|
363
|
-
// each entry of
|
|
364
|
-
// is treated as secret.
|
|
365
|
-
void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table,
|
|
437
|
+
// bn_gather5 loads index `power` of `table` and stores it in `out`. `out` and
|
|
438
|
+
// each entry of `table` are `num` words long. `power` must be less than 32 and
|
|
439
|
+
// is treated as secret. `table` must be aligned to at least 16 bytes.
|
|
440
|
+
extern "C" void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table,
|
|
441
|
+
size_t power);
|
|
366
442
|
|
|
367
|
-
// The following functions implement
|
|
368
|
-
void bn_power5_nohw(BN_ULONG *rp, const BN_ULONG *ap,
|
|
369
|
-
|
|
443
|
+
// The following functions implement `bn_power5`. See `bn_power5` for details.
|
|
444
|
+
extern "C" void bn_power5_nohw(BN_ULONG *rp, const BN_ULONG *ap,
|
|
445
|
+
const BN_ULONG *table, const BN_ULONG *np,
|
|
446
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS], int num,
|
|
447
|
+
int power);
|
|
370
448
|
|
|
371
449
|
inline int bn_power5_capable(int num) { return (num & 7) == 0; }
|
|
372
450
|
|
|
@@ -374,17 +452,19 @@ inline int bn_powerx5_capable(int num) {
|
|
|
374
452
|
return bn_power5_capable(num) && CRYPTO_is_ADX_capable() &&
|
|
375
453
|
CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
|
|
376
454
|
}
|
|
377
|
-
void bn_powerx5(BN_ULONG *rp, const BN_ULONG *ap,
|
|
378
|
-
|
|
455
|
+
extern "C" void bn_powerx5(BN_ULONG *rp, const BN_ULONG *ap,
|
|
456
|
+
const BN_ULONG *table, const BN_ULONG *np,
|
|
457
|
+
const BN_ULONG n0[BN_MONT_CTX_N0_LIMBS], int num,
|
|
458
|
+
int power);
|
|
379
459
|
|
|
380
460
|
#endif // !OPENSSL_NO_ASM && OPENSSL_X86_64
|
|
381
461
|
|
|
382
462
|
uint64_t bn_mont_n0(const BIGNUM *n);
|
|
383
463
|
|
|
384
|
-
// bn_mont_ctx_set_RR_consttime initializes
|
|
385
|
-
// success and zero on error.
|
|
386
|
-
// initialized already. The bit width of
|
|
387
|
-
//
|
|
464
|
+
// bn_mont_ctx_set_RR_consttime initializes `mont->RR`. It returns one on
|
|
465
|
+
// success and zero on error. `mont->N` and `mont->n0` must have been
|
|
466
|
+
// initialized already. The bit width of `mont->N` is assumed public, but
|
|
467
|
+
// `mont->N` is otherwise treated as secret.
|
|
388
468
|
int bn_mont_ctx_set_RR_consttime(BN_MONT_CTX *mont, BN_CTX *ctx);
|
|
389
469
|
|
|
390
470
|
#if defined(_MSC_VER)
|
|
@@ -405,35 +485,35 @@ int bn_mont_ctx_set_RR_consttime(BN_MONT_CTX *mont, BN_CTX *ctx);
|
|
|
405
485
|
#error "Either BN_ULLONG or BN_UMULT_LOHI must be defined on every platform."
|
|
406
486
|
#endif
|
|
407
487
|
|
|
408
|
-
// bn_jacobi returns the Jacobi symbol of
|
|
488
|
+
// bn_jacobi returns the Jacobi symbol of `a` and `b` (which is -1, 0 or 1), or
|
|
409
489
|
// -2 on error.
|
|
410
490
|
int bn_jacobi(const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
|
411
491
|
|
|
412
|
-
// bn_is_bit_set_words returns one if bit
|
|
492
|
+
// bn_is_bit_set_words returns one if bit `bit` is set in `a` and zero
|
|
413
493
|
// otherwise.
|
|
414
494
|
int bn_is_bit_set_words(const BN_ULONG *a, size_t num, size_t bit);
|
|
415
495
|
|
|
416
|
-
// bn_one_to_montgomery sets
|
|
496
|
+
// bn_one_to_montgomery sets `r` to one in Montgomery form. It returns one on
|
|
417
497
|
// success and zero on error. This function treats the bit width of the modulus
|
|
418
498
|
// as public.
|
|
419
499
|
int bn_one_to_montgomery(BIGNUM *r, const BN_MONT_CTX *mont, BN_CTX *ctx);
|
|
420
500
|
|
|
421
|
-
// bn_less_than_montgomery_R returns one if
|
|
422
|
-
// value for
|
|
501
|
+
// bn_less_than_montgomery_R returns one if `bn` is less than the Montgomery R
|
|
502
|
+
// value for `mont` and zero otherwise.
|
|
423
503
|
int bn_less_than_montgomery_R(const BIGNUM *bn, const BN_MONT_CTX *mont);
|
|
424
504
|
|
|
425
|
-
// bn_mod_u16_consttime returns
|
|
426
|
-
// in time independent of the value of
|
|
505
|
+
// bn_mod_u16_consttime returns `bn` mod `d`, ignoring `bn`'s sign bit. It runs
|
|
506
|
+
// in time independent of the value of `bn`, but it treats `d` as public.
|
|
427
507
|
OPENSSL_EXPORT uint16_t bn_mod_u16_consttime(const BIGNUM *bn, uint16_t d);
|
|
428
508
|
|
|
429
|
-
// bn_odd_number_is_obviously_composite returns one if
|
|
509
|
+
// bn_odd_number_is_obviously_composite returns one if `bn` is divisible by one
|
|
430
510
|
// of the first several odd primes and zero otherwise.
|
|
431
511
|
int bn_odd_number_is_obviously_composite(const BIGNUM *bn);
|
|
432
512
|
|
|
433
513
|
// A BN_MILLER_RABIN stores state common to each Miller-Rabin iteration. It is
|
|
434
|
-
// initialized within an existing
|
|
435
|
-
// that scope is released with
|
|
436
|
-
// 186-
|
|
514
|
+
// initialized within an existing `BN_CTX` scope and may not be used after
|
|
515
|
+
// that scope is released with `BN_CTX_end`. Field names match those in FIPS
|
|
516
|
+
// 186-5, section B.3.1.
|
|
437
517
|
typedef struct {
|
|
438
518
|
// w1 is w-1.
|
|
439
519
|
BIGNUM *w1;
|
|
@@ -449,46 +529,46 @@ typedef struct {
|
|
|
449
529
|
int a;
|
|
450
530
|
} BN_MILLER_RABIN;
|
|
451
531
|
|
|
452
|
-
// bn_miller_rabin_init initializes
|
|
532
|
+
// bn_miller_rabin_init initializes `miller_rabin` for testing if `mont->N` is
|
|
453
533
|
// prime. It returns one on success and zero on error.
|
|
454
534
|
OPENSSL_EXPORT int bn_miller_rabin_init(BN_MILLER_RABIN *miller_rabin,
|
|
455
535
|
const BN_MONT_CTX *mont, BN_CTX *ctx);
|
|
456
536
|
|
|
457
537
|
// bn_miller_rabin_iteration performs one Miller-Rabin iteration, checking if
|
|
458
|
-
//
|
|
459
|
-
// initialized with
|
|
460
|
-
//
|
|
461
|
-
//
|
|
538
|
+
// `b` is a composite witness for `mont->N`. `miller_rabin` must have been
|
|
539
|
+
// initialized with `bn_miller_rabin_setup`. On success, it returns one and sets
|
|
540
|
+
// `*out_is_possibly_prime` to one if `mont->N` may still be prime or zero if
|
|
541
|
+
// `b` shows it is composite. On allocation or internal failure, it returns
|
|
462
542
|
// zero.
|
|
463
543
|
OPENSSL_EXPORT int bn_miller_rabin_iteration(
|
|
464
544
|
const BN_MILLER_RABIN *miller_rabin, int *out_is_possibly_prime,
|
|
465
545
|
const BIGNUM *b, const BN_MONT_CTX *mont, BN_CTX *ctx);
|
|
466
546
|
|
|
467
|
-
// bn_rshift1_words sets
|
|
547
|
+
// bn_rshift1_words sets `r` to `a` >> 1, where both arrays are `num` bits wide.
|
|
468
548
|
void bn_rshift1_words(BN_ULONG *r, const BN_ULONG *a, size_t num);
|
|
469
549
|
|
|
470
|
-
// bn_rshift_words sets
|
|
550
|
+
// bn_rshift_words sets `r` to `a` >> `shift`, where both arrays are `num` bits
|
|
471
551
|
// wide.
|
|
472
552
|
void bn_rshift_words(BN_ULONG *r, const BN_ULONG *a, unsigned shift,
|
|
473
553
|
size_t num);
|
|
474
554
|
|
|
475
|
-
// bn_rshift_secret_shift behaves like
|
|
476
|
-
// of both
|
|
555
|
+
// bn_rshift_secret_shift behaves like `BN_rshift` but runs in time independent
|
|
556
|
+
// of both `a` and `n`.
|
|
477
557
|
OPENSSL_EXPORT int bn_rshift_secret_shift(BIGNUM *r, const BIGNUM *a,
|
|
478
558
|
unsigned n, BN_CTX *ctx);
|
|
479
559
|
|
|
480
|
-
// bn_reduce_once sets
|
|
481
|
-
// zero if
|
|
482
|
-
// words long, but
|
|
483
|
-
// be zero or one, as implied by the bounds on
|
|
560
|
+
// bn_reduce_once sets `r` to `a` mod `m` where 0 <= `a` < 2*`m`. It returns
|
|
561
|
+
// zero if `a` < `m` and a mask of all ones if `a` >= `m`. Each array is `num`
|
|
562
|
+
// words long, but `a` has an additional word specified by `carry`. `carry` must
|
|
563
|
+
// be zero or one, as implied by the bounds on `a`.
|
|
484
564
|
//
|
|
485
|
-
//
|
|
565
|
+
// `r`, `a`, and `m` may not alias. Use `bn_reduce_once_in_place` if `r` and `a`
|
|
486
566
|
// must alias.
|
|
487
567
|
BN_ULONG bn_reduce_once(BN_ULONG *r, const BN_ULONG *a, BN_ULONG carry,
|
|
488
568
|
const BN_ULONG *m, size_t num);
|
|
489
569
|
|
|
490
|
-
// bn_reduce_once_in_place behaves like
|
|
491
|
-
//
|
|
570
|
+
// bn_reduce_once_in_place behaves like `bn_reduce_once` but acts in-place on
|
|
571
|
+
// `r`, using `tmp` as scratch space. `r`, `tmp`, and `m` may not alias.
|
|
492
572
|
BN_ULONG bn_reduce_once_in_place(BN_ULONG *r, BN_ULONG carry, const BN_ULONG *m,
|
|
493
573
|
BN_ULONG *tmp, size_t num);
|
|
494
574
|
|
|
@@ -496,64 +576,64 @@ BN_ULONG bn_reduce_once_in_place(BN_ULONG *r, BN_ULONG carry, const BN_ULONG *m,
|
|
|
496
576
|
// Constant-time non-modular arithmetic.
|
|
497
577
|
//
|
|
498
578
|
// The following functions implement non-modular arithmetic in constant-time
|
|
499
|
-
// and pessimally set
|
|
579
|
+
// and pessimally set `r->width` to the largest possible word size.
|
|
500
580
|
//
|
|
501
581
|
// Note this means that, e.g., repeatedly multiplying by one will cause widths
|
|
502
582
|
// to increase without bound. The corresponding public API functions minimize
|
|
503
583
|
// their outputs to avoid regressing calculator consumers.
|
|
504
584
|
|
|
505
|
-
// bn_uadd_consttime behaves like
|
|
506
|
-
//
|
|
585
|
+
// bn_uadd_consttime behaves like `BN_uadd`, but it pessimally sets
|
|
586
|
+
// `r->width` = `a->width` + `b->width` + 1.
|
|
507
587
|
int bn_uadd_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
|
508
588
|
|
|
509
|
-
// bn_usub_consttime behaves like
|
|
510
|
-
//
|
|
589
|
+
// bn_usub_consttime behaves like `BN_usub`, but it pessimally sets
|
|
590
|
+
// `r->width` = `a->width`.
|
|
511
591
|
int bn_usub_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
|
512
592
|
|
|
513
|
-
// bn_abs_sub_consttime sets
|
|
593
|
+
// bn_abs_sub_consttime sets `r` to the absolute value of `a` - `b`, treating
|
|
514
594
|
// both inputs as secret. It returns one on success and zero on error.
|
|
515
595
|
OPENSSL_EXPORT int bn_abs_sub_consttime(BIGNUM *r, const BIGNUM *a,
|
|
516
596
|
const BIGNUM *b, BN_CTX *ctx);
|
|
517
597
|
|
|
518
|
-
// bn_mul_consttime behaves like
|
|
519
|
-
// pessimally sets
|
|
520
|
-
// information about
|
|
598
|
+
// bn_mul_consttime behaves like `BN_mul`, but it rejects negative inputs and
|
|
599
|
+
// pessimally sets `r->width` to `a->width` + `b->width`, to avoid leaking
|
|
600
|
+
// information about `a` and `b`.
|
|
521
601
|
int bn_mul_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b, BN_CTX *ctx);
|
|
522
602
|
|
|
523
|
-
// bn_sqrt_consttime behaves like
|
|
524
|
-
// to 2
|
|
603
|
+
// bn_sqrt_consttime behaves like `BN_sqrt`, but it pessimally sets `r->width`
|
|
604
|
+
// to 2*`a->width`, to avoid leaking information about `a` and `b`.
|
|
525
605
|
int bn_sqr_consttime(BIGNUM *r, const BIGNUM *a, BN_CTX *ctx);
|
|
526
606
|
|
|
527
|
-
// bn_div_consttime behaves like
|
|
607
|
+
// bn_div_consttime behaves like `BN_div`, but it rejects negative inputs and
|
|
528
608
|
// treats both inputs, including their magnitudes, as secret. It is, as a
|
|
529
|
-
// result, much slower than
|
|
530
|
-
// where Montgomery reduction is not available.
|
|
531
|
-
// public lower bound for
|
|
609
|
+
// result, much slower than `BN_div` and should only be used for rare operations
|
|
610
|
+
// where Montgomery reduction is not available. `divisor_min_bits` is a
|
|
611
|
+
// public lower bound for `BN_num_bits(divisor)`. When `divisor`'s bit width is
|
|
532
612
|
// public, this can speed up the operation.
|
|
533
613
|
//
|
|
534
|
-
// Note that
|
|
614
|
+
// Note that `quotient->width` will be set pessimally to `numerator->width`.
|
|
535
615
|
OPENSSL_EXPORT int bn_div_consttime(BIGNUM *quotient, BIGNUM *remainder,
|
|
536
616
|
const BIGNUM *numerator,
|
|
537
617
|
const BIGNUM *divisor,
|
|
538
618
|
unsigned divisor_min_bits, BN_CTX *ctx);
|
|
539
619
|
|
|
540
|
-
// bn_is_relatively_prime checks whether GCD(
|
|
541
|
-
// returns one and sets
|
|
620
|
+
// bn_is_relatively_prime checks whether GCD(`x`, `y`) is one. On success, it
|
|
621
|
+
// returns one and sets `*out_relatively_prime` to one if the GCD was one and
|
|
542
622
|
// zero otherwise. On error, it returns zero.
|
|
543
623
|
OPENSSL_EXPORT int bn_is_relatively_prime(int *out_relatively_prime,
|
|
544
624
|
const BIGNUM *x, const BIGNUM *y,
|
|
545
625
|
BN_CTX *ctx);
|
|
546
626
|
|
|
547
|
-
// bn_lcm_consttime sets
|
|
548
|
-
// zero on error.
|
|
627
|
+
// bn_lcm_consttime sets `r` to LCM(`a`, `b`). It returns one and success and
|
|
628
|
+
// zero on error. `a` and `b` are both treated as secret.
|
|
549
629
|
OPENSSL_EXPORT int bn_lcm_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
|
550
630
|
BN_CTX *ctx);
|
|
551
631
|
|
|
552
|
-
// bn_mont_ctx_init zero-initialies
|
|
632
|
+
// bn_mont_ctx_init zero-initialies `mont`.
|
|
553
633
|
void bn_mont_ctx_init(BN_MONT_CTX *mont);
|
|
554
634
|
|
|
555
|
-
// bn_mont_ctx_cleanup releases memory associated with
|
|
556
|
-
//
|
|
635
|
+
// bn_mont_ctx_cleanup releases memory associated with `mont`, without freeing
|
|
636
|
+
// `mont` itself.
|
|
557
637
|
void bn_mont_ctx_cleanup(BN_MONT_CTX *mont);
|
|
558
638
|
|
|
559
639
|
|
|
@@ -561,66 +641,66 @@ void bn_mont_ctx_cleanup(BN_MONT_CTX *mont);
|
|
|
561
641
|
//
|
|
562
642
|
// The following functions implement basic constant-time modular arithmetic.
|
|
563
643
|
|
|
564
|
-
// bn_mod_add_words sets
|
|
565
|
-
// space. Each array is
|
|
566
|
-
//
|
|
644
|
+
// bn_mod_add_words sets `r` to `a` + `b` (mod `m`), using `tmp` as scratch
|
|
645
|
+
// space. Each array is `num` words long. `a` and `b` must be < `m`. Any pair of
|
|
646
|
+
// `r`, `a`, and `b` may alias.
|
|
567
647
|
void bn_mod_add_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
568
648
|
const BN_ULONG *m, BN_ULONG *tmp, size_t num);
|
|
569
649
|
|
|
570
|
-
// bn_mod_add_consttime acts like
|
|
650
|
+
// bn_mod_add_consttime acts like `BN_mod_add_quick` but takes a `BN_CTX`.
|
|
571
651
|
int bn_mod_add_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
|
572
652
|
const BIGNUM *m, BN_CTX *ctx);
|
|
573
653
|
|
|
574
|
-
// bn_mod_sub_words sets
|
|
575
|
-
// space. Each array is
|
|
576
|
-
//
|
|
654
|
+
// bn_mod_sub_words sets `r` to `a` - `b` (mod `m`), using `tmp` as scratch
|
|
655
|
+
// space. Each array is `num` words long. `a` and `b` must be < `m`. Any pair of
|
|
656
|
+
// `r`, `a`, and `b` may alias.
|
|
577
657
|
void bn_mod_sub_words(BN_ULONG *r, const BN_ULONG *a, const BN_ULONG *b,
|
|
578
658
|
const BN_ULONG *m, BN_ULONG *tmp, size_t num);
|
|
579
659
|
|
|
580
|
-
// bn_mod_sub_consttime acts like
|
|
660
|
+
// bn_mod_sub_consttime acts like `BN_mod_sub_quick` but takes a `BN_CTX`.
|
|
581
661
|
int bn_mod_sub_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
|
582
662
|
const BIGNUM *m, BN_CTX *ctx);
|
|
583
663
|
|
|
584
|
-
// bn_mod_lshift1_consttime acts like
|
|
585
|
-
//
|
|
664
|
+
// bn_mod_lshift1_consttime acts like `BN_mod_lshift1_quick` but takes a
|
|
665
|
+
// `BN_CTX`.
|
|
586
666
|
int bn_mod_lshift1_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *m,
|
|
587
667
|
BN_CTX *ctx);
|
|
588
668
|
|
|
589
|
-
// bn_mod_lshift_consttime acts like
|
|
669
|
+
// bn_mod_lshift_consttime acts like `BN_mod_lshift_quick` but takes a `BN_CTX`.
|
|
590
670
|
int bn_mod_lshift_consttime(BIGNUM *r, const BIGNUM *a, int n, const BIGNUM *m,
|
|
591
671
|
BN_CTX *ctx);
|
|
592
672
|
|
|
593
|
-
// bn_mod_inverse_consttime sets
|
|
594
|
-
// negative and less than
|
|
595
|
-
// failure, if the failure was caused by
|
|
596
|
-
//
|
|
673
|
+
// bn_mod_inverse_consttime sets `r` to `a`^-1, mod `n`. `a` must be non-
|
|
674
|
+
// negative and less than `n`. It returns one on success and zero on error. On
|
|
675
|
+
// failure, if the failure was caused by `a` having no inverse mod `n` then
|
|
676
|
+
// `*out_no_inverse` will be set to one; otherwise it will be set to zero.
|
|
597
677
|
//
|
|
598
|
-
// This function treats both
|
|
678
|
+
// This function treats both `a` and `n` as secret, provided they are both non-
|
|
599
679
|
// zero and the inverse exists. It should only be used for even moduli where
|
|
600
680
|
// none of the less general implementations are applicable.
|
|
601
681
|
OPENSSL_EXPORT int bn_mod_inverse_consttime(BIGNUM *r, int *out_no_inverse,
|
|
602
682
|
const BIGNUM *a, const BIGNUM *n,
|
|
603
683
|
BN_CTX *ctx);
|
|
604
684
|
|
|
605
|
-
// bn_mod_inverse_prime sets
|
|
685
|
+
// bn_mod_inverse_prime sets `out` to the modular inverse of `a` modulo `p`,
|
|
606
686
|
// computed with Fermat's Little Theorem. It returns one on success and zero on
|
|
607
|
-
// error. If
|
|
687
|
+
// error. If `mont_p` is NULL, one will be computed temporarily.
|
|
608
688
|
int bn_mod_inverse_prime(BIGNUM *out, const BIGNUM *a, const BIGNUM *p,
|
|
609
689
|
BN_CTX *ctx, const BN_MONT_CTX *mont_p);
|
|
610
690
|
|
|
611
|
-
// bn_mod_inverse_secret_prime behaves like
|
|
612
|
-
//
|
|
691
|
+
// bn_mod_inverse_secret_prime behaves like `bn_mod_inverse_prime` but uses
|
|
692
|
+
// `BN_mod_exp_mont_consttime` instead of `BN_mod_exp_mont` in hopes of
|
|
613
693
|
// protecting the exponent.
|
|
614
694
|
int bn_mod_inverse_secret_prime(BIGNUM *out, const BIGNUM *a, const BIGNUM *p,
|
|
615
695
|
BN_CTX *ctx, const BN_MONT_CTX *mont_p);
|
|
616
696
|
|
|
617
|
-
// BN_MONT_CTX_set_locked takes
|
|
618
|
-
// so, it creates a new
|
|
619
|
-
// then stores it as
|
|
620
|
-
// this function assumes
|
|
697
|
+
// BN_MONT_CTX_set_locked takes `lock` and checks whether `*pmont` is NULL. If
|
|
698
|
+
// so, it creates a new `BN_MONT_CTX` and sets the modulus for it to `mod`. It
|
|
699
|
+
// then stores it as `*pmont`. It returns one on success and zero on error. Note
|
|
700
|
+
// this function assumes `mod` is public.
|
|
621
701
|
//
|
|
622
|
-
// If
|
|
623
|
-
int BN_MONT_CTX_set_locked(BN_MONT_CTX
|
|
702
|
+
// If `*pmont` is already non-NULL then it does nothing and returns one.
|
|
703
|
+
int BN_MONT_CTX_set_locked(UniquePtr<BN_MONT_CTX> *pmont, Mutex *lock,
|
|
624
704
|
const BIGNUM *mod, BN_CTX *bn_ctx);
|
|
625
705
|
|
|
626
706
|
|
|
@@ -640,87 +720,85 @@ int BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_MUTEX *lock,
|
|
|
640
720
|
#define BN_SMALL_MAX_WORDS 9
|
|
641
721
|
#endif
|
|
642
722
|
|
|
643
|
-
// bn_mul_small sets
|
|
644
|
-
// not alias with
|
|
723
|
+
// bn_mul_small sets `r` to `a`*`b`. `num_r` must be `num_a` + `num_b`. `r` may
|
|
724
|
+
// not alias with `a` or `b`.
|
|
645
725
|
void bn_mul_small(BN_ULONG *r, size_t num_r, const BN_ULONG *a, size_t num_a,
|
|
646
726
|
const BN_ULONG *b, size_t num_b);
|
|
647
727
|
|
|
648
|
-
// bn_sqr_small sets
|
|
649
|
-
//
|
|
728
|
+
// bn_sqr_small sets `r` to `a`^2. `num_r` must be `num_a`*2. `r` and `a` may
|
|
729
|
+
// not alias.
|
|
650
730
|
void bn_sqr_small(BN_ULONG *r, size_t num_r, const BN_ULONG *a, size_t num_a);
|
|
651
731
|
|
|
652
|
-
// In the following functions, the modulus must be at most
|
|
732
|
+
// In the following functions, the modulus must be at most `BN_SMALL_MAX_WORDS`
|
|
653
733
|
// words long.
|
|
654
734
|
|
|
655
|
-
// bn_to_montgomery_small sets
|
|
656
|
-
//
|
|
657
|
-
// fully reduced and may alias
|
|
735
|
+
// bn_to_montgomery_small sets `r` to `a` translated to the Montgomery domain.
|
|
736
|
+
// `r` and `a` are `num` words long, which must be `mont->N.width`. `a` must be
|
|
737
|
+
// fully reduced and may alias `r`.
|
|
658
738
|
void bn_to_montgomery_small(BN_ULONG *r, const BN_ULONG *a, size_t num,
|
|
659
739
|
const BN_MONT_CTX *mont);
|
|
660
740
|
|
|
661
|
-
// bn_from_montgomery_small sets
|
|
662
|
-
// domain.
|
|
663
|
-
// must be
|
|
741
|
+
// bn_from_montgomery_small sets `r` to `a` translated out of the Montgomery
|
|
742
|
+
// domain. `r` and `a` are `num_r` and `num_a` words long, respectively. `num_r`
|
|
743
|
+
// must be `mont->N.width`. `a` must be at most `mont->N`^2 and may alias `r`.
|
|
664
744
|
//
|
|
665
|
-
// Unlike most of these functions, only
|
|
666
|
-
//
|
|
745
|
+
// Unlike most of these functions, only `num_r` is bounded by
|
|
746
|
+
// `BN_SMALL_MAX_WORDS`. `num_a` may exceed it, but must be at most 2 * `num_r`.
|
|
667
747
|
void bn_from_montgomery_small(BN_ULONG *r, size_t num_r, const BN_ULONG *a,
|
|
668
748
|
size_t num_a, const BN_MONT_CTX *mont);
|
|
669
749
|
|
|
670
|
-
// bn_mod_mul_montgomery_small sets
|
|
671
|
-
// and outputs are in the Montgomery domain. Each array is
|
|
672
|
-
// which must be
|
|
673
|
-
// and
|
|
750
|
+
// bn_mod_mul_montgomery_small sets `r` to `a` * `b` mod `mont->N`. Both inputs
|
|
751
|
+
// and outputs are in the Montgomery domain. Each array is `num` words long,
|
|
752
|
+
// which must be `mont->N.width`. Any two of `r`, `a`, and `b` may alias. `a`
|
|
753
|
+
// and `b` must be reduced on input.
|
|
674
754
|
void bn_mod_mul_montgomery_small(BN_ULONG *r, const BN_ULONG *a,
|
|
675
755
|
const BN_ULONG *b, size_t num,
|
|
676
756
|
const BN_MONT_CTX *mont);
|
|
677
757
|
|
|
678
|
-
// bn_mod_exp_mont_small sets
|
|
758
|
+
// bn_mod_exp_mont_small sets `r` to `a`^`p` mod `mont->N`. It returns one on
|
|
679
759
|
// success and zero on programmer or internal error. Both inputs and outputs are
|
|
680
|
-
// in the Montgomery domain.
|
|
681
|
-
//
|
|
682
|
-
// must fit in
|
|
683
|
-
// independent of
|
|
684
|
-
// fully-reduced and may alias with
|
|
760
|
+
// in the Montgomery domain. `r` and `a` are `num` words long, which must be
|
|
761
|
+
// `mont->N.width` and at most `BN_SMALL_MAX_WORDS`. `num_p`, measured in bits,
|
|
762
|
+
// must fit in `size_t`. `a` must be fully-reduced. This function runs in time
|
|
763
|
+
// independent of `a`, but `p` and `mont->N` are public values. `a` must be
|
|
764
|
+
// fully-reduced and may alias with `r`.
|
|
685
765
|
//
|
|
686
|
-
// Note this function differs from
|
|
766
|
+
// Note this function differs from `BN_mod_exp_mont` which uses Montgomery
|
|
687
767
|
// reduction but takes input and output outside the Montgomery domain. Combine
|
|
688
|
-
// this function with
|
|
768
|
+
// this function with `bn_from_montgomery_small` and `bn_to_montgomery_small`
|
|
689
769
|
// if necessary.
|
|
690
770
|
void bn_mod_exp_mont_small(BN_ULONG *r, const BN_ULONG *a, size_t num,
|
|
691
771
|
const BN_ULONG *p, size_t num_p,
|
|
692
772
|
const BN_MONT_CTX *mont);
|
|
693
773
|
|
|
694
|
-
// bn_mod_inverse0_prime_mont_small sets
|
|
695
|
-
// zero,
|
|
696
|
-
// words long, which must be
|
|
697
|
-
//
|
|
698
|
-
// independent of
|
|
774
|
+
// bn_mod_inverse0_prime_mont_small sets `r` to `a`^-1 mod `mont->N`. If `a` is
|
|
775
|
+
// zero, `r` is set to zero. `mont->N` must be a prime. `r` and `a` are `num`
|
|
776
|
+
// words long, which must be `mont->N.width` and at most `BN_SMALL_MAX_WORDS`.
|
|
777
|
+
// `a` must be fully-reduced and may alias `r`. This function runs in time
|
|
778
|
+
// independent of `a`, but `mont->N` is a public value.
|
|
699
779
|
void bn_mod_inverse0_prime_mont_small(BN_ULONG *r, const BN_ULONG *a,
|
|
700
780
|
size_t num, const BN_MONT_CTX *mont);
|
|
701
781
|
|
|
702
782
|
|
|
703
783
|
// Word-based byte conversion functions.
|
|
704
784
|
|
|
705
|
-
// bn_big_endian_to_words interprets
|
|
706
|
-
// unsigned integer and writes the result to
|
|
707
|
-
// must be large enough to represent any
|
|
708
|
-
// must be at most
|
|
785
|
+
// bn_big_endian_to_words interprets `in_len` bytes from `in` as a big-endian,
|
|
786
|
+
// unsigned integer and writes the result to `out_len` words in `out`. `out_len`
|
|
787
|
+
// must be large enough to represent any `in_len`-byte value. That is, `in_len`
|
|
788
|
+
// must be at most `BN_BYTES * out_len`.
|
|
709
789
|
void bn_big_endian_to_words(BN_ULONG *out, size_t out_len, const uint8_t *in,
|
|
710
790
|
size_t in_len);
|
|
711
791
|
|
|
712
|
-
// bn_words_to_big_endian represents
|
|
713
|
-
// unsigned integer in
|
|
714
|
-
// must be large enough to represent
|
|
792
|
+
// bn_words_to_big_endian represents `in_len` words from `in` as a big-endian,
|
|
793
|
+
// unsigned integer in `out_len` bytes. It writes the result to `out`. `out_len`
|
|
794
|
+
// must be large enough to represent `in` without truncation.
|
|
715
795
|
//
|
|
716
|
-
// Note
|
|
796
|
+
// Note `out_len` may be less than `BN_BYTES * in_len` if `in` is known to have
|
|
717
797
|
// leading zeros.
|
|
718
798
|
void bn_words_to_big_endian(uint8_t *out, size_t out_len, const BN_ULONG *in,
|
|
719
799
|
size_t in_len);
|
|
720
800
|
|
|
801
|
+
BSSL_NAMESPACE_END
|
|
721
802
|
|
|
722
|
-
#if defined(__cplusplus)
|
|
723
|
-
} // extern C
|
|
724
|
-
#endif
|
|
725
803
|
|
|
726
804
|
#endif // OPENSSL_HEADER_CRYPTO_FIPSMODULE_BN_INTERNAL_H
|