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
|
@@ -24,12 +24,13 @@
|
|
|
24
24
|
#include <openssl/ec.h>
|
|
25
25
|
#include <openssl/ex_data.h>
|
|
26
26
|
|
|
27
|
+
#include "../../mem_internal.h"
|
|
27
28
|
#include "../bn/internal.h"
|
|
28
29
|
|
|
29
|
-
#if defined(__cplusplus)
|
|
30
|
-
extern "C" {
|
|
31
|
-
#endif
|
|
32
30
|
|
|
31
|
+
DECLARE_OPAQUE_STRUCT(ec_key_st, ECKey)
|
|
32
|
+
|
|
33
|
+
BSSL_NAMESPACE_BEGIN
|
|
33
34
|
|
|
34
35
|
// EC internals.
|
|
35
36
|
|
|
@@ -49,157 +50,189 @@ static_assert(EC_MAX_WORDS <= BN_SMALL_MAX_WORDS,
|
|
|
49
50
|
// Scalars.
|
|
50
51
|
|
|
51
52
|
// An EC_SCALAR is an integer fully reduced modulo the order. Only the first
|
|
52
|
-
//
|
|
53
|
+
// `order->width` words are used. An `EC_SCALAR` is specific to an `EC_GROUP`
|
|
53
54
|
// and must not be mixed between groups.
|
|
54
55
|
typedef struct {
|
|
55
56
|
BN_ULONG words[EC_MAX_WORDS];
|
|
56
57
|
} EC_SCALAR;
|
|
57
58
|
|
|
58
|
-
// ec_bignum_to_scalar converts
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
// ec_bignum_to_scalar converts `in` to an `EC_SCALAR` and writes it to
|
|
60
|
+
// `*out`. It returns one on success and zero if `in` is out of range.
|
|
61
|
+
int ec_bignum_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
62
|
+
const BIGNUM *in);
|
|
62
63
|
|
|
63
|
-
// ec_scalar_to_bytes serializes
|
|
64
|
-
// sets
|
|
65
|
-
// is
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
// ec_scalar_to_bytes serializes `in` as a big-endian bytestring to `out` and
|
|
65
|
+
// sets `*out_len` to the number of bytes written. The number of bytes written
|
|
66
|
+
// is `BN_num_bytes(&group->order)`, which is at most `EC_MAX_BYTES`.
|
|
67
|
+
void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
|
|
68
|
+
const EC_SCALAR *in);
|
|
68
69
|
|
|
69
|
-
// ec_scalar_from_bytes deserializes
|
|
70
|
-
// group
|
|
70
|
+
// ec_scalar_from_bytes deserializes `in` and stores the resulting scalar over
|
|
71
|
+
// group `group` to `out`. It returns one on success and zero if `in` is
|
|
71
72
|
// invalid.
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
int ec_scalar_from_bytes(const EC_GROUP *group, EC_SCALAR *out,
|
|
74
|
+
const uint8_t *in, size_t len);
|
|
74
75
|
|
|
75
|
-
// ec_scalar_reduce sets
|
|
76
|
-
//
|
|
77
|
-
// group order. This function treats
|
|
76
|
+
// ec_scalar_reduce sets `out` to `words`, reduced modulo the group order.
|
|
77
|
+
// `words` must be less than order^2. `num` must be at most twice the width of
|
|
78
|
+
// group order. This function treats `words` as secret.
|
|
78
79
|
void ec_scalar_reduce(const EC_GROUP *group, EC_SCALAR *out,
|
|
79
80
|
const BN_ULONG *words, size_t num);
|
|
80
81
|
|
|
81
|
-
// ec_random_nonzero_scalar sets
|
|
82
|
-
// zero to
|
|
82
|
+
// ec_random_nonzero_scalar sets `out` to a uniformly selected random value from
|
|
83
|
+
// zero to `group->order` - 1. It returns one on success and zero on error.
|
|
83
84
|
int ec_random_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
84
85
|
const uint8_t additional_data[32]);
|
|
85
86
|
|
|
86
|
-
// ec_random_nonzero_scalar sets
|
|
87
|
-
// 1 to
|
|
87
|
+
// ec_random_nonzero_scalar sets `out` to a uniformly selected random value from
|
|
88
|
+
// 1 to `group->order` - 1. It returns one on success and zero on error.
|
|
88
89
|
int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
89
90
|
const uint8_t additional_data[32]);
|
|
90
91
|
|
|
91
|
-
// ec_scalar_equal_vartime returns one if
|
|
92
|
+
// ec_scalar_equal_vartime returns one if `a` and `b` are equal and zero
|
|
92
93
|
// otherwise. Both values are treated as public.
|
|
93
94
|
int ec_scalar_equal_vartime(const EC_GROUP *group, const EC_SCALAR *a,
|
|
94
95
|
const EC_SCALAR *b);
|
|
95
96
|
|
|
96
|
-
// ec_scalar_is_zero returns one if
|
|
97
|
+
// ec_scalar_is_zero returns one if `a` is zero and zero otherwise.
|
|
97
98
|
int ec_scalar_is_zero(const EC_GROUP *group, const EC_SCALAR *a);
|
|
98
99
|
|
|
99
|
-
// ec_scalar_add sets
|
|
100
|
+
// ec_scalar_add sets `r` to `a` + `b`.
|
|
100
101
|
void ec_scalar_add(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
|
|
101
102
|
const EC_SCALAR *b);
|
|
102
103
|
|
|
103
|
-
// ec_scalar_sub sets
|
|
104
|
+
// ec_scalar_sub sets `r` to `a` - `b`.
|
|
104
105
|
void ec_scalar_sub(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a,
|
|
105
106
|
const EC_SCALAR *b);
|
|
106
107
|
|
|
107
|
-
// ec_scalar_neg sets
|
|
108
|
+
// ec_scalar_neg sets `r` to -`a`.
|
|
108
109
|
void ec_scalar_neg(const EC_GROUP *group, EC_SCALAR *r, const EC_SCALAR *a);
|
|
109
110
|
|
|
110
|
-
// ec_scalar_to_montgomery sets
|
|
111
|
+
// ec_scalar_to_montgomery sets `r` to `a` in Montgomery form.
|
|
111
112
|
void ec_scalar_to_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
112
113
|
const EC_SCALAR *a);
|
|
113
114
|
|
|
114
|
-
// ec_scalar_to_montgomery sets
|
|
115
|
+
// ec_scalar_to_montgomery sets `r` to `a` converted from Montgomery form.
|
|
115
116
|
void ec_scalar_from_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
116
117
|
const EC_SCALAR *a);
|
|
117
118
|
|
|
118
|
-
// ec_scalar_mul_montgomery sets
|
|
119
|
+
// ec_scalar_mul_montgomery sets `r` to `a` * `b` where inputs and outputs are
|
|
119
120
|
// in Montgomery form.
|
|
120
121
|
void ec_scalar_mul_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
121
122
|
const EC_SCALAR *a, const EC_SCALAR *b);
|
|
122
123
|
|
|
123
|
-
// ec_scalar_inv0_montgomery sets
|
|
124
|
-
// Montgomery form. If
|
|
124
|
+
// ec_scalar_inv0_montgomery sets `r` to `a`^-1 where inputs and outputs are in
|
|
125
|
+
// Montgomery form. If `a` is zero, `r` is set to zero.
|
|
125
126
|
void ec_scalar_inv0_montgomery(const EC_GROUP *group, EC_SCALAR *r,
|
|
126
127
|
const EC_SCALAR *a);
|
|
127
128
|
|
|
128
|
-
// ec_scalar_to_montgomery_inv_vartime sets
|
|
129
|
-
// in
|
|
130
|
-
// returns one on success and zero if
|
|
131
|
-
//
|
|
129
|
+
// ec_scalar_to_montgomery_inv_vartime sets `r` to `a`^-1 R. That is, it takes
|
|
130
|
+
// in `a` not in Montgomery form and computes the inverse in Montgomery form. It
|
|
131
|
+
// returns one on success and zero if `a` has no inverse. This function assumes
|
|
132
|
+
// `a` is public and may leak information about it via timing.
|
|
132
133
|
//
|
|
133
|
-
// Note this is not the same operation as
|
|
134
|
+
// Note this is not the same operation as `ec_scalar_inv0_montgomery`.
|
|
134
135
|
int ec_scalar_to_montgomery_inv_vartime(const EC_GROUP *group, EC_SCALAR *r,
|
|
135
136
|
const EC_SCALAR *a);
|
|
136
137
|
|
|
137
|
-
// ec_scalar_select, in constant time, sets
|
|
138
|
-
// and
|
|
138
|
+
// ec_scalar_select, in constant time, sets `out` to `a` if `mask` is all ones
|
|
139
|
+
// and `b` if `mask` is all zeros.
|
|
139
140
|
void ec_scalar_select(const EC_GROUP *group, EC_SCALAR *out, BN_ULONG mask,
|
|
140
141
|
const EC_SCALAR *a, const EC_SCALAR *b);
|
|
141
142
|
|
|
142
143
|
|
|
143
144
|
// Field elements.
|
|
144
145
|
|
|
145
|
-
// An EC_FELEM represents a field element. Only the first
|
|
146
|
-
// are used. An
|
|
147
|
-
// between groups.
|
|
148
|
-
//
|
|
146
|
+
// An EC_FELEM represents a field element. Only the first `field->width` words
|
|
147
|
+
// are used. An `EC_FELEM` is specific to an `EC_GROUP` and must not be mixed
|
|
148
|
+
// between groups. Unless otherwise stated, all inputs and outputs are in
|
|
149
|
+
// Montgomery form.
|
|
149
150
|
typedef struct {
|
|
150
151
|
BN_ULONG words[EC_MAX_WORDS];
|
|
151
152
|
} EC_FELEM;
|
|
152
153
|
|
|
153
|
-
// ec_felem_one returns one in
|
|
154
|
+
// ec_felem_one returns one in `group`'s field.
|
|
154
155
|
const EC_FELEM *ec_felem_one(const EC_GROUP *group);
|
|
155
156
|
|
|
156
|
-
// ec_bignum_to_felem converts
|
|
157
|
-
// and zero if
|
|
157
|
+
// ec_bignum_to_felem converts `in` to an `EC_FELEM`. It returns one on success
|
|
158
|
+
// and zero if `in` is out of range.
|
|
158
159
|
int ec_bignum_to_felem(const EC_GROUP *group, EC_FELEM *out, const BIGNUM *in);
|
|
159
160
|
|
|
160
|
-
// ec_felem_to_bignum converts
|
|
161
|
+
// ec_felem_to_bignum converts `in` to a `BIGNUM`. It returns one on success and
|
|
161
162
|
// zero on allocation failure.
|
|
162
163
|
int ec_felem_to_bignum(const EC_GROUP *group, BIGNUM *out, const EC_FELEM *in);
|
|
163
164
|
|
|
164
|
-
// ec_felem_to_bytes serializes
|
|
165
|
-
// sets
|
|
166
|
-
// is
|
|
165
|
+
// ec_felem_to_bytes serializes `in` as a big-endian bytestring to `out` and
|
|
166
|
+
// sets `*out_len` to the number of bytes written. The number of bytes written
|
|
167
|
+
// is `BN_num_bytes(&group->order)`, which is at most `EC_MAX_BYTES`.
|
|
167
168
|
void ec_felem_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
|
|
168
169
|
const EC_FELEM *in);
|
|
169
170
|
|
|
170
|
-
// ec_felem_from_bytes deserializes
|
|
171
|
-
// to
|
|
171
|
+
// ec_felem_from_bytes deserializes `in` and stores the resulting field element
|
|
172
|
+
// to `out`. It returns one on success and zero if `in` is invalid.
|
|
172
173
|
int ec_felem_from_bytes(const EC_GROUP *group, EC_FELEM *out, const uint8_t *in,
|
|
173
174
|
size_t len);
|
|
174
175
|
|
|
175
|
-
// ec_felem_neg sets
|
|
176
|
+
// ec_felem_neg sets `out` to -`a`.
|
|
176
177
|
void ec_felem_neg(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a);
|
|
177
178
|
|
|
178
|
-
// ec_felem_add sets
|
|
179
|
+
// ec_felem_add sets `out` to `a` + `b`.
|
|
179
180
|
void ec_felem_add(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a,
|
|
180
181
|
const EC_FELEM *b);
|
|
181
182
|
|
|
182
|
-
// ec_felem_add sets
|
|
183
|
+
// ec_felem_add sets `out` to `a` - `b`.
|
|
183
184
|
void ec_felem_sub(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a,
|
|
184
185
|
const EC_FELEM *b);
|
|
185
186
|
|
|
186
|
-
// ec_felem_non_zero_mask returns all ones if
|
|
187
|
+
// ec_felem_non_zero_mask returns all ones if `a` is non-zero and all zeros
|
|
187
188
|
// otherwise.
|
|
188
189
|
BN_ULONG ec_felem_non_zero_mask(const EC_GROUP *group, const EC_FELEM *a);
|
|
189
190
|
|
|
190
|
-
// ec_felem_select, in constant time, sets
|
|
191
|
-
// and
|
|
191
|
+
// ec_felem_select, in constant time, sets `out` to `a` if `mask` is all ones
|
|
192
|
+
// and `b` if `mask` is all zeros.
|
|
192
193
|
void ec_felem_select(const EC_GROUP *group, EC_FELEM *out, BN_ULONG mask,
|
|
193
194
|
const EC_FELEM *a, const EC_FELEM *b);
|
|
194
195
|
|
|
195
|
-
// ec_felem_equal returns one if
|
|
196
|
+
// ec_felem_equal returns one if `a` and `b` are equal and zero otherwise.
|
|
196
197
|
int ec_felem_equal(const EC_GROUP *group, const EC_FELEM *a, const EC_FELEM *b);
|
|
197
198
|
|
|
199
|
+
// ec_felem_mul sets `out` to `a` * `b`.
|
|
200
|
+
void ec_felem_mul(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a,
|
|
201
|
+
const EC_FELEM *b);
|
|
202
|
+
|
|
203
|
+
// ec_felem_sqr sets `out` to `a`^2.
|
|
204
|
+
void ec_felem_sqr(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a);
|
|
205
|
+
|
|
206
|
+
// ec_felem_to_montgomery sets `out` to `a` converted to Montgomery form.
|
|
207
|
+
void ec_felem_to_montgomery(const EC_GROUP *group, EC_FELEM *out,
|
|
208
|
+
const EC_FELEM *a);
|
|
209
|
+
|
|
210
|
+
// ec_felem_from_montgomery sets `out` to `a` converted from Montgomery form.
|
|
211
|
+
void ec_felem_from_montgomery(const EC_GROUP *group, EC_FELEM *out,
|
|
212
|
+
const EC_FELEM *a);
|
|
213
|
+
|
|
214
|
+
// ec_felem_reduce sets `out` to `words`, reduced modulo the field size, p.
|
|
215
|
+
// `words` must be less than p^2. `num` must be at most twice the width of p.
|
|
216
|
+
// This function treats `words` as secret.
|
|
217
|
+
void ec_felem_reduce(const EC_GROUP *group, EC_FELEM *out,
|
|
218
|
+
const BN_ULONG *words, size_t num);
|
|
219
|
+
|
|
220
|
+
// ec_felem_exp sets `out` to `a`^`exp`. It treats `a` is secret but `exp` as
|
|
221
|
+
// public.
|
|
222
|
+
//
|
|
223
|
+
// TODO(crbug.com/42290435): hash-to-curve uses this as part of computing a
|
|
224
|
+
// square root, which is what compressed coordinates ultimately needs to avoid
|
|
225
|
+
// `BIGNUM`. Can we unify this a bit? By generalizing to arbitrary
|
|
226
|
+
// exponentiation, we also miss an opportunity to use a specialized addition
|
|
227
|
+
// chain. We also miss our specialized field arithmetic for P-256.
|
|
228
|
+
void ec_felem_exp(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a,
|
|
229
|
+
const BN_ULONG *exp, size_t num_exp);
|
|
230
|
+
|
|
198
231
|
|
|
199
232
|
// Points.
|
|
200
233
|
//
|
|
201
|
-
// Points may represented in affine coordinates as
|
|
202
|
-
// coordinates as
|
|
234
|
+
// Points may represented in affine coordinates as `EC_AFFINE` or Jacobian
|
|
235
|
+
// coordinates as `EC_JACOBIAN`. Affine coordinates directly represent a
|
|
203
236
|
// point on the curve, but point addition over affine coordinates requires
|
|
204
237
|
// costly field inversions, so arithmetic is done in Jacobian coordinates.
|
|
205
238
|
// Converting from affine to Jacobian is cheap, while converting from Jacobian
|
|
@@ -207,8 +240,8 @@ int ec_felem_equal(const EC_GROUP *group, const EC_FELEM *a, const EC_FELEM *b);
|
|
|
207
240
|
// inversions needed in a sequence of point operations.)
|
|
208
241
|
|
|
209
242
|
// An EC_JACOBIAN represents an elliptic curve point in Jacobian coordinates.
|
|
210
|
-
// Unlike
|
|
211
|
-
// needs no cleanup. It is specific to an
|
|
243
|
+
// Unlike `EC_POINT`, it is a plain struct which can be stack-allocated and
|
|
244
|
+
// needs no cleanup. It is specific to an `EC_GROUP` and must not be mixed
|
|
212
245
|
// between groups.
|
|
213
246
|
typedef struct {
|
|
214
247
|
// X, Y, and Z are Jacobian projective coordinates. They represent
|
|
@@ -223,23 +256,23 @@ typedef struct {
|
|
|
223
256
|
EC_FELEM X, Y;
|
|
224
257
|
} EC_AFFINE;
|
|
225
258
|
|
|
226
|
-
// ec_affine_to_jacobian converts
|
|
227
|
-
//
|
|
259
|
+
// ec_affine_to_jacobian converts `p` to Jacobian form and writes the result to
|
|
260
|
+
// `*out`. This operation is very cheap and only costs a few copies.
|
|
228
261
|
void ec_affine_to_jacobian(const EC_GROUP *group, EC_JACOBIAN *out,
|
|
229
262
|
const EC_AFFINE *p);
|
|
230
263
|
|
|
231
|
-
// ec_jacobian_to_affine converts
|
|
232
|
-
//
|
|
264
|
+
// ec_jacobian_to_affine converts `p` to affine form and writes the result to
|
|
265
|
+
// `*out`. It returns one on success and zero if `p` was the point at infinity.
|
|
233
266
|
// This operation performs a field inversion and should only be done once per
|
|
234
267
|
// point.
|
|
235
268
|
//
|
|
236
|
-
// If only extracting the x-coordinate, use
|
|
269
|
+
// If only extracting the x-coordinate, use `ec_get_x_coordinate_*` which is
|
|
237
270
|
// slightly faster.
|
|
238
|
-
|
|
239
|
-
|
|
271
|
+
int ec_jacobian_to_affine(const EC_GROUP *group, EC_AFFINE *out,
|
|
272
|
+
const EC_JACOBIAN *p);
|
|
240
273
|
|
|
241
|
-
// ec_jacobian_to_affine_batch converts
|
|
242
|
-
// coordinates to affine coordinates and writes the results to
|
|
274
|
+
// ec_jacobian_to_affine_batch converts `num` points in `in` from Jacobian
|
|
275
|
+
// coordinates to affine coordinates and writes the results to `out`. It returns
|
|
243
276
|
// one on success and zero if any of the input points were infinity.
|
|
244
277
|
//
|
|
245
278
|
// This function is not implemented for all curves. Add implementations as
|
|
@@ -247,36 +280,36 @@ OPENSSL_EXPORT int ec_jacobian_to_affine(const EC_GROUP *group, EC_AFFINE *out,
|
|
|
247
280
|
int ec_jacobian_to_affine_batch(const EC_GROUP *group, EC_AFFINE *out,
|
|
248
281
|
const EC_JACOBIAN *in, size_t num);
|
|
249
282
|
|
|
250
|
-
// ec_point_set_affine_coordinates sets
|
|
251
|
-
// coordinates
|
|
252
|
-
// zero otherwise. If the point is not on the curve, the value of
|
|
283
|
+
// ec_point_set_affine_coordinates sets `out`'s to a point with affine
|
|
284
|
+
// coordinates `x` and `y`. It returns one if the point is on the curve and
|
|
285
|
+
// zero otherwise. If the point is not on the curve, the value of `out` is
|
|
253
286
|
// undefined.
|
|
254
287
|
int ec_point_set_affine_coordinates(const EC_GROUP *group, EC_AFFINE *out,
|
|
255
288
|
const EC_FELEM *x, const EC_FELEM *y);
|
|
256
289
|
|
|
257
|
-
// ec_point_mul_no_self_test does the same as
|
|
290
|
+
// ec_point_mul_no_self_test does the same as `EC_POINT_mul`, but doesn't try to
|
|
258
291
|
// run the self-test first. This is for use in the self tests themselves, to
|
|
259
292
|
// prevent an infinite loop.
|
|
260
293
|
int ec_point_mul_no_self_test(const EC_GROUP *group, EC_POINT *r,
|
|
261
294
|
const BIGNUM *g_scalar, const EC_POINT *p,
|
|
262
295
|
const BIGNUM *p_scalar, BN_CTX *ctx);
|
|
263
296
|
|
|
264
|
-
// ec_point_mul_scalar sets
|
|
297
|
+
// ec_point_mul_scalar sets `r` to `p` * `scalar`. Both inputs are considered
|
|
265
298
|
// secret.
|
|
266
299
|
int ec_point_mul_scalar(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
267
300
|
const EC_JACOBIAN *p, const EC_SCALAR *scalar);
|
|
268
301
|
|
|
269
|
-
// ec_point_mul_scalar_base sets
|
|
302
|
+
// ec_point_mul_scalar_base sets `r` to generator * `scalar`. `scalar` is
|
|
270
303
|
// treated as secret.
|
|
271
304
|
int ec_point_mul_scalar_base(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
272
305
|
const EC_SCALAR *scalar);
|
|
273
306
|
|
|
274
|
-
// ec_point_mul_scalar_batch sets
|
|
275
|
-
//
|
|
307
|
+
// ec_point_mul_scalar_batch sets `r` to `p0` * `scalar0` + `p1` * `scalar1` +
|
|
308
|
+
// `p2` * `scalar2`. `p2` may be NULL to skip that term.
|
|
276
309
|
//
|
|
277
310
|
// The inputs are treated as secret, however, this function leaks information
|
|
278
311
|
// about whether intermediate computations add a point to itself. Callers must
|
|
279
|
-
// ensure that discrete logs between
|
|
312
|
+
// ensure that discrete logs between `p0`, `p1`, and `p2` are uniformly
|
|
280
313
|
// distributed and independent of the scalars, which should be uniformly
|
|
281
314
|
// selected and not under the attackers control. This ensures the doubling case
|
|
282
315
|
// will occur with negligible probability.
|
|
@@ -285,7 +318,7 @@ int ec_point_mul_scalar_base(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
|
285
318
|
// needed.
|
|
286
319
|
//
|
|
287
320
|
// TODO(davidben): This function does not use base point tables. For now, it is
|
|
288
|
-
// only used with the generic
|
|
321
|
+
// only used with the generic `EC_GFp_mont_method` implementation which has
|
|
289
322
|
// none. If generalizing to tuned curves, this may be useful. However, we still
|
|
290
323
|
// must double up to the least efficient input, so precomputed tables can only
|
|
291
324
|
// save table setup and allow a wider window size.
|
|
@@ -296,16 +329,16 @@ int ec_point_mul_scalar_batch(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
|
296
329
|
|
|
297
330
|
#define EC_MONT_PRECOMP_COMB_SIZE 5
|
|
298
331
|
|
|
299
|
-
// An
|
|
332
|
+
// An `EC_PRECOMP` stores precomputed information about a point, to optimize
|
|
300
333
|
// repeated multiplications involving it. It is a union so different
|
|
301
|
-
//
|
|
334
|
+
// `EC_METHOD`s can store different information in it.
|
|
302
335
|
typedef union {
|
|
303
336
|
EC_AFFINE comb[(1 << EC_MONT_PRECOMP_COMB_SIZE) - 1];
|
|
304
337
|
} EC_PRECOMP;
|
|
305
338
|
|
|
306
|
-
// ec_init_precomp precomputes multiples of
|
|
339
|
+
// ec_init_precomp precomputes multiples of `p` and writes the result to `out`.
|
|
307
340
|
// It returns one on success and zero on error. The resulting table may be used
|
|
308
|
-
// with
|
|
341
|
+
// with `ec_point_mul_scalar_precomp`. This function will fail if `p` is the
|
|
309
342
|
// point at infinity.
|
|
310
343
|
//
|
|
311
344
|
// This function is not implemented for all curves. Add implementations as
|
|
@@ -313,16 +346,16 @@ typedef union {
|
|
|
313
346
|
int ec_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
|
|
314
347
|
const EC_JACOBIAN *p);
|
|
315
348
|
|
|
316
|
-
// ec_point_mul_scalar_precomp sets
|
|
317
|
-
//
|
|
318
|
-
// The points are represented as
|
|
319
|
-
//
|
|
349
|
+
// ec_point_mul_scalar_precomp sets `r` to `p0` * `scalar0` + `p1` * `scalar1` +
|
|
350
|
+
// `p2` * `scalar2`. `p1` or `p2` may be NULL to skip the corresponding term.
|
|
351
|
+
// The points are represented as `EC_PRECOMP` and must be initialized with
|
|
352
|
+
// `ec_init_precomp`. This function runs faster than `ec_point_mul_scalar_batch`
|
|
320
353
|
// but requires setup work per input point, so it is only appropriate for points
|
|
321
354
|
// which are used frequently.
|
|
322
355
|
//
|
|
323
356
|
// The inputs are treated as secret, however, this function leaks information
|
|
324
357
|
// about whether intermediate computations add a point to itself. Callers must
|
|
325
|
-
// ensure that discrete logs between
|
|
358
|
+
// ensure that discrete logs between `p0`, `p1`, and `p2` are uniformly
|
|
326
359
|
// distributed and independent of the scalars, which should be uniformly
|
|
327
360
|
// selected and not under the attackers control. This ensures the doubling case
|
|
328
361
|
// will occur with negligible probability.
|
|
@@ -331,7 +364,7 @@ int ec_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
|
|
|
331
364
|
// needed.
|
|
332
365
|
//
|
|
333
366
|
// TODO(davidben): This function does not use base point tables. For now, it is
|
|
334
|
-
// only used with the generic
|
|
367
|
+
// only used with the generic `EC_GFp_mont_method` implementation which has
|
|
335
368
|
// none. If generalizing to tuned curves, we should add a parameter for the base
|
|
336
369
|
// point and arrange for the generic implementation to have base point tables
|
|
337
370
|
// available.
|
|
@@ -340,19 +373,17 @@ int ec_point_mul_scalar_precomp(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
|
340
373
|
const EC_PRECOMP *p1, const EC_SCALAR *scalar1,
|
|
341
374
|
const EC_PRECOMP *p2, const EC_SCALAR *scalar2);
|
|
342
375
|
|
|
343
|
-
// ec_point_mul_scalar_public sets
|
|
344
|
-
// generator *
|
|
376
|
+
// ec_point_mul_scalar_public sets `r` to
|
|
377
|
+
// generator * `g_scalar` + `p` * `p_scalar`. It assumes that the inputs are
|
|
345
378
|
// public so there is no concern about leaking their values through timing.
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
//
|
|
353
|
-
//
|
|
354
|
-
// |num| elements. It assumes that the inputs are public so there is no concern
|
|
355
|
-
// about leaking their values through timing. |g_scalar| may be NULL to skip
|
|
379
|
+
int ec_point_mul_scalar_public(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
380
|
+
const EC_SCALAR *g_scalar, const EC_JACOBIAN *p,
|
|
381
|
+
const EC_SCALAR *p_scalar);
|
|
382
|
+
|
|
383
|
+
// ec_point_mul_scalar_public_batch sets `r` to the sum of generator *
|
|
384
|
+
// `g_scalar` and `points[i]` * `scalars[i]` where `points` and `scalars` have
|
|
385
|
+
// `num` elements. It assumes that the inputs are public so there is no concern
|
|
386
|
+
// about leaking their values through timing. `g_scalar` may be NULL to skip
|
|
356
387
|
// that term.
|
|
357
388
|
//
|
|
358
389
|
// This function is not implemented for all curves. Add implementations as
|
|
@@ -362,33 +393,33 @@ int ec_point_mul_scalar_public_batch(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
|
362
393
|
const EC_JACOBIAN *points,
|
|
363
394
|
const EC_SCALAR *scalars, size_t num);
|
|
364
395
|
|
|
365
|
-
// ec_point_select, in constant time, sets
|
|
366
|
-
// and
|
|
396
|
+
// ec_point_select, in constant time, sets `out` to `a` if `mask` is all ones
|
|
397
|
+
// and `b` if `mask` is all zeros.
|
|
367
398
|
void ec_point_select(const EC_GROUP *group, EC_JACOBIAN *out, BN_ULONG mask,
|
|
368
399
|
const EC_JACOBIAN *a, const EC_JACOBIAN *b);
|
|
369
400
|
|
|
370
|
-
// ec_affine_select behaves like
|
|
401
|
+
// ec_affine_select behaves like `ec_point_select` but acts on affine points.
|
|
371
402
|
void ec_affine_select(const EC_GROUP *group, EC_AFFINE *out, BN_ULONG mask,
|
|
372
403
|
const EC_AFFINE *a, const EC_AFFINE *b);
|
|
373
404
|
|
|
374
|
-
// ec_precomp_select behaves like
|
|
405
|
+
// ec_precomp_select behaves like `ec_point_select` but acts on `EC_PRECOMP`.
|
|
375
406
|
void ec_precomp_select(const EC_GROUP *group, EC_PRECOMP *out, BN_ULONG mask,
|
|
376
407
|
const EC_PRECOMP *a, const EC_PRECOMP *b);
|
|
377
408
|
|
|
378
|
-
// ec_cmp_x_coordinate compares the x (affine) coordinate of
|
|
379
|
-
// order, with
|
|
380
|
-
// point at infinity of the values do not match.
|
|
409
|
+
// ec_cmp_x_coordinate compares the x (affine) coordinate of `p`, mod the group
|
|
410
|
+
// order, with `r`. It returns one if the values match and zero if `p` is the
|
|
411
|
+
// point at infinity of the values do not match. `p` is treated as public.
|
|
381
412
|
int ec_cmp_x_coordinate(const EC_GROUP *group, const EC_JACOBIAN *p,
|
|
382
413
|
const EC_SCALAR *r);
|
|
383
414
|
|
|
384
|
-
// ec_get_x_coordinate_as_scalar sets
|
|
385
|
-
//
|
|
415
|
+
// ec_get_x_coordinate_as_scalar sets `*out` to `p`'s x-coordinate, modulo
|
|
416
|
+
// `group->order`. It returns one on success and zero if `p` is the point at
|
|
386
417
|
// infinity.
|
|
387
418
|
int ec_get_x_coordinate_as_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
388
419
|
const EC_JACOBIAN *p);
|
|
389
420
|
|
|
390
|
-
// ec_get_x_coordinate_as_bytes writes
|
|
391
|
-
// must have at must
|
|
421
|
+
// ec_get_x_coordinate_as_bytes writes `p`'s affine x-coordinate to `out`, which
|
|
422
|
+
// must have at must `max_out` bytes. It sets `*out_len` to the number of bytes
|
|
392
423
|
// written. The value is written big-endian and zero-padded to the size of the
|
|
393
424
|
// field. This function returns one on success and zero on failure.
|
|
394
425
|
int ec_get_x_coordinate_as_bytes(const EC_GROUP *group, uint8_t *out,
|
|
@@ -396,195 +427,180 @@ int ec_get_x_coordinate_as_bytes(const EC_GROUP *group, uint8_t *out,
|
|
|
396
427
|
const EC_JACOBIAN *p);
|
|
397
428
|
|
|
398
429
|
// ec_point_byte_len returns the number of bytes in the byte representation of
|
|
399
|
-
// a non-infinity point in
|
|
400
|
-
//
|
|
430
|
+
// a non-infinity point in `group`, encoded according to `form`, or zero if
|
|
431
|
+
// `form` is invalid.
|
|
401
432
|
size_t ec_point_byte_len(const EC_GROUP *group, point_conversion_form_t form);
|
|
402
433
|
|
|
403
|
-
// ec_point_to_bytes encodes
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
//
|
|
434
|
+
// ec_point_to_bytes encodes `point` according to `form` and writes the result
|
|
435
|
+
// `buf`. It returns the size of the output on success or zero on error. At most
|
|
436
|
+
// `max_out` bytes will be written. The buffer should be at least
|
|
437
|
+
// `ec_point_byte_len` long to guarantee success.
|
|
407
438
|
size_t ec_point_to_bytes(const EC_GROUP *group, const EC_AFFINE *point,
|
|
408
439
|
point_conversion_form_t form, uint8_t *buf,
|
|
409
440
|
size_t max_out);
|
|
410
441
|
|
|
411
|
-
// ec_point_from_uncompressed parses
|
|
412
|
-
// sets the result to
|
|
442
|
+
// ec_point_from_uncompressed parses `in` as a point in uncompressed form and
|
|
443
|
+
// sets the result to `out`. It returns one on success and zero if the input was
|
|
413
444
|
// invalid.
|
|
414
445
|
int ec_point_from_uncompressed(const EC_GROUP *group, EC_AFFINE *out,
|
|
415
446
|
const uint8_t *in, size_t len);
|
|
416
447
|
|
|
417
|
-
// ec_set_to_safe_point sets
|
|
448
|
+
// ec_set_to_safe_point sets `out` to an arbitrary point on `group`, either the
|
|
418
449
|
// generator or the point at infinity. This is used to guard against callers of
|
|
419
450
|
// external APIs not checking the return value.
|
|
420
451
|
void ec_set_to_safe_point(const EC_GROUP *group, EC_JACOBIAN *out);
|
|
421
452
|
|
|
422
|
-
// ec_affine_jacobian_equal returns one if
|
|
453
|
+
// ec_affine_jacobian_equal returns one if `a` and `b` represent the same point
|
|
423
454
|
// and zero otherwise. It treats both inputs as secret.
|
|
424
455
|
int ec_affine_jacobian_equal(const EC_GROUP *group, const EC_AFFINE *a,
|
|
425
456
|
const EC_JACOBIAN *b);
|
|
426
457
|
|
|
458
|
+
BSSL_NAMESPACE_END
|
|
427
459
|
|
|
428
460
|
// Implementation details.
|
|
429
461
|
|
|
430
462
|
struct ec_method_st {
|
|
431
|
-
// point_get_affine_coordinates sets
|
|
432
|
-
// of
|
|
433
|
-
// and zero if
|
|
434
|
-
// point at infinity, but otherwise treats
|
|
435
|
-
int (*point_get_affine_coordinates)(const EC_GROUP *,
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
const EC_JACOBIAN *
|
|
459
|
-
|
|
463
|
+
// point_get_affine_coordinates sets `*x` and `*y` to the affine coordinates
|
|
464
|
+
// of `p`. Either `x` or `y` may be NULL to omit it. It returns one on success
|
|
465
|
+
// and zero if `p` is the point at infinity. It leaks whether `p` was the
|
|
466
|
+
// point at infinity, but otherwise treats `p` as secret.
|
|
467
|
+
int (*point_get_affine_coordinates)(const EC_GROUP *,
|
|
468
|
+
const bssl::EC_JACOBIAN *p,
|
|
469
|
+
bssl::EC_FELEM *x, bssl::EC_FELEM *y);
|
|
470
|
+
|
|
471
|
+
// jacobian_to_affine_batch implements `ec_jacobian_to_affine_batch`.
|
|
472
|
+
int (*jacobian_to_affine_batch)(const EC_GROUP *group, bssl::EC_AFFINE *out,
|
|
473
|
+
const bssl::EC_JACOBIAN *in, size_t num);
|
|
474
|
+
|
|
475
|
+
// add sets `r` to `a` + `b`.
|
|
476
|
+
void (*add)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
477
|
+
const bssl::EC_JACOBIAN *a, const bssl::EC_JACOBIAN *b);
|
|
478
|
+
// dbl sets `r` to `a` + `a`.
|
|
479
|
+
void (*dbl)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
480
|
+
const bssl::EC_JACOBIAN *a);
|
|
481
|
+
|
|
482
|
+
// mul sets `r` to `scalar`*`p`.
|
|
483
|
+
void (*mul)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
484
|
+
const bssl::EC_JACOBIAN *p, const bssl::EC_SCALAR *scalar);
|
|
485
|
+
// mul_base sets `r` to `scalar`*generator.
|
|
486
|
+
void (*mul_base)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
487
|
+
const bssl::EC_SCALAR *scalar);
|
|
488
|
+
// mul_batch implements `ec_mul_scalar_batch`.
|
|
489
|
+
void (*mul_batch)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
490
|
+
const bssl::EC_JACOBIAN *p0, const bssl::EC_SCALAR *scalar0,
|
|
491
|
+
const bssl::EC_JACOBIAN *p1, const bssl::EC_SCALAR *scalar1,
|
|
492
|
+
const bssl::EC_JACOBIAN *p2,
|
|
493
|
+
const bssl::EC_SCALAR *scalar2);
|
|
494
|
+
// mul_public sets `r` to `g_scalar`*generator + `p_scalar`*`p`. It assumes
|
|
460
495
|
// that the inputs are public so there is no concern about leaking their
|
|
461
496
|
// values through timing.
|
|
462
497
|
//
|
|
463
|
-
// This function may be omitted if
|
|
464
|
-
void (*mul_public)(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
465
|
-
const EC_SCALAR *g_scalar,
|
|
466
|
-
const
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
const EC_SCALAR *
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
const EC_PRECOMP *
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
//
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
// could say |EC_FELEM| is always in Montgomery form. If we routed the rest of
|
|
490
|
-
// simple.c to |EC_METHOD|, we could give |EC_POINT| an |EC_METHOD|-specific
|
|
491
|
-
// representation and say |EC_FELEM| is purely a |EC_GFp_mont_method| type.
|
|
492
|
-
void (*felem_mul)(const EC_GROUP *, EC_FELEM *r, const EC_FELEM *a,
|
|
493
|
-
const EC_FELEM *b);
|
|
494
|
-
void (*felem_sqr)(const EC_GROUP *, EC_FELEM *r, const EC_FELEM *a);
|
|
495
|
-
|
|
496
|
-
void (*felem_to_bytes)(const EC_GROUP *group, uint8_t *out, size_t *out_len,
|
|
497
|
-
const EC_FELEM *in);
|
|
498
|
-
int (*felem_from_bytes)(const EC_GROUP *group, EC_FELEM *out,
|
|
499
|
-
const uint8_t *in, size_t len);
|
|
500
|
-
|
|
501
|
-
// felem_reduce sets |out| to |words|, reduced modulo the field size, p.
|
|
502
|
-
// |words| must be less than p^2. |num| must be at most twice the width of p.
|
|
503
|
-
// This function treats |words| as secret.
|
|
504
|
-
//
|
|
505
|
-
// This function is only used in hash-to-curve and may be omitted in curves
|
|
506
|
-
// that do not support it.
|
|
507
|
-
void (*felem_reduce)(const EC_GROUP *group, EC_FELEM *out,
|
|
508
|
-
const BN_ULONG *words, size_t num);
|
|
509
|
-
|
|
510
|
-
// felem_exp sets |out| to |a|^|exp|. It treats |a| is secret but |exp| as
|
|
511
|
-
// public.
|
|
512
|
-
//
|
|
513
|
-
// This function is used in hash-to-curve and may be NULL in curves not used
|
|
514
|
-
// with hash-to-curve.
|
|
515
|
-
//
|
|
516
|
-
// TODO(https://crbug.com/boringssl/567): hash-to-curve uses this as part of
|
|
517
|
-
// computing a square root, which is what compressed coordinates ultimately
|
|
518
|
-
// needs to avoid |BIGNUM|. Can we unify this a bit? By generalizing to
|
|
519
|
-
// arbitrary exponentiation, we also miss an opportunity to use a specialized
|
|
520
|
-
// addition chain.
|
|
521
|
-
void (*felem_exp)(const EC_GROUP *group, EC_FELEM *out, const EC_FELEM *a,
|
|
522
|
-
const BN_ULONG *exp, size_t num_exp);
|
|
523
|
-
|
|
524
|
-
// scalar_inv0_montgomery implements |ec_scalar_inv0_montgomery|.
|
|
525
|
-
void (*scalar_inv0_montgomery)(const EC_GROUP *group, EC_SCALAR *out,
|
|
526
|
-
const EC_SCALAR *in);
|
|
498
|
+
// This function may be omitted if `mul_public_batch` is provided.
|
|
499
|
+
void (*mul_public)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
500
|
+
const bssl::EC_SCALAR *g_scalar,
|
|
501
|
+
const bssl::EC_JACOBIAN *p,
|
|
502
|
+
const bssl::EC_SCALAR *p_scalar);
|
|
503
|
+
// mul_public_batch implements `ec_point_mul_scalar_public_batch`.
|
|
504
|
+
int (*mul_public_batch)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
505
|
+
const bssl::EC_SCALAR *g_scalar,
|
|
506
|
+
const bssl::EC_JACOBIAN *points,
|
|
507
|
+
const bssl::EC_SCALAR *scalars, size_t num);
|
|
508
|
+
|
|
509
|
+
// init_precomp implements `ec_init_precomp`.
|
|
510
|
+
int (*init_precomp)(const EC_GROUP *group, bssl::EC_PRECOMP *out,
|
|
511
|
+
const bssl::EC_JACOBIAN *p);
|
|
512
|
+
// mul_precomp implements `ec_point_mul_scalar_precomp`.
|
|
513
|
+
void (*mul_precomp)(const EC_GROUP *group, bssl::EC_JACOBIAN *r,
|
|
514
|
+
const bssl::EC_PRECOMP *p0,
|
|
515
|
+
const bssl::EC_SCALAR *scalar0,
|
|
516
|
+
const bssl::EC_PRECOMP *p1,
|
|
517
|
+
const bssl::EC_SCALAR *scalar1,
|
|
518
|
+
const bssl::EC_PRECOMP *p2,
|
|
519
|
+
const bssl::EC_SCALAR *scalar2);
|
|
520
|
+
|
|
521
|
+
// scalar_inv0_montgomery implements `ec_scalar_inv0_montgomery`.
|
|
522
|
+
void (*scalar_inv0_montgomery)(const EC_GROUP *group, bssl::EC_SCALAR *out,
|
|
523
|
+
const bssl::EC_SCALAR *in);
|
|
527
524
|
|
|
528
525
|
// scalar_to_montgomery_inv_vartime implements
|
|
529
|
-
//
|
|
530
|
-
int (*scalar_to_montgomery_inv_vartime)(const EC_GROUP *group,
|
|
531
|
-
|
|
526
|
+
// `ec_scalar_to_montgomery_inv_vartime`.
|
|
527
|
+
int (*scalar_to_montgomery_inv_vartime)(const EC_GROUP *group,
|
|
528
|
+
bssl::EC_SCALAR *out,
|
|
529
|
+
const bssl::EC_SCALAR *in);
|
|
532
530
|
|
|
533
|
-
// cmp_x_coordinate compares the x (affine) coordinate of
|
|
534
|
-
// order, with
|
|
531
|
+
// cmp_x_coordinate compares the x (affine) coordinate of `p`, mod the group
|
|
532
|
+
// order, with `r`. It returns one if the values match and zero if `p` is the
|
|
535
533
|
// point at infinity of the values do not match.
|
|
536
|
-
int (*cmp_x_coordinate)(const EC_GROUP *group, const EC_JACOBIAN *p,
|
|
537
|
-
const EC_SCALAR *r);
|
|
534
|
+
int (*cmp_x_coordinate)(const EC_GROUP *group, const bssl::EC_JACOBIAN *p,
|
|
535
|
+
const bssl::EC_SCALAR *r);
|
|
538
536
|
} /* EC_METHOD */;
|
|
539
537
|
|
|
540
|
-
|
|
538
|
+
BSSL_NAMESPACE_BEGIN
|
|
539
|
+
|
|
540
|
+
const EC_METHOD *EC_GFp_mont_method();
|
|
541
|
+
|
|
542
|
+
BSSL_NAMESPACE_END
|
|
541
543
|
|
|
542
544
|
struct ec_point_st {
|
|
543
|
-
// group is an owning reference to
|
|
544
|
-
//
|
|
545
|
+
// group is an owning reference to `group`, unless this is
|
|
546
|
+
// `group->generator`.
|
|
545
547
|
EC_GROUP *group;
|
|
546
|
-
// raw is the group-specific point data. Functions that take
|
|
547
|
-
// typically check consistency with
|
|
548
|
-
//
|
|
548
|
+
// raw is the group-specific point data. Functions that take `EC_POINT`
|
|
549
|
+
// typically check consistency with `EC_GROUP` while functions that take
|
|
550
|
+
// `EC_JACOBIAN` do not. Thus accesses to this field should be externally
|
|
549
551
|
// checked for consistency.
|
|
550
|
-
EC_JACOBIAN raw;
|
|
552
|
+
bssl::EC_JACOBIAN raw;
|
|
551
553
|
} /* EC_POINT */;
|
|
552
554
|
|
|
553
555
|
struct ec_group_st {
|
|
554
556
|
const EC_METHOD *meth;
|
|
555
557
|
|
|
556
|
-
// Unlike all other
|
|
558
|
+
// Unlike all other `EC_POINT`s, `generator` does not own `generator->group`
|
|
557
559
|
// to avoid a reference cycle. Additionally, Z is guaranteed to be one, so X
|
|
558
|
-
// and Y are suitable for use as an
|
|
560
|
+
// and Y are suitable for use as an `EC_AFFINE`. Before `has_order` is set, Z
|
|
559
561
|
// is one, but X and Y are uninitialized.
|
|
560
562
|
EC_POINT generator;
|
|
561
563
|
|
|
562
564
|
BN_MONT_CTX order;
|
|
563
565
|
BN_MONT_CTX field;
|
|
564
566
|
|
|
565
|
-
EC_FELEM a, b; // Curve coefficients.
|
|
567
|
+
bssl::EC_FELEM a, b; // Curve coefficients.
|
|
566
568
|
|
|
567
569
|
// comment is a human-readable string describing the curve.
|
|
568
570
|
const char *comment;
|
|
569
571
|
|
|
570
|
-
|
|
572
|
+
// curve_name is the optional NID for named curve.
|
|
573
|
+
//
|
|
574
|
+
// If curve_name is NID_undef, the actual type is ECCustomGroup and the
|
|
575
|
+
// refcount must be respected when allocating/freeing.
|
|
576
|
+
int curve_name;
|
|
577
|
+
|
|
571
578
|
uint8_t oid[9];
|
|
572
579
|
uint8_t oid_len;
|
|
573
580
|
|
|
574
|
-
// a_is_minus3 is one if
|
|
581
|
+
// a_is_minus3 is one if `a` is -3 mod `field` and zero otherwise. Point
|
|
575
582
|
// arithmetic is optimized for -3.
|
|
576
583
|
int a_is_minus3;
|
|
577
584
|
|
|
578
|
-
// has_order is one if
|
|
585
|
+
// has_order is one if `generator` and `order` have been initialized.
|
|
579
586
|
int has_order;
|
|
580
587
|
|
|
581
|
-
// field_greater_than_order is one if
|
|
588
|
+
// field_greater_than_order is one if `field` is greater than `order` and zero
|
|
582
589
|
// otherwise.
|
|
583
590
|
int field_greater_than_order;
|
|
584
|
-
|
|
585
|
-
CRYPTO_refcount_t references;
|
|
586
591
|
} /* EC_GROUP */;
|
|
587
592
|
|
|
593
|
+
BSSL_NAMESPACE_BEGIN
|
|
594
|
+
|
|
595
|
+
class ECCustomGroup : public ec_group_st, public RefCounted<ECCustomGroup> {
|
|
596
|
+
public:
|
|
597
|
+
explicit ECCustomGroup(const EC_METHOD *meth);
|
|
598
|
+
|
|
599
|
+
private:
|
|
600
|
+
~ECCustomGroup();
|
|
601
|
+
friend RefCounted;
|
|
602
|
+
};
|
|
603
|
+
|
|
588
604
|
EC_GROUP *ec_group_new(const EC_METHOD *meth, const BIGNUM *p, const BIGNUM *a,
|
|
589
605
|
const BIGNUM *b, BN_CTX *ctx);
|
|
590
606
|
|
|
@@ -602,14 +618,9 @@ void ec_GFp_mont_mul_precomp(const EC_GROUP *group, EC_JACOBIAN *r,
|
|
|
602
618
|
const EC_PRECOMP *p0, const EC_SCALAR *scalar0,
|
|
603
619
|
const EC_PRECOMP *p1, const EC_SCALAR *scalar1,
|
|
604
620
|
const EC_PRECOMP *p2, const EC_SCALAR *scalar2);
|
|
605
|
-
void ec_GFp_mont_felem_reduce(const EC_GROUP *group, EC_FELEM *out,
|
|
606
|
-
const BN_ULONG *words, size_t num);
|
|
607
|
-
void ec_GFp_mont_felem_exp(const EC_GROUP *group, EC_FELEM *out,
|
|
608
|
-
const EC_FELEM *a, const BN_ULONG *exp,
|
|
609
|
-
size_t num_exp);
|
|
610
621
|
|
|
611
622
|
// ec_compute_wNAF writes the modified width-(w+1) Non-Adjacent Form (wNAF) of
|
|
612
|
-
//
|
|
623
|
+
// `scalar` to `out`. `out` must have room for `bits` + 1 elements, each of
|
|
613
624
|
// which will be either zero or odd with an absolute value less than 2^w
|
|
614
625
|
// satisfying
|
|
615
626
|
// scalar = \sum_j out[j]*2^j
|
|
@@ -650,60 +661,43 @@ int ec_simple_scalar_to_montgomery_inv_vartime(const EC_GROUP *group,
|
|
|
650
661
|
int ec_GFp_simple_cmp_x_coordinate(const EC_GROUP *group, const EC_JACOBIAN *p,
|
|
651
662
|
const EC_SCALAR *r);
|
|
652
663
|
|
|
653
|
-
void ec_GFp_simple_felem_to_bytes(const EC_GROUP *group, uint8_t *out,
|
|
654
|
-
size_t *out_len, const EC_FELEM *in);
|
|
655
|
-
int ec_GFp_simple_felem_from_bytes(const EC_GROUP *group, EC_FELEM *out,
|
|
656
|
-
const uint8_t *in, size_t len);
|
|
657
|
-
|
|
658
|
-
// method functions in montgomery.c
|
|
659
|
-
void ec_GFp_mont_felem_mul(const EC_GROUP *, EC_FELEM *r, const EC_FELEM *a,
|
|
660
|
-
const EC_FELEM *b);
|
|
661
|
-
void ec_GFp_mont_felem_sqr(const EC_GROUP *, EC_FELEM *r, const EC_FELEM *a);
|
|
662
|
-
|
|
663
|
-
void ec_GFp_mont_felem_to_bytes(const EC_GROUP *group, uint8_t *out,
|
|
664
|
-
size_t *out_len, const EC_FELEM *in);
|
|
665
|
-
int ec_GFp_mont_felem_from_bytes(const EC_GROUP *group, EC_FELEM *out,
|
|
666
|
-
const uint8_t *in, size_t len);
|
|
667
|
-
|
|
668
664
|
void ec_GFp_nistp_recode_scalar_bits(crypto_word_t *sign, crypto_word_t *digit,
|
|
669
665
|
crypto_word_t in);
|
|
670
666
|
|
|
671
|
-
const EC_METHOD *
|
|
672
|
-
const EC_METHOD *EC_GFp_nistp256_method(void);
|
|
667
|
+
const EC_METHOD *EC_GFp_nistp256_method();
|
|
673
668
|
|
|
674
|
-
//
|
|
675
|
-
//
|
|
676
|
-
const EC_METHOD *EC_GFp_nistz256_method(void);
|
|
677
|
-
|
|
678
|
-
// An EC_WRAPPED_SCALAR is an |EC_SCALAR| with a parallel |BIGNUM|
|
|
679
|
-
// representation. It exists to support the |EC_KEY_get0_private_key| API.
|
|
669
|
+
// An EC_WRAPPED_SCALAR is an `EC_SCALAR` with a parallel `BIGNUM`
|
|
670
|
+
// representation. It exists to support the `EC_KEY_get0_private_key` API.
|
|
680
671
|
typedef struct {
|
|
681
672
|
BIGNUM bignum;
|
|
682
673
|
EC_SCALAR scalar;
|
|
683
674
|
} EC_WRAPPED_SCALAR;
|
|
684
675
|
|
|
685
|
-
|
|
686
|
-
|
|
676
|
+
class ECKey : public ec_key_st, public RefCounted<ECKey> {
|
|
677
|
+
public:
|
|
678
|
+
explicit ECKey(const ENGINE *engine);
|
|
679
|
+
|
|
680
|
+
EC_GROUP *group = nullptr;
|
|
687
681
|
|
|
688
|
-
// Ideally
|
|
689
|
-
// inversion each time, but the
|
|
690
|
-
// keys are stored in an
|
|
691
|
-
EC_POINT *pub_key;
|
|
692
|
-
EC_WRAPPED_SCALAR *priv_key;
|
|
682
|
+
// Ideally `pub_key` would be an `EC_AFFINE` so serializing it does not pay an
|
|
683
|
+
// inversion each time, but the `EC_KEY_get0_public_key` API implies public
|
|
684
|
+
// keys are stored in an `EC_POINT`-compatible form.
|
|
685
|
+
EC_POINT *pub_key = nullptr;
|
|
686
|
+
bssl::EC_WRAPPED_SCALAR *priv_key = nullptr;
|
|
693
687
|
|
|
694
|
-
unsigned int enc_flag;
|
|
695
|
-
point_conversion_form_t conv_form;
|
|
688
|
+
unsigned int enc_flag = 0;
|
|
689
|
+
point_conversion_form_t conv_form = POINT_CONVERSION_UNCOMPRESSED;
|
|
696
690
|
|
|
697
|
-
|
|
691
|
+
ECDSA_METHOD *ecdsa_meth = nullptr;
|
|
698
692
|
|
|
699
|
-
|
|
693
|
+
CRYPTO_EX_DATA ex_data = {};
|
|
700
694
|
|
|
701
|
-
|
|
695
|
+
private:
|
|
696
|
+
~ECKey();
|
|
697
|
+
friend RefCounted;
|
|
702
698
|
} /* EC_KEY */;
|
|
703
699
|
|
|
700
|
+
BSSL_NAMESPACE_END
|
|
704
701
|
|
|
705
|
-
#if defined(__cplusplus)
|
|
706
|
-
} // extern C
|
|
707
|
-
#endif
|
|
708
702
|
|
|
709
703
|
#endif // OPENSSL_HEADER_CRYPTO_FIPSMODULE_EC_INTERNAL_H
|