grpc 1.84.0 → 1.85.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Makefile +40 -27
- data/include/grpc/event_engine/memory_allocator.h +1 -0
- data/include/grpc/grpc.h +3 -0
- data/include/grpc/grpc_security_constants.h +2 -0
- data/include/grpc/impl/channel_arg_names.h +4 -0
- data/src/core/call/call_filters.h +10 -10
- data/src/core/{lib/security/authorization → call}/evaluate_args.cc +22 -1
- data/src/core/{lib/security/authorization → call}/evaluate_args.h +19 -5
- data/src/core/call/filter_fusion.h +15 -15
- data/src/core/call/interception_chain.h +3 -3
- data/src/core/call/metadata_batch.cc +1 -0
- data/src/core/call/metadata_batch.h +45 -33
- data/src/core/call/parsed_metadata.h +3 -3
- data/src/core/call/request_buffer.cc +6 -6
- data/src/core/call/request_buffer.h +1 -1
- data/src/core/channelz/channel_trace.cc +5 -5
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +9 -9
- data/src/core/channelz/channelz.h +12 -12
- data/src/core/channelz/channelz_registry.cc +10 -10
- data/src/core/channelz/ztrace_collector.h +5 -5
- data/src/core/client_channel/client_channel.cc +4 -4
- data/src/core/client_channel/client_channel_filter.cc +14 -14
- data/src/core/client_channel/global_subchannel_pool.cc +4 -4
- data/src/core/client_channel/subchannel.cc +24 -23
- data/src/core/client_channel/subchannel_stream_client.cc +5 -5
- data/src/core/credentials/call/external/aws_external_account_credentials.cc +7 -7
- data/src/core/credentials/call/external/aws_request_signer.cc +16 -0
- data/src/core/credentials/call/external/external_account_credentials.cc +4 -4
- data/src/core/credentials/call/regional_access_boundary_fetcher.cc +9 -9
- data/src/core/credentials/call/token_fetcher/token_fetcher_credentials.cc +4 -4
- data/src/core/credentials/transport/google_default/google_default_credentials.cc +3 -3
- data/src/core/credentials/transport/ssl/ssl_security_connector.cc +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +9 -9
- data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +1 -1
- data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +6 -6
- data/src/core/credentials/transport/tls/grpc_tls_certificate_verifier.cc +3 -3
- data/src/core/credentials/transport/tls/grpc_tls_crl_provider.cc +4 -4
- data/src/core/credentials/transport/tls/ssl_utils.cc +10 -0
- data/src/core/credentials/transport/tls/tls_security_connector.cc +10 -10
- data/src/core/credentials/transport/tls/tls_security_connector.h +6 -6
- data/src/core/credentials/transport/tls/tls_utils.h +9 -0
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +1 -1
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.cc +2 -2
- data/src/core/ext/filters/gcp_authentication/gcp_authentication_filter.h +1 -1
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +15 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +5 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +30 -21
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +5 -11
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +14 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -4
- data/src/core/ext/transport/chttp2/transport/frame.h +9 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -2
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +16 -18
- data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +2 -1
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.cc +277 -189
- data/src/core/ext/transport/chttp2/transport/http2_server_transport.h +40 -17
- data/src/core/ext/transport/chttp2/transport/http2_transport.cc +12 -24
- data/src/core/ext/transport/chttp2/transport/http2_transport.h +3 -29
- data/src/core/ext/transport/chttp2/transport/internal.h +2 -2
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/read_context.h +96 -3
- data/src/core/ext/transport/chttp2/transport/reclaimer.cc +32 -0
- data/src/core/ext/transport/chttp2/transport/reclaimer.h +64 -0
- data/src/core/ext/transport/chttp2/transport/security_frame.h +8 -8
- data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +17 -9
- data/src/core/ext/transport/chttp2/transport/write_cycle.h +23 -3
- data/src/core/ext/transport/inproc/inproc_transport.cc +5 -5
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb.h +137 -73
- data/src/core/ext/upb-gen/grpc/channelz/v1/channelz.upb_minitable.c +45 -25
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb.h +6 -6
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.c +4 -4
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/altscontext.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb.h +46 -26
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.c +17 -14
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/handshaker.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/gcp/transport_security_common.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb.h +329 -0
- data/src/core/ext/upb-gen/grpc/health/v1/health.upb_minitable.c +128 -0
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/health/v1/health.upb_minitable.h +8 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.c +3 -3
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lb/v1/load_balancer.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb.h +185 -23
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.c +20 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls.upb_minitable.h +5 -5
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb.h +58 -42
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.c +17 -12
- data/src/core/ext/upb-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upb_minitable.h +5 -5
- data/src/core/ext/upbdefs-gen/grpc/channelz/v1/channelz.upbdefs.c +567 -549
- data/src/core/ext/upbdefs-gen/grpc/lookup/v1/rls_config.upbdefs.c +182 -0
- data/src/core/ext/upbdefs-gen/{src/proto/grpc → grpc}/lookup/v1/rls_config.upbdefs.h +14 -14
- data/src/core/filter/ext_proc/ext_proc_filter.cc +1603 -46
- data/src/core/filter/ext_proc/ext_proc_filter.h +55 -22
- data/src/core/filter/ext_proc/ext_proc_messages.cc +106 -51
- data/src/core/filter/ext_proc/ext_proc_messages.h +36 -9
- data/src/core/handshaker/handshaker.cc +4 -4
- data/src/core/handshaker/http_connect/http_connect_client_handshaker.cc +3 -3
- data/src/core/handshaker/security/pipelined_secure_endpoint.cc +10 -10
- data/src/core/handshaker/security/secure_endpoint.cc +13 -13
- data/src/core/handshaker/security/security_handshaker.cc +6 -6
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +4 -4
- data/src/core/lib/channel/channel_args.cc +20 -0
- data/src/core/lib/channel/channel_args.h +17 -17
- data/src/core/lib/channel/promise_based_filter.cc +2 -2
- data/src/core/lib/channel/promise_based_filter.h +66 -27
- data/src/core/lib/debug/trace_flags.cc +2 -0
- data/src/core/lib/debug/trace_flags.h +1 -0
- data/src/core/lib/event_engine/ares_resolver.cc +14 -14
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +7 -7
- data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +4 -4
- data/src/core/lib/event_engine/default_event_engine.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +9 -9
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +16 -14
- data/src/core/lib/event_engine/posix_engine/file_descriptor_collection.cc +6 -6
- data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +3 -3
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +7 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +17 -17
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/timer.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +5 -5
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +3 -3
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.cc +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +3 -3
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +50 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +3 -3
- data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_engine.cc +15 -15
- data/src/core/lib/event_engine/windows/windows_listener.cc +6 -6
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +6 -6
- data/src/core/lib/experiments/experiments.cc +48 -0
- data/src/core/lib/experiments/experiments.h +24 -0
- data/src/core/lib/iomgr/buffer_list.cc +3 -3
- data/src/core/lib/iomgr/buffer_list.h +1 -1
- data/src/core/lib/iomgr/combiner.cc +0 -1
- data/src/core/lib/iomgr/ev_apple.cc +4 -4
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +2 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_posix.cc +7 -7
- data/src/core/lib/promise/activity.cc +1 -1
- data/src/core/lib/promise/activity.h +1 -1
- data/src/core/lib/promise/arena_promise.h +7 -7
- data/src/core/lib/promise/detail/promise_factory.h +8 -8
- data/src/core/lib/promise/detail/promise_like.h +4 -4
- data/src/core/lib/promise/inter_activity_latch.h +6 -6
- data/src/core/lib/promise/inter_activity_pipe.h +1 -1
- data/src/core/lib/promise/observable.h +3 -3
- data/src/core/lib/promise/party.cc +1 -1
- data/src/core/lib/promise/try_seq.h +2 -2
- data/src/core/lib/resource_quota/arena.h +3 -3
- data/src/core/lib/resource_quota/memory_quota.cc +16 -16
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/resource_quota/thread_quota.cc +3 -3
- data/src/core/lib/security/authorization/audit_logging.cc +5 -5
- data/src/core/lib/security/authorization/authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -1
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -1
- data/src/core/lib/security/authorization/matchers.h +1 -1
- data/src/core/lib/surface/call.cc +8 -7
- data/src/core/lib/surface/call.h +3 -3
- data/src/core/lib/surface/call_utils.h +4 -0
- data/src/core/lib/surface/channel.cc +1 -1
- data/src/core/lib/surface/channel.h +1 -1
- data/src/core/lib/surface/channel_init.cc +1 -1
- data/src/core/lib/surface/init.cc +7 -7
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +2 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/transport_framing_endpoint_extension.h +3 -3
- data/src/core/load_balancing/autosharding/autosharding.cc +931 -0
- data/src/core/load_balancing/autosharding/autosharding.h +78 -0
- data/src/core/load_balancing/grpclb/grpclb_client_stats.cc +2 -2
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.h +3 -1
- data/src/core/load_balancing/health_check_client.cc +7 -7
- data/src/core/load_balancing/lb_policy.cc +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +5 -5
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +2 -2
- data/src/core/load_balancing/ring_hash/ring_hash.cc +109 -37
- data/src/core/load_balancing/rls/rls.cc +23 -17
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +10 -10
- data/src/core/load_balancing/xds/cds.cc +6 -5
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +2 -2
- data/src/core/load_balancing/xds/xds_override_host.cc +10 -10
- data/src/core/mitigation_engine/mitigation_engine.h +28 -4
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -0
- data/src/core/resolver/dns/dns_resolver.cc +7 -7
- data/src/core/resolver/fake/fake_resolver.cc +5 -5
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +38 -30
- data/src/core/server/server.cc +30 -30
- data/src/core/server/server.h +4 -3
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/xds_server_config_fetcher_legacy.cc +15 -15
- data/src/core/telemetry/default_tcp_tracer.cc +1 -1
- data/src/core/telemetry/instrument.cc +30 -16
- data/src/core/telemetry/instrument.h +3 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +3 -3
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -4
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +2 -2
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +1 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.h +1 -1
- data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +5 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +3 -3
- data/src/core/tsi/ssl_transport_security.cc +46 -13
- data/src/core/tsi/ssl_transport_security.h +7 -0
- data/src/core/tsi/ssl_transport_security_utils.cc +16 -6
- data/src/core/util/event_log.cc +3 -3
- data/src/core/util/http_client/httpcli.cc +5 -5
- data/src/core/util/http_client/httpcli.h +1 -1
- data/src/core/util/json/json_object_loader.cc +7 -0
- data/src/core/util/json/json_object_loader.h +17 -2
- data/src/core/util/latent_see.cc +123 -36
- data/src/core/util/latent_see.h +14 -1
- data/src/core/util/mpscq.cc +1 -1
- data/src/core/util/notification.h +4 -4
- data/src/core/util/sync.h +20 -6
- data/src/core/util/table.h +20 -22
- data/src/core/util/work_serializer.cc +2 -2
- data/src/core/xds/grpc/blackboard.cc +4 -3
- data/src/core/xds/grpc/certificate_provider_store.cc +2 -2
- data/src/core/xds/grpc/streaming_call_promise_wrapper.cc +181 -0
- data/src/core/xds/grpc/streaming_call_promise_wrapper.h +213 -0
- data/src/core/xds/grpc/xds_bootstrap_grpc_builder.cc +2 -2
- data/src/core/xds/grpc/xds_client_grpc.cc +8 -8
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_endpoint.cc +1 -1
- data/src/core/xds/grpc/xds_endpoint_parser.cc +11 -0
- data/src/core/xds/grpc/xds_grpc_service_parser.cc +12 -10
- data/src/core/xds/grpc/xds_http_ext_proc_filter.cc +17 -14
- data/src/core/xds/grpc/xds_matcher.h +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.cc +125 -85
- data/src/core/xds/grpc/xds_transport_grpc.h +19 -4
- data/src/core/xds/xds_client/lrs_client.cc +22 -19
- data/src/core/xds/xds_client/xds_client.cc +19 -16
- data/src/core/xds/xds_client/xds_transport.h +49 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +1 -1
- data/src/ruby/pb/generate_proto_ruby.sh +1 -1
- data/third_party/abseil-cpp/absl/algorithm/algorithm.h +34 -2
- data/third_party/abseil-cpp/absl/algorithm/container.h +345 -147
- data/third_party/abseil-cpp/absl/base/attributes.h +67 -44
- data/third_party/abseil-cpp/absl/base/call_once.h +1 -0
- data/third_party/abseil-cpp/absl/base/casts.cc +61 -0
- data/third_party/abseil-cpp/absl/base/casts.h +135 -2
- data/third_party/abseil-cpp/absl/base/config.h +63 -41
- data/third_party/abseil-cpp/absl/base/fast_type_id.h +30 -2
- data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +1 -1
- data/third_party/abseil-cpp/absl/base/internal/hardening.h +136 -0
- data/third_party/abseil-cpp/absl/base/internal/iterator_traits.h +6 -2
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +39 -4
- data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +6 -0
- data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +77 -15
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +3 -4
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +26 -24
- data/third_party/abseil-cpp/absl/base/internal/spinlock.h +74 -29
- data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -11
- data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +52 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +5 -1
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +5 -0
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock_config.h +1 -1
- data/third_party/abseil-cpp/absl/base/macros.h +76 -37
- data/third_party/abseil-cpp/absl/base/nullability.h +5 -5
- data/third_party/abseil-cpp/absl/base/optimization.h +4 -5
- data/third_party/abseil-cpp/absl/base/options.h +46 -18
- data/third_party/abseil-cpp/absl/base/policy_checks.h +5 -5
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.cc → throw_delegate.cc} +9 -7
- data/third_party/abseil-cpp/absl/base/{internal/throw_delegate.h → throw_delegate.h} +4 -14
- data/third_party/abseil-cpp/absl/cleanup/cleanup.h +7 -2
- data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +3 -2
- data/third_party/abseil-cpp/absl/container/btree_map.h +60 -10
- data/third_party/abseil-cpp/absl/container/btree_set.h +61 -15
- data/third_party/abseil-cpp/absl/container/fixed_array.h +19 -21
- data/third_party/abseil-cpp/absl/container/flat_hash_map.h +49 -27
- data/third_party/abseil-cpp/absl/container/flat_hash_set.h +50 -26
- data/third_party/abseil-cpp/absl/container/inlined_vector.h +42 -36
- data/third_party/abseil-cpp/absl/container/internal/btree.h +32 -24
- data/third_party/abseil-cpp/absl/container/internal/btree_container.h +30 -22
- data/third_party/abseil-cpp/absl/container/internal/common.h +57 -5
- data/third_party/abseil-cpp/absl/container/internal/common_policy_traits.h +1 -1
- data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +40 -36
- data/third_party/abseil-cpp/absl/container/internal/container_memory.h +119 -39
- data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +14 -2
- data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +14 -22
- data/third_party/abseil-cpp/absl/container/internal/hashtable_control_bytes.h +52 -52
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +7 -7
- data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +7 -7
- data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +32 -40
- data/third_party/abseil-cpp/absl/container/internal/layout.h +13 -13
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +95 -72
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +633 -365
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1016 -749
- data/third_party/abseil-cpp/absl/container/internal/raw_hash_set_resize_impl.h +0 -1
- data/third_party/abseil-cpp/absl/container/node_hash_map.h +58 -35
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc +23 -6
- data/third_party/abseil-cpp/absl/crc/internal/cpu_detect.h +7 -1
- data/third_party/abseil-cpp/absl/crc/internal/crc.cc +4 -6
- data/third_party/abseil-cpp/absl/crc/internal/crc32_x86_arm_combined_simd.h +41 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_internal.h +0 -16
- data/third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_arm_combined.cc +5 -0
- data/third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc +304 -188
- data/third_party/abseil-cpp/absl/crc/internal/non_temporal_arm_intrinsics.h +4 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +2 -2
- data/third_party/abseil-cpp/absl/debugging/internal/demangle_rust.h +8 -0
- data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +4 -4
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc +15 -1
- data/third_party/abseil-cpp/absl/debugging/internal/examine_stack.h +7 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +12 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +6 -5
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_emscripten-inl.inc +13 -11
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +14 -7
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +3 -2
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_riscv-inl.inc +6 -1
- data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +14 -8
- data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +48 -38
- data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +4 -0
- data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +63 -118
- data/third_party/abseil-cpp/absl/debugging/stacktrace.h +7 -47
- data/third_party/abseil-cpp/absl/debugging/symbolize.cc +20 -2
- data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +83 -149
- data/third_party/abseil-cpp/absl/debugging/symbolize_emscripten.inc +4 -17
- data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +4 -4
- data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +2 -4
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +8 -6
- data/third_party/abseil-cpp/absl/flags/declare.h +9 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +2 -1
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +1 -1
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +19 -18
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +33 -34
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +2 -2
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +1 -16
- data/third_party/abseil-cpp/absl/flags/marshalling.h +2 -28
- data/third_party/abseil-cpp/absl/flags/reflection.cc +11 -7
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +2 -2
- data/third_party/abseil-cpp/absl/functional/any_invocable.h +22 -19
- data/third_party/abseil-cpp/absl/functional/bind_front.h +7 -1
- data/third_party/abseil-cpp/absl/functional/function_ref.h +125 -20
- data/third_party/abseil-cpp/absl/functional/internal/any_invocable.h +43 -31
- data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +4 -4
- data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +44 -6
- data/third_party/abseil-cpp/absl/hash/hash.h +1 -1
- data/third_party/abseil-cpp/absl/hash/internal/city.cc +39 -51
- data/third_party/abseil-cpp/absl/hash/internal/hash.cc +379 -14
- data/third_party/abseil-cpp/absl/hash/internal/hash.h +457 -353
- data/third_party/abseil-cpp/absl/log/absl_vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/log/internal/check_impl.h +2 -1
- data/third_party/abseil-cpp/absl/log/internal/check_op.cc +4 -0
- data/third_party/abseil-cpp/absl/log/internal/check_op.h +128 -50
- data/third_party/abseil-cpp/absl/log/internal/conditions.h +38 -35
- data/third_party/abseil-cpp/absl/log/internal/log_impl.h +108 -110
- data/third_party/abseil-cpp/absl/log/internal/log_message.cc +10 -6
- data/third_party/abseil-cpp/absl/log/internal/log_message.h +19 -1
- data/third_party/abseil-cpp/absl/log/internal/log_sink_set.cc +4 -4
- data/third_party/abseil-cpp/absl/log/internal/nullstream.h +1 -1
- data/third_party/abseil-cpp/absl/log/internal/proto.cc +13 -0
- data/third_party/abseil-cpp/absl/log/internal/strip.h +30 -31
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.cc +5 -5
- data/third_party/abseil-cpp/absl/log/internal/structured_proto.h +6 -5
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.cc +30 -30
- data/third_party/abseil-cpp/absl/log/internal/vlog_config.h +0 -1
- data/third_party/abseil-cpp/absl/log/log.h +2 -2
- data/third_party/abseil-cpp/absl/log/log_entry.cc +263 -0
- data/third_party/abseil-cpp/absl/log/log_entry.h +2 -0
- data/third_party/abseil-cpp/absl/log/vlog_is_on.h +0 -2
- data/third_party/abseil-cpp/absl/memory/memory.h +55 -5
- data/third_party/abseil-cpp/absl/meta/type_traits.h +161 -56
- data/third_party/abseil-cpp/absl/numeric/int128.h +41 -21
- data/third_party/abseil-cpp/absl/numeric/int128_have_intrinsic.inc +16 -22
- data/third_party/abseil-cpp/absl/numeric/int128_no_intrinsic.inc +5 -7
- data/third_party/abseil-cpp/absl/numeric/internal/bits.h +32 -4
- data/third_party/abseil-cpp/absl/profiling/internal/sample_recorder.h +9 -9
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +2 -2
- data/third_party/abseil-cpp/absl/random/bit_gen_ref.h +26 -53
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/distributions.h +17 -17
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +8 -21
- data/third_party/abseil-cpp/absl/random/internal/entropy_pool.cc +2 -2
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +1 -1
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +6 -6
- data/third_party/abseil-cpp/absl/random/internal/platform.h +0 -13
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +6 -6
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +2 -2
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +6 -5
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +5 -31
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +2 -1
- data/third_party/abseil-cpp/absl/random/internal/traits.h +21 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +23 -23
- data/third_party/abseil-cpp/absl/random/mocking_access.h +74 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +1 -1
- data/third_party/abseil-cpp/absl/status/internal/status_internal.cc +63 -18
- data/third_party/abseil-cpp/absl/status/internal/status_internal.h +30 -4
- data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +225 -63
- data/third_party/abseil-cpp/absl/status/status.cc +66 -70
- data/third_party/abseil-cpp/absl/status/status.h +254 -23
- data/third_party/abseil-cpp/absl/status/status_payload_printer.h +3 -2
- data/third_party/abseil-cpp/absl/status/statusor.h +117 -137
- data/third_party/abseil-cpp/absl/strings/ascii.h +10 -6
- data/third_party/abseil-cpp/absl/strings/cord.cc +41 -17
- data/third_party/abseil-cpp/absl/strings/cord.h +26 -17
- data/third_party/abseil-cpp/absl/strings/cord_buffer.h +4 -2
- data/third_party/abseil-cpp/absl/strings/escaping.cc +305 -125
- data/third_party/abseil-cpp/absl/strings/escaping.h +12 -2
- data/third_party/abseil-cpp/absl/strings/internal/append_and_overwrite.h +93 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc +6 -6
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.cc +27 -21
- data/third_party/abseil-cpp/absl/strings/internal/cordz_info.h +11 -19
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc +6 -0
- data/third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.h +1 -0
- data/third_party/abseil-cpp/absl/strings/internal/escaping.cc +0 -141
- data/third_party/abseil-cpp/absl/strings/internal/escaping.h +2 -24
- data/third_party/abseil-cpp/absl/strings/internal/resize_uninitialized.h +31 -36
- data/third_party/abseil-cpp/absl/strings/internal/stl_type_traits.h +39 -39
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -22
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +2 -2
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +2 -4
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +921 -231
- data/third_party/abseil-cpp/absl/strings/internal/str_join_internal.h +18 -16
- data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +16 -12
- data/third_party/abseil-cpp/absl/strings/internal/stringify_sink.h +12 -0
- data/third_party/abseil-cpp/absl/strings/numbers.cc +477 -8
- data/third_party/abseil-cpp/absl/strings/numbers.h +29 -12
- data/third_party/abseil-cpp/absl/strings/resize_and_overwrite.h +198 -0
- data/third_party/abseil-cpp/absl/strings/str_cat.cc +96 -91
- data/third_party/abseil-cpp/absl/strings/str_cat.h +53 -13
- data/third_party/abseil-cpp/absl/strings/str_split.h +14 -9
- data/third_party/abseil-cpp/absl/strings/string_view.h +10 -716
- data/third_party/abseil-cpp/absl/strings/substitute.cc +24 -24
- data/third_party/abseil-cpp/absl/strings/substitute.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/barrier.cc +1 -1
- data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +24 -3
- data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +30 -33
- data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -2
- data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +5 -0
- data/third_party/abseil-cpp/absl/synchronization/mutex.cc +41 -29
- data/third_party/abseil-cpp/absl/synchronization/mutex.h +199 -94
- data/third_party/abseil-cpp/absl/synchronization/notification.cc +5 -5
- data/third_party/abseil-cpp/absl/synchronization/notification.h +1 -1
- data/third_party/abseil-cpp/absl/time/clock.cc +29 -30
- data/third_party/abseil-cpp/absl/time/clock.h +3 -0
- data/third_party/abseil-cpp/absl/time/duration.cc +2 -2
- data/third_party/abseil-cpp/absl/time/format.cc +3 -10
- data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +12 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +131 -91
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +6 -103
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.cc +185 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_name_win.h +37 -0
- data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +10 -15
- data/third_party/abseil-cpp/absl/time/time.cc +4 -4
- data/third_party/abseil-cpp/absl/time/time.h +14 -13
- data/third_party/abseil-cpp/absl/types/compare.h +64 -63
- data/third_party/abseil-cpp/absl/types/internal/span.h +6 -6
- data/third_party/abseil-cpp/absl/types/optional.h +31 -4
- data/third_party/abseil-cpp/absl/types/optional_ref.h +295 -0
- data/third_party/{boringssl-with-bazel/crypto/x509/x_val.cc → abseil-cpp/absl/types/source_location.cc} +4 -14
- data/third_party/abseil-cpp/absl/types/source_location.h +172 -0
- data/third_party/abseil-cpp/absl/types/span.h +67 -38
- data/third_party/abseil-cpp/absl/types/variant.h +75 -18
- data/third_party/abseil-cpp/absl/utility/utility.h +112 -16
- data/third_party/boringssl-with-bazel/crypto/aes/aes.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/armv8_feature_parsing.h +67 -0
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bitstr.cc +143 -105
- data/third_party/boringssl-with-bazel/crypto/asn1/a_bool.cc +5 -8
- data/third_party/boringssl-with-bazel/crypto/asn1/a_d2i_fp.cc +3 -3
- data/third_party/boringssl-with-bazel/crypto/asn1/a_dup.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_gentm.cc +33 -12
- data/third_party/boringssl-with-bazel/crypto/asn1/a_i2d_fp.cc +7 -6
- data/third_party/boringssl-with-bazel/crypto/asn1/a_int.cc +80 -52
- data/third_party/boringssl-with-bazel/crypto/asn1/a_mbstr.cc +7 -4
- data/third_party/boringssl-with-bazel/crypto/asn1/a_object.cc +70 -72
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strex.cc +38 -42
- data/third_party/boringssl-with-bazel/crypto/asn1/a_strnid.cc +41 -39
- data/third_party/boringssl-with-bazel/crypto/asn1/a_time.cc +59 -35
- data/third_party/boringssl-with-bazel/crypto/asn1/a_type.cc +275 -15
- data/third_party/boringssl-with-bazel/crypto/asn1/a_utctm.cc +32 -13
- data/third_party/boringssl-with-bazel/crypto/asn1/asn1_lib.cc +128 -30
- data/third_party/boringssl-with-bazel/crypto/asn1/asn_pack.cc +10 -10
- data/third_party/boringssl-with-bazel/crypto/asn1/f_int.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/f_string.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/asn1/internal.h +261 -115
- data/third_party/boringssl-with-bazel/crypto/asn1/posix_time.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_dec.cc +373 -725
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_enc.cc +211 -526
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_fre.cc +22 -19
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_new.cc +26 -24
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_typ.cc +19 -5
- data/third_party/boringssl-with-bazel/crypto/asn1/tasn_utl.cc +47 -51
- data/third_party/boringssl-with-bazel/crypto/base64/base64.cc +14 -15
- data/third_party/boringssl-with-bazel/crypto/bcm_support.h +7 -29
- data/third_party/boringssl-with-bazel/crypto/bio/bio.cc +234 -176
- data/third_party/boringssl-with-bazel/crypto/bio/bio_mem.cc +72 -86
- data/third_party/boringssl-with-bazel/crypto/bio/connect.cc +153 -199
- data/third_party/boringssl-with-bazel/crypto/bio/errno.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/bio/fd.cc +56 -55
- data/third_party/boringssl-with-bazel/crypto/bio/file.cc +70 -78
- data/third_party/boringssl-with-bazel/crypto/bio/hexdump.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/bio/internal.h +69 -17
- data/third_party/boringssl-with-bazel/crypto/bio/pair.cc +117 -136
- data/third_party/boringssl-with-bazel/crypto/bio/printf.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/bio/socket.cc +116 -50
- data/third_party/boringssl-with-bazel/crypto/bio/socket_helper.cc +53 -5
- data/third_party/boringssl-with-bazel/crypto/blake2/blake2.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/bn/bn_asn1.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/bn/convert.cc +56 -70
- data/third_party/boringssl-with-bazel/crypto/bn/div.cc +102 -0
- data/third_party/boringssl-with-bazel/crypto/bn/exponentiation.cc +26 -42
- data/third_party/boringssl-with-bazel/crypto/bn/sqrt.cc +93 -0
- data/third_party/boringssl-with-bazel/crypto/buf/buf.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/asn1_compat.cc +6 -5
- data/third_party/boringssl-with-bazel/crypto/bytestring/ber.cc +22 -20
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbb.cc +119 -59
- data/third_party/boringssl-with-bazel/crypto/bytestring/cbs.cc +115 -31
- data/third_party/boringssl-with-bazel/crypto/bytestring/internal.h +79 -24
- data/third_party/boringssl-with-bazel/crypto/bytestring/unicode.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/chacha/chacha.cc +5 -3
- data/third_party/boringssl-with-bazel/crypto/chacha/internal.h +23 -22
- data/third_party/boringssl-with-bazel/crypto/cipher/derive_key.cc +14 -18
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesctrhmac.cc +73 -58
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aeseax.cc +132 -70
- data/third_party/boringssl-with-bazel/crypto/cipher/e_aesgcmsiv.cc +390 -249
- data/third_party/boringssl-with-bazel/crypto/cipher/e_chacha20poly1305.cc +200 -137
- data/third_party/boringssl-with-bazel/crypto/cipher/e_des.cc +45 -29
- data/third_party/boringssl-with-bazel/crypto/cipher/e_null.cc +9 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc2.cc +43 -28
- data/third_party/boringssl-with-bazel/crypto/cipher/e_rc4.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/cipher/e_tls.cc +250 -237
- data/third_party/boringssl-with-bazel/crypto/cipher/get_cipher.cc +12 -12
- data/third_party/boringssl-with-bazel/crypto/cipher/internal.h +59 -59
- data/third_party/boringssl-with-bazel/crypto/cipher/tls_cbc.cc +111 -111
- data/third_party/boringssl-with-bazel/crypto/cms/cms.cc +48 -42
- data/third_party/boringssl-with-bazel/crypto/conf/conf.cc +69 -63
- data/third_party/boringssl-with-bazel/crypto/conf/internal.h +11 -12
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_apple.cc +8 -5
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_fuchsia.cc +6 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_linux.cc +7 -1
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_openbsd.cc +7 -21
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_sysreg.cc +15 -41
- data/third_party/boringssl-with-bazel/crypto/cpu_aarch64_win.cc +16 -3
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_freebsd.cc +4 -2
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.cc +54 -31
- data/third_party/boringssl-with-bazel/crypto/cpu_arm_linux.h +79 -101
- data/third_party/boringssl-with-bazel/crypto/cpu_intel.cc +51 -45
- data/third_party/boringssl-with-bazel/crypto/crypto.cc +26 -55
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519.cc +28 -25
- data/third_party/boringssl-with-bazel/crypto/curve25519/curve25519_tables.h +6 -6
- data/third_party/boringssl-with-bazel/crypto/curve25519/internal.h +14 -15
- data/third_party/boringssl-with-bazel/crypto/curve25519/spake25519.cc +23 -20
- data/third_party/boringssl-with-bazel/crypto/des/des.cc +27 -19
- data/third_party/boringssl-with-bazel/crypto/des/internal.h +4 -9
- data/third_party/boringssl-with-bazel/crypto/dh/dh_asn1.cc +34 -49
- data/third_party/boringssl-with-bazel/crypto/dh/params.cc +44 -41
- data/third_party/boringssl-with-bazel/crypto/digest/digest_extra.cc +87 -40
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa.cc +237 -260
- data/third_party/boringssl-with-bazel/crypto/dsa/dsa_asn1.cc +100 -173
- data/third_party/boringssl-with-bazel/crypto/dsa/internal.h +23 -21
- data/third_party/boringssl-with-bazel/crypto/ec/ec_asn1.cc +181 -209
- data/third_party/boringssl-with-bazel/crypto/ec/ec_derive.cc +26 -28
- data/third_party/boringssl-with-bazel/crypto/ec/hash_to_curve.cc +265 -174
- data/third_party/boringssl-with-bazel/crypto/ec/internal.h +54 -18
- data/third_party/boringssl-with-bazel/crypto/ecdh/ecdh.cc +7 -5
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_asn1.cc +50 -70
- data/third_party/boringssl-with-bazel/crypto/ecdsa/ecdsa_p1363.cc +54 -0
- data/third_party/boringssl-with-bazel/crypto/engine/engine.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/err/err.cc +116 -105
- data/third_party/boringssl-with-bazel/crypto/err/internal.h +8 -21
- data/third_party/boringssl-with-bazel/crypto/evp/evp.cc +238 -166
- data/third_party/boringssl-with-bazel/crypto/evp/evp_asn1.cc +202 -234
- data/third_party/boringssl-with-bazel/crypto/evp/evp_ctx.cc +260 -159
- data/third_party/boringssl-with-bazel/crypto/evp/evp_kem.cc +82 -0
- data/third_party/boringssl-with-bazel/crypto/evp/internal.h +292 -137
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh.cc +198 -25
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa.cc +333 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec.cc +427 -42
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519.cc +270 -14
- data/third_party/boringssl-with-bazel/crypto/evp/p_hkdf.cc +70 -102
- data/third_party/boringssl-with-bazel/crypto/evp/p_mldsa.cc +549 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_mlkem.cc +485 -0
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa.cc +666 -158
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519.cc +290 -28
- data/third_party/boringssl-with-bazel/crypto/evp/p_xwing.cc +273 -0
- data/third_party/boringssl-with-bazel/crypto/evp/pbkdf.cc +14 -7
- data/third_party/boringssl-with-bazel/crypto/evp/print.cc +34 -89
- data/third_party/boringssl-with-bazel/crypto/evp/scrypt.cc +23 -21
- data/third_party/boringssl-with-bazel/crypto/evp/sign.cc +23 -42
- data/third_party/boringssl-with-bazel/crypto/ex_data.cc +40 -41
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes.cc.inc +34 -28
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/aes_nohw.cc.inc +119 -121
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cbc.cc.inc +16 -14
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/cfb.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ctr.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm.cc.inc +39 -29
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/gcm_nohw.cc.inc +15 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/internal.h +193 -177
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/key_wrap.cc.inc +5 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/mode_wrappers.cc.inc +7 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/aes/ofb.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm.cc +24 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bcm_interface.h +512 -384
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/add.cc.inc +7 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/asm/x86_64-gcc.cc.inc +63 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bn.cc.inc +40 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/bytes.cc.inc +27 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/cmp.cc.inc +9 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/ctx.cc.inc +62 -126
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div.cc.inc +92 -167
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/div_extra.cc.inc +15 -12
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/exponentiation.cc.inc +96 -93
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd.cc.inc +73 -92
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/gcd_extra.cc.inc +59 -71
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/generic.cc.inc +54 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/internal.h +333 -255
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/jacobi.cc.inc +12 -19
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery.cc.inc +80 -95
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/montgomery_inv.cc.inc +53 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/mul.cc.inc +58 -419
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/prime.cc.inc +164 -213
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/random.cc.inc +27 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.cc.inc +12 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/rsaz_exp.h +47 -49
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/shift.cc.inc +14 -17
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/bn/sqrt.cc.inc +19 -108
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/aead.cc.inc +427 -105
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/cipher.cc.inc +412 -212
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aes.cc.inc +230 -225
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/e_aesccm.cc.inc +115 -84
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cipher/internal.h +374 -27
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/cmac/cmac.cc.inc +28 -23
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/delocate.h +36 -40
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/check.cc.inc +68 -78
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/dh.cc.inc +154 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/dh/internal.h +24 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digest.cc.inc +40 -69
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/digests.cc.inc +13 -7
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/internal.h +13 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digest/md32_common.h +86 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/digestsign/digestsign.cc.inc +38 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec.cc.inc +187 -196
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_key.cc.inc +196 -154
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/ec_montgomery.cc.inc +65 -125
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/felem.cc.inc +85 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/internal.h +281 -287
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/oct.cc.inc +23 -22
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256.cc.inc +514 -573
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256_internal.h +193 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/scalar.cc.inc +44 -39
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple.cc.inc +58 -90
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/simple_mul.cc.inc +39 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/util.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/wnaf.cc.inc +23 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdh/ecdh.cc.inc +6 -3
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/ecdsa.cc.inc +47 -37
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ecdsa/internal.h +5 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/internal.h +38 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/jitter.cc.inc +463 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/entropy/sha512.cc.inc +329 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hkdf/hkdf.cc.inc +8 -6
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/hmac/hmac.cc.inc +19 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/internal.h +41 -15
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/keccak/keccak.cc.inc +172 -44
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mldsa/mldsa.cc.inc +1632 -766
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/fips_known_values.inc +5 -5
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/mlkem/mlkem.cc.inc +740 -436
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/android_entropy_client.cc.inc +82 -0
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/ctrdrbg.cc.inc +240 -53
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/internal.h +41 -26
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rand/rand.cc.inc +221 -218
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/internal.h +64 -67
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/padding.cc.inc +49 -57
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa.cc.inc +247 -234
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/rsa_impl.cc.inc +392 -692
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/fips.cc.inc +10 -10
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/self_check/self_check.cc.inc +479 -449
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/internal.h +34 -11
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/service_indicator/service_indicator.cc.inc +46 -43
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/internal.h +61 -70
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha1.cc.inc +27 -13
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha256.cc.inc +46 -30
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/sha/sha512.cc.inc +47 -47
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/address.h +98 -73
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.cc.inc +108 -98
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/fors.h +14 -24
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.cc.inc +94 -91
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/merkle.h +19 -31
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/params.h +156 -56
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/slhdsa.cc.inc +318 -132
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.cc.inc +234 -81
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/thash.h +20 -34
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.cc.inc +97 -96
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/slhdsa/wots.h +10 -20
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/internal.h +2 -16
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/tls/kdf.cc.inc +26 -26
- data/third_party/boringssl-with-bazel/crypto/fuzzer_mode.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/hpke/hpke.cc +461 -97
- data/third_party/boringssl-with-bazel/crypto/hrss/hrss.cc +153 -149
- data/third_party/boringssl-with-bazel/crypto/hrss/internal.h +9 -13
- data/third_party/boringssl-with-bazel/crypto/internal.h +531 -394
- data/third_party/boringssl-with-bazel/crypto/kyber/internal.h +117 -12
- data/third_party/boringssl-with-bazel/crypto/kyber/kyber.cc +59 -58
- data/third_party/boringssl-with-bazel/crypto/lhash/internal.h +38 -37
- data/third_party/boringssl-with-bazel/crypto/lhash/lhash.cc +68 -65
- data/third_party/boringssl-with-bazel/crypto/md4/md4.cc +19 -6
- data/third_party/boringssl-with-bazel/crypto/md5/internal.h +6 -9
- data/third_party/boringssl-with-bazel/crypto/md5/md5.cc +18 -6
- data/third_party/boringssl-with-bazel/crypto/mem.cc +61 -65
- data/third_party/boringssl-with-bazel/crypto/mem_internal.h +671 -0
- data/third_party/boringssl-with-bazel/crypto/mldsa/mldsa.cc +238 -32
- data/third_party/boringssl-with-bazel/crypto/mlkem/mlkem.cc +21 -65
- data/third_party/boringssl-with-bazel/crypto/obj/obj.cc +132 -157
- data/third_party/boringssl-with-bazel/crypto/obj/obj_dat.h +79 -1
- data/third_party/boringssl-with-bazel/crypto/obj/obj_xref.cc +14 -11
- data/third_party/boringssl-with-bazel/crypto/params_internal.h +30 -0
- data/third_party/boringssl-with-bazel/crypto/pem/internal.h +20 -15
- data/third_party/boringssl-with-bazel/crypto/pem/pem_all.cc +20 -19
- data/third_party/boringssl-with-bazel/crypto/pem/pem_info.cc +72 -76
- data/third_party/boringssl-with-bazel/crypto/pem/pem_lib.cc +215 -217
- data/third_party/boringssl-with-bazel/crypto/pem/pem_oth.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pk8.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/pem/pem_pkey.cc +11 -11
- data/third_party/boringssl-with-bazel/crypto/pkcs7/internal.h +12 -17
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7.cc +29 -27
- data/third_party/boringssl-with-bazel/crypto/pkcs7/pkcs7_x509.cc +55 -49
- data/third_party/boringssl-with-bazel/crypto/pkcs8/internal.h +21 -26
- data/third_party/boringssl-with-bazel/crypto/pkcs8/p5_pbev2.cc +33 -31
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8.cc +73 -81
- data/third_party/boringssl-with-bazel/crypto/pkcs8/pkcs8_x509.cc +139 -138
- data/third_party/boringssl-with-bazel/crypto/poly1305/internal.h +3 -7
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305.cc +5 -4
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_arm.cc +43 -47
- data/third_party/boringssl-with-bazel/crypto/poly1305/poly1305_vec.cc +29 -26
- data/third_party/boringssl-with-bazel/crypto/pool/internal.h +64 -20
- data/third_party/boringssl-with-bazel/crypto/pool/pool.cc +177 -157
- data/third_party/boringssl-with-bazel/crypto/rand/deterministic.cc +9 -16
- data/third_party/boringssl-with-bazel/crypto/rand/fork_detect.cc +70 -42
- data/third_party/boringssl-with-bazel/crypto/rand/forkunsafe.cc +7 -7
- data/third_party/boringssl-with-bazel/crypto/rand/getentropy.cc +6 -13
- data/third_party/boringssl-with-bazel/crypto/rand/internal.h +16 -4
- data/third_party/boringssl-with-bazel/crypto/rand/ios.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/rand.cc +11 -9
- data/third_party/boringssl-with-bazel/crypto/rand/trusty.cc +4 -11
- data/third_party/boringssl-with-bazel/crypto/rand/urandom.cc +16 -195
- data/third_party/boringssl-with-bazel/crypto/rand/windows.cc +12 -19
- data/third_party/boringssl-with-bazel/crypto/refcount.cc +7 -17
- data/third_party/boringssl-with-bazel/crypto/rsa/internal.h +22 -7
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_asn1.cc +199 -78
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_crypt.cc +49 -50
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_extra.cc +11 -0
- data/third_party/boringssl-with-bazel/crypto/rsa/rsa_print.cc +4 -6
- data/third_party/boringssl-with-bazel/crypto/sha/sha1.cc +3 -0
- data/third_party/boringssl-with-bazel/crypto/sha/sha256.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/sha/sha512.cc +6 -4
- data/third_party/boringssl-with-bazel/crypto/siphash/siphash.cc +2 -0
- data/third_party/boringssl-with-bazel/crypto/slhdsa/slhdsa.cc +43 -6
- data/third_party/boringssl-with-bazel/crypto/spake2plus/internal.h +31 -31
- data/third_party/boringssl-with-bazel/crypto/spake2plus/spake2plus.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/stack/stack.cc +89 -130
- data/third_party/boringssl-with-bazel/crypto/thread.cc +14 -14
- data/third_party/boringssl-with-bazel/crypto/thread_none.cc +10 -13
- data/third_party/boringssl-with-bazel/crypto/thread_pthread.cc +22 -35
- data/third_party/boringssl-with-bazel/crypto/thread_win.cc +29 -40
- data/third_party/boringssl-with-bazel/crypto/trust_token/internal.h +81 -88
- data/third_party/boringssl-with-bazel/crypto/trust_token/pmbtoken.cc +160 -144
- data/third_party/boringssl-with-bazel/crypto/trust_token/trust_token.cc +96 -80
- data/third_party/boringssl-with-bazel/crypto/trust_token/voprf.cc +90 -87
- data/third_party/boringssl-with-bazel/crypto/x509/a_digest.cc +5 -5
- data/third_party/boringssl-with-bazel/crypto/x509/a_sign.cc +51 -48
- data/third_party/boringssl-with-bazel/crypto/x509/a_verify.cc +30 -34
- data/third_party/boringssl-with-bazel/crypto/x509/algorithm.cc +47 -16
- data/third_party/boringssl-with-bazel/crypto/x509/asn1_gen.cc +41 -43
- data/third_party/boringssl-with-bazel/crypto/x509/by_dir.cc +183 -237
- data/third_party/boringssl-with-bazel/crypto/x509/by_file.cc +29 -30
- data/third_party/boringssl-with-bazel/crypto/x509/internal.h +276 -180
- data/third_party/boringssl-with-bazel/crypto/x509/name_print.cc +15 -13
- data/third_party/boringssl-with-bazel/crypto/x509/policy.cc +415 -525
- data/third_party/boringssl-with-bazel/crypto/x509/rsa_pss.cc +94 -271
- data/third_party/boringssl-with-bazel/crypto/x509/t_crl.cc +11 -8
- data/third_party/boringssl-with-bazel/crypto/x509/t_req.cc +26 -23
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509.cc +26 -22
- data/third_party/boringssl-with-bazel/crypto/x509/t_x509a.cc +3 -1
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akey.cc +69 -76
- data/third_party/boringssl-with-bazel/crypto/x509/v3_akeya.cc +2 -2
- data/third_party/boringssl-with-bazel/crypto/x509/v3_alt.cc +112 -69
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_bitst.cc +16 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_conf.cc +62 -67
- data/third_party/boringssl-with-bazel/crypto/x509/v3_cpols.cc +143 -170
- data/third_party/boringssl-with-bazel/crypto/x509/v3_crld.cc +121 -165
- data/third_party/boringssl-with-bazel/crypto/x509/v3_enum.cc +13 -12
- data/third_party/boringssl-with-bazel/crypto/x509/v3_extku.cc +17 -34
- data/third_party/boringssl-with-bazel/crypto/x509/v3_genn.cc +20 -10
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ia5.cc +22 -18
- data/third_party/boringssl-with-bazel/crypto/x509/v3_info.cc +45 -47
- data/third_party/boringssl-with-bazel/crypto/x509/v3_int.cc +35 -33
- data/third_party/boringssl-with-bazel/crypto/x509/v3_lib.cc +106 -61
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ncons.cc +642 -358
- data/third_party/boringssl-with-bazel/crypto/x509/v3_ocsp.cc +25 -22
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pcons.cc +15 -14
- data/third_party/boringssl-with-bazel/crypto/x509/v3_pmaps.cc +16 -15
- data/third_party/boringssl-with-bazel/crypto/x509/v3_prn.cc +6 -6
- data/third_party/boringssl-with-bazel/crypto/x509/v3_purp.cc +150 -137
- data/third_party/boringssl-with-bazel/crypto/x509/v3_skey.cc +23 -26
- data/third_party/boringssl-with-bazel/crypto/x509/v3_utl.cc +151 -178
- data/third_party/boringssl-with-bazel/crypto/x509/x509.cc +1 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x509_att.cc +32 -30
- data/third_party/boringssl-with-bazel/crypto/x509/x509_cmp.cc +95 -88
- data/third_party/boringssl-with-bazel/crypto/x509/x509_d2.cc +9 -9
- data/third_party/boringssl-with-bazel/crypto/x509/x509_def.cc +6 -8
- data/third_party/boringssl-with-bazel/crypto/x509/x509_ext.cc +46 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x509_lu.cc +211 -195
- data/third_party/boringssl-with-bazel/crypto/x509/x509_obj.cc +20 -16
- data/third_party/boringssl-with-bazel/crypto/x509/x509_req.cc +37 -46
- data/third_party/boringssl-with-bazel/crypto/x509/x509_set.cc +62 -90
- data/third_party/boringssl-with-bazel/crypto/x509/x509_trs.cc +18 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x509_v3.cc +33 -33
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vfy.cc +109 -110
- data/third_party/boringssl-with-bazel/crypto/x509/x509_vpm.cc +56 -47
- data/third_party/boringssl-with-bazel/crypto/x509/x509cset.cc +27 -40
- data/third_party/boringssl-with-bazel/crypto/x509/x509name.cc +77 -67
- data/third_party/boringssl-with-bazel/crypto/x509/x509rset.cc +5 -17
- data/third_party/boringssl-with-bazel/crypto/x509/x509spki.cc +13 -13
- data/third_party/boringssl-with-bazel/crypto/x509/x_algor.cc +131 -24
- data/third_party/boringssl-with-bazel/crypto/x509/x_all.cc +72 -39
- data/third_party/boringssl-with-bazel/crypto/x509/x_attrib.cc +10 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_crl.cc +77 -44
- data/third_party/boringssl-with-bazel/crypto/x509/x_exten.cc +6 -0
- data/third_party/boringssl-with-bazel/crypto/x509/x_name.cc +311 -383
- data/third_party/boringssl-with-bazel/crypto/x509/x_pubkey.cc +129 -82
- data/third_party/boringssl-with-bazel/crypto/x509/x_req.cc +11 -6
- data/third_party/boringssl-with-bazel/crypto/x509/x_sig.cc +4 -4
- data/third_party/boringssl-with-bazel/crypto/x509/x_spki.cc +11 -1
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509.cc +285 -280
- data/third_party/boringssl-with-bazel/crypto/x509/x_x509a.cc +60 -60
- data/third_party/boringssl-with-bazel/crypto/xwing/xwing.cc +257 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_64_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/boringssl_prefix_symbols_internal_x86_win_asm.inc +301 -0
- data/third_party/boringssl-with-bazel/gen/crypto/err_data.cc +526 -500
- data/third_party/boringssl-with-bazel/include/openssl/aead.h +286 -114
- data/third_party/boringssl-with-bazel/include/openssl/aes.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/asm_base.h +29 -16
- data/third_party/boringssl-with-bazel/include/openssl/asn1.h +641 -631
- data/third_party/boringssl-with-bazel/include/openssl/asn1t.h +7 -9
- data/third_party/boringssl-with-bazel/include/openssl/base.h +34 -54
- data/third_party/boringssl-with-bazel/include/openssl/base64.h +30 -30
- data/third_party/boringssl-with-bazel/include/openssl/bio.h +373 -316
- data/third_party/boringssl-with-bazel/include/openssl/blake2.h +15 -11
- data/third_party/boringssl-with-bazel/include/openssl/blowfish.h +10 -3
- data/third_party/boringssl-with-bazel/include/openssl/bn.h +298 -306
- data/third_party/boringssl-with-bazel/include/openssl/buf.h +14 -14
- data/third_party/boringssl-with-bazel/include/openssl/bytestring.h +272 -207
- data/third_party/boringssl-with-bazel/include/openssl/cast.h +45 -8
- data/third_party/boringssl-with-bazel/include/openssl/chacha.h +3 -3
- data/third_party/boringssl-with-bazel/include/openssl/cipher.h +334 -152
- data/third_party/boringssl-with-bazel/include/openssl/cmac.h +13 -13
- data/third_party/boringssl-with-bazel/include/openssl/cms.h +35 -34
- data/third_party/boringssl-with-bazel/include/openssl/conf.h +15 -14
- data/third_party/boringssl-with-bazel/include/openssl/crypto.h +15 -13
- data/third_party/boringssl-with-bazel/include/openssl/ctrdrbg.h +49 -15
- data/third_party/boringssl-with-bazel/include/openssl/curve25519.h +24 -24
- data/third_party/boringssl-with-bazel/include/openssl/des.h +22 -16
- data/third_party/boringssl-with-bazel/include/openssl/dh.h +95 -95
- data/third_party/boringssl-with-bazel/include/openssl/digest.h +140 -71
- data/third_party/boringssl-with-bazel/include/openssl/dsa.h +101 -101
- data/third_party/boringssl-with-bazel/include/openssl/ec.h +143 -119
- data/third_party/boringssl-with-bazel/include/openssl/ec_key.h +97 -97
- data/third_party/boringssl-with-bazel/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl-with-bazel/include/openssl/ecdsa.h +89 -46
- data/third_party/boringssl-with-bazel/include/openssl/engine.h +5 -5
- data/third_party/boringssl-with-bazel/include/openssl/err.h +73 -71
- data/third_party/boringssl-with-bazel/include/openssl/evp.h +824 -344
- data/third_party/boringssl-with-bazel/include/openssl/evp_errors.h +9 -2
- data/third_party/boringssl-with-bazel/include/openssl/ex_data.h +27 -32
- data/third_party/boringssl-with-bazel/include/openssl/hkdf.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/hmac.h +31 -31
- data/third_party/boringssl-with-bazel/include/openssl/hpke.h +133 -117
- data/third_party/boringssl-with-bazel/include/openssl/hrss.h +14 -8
- data/third_party/boringssl-with-bazel/include/openssl/kdf.h +20 -19
- data/third_party/boringssl-with-bazel/include/openssl/lhash.h +4 -25
- data/third_party/boringssl-with-bazel/include/openssl/md4.h +14 -7
- data/third_party/boringssl-with-bazel/include/openssl/md5.h +7 -7
- data/third_party/boringssl-with-bazel/include/openssl/mem.h +38 -38
- data/third_party/boringssl-with-bazel/include/openssl/mldsa.h +380 -24
- data/third_party/boringssl-with-bazel/include/openssl/mlkem.h +43 -43
- data/third_party/boringssl-with-bazel/include/openssl/nid.h +1297 -2
- data/third_party/boringssl-with-bazel/include/openssl/obj.h +49 -49
- data/third_party/boringssl-with-bazel/include/openssl/opensslconf.h +30 -0
- data/third_party/boringssl-with-bazel/include/openssl/params.h +42 -0
- data/third_party/boringssl-with-bazel/include/openssl/pem.h +39 -30
- data/third_party/boringssl-with-bazel/include/openssl/pkcs7.h +40 -40
- data/third_party/boringssl-with-bazel/include/openssl/pkcs8.h +69 -63
- data/third_party/boringssl-with-bazel/include/openssl/poly1305.h +8 -5
- data/third_party/boringssl-with-bazel/include/openssl/pool.h +54 -25
- data/third_party/boringssl-with-bazel/include/openssl/posix_time.h +6 -6
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols.h +7866 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_S.h +585 -0
- data/third_party/boringssl-with-bazel/include/openssl/prefix_symbols_internal_c.h +305 -0
- data/third_party/boringssl-with-bazel/include/openssl/rand.h +18 -18
- data/third_party/boringssl-with-bazel/include/openssl/rc4.h +4 -4
- data/third_party/boringssl-with-bazel/include/openssl/ripemd.h +15 -10
- data/third_party/boringssl-with-bazel/include/openssl/rsa.h +272 -235
- data/third_party/boringssl-with-bazel/include/openssl/service_indicator.h +4 -81
- data/third_party/boringssl-with-bazel/include/openssl/sha.h +43 -166
- data/third_party/boringssl-with-bazel/include/openssl/sha2.h +201 -0
- data/third_party/boringssl-with-bazel/include/openssl/slhdsa.h +100 -48
- data/third_party/boringssl-with-bazel/include/openssl/span.h +190 -75
- data/third_party/boringssl-with-bazel/include/openssl/ssl.h +2168 -1567
- data/third_party/boringssl-with-bazel/include/openssl/ssl3.h +11 -69
- data/third_party/boringssl-with-bazel/include/openssl/stack.h +135 -80
- data/third_party/boringssl-with-bazel/include/openssl/target.h +13 -1
- data/third_party/boringssl-with-bazel/include/openssl/thread.h +0 -10
- data/third_party/boringssl-with-bazel/include/openssl/tls1.h +31 -310
- data/third_party/boringssl-with-bazel/include/openssl/tls_prf.h +47 -0
- data/third_party/boringssl-with-bazel/include/openssl/trust_token.h +97 -92
- data/third_party/boringssl-with-bazel/include/openssl/type_check.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/x509.h +1805 -1857
- data/third_party/boringssl-with-bazel/include/openssl/x509v3.h +1 -1
- data/third_party/boringssl-with-bazel/include/openssl/xwing.h +115 -0
- data/third_party/boringssl-with-bazel/ssl/bio_ssl.cc +24 -19
- data/third_party/boringssl-with-bazel/ssl/d1_both.cc +59 -57
- data/third_party/boringssl-with-bazel/ssl/d1_lib.cc +53 -42
- data/third_party/boringssl-with-bazel/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl-with-bazel/ssl/d1_srtp.cc +2 -2
- data/third_party/boringssl-with-bazel/ssl/dtls_method.cc +10 -10
- data/third_party/boringssl-with-bazel/ssl/dtls_record.cc +6 -6
- data/third_party/boringssl-with-bazel/ssl/encrypted_client_hello.cc +61 -71
- data/third_party/boringssl-with-bazel/ssl/extensions.cc +967 -366
- data/third_party/boringssl-with-bazel/ssl/handoff.cc +77 -38
- data/third_party/boringssl-with-bazel/ssl/handshake.cc +63 -30
- data/third_party/boringssl-with-bazel/ssl/handshake_client.cc +129 -85
- data/third_party/boringssl-with-bazel/ssl/handshake_server.cc +116 -68
- data/third_party/boringssl-with-bazel/ssl/internal.h +983 -1207
- data/third_party/boringssl-with-bazel/ssl/s3_both.cc +34 -29
- data/third_party/boringssl-with-bazel/ssl/s3_lib.cc +4 -3
- data/third_party/boringssl-with-bazel/ssl/s3_pkt.cc +12 -12
- data/third_party/boringssl-with-bazel/ssl/ssl_aead_ctx.cc +5 -5
- data/third_party/boringssl-with-bazel/ssl/ssl_asn1.cc +114 -59
- data/third_party/boringssl-with-bazel/ssl/ssl_buffer.cc +17 -18
- data/third_party/boringssl-with-bazel/ssl/ssl_cert.cc +99 -61
- data/third_party/boringssl-with-bazel/ssl/ssl_cipher.cc +143 -134
- data/third_party/boringssl-with-bazel/ssl/ssl_credential.cc +188 -90
- data/third_party/boringssl-with-bazel/ssl/ssl_file.cc +132 -225
- data/third_party/boringssl-with-bazel/ssl/ssl_key_share.cc +79 -7
- data/third_party/boringssl-with-bazel/ssl/ssl_lib.cc +698 -302
- data/third_party/boringssl-with-bazel/ssl/ssl_privkey.cc +102 -45
- data/third_party/boringssl-with-bazel/ssl/ssl_session.cc +117 -102
- data/third_party/boringssl-with-bazel/ssl/ssl_transcript.cc +3 -3
- data/third_party/boringssl-with-bazel/ssl/ssl_versions.cc +24 -24
- data/third_party/boringssl-with-bazel/ssl/ssl_x509.cc +184 -170
- data/third_party/boringssl-with-bazel/ssl/t1_enc.cc +12 -10
- data/third_party/boringssl-with-bazel/ssl/tls13_both.cc +86 -54
- data/third_party/boringssl-with-bazel/ssl/tls13_client.cc +176 -90
- data/third_party/boringssl-with-bazel/ssl/tls13_enc.cc +166 -112
- data/third_party/boringssl-with-bazel/ssl/tls13_server.cc +188 -97
- data/third_party/boringssl-with-bazel/ssl/tls_method.cc +23 -23
- data/third_party/boringssl-with-bazel/ssl/tls_record.cc +17 -14
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_bareminimum.c.inc +47 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/bedrock_unverified_platform.c.inc +137 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/curve25519_64_adx.h +37 -33
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64.h +4 -93
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_64_msvc.h +4 -69
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_32.br.c.inc +71 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_field_64.br.c.inc +84 -0
- data/third_party/boringssl-with-bazel/third_party/fiat/p256_point.br.c.inc +166 -0
- metadata +77 -52
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +0 -240
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +0 -56
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb.h +0 -157
- data/src/core/ext/upb-gen/src/proto/grpc/health/v1/health.upb_minitable.c +0 -72
- data/src/core/ext/upbdefs-gen/src/proto/grpc/lookup/v1/rls_config.upbdefs.c +0 -181
- data/third_party/abseil-cpp/absl/base/internal/identity.h +0 -39
- data/third_party/abseil-cpp/absl/base/internal/nullability_deprecated.h +0 -106
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc +0 -105
- data/third_party/abseil-cpp/absl/hash/internal/low_level_hash.h +0 -50
- data/third_party/abseil-cpp/absl/strings/string_view.cc +0 -257
- data/third_party/boringssl-with-bazel/crypto/evp/p_dh_asn1.cc +0 -142
- data/third_party/boringssl-with-bazel/crypto/evp/p_dsa_asn1.cc +0 -279
- data/third_party/boringssl-with-bazel/crypto/evp/p_ec_asn1.cc +0 -286
- data/third_party/boringssl-with-bazel/crypto/evp/p_ed25519_asn1.cc +0 -225
- data/third_party/boringssl-with-bazel/crypto/evp/p_rsa_asn1.cc +0 -198
- data/third_party/boringssl-with-bazel/crypto/evp/p_x25519_asn1.cc +0 -237
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p224-64.cc.inc +0 -1163
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.cc.inc +0 -741
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/ec/p256-nistz.h +0 -207
- data/third_party/boringssl-with-bazel/crypto/fipsmodule/rsa/blinding.cc.inc +0 -147
- data/third_party/boringssl-with-bazel/crypto/rand/getrandom_fillin.h +0 -64
- data/third_party/boringssl-with-bazel/crypto/rand/passive.cc +0 -178
- data/third_party/boringssl-with-bazel/crypto/x509/ext_dat.h +0 -92
- data/third_party/boringssl-with-bazel/include/openssl/bcm_public.h +0 -82
- data/third_party/boringssl-with-bazel/include/openssl/experimental/kyber.h +0 -146
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
#endif
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
using namespace bssl;
|
|
29
|
+
|
|
28
30
|
// This file contains a constant-time implementation of AES, bitsliced with
|
|
29
31
|
// 32-bit, 64-bit, or 128-bit words, operating on two-, four-, and eight-block
|
|
30
32
|
// batches, respectively. The 128-bit implementation requires SSE2 intrinsics.
|
|
@@ -43,18 +45,18 @@
|
|
|
43
45
|
// shifts match the operations themselves, which makes them reversed in a
|
|
44
46
|
// little-endian, left-to-right reading.
|
|
45
47
|
//
|
|
46
|
-
// Eight
|
|
47
|
-
//
|
|
48
|
+
// Eight `aes_word_t`s contain `AES_NOHW_BATCH_SIZE` blocks. The bits in an
|
|
49
|
+
// `aes_word_t` are divided into 16 consecutive groups of `AES_NOHW_BATCH_SIZE`
|
|
48
50
|
// bits each, each corresponding to a byte in an AES block in column-major
|
|
49
51
|
// order (AES's byte order). We refer to these as "logical bytes". Note, in the
|
|
50
52
|
// 32-bit and 64-bit implementations, they are smaller than a byte. (The
|
|
51
53
|
// contents of a logical byte will be described later.)
|
|
52
54
|
//
|
|
53
|
-
// MSVC does not support C bit operators on
|
|
54
|
-
//
|
|
55
|
-
//
|
|
56
|
-
// value ranges from 0 to 15 independent of
|
|
57
|
-
//
|
|
55
|
+
// MSVC does not support C bit operators on `__m128i`, so the wrapper functions
|
|
56
|
+
// `aes_nohw_and`, etc., should be used instead. Note `aes_nohw_shift_left` and
|
|
57
|
+
// `aes_nohw_shift_right` measure the shift in logical bytes. That is, the shift
|
|
58
|
+
// value ranges from 0 to 15 independent of `aes_word_t` and
|
|
59
|
+
// `AES_NOHW_BATCH_SIZE`.
|
|
58
60
|
//
|
|
59
61
|
// This ordering is different from https://eprint.iacr.org/2009/129.pdf, which
|
|
60
62
|
// uses row-major order. Matching the AES order was easier to reason about, and
|
|
@@ -81,24 +83,24 @@ typedef __m128i aes_word_t;
|
|
|
81
83
|
#define AES_NOHW_COL3_MASK \
|
|
82
84
|
_mm_set_epi32(0xffffffff, 0x00000000, 0x00000000, 0x00000000)
|
|
83
85
|
|
|
84
|
-
static
|
|
86
|
+
static aes_word_t aes_nohw_and(aes_word_t a, aes_word_t b) {
|
|
85
87
|
return _mm_and_si128(a, b);
|
|
86
88
|
}
|
|
87
89
|
|
|
88
|
-
static
|
|
90
|
+
static aes_word_t aes_nohw_or(aes_word_t a, aes_word_t b) {
|
|
89
91
|
return _mm_or_si128(a, b);
|
|
90
92
|
}
|
|
91
93
|
|
|
92
|
-
static
|
|
94
|
+
static aes_word_t aes_nohw_xor(aes_word_t a, aes_word_t b) {
|
|
93
95
|
return _mm_xor_si128(a, b);
|
|
94
96
|
}
|
|
95
97
|
|
|
96
|
-
static
|
|
98
|
+
static aes_word_t aes_nohw_not(aes_word_t a) {
|
|
97
99
|
return _mm_xor_si128(
|
|
98
100
|
a, _mm_set_epi32(0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff));
|
|
99
101
|
}
|
|
100
102
|
|
|
101
|
-
// These are macros because parameters to
|
|
103
|
+
// These are macros because parameters to `_mm_slli_si128` and `_mm_srli_si128`
|
|
102
104
|
// must be constants.
|
|
103
105
|
#define aes_nohw_shift_left(/* aes_word_t */ a, /* const */ i) \
|
|
104
106
|
_mm_slli_si128((a), (i))
|
|
@@ -129,25 +131,19 @@ typedef uint32_t aes_word_t;
|
|
|
129
131
|
#define AES_NOHW_COL3_MASK 0xff000000
|
|
130
132
|
#endif // OPENSSL_64_BIT
|
|
131
133
|
|
|
132
|
-
static
|
|
133
|
-
return a & b;
|
|
134
|
-
}
|
|
134
|
+
static aes_word_t aes_nohw_and(aes_word_t a, aes_word_t b) { return a & b; }
|
|
135
135
|
|
|
136
|
-
static
|
|
137
|
-
return a | b;
|
|
138
|
-
}
|
|
136
|
+
static aes_word_t aes_nohw_or(aes_word_t a, aes_word_t b) { return a | b; }
|
|
139
137
|
|
|
140
|
-
static
|
|
141
|
-
return a ^ b;
|
|
142
|
-
}
|
|
138
|
+
static aes_word_t aes_nohw_xor(aes_word_t a, aes_word_t b) { return a ^ b; }
|
|
143
139
|
|
|
144
|
-
static
|
|
140
|
+
static aes_word_t aes_nohw_not(aes_word_t a) { return ~a; }
|
|
145
141
|
|
|
146
|
-
static
|
|
142
|
+
static aes_word_t aes_nohw_shift_left(aes_word_t a, aes_word_t i) {
|
|
147
143
|
return a << (i * AES_NOHW_BATCH_SIZE);
|
|
148
144
|
}
|
|
149
145
|
|
|
150
|
-
static
|
|
146
|
+
static aes_word_t aes_nohw_shift_right(aes_word_t a, aes_word_t i) {
|
|
151
147
|
return a >> (i * AES_NOHW_BATCH_SIZE);
|
|
152
148
|
}
|
|
153
149
|
#endif // OPENSSL_SSE2
|
|
@@ -162,8 +158,8 @@ static_assert(AES_NOHW_WORD_SIZE == sizeof(aes_word_t),
|
|
|
162
158
|
//
|
|
163
159
|
// This implementation uses three representations for AES blocks. First, the
|
|
164
160
|
// public API represents blocks as uint8_t[16] in the usual way. Second, most
|
|
165
|
-
// AES steps are evaluated in bitsliced form, stored in an
|
|
166
|
-
// This stores
|
|
161
|
+
// AES steps are evaluated in bitsliced form, stored in an `AES_NOHW_BATCH`.
|
|
162
|
+
// This stores `AES_NOHW_BATCH_SIZE` blocks in bitsliced order. For 64-bit words
|
|
167
163
|
// containing bitsliced blocks a, b, c, d, this would be as follows (vertical
|
|
168
164
|
// bars divide logical bytes):
|
|
169
165
|
//
|
|
@@ -176,10 +172,10 @@ static_assert(AES_NOHW_WORD_SIZE == sizeof(aes_word_t),
|
|
|
176
172
|
// Finally, an individual block may be stored as an intermediate form in an
|
|
177
173
|
// aes_word_t[AES_NOHW_BLOCK_WORDS]. In this form, we permute the bits in each
|
|
178
174
|
// block, so that block[0]'s ith logical byte contains least-significant
|
|
179
|
-
//
|
|
180
|
-
//
|
|
175
|
+
// `AES_NOHW_BATCH_SIZE` bits of byte i, block[1] contains the next group of
|
|
176
|
+
// `AES_NOHW_BATCH_SIZE` bits, and so on. We refer to this transformation as
|
|
181
177
|
// "compacting" the block. Note this is no-op with 128-bit words because then
|
|
182
|
-
//
|
|
178
|
+
// `AES_NOHW_BLOCK_WORDS` is one and `AES_NOHW_BATCH_SIZE` is eight. For 64-bit
|
|
183
179
|
// words, one block would be stored in two words:
|
|
184
180
|
//
|
|
185
181
|
// block[0] = a0 a1 a2 a3 | a8 a9 a10 a11 | a16 a17 a18 a19 ...
|
|
@@ -187,8 +183,8 @@ static_assert(AES_NOHW_WORD_SIZE == sizeof(aes_word_t),
|
|
|
187
183
|
//
|
|
188
184
|
// Observe that the distances between corresponding bits in bitsliced and
|
|
189
185
|
// compact bit orders match. If we line up corresponding words of each block,
|
|
190
|
-
// the bitsliced and compact representations may be converted by
|
|
191
|
-
// in corresponding logical bytes. Continuing the 64-bit example:
|
|
186
|
+
// the bitsliced and compact representations may be converted by transposing
|
|
187
|
+
// bits in corresponding logical bytes. Continuing the 64-bit example:
|
|
192
188
|
//
|
|
193
189
|
// block_a[0] = a0 a1 a2 a3 | a8 a9 a10 a11 | a16 a17 a18 a19 ...
|
|
194
190
|
// block_b[0] = b0 b1 b2 b3 | b8 b9 b10 b11 | b16 b17 b18 b19 ...
|
|
@@ -201,40 +197,40 @@ static_assert(AES_NOHW_WORD_SIZE == sizeof(aes_word_t),
|
|
|
201
197
|
// batch.w[3] = a3 b3 c3 d3 | a11 b11 c11 d11 | a19 b19 c19 d19 ...
|
|
202
198
|
//
|
|
203
199
|
// Note also that bitwise operations and (logical) byte permutations on an
|
|
204
|
-
//
|
|
200
|
+
// `aes_word_t` work equally for the bitsliced and compact words.
|
|
205
201
|
//
|
|
206
|
-
// We use the compact form in the
|
|
207
|
-
// inflating round keys into
|
|
208
|
-
// temporarily while moving blocks in or out of an
|
|
209
|
-
// before or after
|
|
202
|
+
// We use the compact form in the `AES_KEY` representation to save work
|
|
203
|
+
// inflating round keys into `AES_NOHW_BATCH`. The compact form also exists
|
|
204
|
+
// temporarily while moving blocks in or out of an `AES_NOHW_BATCH`, immediately
|
|
205
|
+
// before or after `aes_nohw_transpose`.
|
|
210
206
|
|
|
211
207
|
#define AES_NOHW_BLOCK_WORDS (16 / sizeof(aes_word_t))
|
|
212
208
|
|
|
213
|
-
// An AES_NOHW_BATCH stores
|
|
209
|
+
// An AES_NOHW_BATCH stores `AES_NOHW_BATCH_SIZE` blocks. Unless otherwise
|
|
214
210
|
// specified, it is in bitsliced form.
|
|
215
211
|
typedef struct {
|
|
216
212
|
aes_word_t w[8];
|
|
217
213
|
} AES_NOHW_BATCH;
|
|
218
214
|
|
|
219
215
|
// An AES_NOHW_SCHEDULE is an expanded bitsliced AES key schedule. It is
|
|
220
|
-
// suitable for encryption or decryption. It is as large as
|
|
221
|
-
//
|
|
216
|
+
// suitable for encryption or decryption. It is as large as `AES_NOHW_BATCH`
|
|
217
|
+
// `AES_KEY`s so it should not be used as a long-term key representation.
|
|
222
218
|
typedef struct {
|
|
223
219
|
// keys is an array of batches, one for each round key. Each batch stores
|
|
224
|
-
//
|
|
220
|
+
// `AES_NOHW_BATCH_SIZE` copies of the round key in bitsliced form.
|
|
225
221
|
AES_NOHW_BATCH keys[AES_MAXNR + 1];
|
|
226
222
|
} AES_NOHW_SCHEDULE;
|
|
227
223
|
|
|
228
|
-
// aes_nohw_batch_set sets the
|
|
224
|
+
// aes_nohw_batch_set sets the `i`th block of `batch` to `in`. `batch` is in
|
|
229
225
|
// compact form.
|
|
230
|
-
static
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
// Note the words are interleaved. The order comes from
|
|
234
|
-
// If
|
|
226
|
+
static void aes_nohw_batch_set(AES_NOHW_BATCH *batch,
|
|
227
|
+
const aes_word_t in[AES_NOHW_BLOCK_WORDS],
|
|
228
|
+
size_t i) {
|
|
229
|
+
// Note the words are interleaved. The order comes from `aes_nohw_transpose`.
|
|
230
|
+
// If `i` is zero and this is the 64-bit implementation, in[0] contains bits
|
|
235
231
|
// 0-3 and in[1] contains bits 4-7. We place in[0] at w[0] and in[1] at
|
|
236
232
|
// w[4] so that bits 0 and 4 are in the correct position. (In general, bits
|
|
237
|
-
// along diagonals of
|
|
233
|
+
// along diagonals of `AES_NOHW_BATCH_SIZE` by `AES_NOHW_BATCH_SIZE` squares
|
|
238
234
|
// will be correctly placed.)
|
|
239
235
|
assert(i < AES_NOHW_BATCH_SIZE);
|
|
240
236
|
#if defined(OPENSSL_SSE2)
|
|
@@ -250,11 +246,10 @@ static inline void aes_nohw_batch_set(AES_NOHW_BATCH *batch,
|
|
|
250
246
|
#endif
|
|
251
247
|
}
|
|
252
248
|
|
|
253
|
-
// aes_nohw_batch_get writes the
|
|
249
|
+
// aes_nohw_batch_get writes the `i`th block of `batch` to `out`. `batch` is in
|
|
254
250
|
// compact form.
|
|
255
|
-
static
|
|
256
|
-
|
|
257
|
-
size_t i) {
|
|
251
|
+
static void aes_nohw_batch_get(const AES_NOHW_BATCH *batch,
|
|
252
|
+
aes_word_t out[AES_NOHW_BLOCK_WORDS], size_t i) {
|
|
258
253
|
assert(i < AES_NOHW_BATCH_SIZE);
|
|
259
254
|
#if defined(OPENSSL_SSE2)
|
|
260
255
|
out[0] = batch->w[i];
|
|
@@ -270,10 +265,10 @@ static inline void aes_nohw_batch_get(const AES_NOHW_BATCH *batch,
|
|
|
270
265
|
}
|
|
271
266
|
|
|
272
267
|
#if !defined(OPENSSL_SSE2)
|
|
273
|
-
// aes_nohw_delta_swap returns
|
|
274
|
-
// |a & (mask << shift)| swapped.
|
|
275
|
-
static
|
|
276
|
-
|
|
268
|
+
// aes_nohw_delta_swap returns `a` with bits |a & mask| and
|
|
269
|
+
// |a & (mask << shift)| swapped. `mask` and |mask << shift| may not overlap.
|
|
270
|
+
static aes_word_t aes_nohw_delta_swap(aes_word_t a, aes_word_t mask,
|
|
271
|
+
aes_word_t shift) {
|
|
277
272
|
// See
|
|
278
273
|
// https://reflectionsonsecurity.wordpress.com/2014/05/11/efficient-bit-permutation-using-delta-swaps/
|
|
279
274
|
aes_word_t b = (a ^ (a >> shift)) & mask;
|
|
@@ -281,14 +276,14 @@ static inline aes_word_t aes_nohw_delta_swap(aes_word_t a, aes_word_t mask,
|
|
|
281
276
|
}
|
|
282
277
|
|
|
283
278
|
// In the 32-bit and 64-bit implementations, a block spans multiple words.
|
|
284
|
-
//
|
|
285
|
-
// implement
|
|
279
|
+
// `aes_nohw_compact_block` must permute bits across different words. First we
|
|
280
|
+
// implement `aes_nohw_compact_word` which performs a smaller version of the
|
|
286
281
|
// transformation which stays within a single word.
|
|
287
282
|
//
|
|
288
283
|
// These transformations are generalizations of the output of
|
|
289
284
|
// http://programming.sirrida.de/calcperm.php on smaller inputs.
|
|
290
285
|
#if defined(OPENSSL_64_BIT)
|
|
291
|
-
static
|
|
286
|
+
static uint64_t aes_nohw_compact_word(uint64_t a) {
|
|
292
287
|
// Numbering the 64/2 = 16 4-bit chunks, least to most significant, we swap
|
|
293
288
|
// quartets of those chunks:
|
|
294
289
|
// 0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15 =>
|
|
@@ -305,15 +300,15 @@ static inline uint64_t aes_nohw_compact_word(uint64_t a) {
|
|
|
305
300
|
return a;
|
|
306
301
|
}
|
|
307
302
|
|
|
308
|
-
static
|
|
309
|
-
// Reverse the steps of
|
|
303
|
+
static uint64_t aes_nohw_uncompact_word(uint64_t a) {
|
|
304
|
+
// Reverse the steps of `aes_nohw_uncompact_word`.
|
|
310
305
|
a = aes_nohw_delta_swap(a, UINT64_C(0x00000000ffff0000), 16);
|
|
311
306
|
a = aes_nohw_delta_swap(a, UINT64_C(0x0000ff000000ff00), 8);
|
|
312
307
|
a = aes_nohw_delta_swap(a, UINT64_C(0x00f000f000f000f0), 4);
|
|
313
308
|
return a;
|
|
314
309
|
}
|
|
315
310
|
#else // !OPENSSL_64_BIT
|
|
316
|
-
static
|
|
311
|
+
static uint32_t aes_nohw_compact_word(uint32_t a) {
|
|
317
312
|
// Numbering the 32/2 = 16 pairs of bits, least to most significant, we swap:
|
|
318
313
|
// 0 1 2 3 | 4 5 6 7 | 8 9 10 11 | 12 13 14 15 =>
|
|
319
314
|
// 0 4 2 6 | 1 5 3 7 | 8 12 10 14 | 9 13 11 15
|
|
@@ -328,23 +323,23 @@ static inline uint32_t aes_nohw_compact_word(uint32_t a) {
|
|
|
328
323
|
return a;
|
|
329
324
|
}
|
|
330
325
|
|
|
331
|
-
static
|
|
332
|
-
// Reverse the steps of
|
|
326
|
+
static uint32_t aes_nohw_uncompact_word(uint32_t a) {
|
|
327
|
+
// Reverse the steps of `aes_nohw_uncompact_word`.
|
|
333
328
|
a = aes_nohw_delta_swap(a, 0x0000f0f0, 12);
|
|
334
329
|
a = aes_nohw_delta_swap(a, 0x00cc00cc, 6);
|
|
335
330
|
return a;
|
|
336
331
|
}
|
|
337
332
|
|
|
338
|
-
static
|
|
339
|
-
|
|
333
|
+
static uint32_t aes_nohw_word_from_bytes(uint8_t a0, uint8_t a1, uint8_t a2,
|
|
334
|
+
uint8_t a3) {
|
|
340
335
|
return (uint32_t)a0 | ((uint32_t)a1 << 8) | ((uint32_t)a2 << 16) |
|
|
341
336
|
((uint32_t)a3 << 24);
|
|
342
337
|
}
|
|
343
338
|
#endif // OPENSSL_64_BIT
|
|
344
339
|
#endif // !OPENSSL_SSE2
|
|
345
340
|
|
|
346
|
-
static
|
|
347
|
-
|
|
341
|
+
static void aes_nohw_compact_block(aes_word_t out[AES_NOHW_BLOCK_WORDS],
|
|
342
|
+
const uint8_t in[16]) {
|
|
348
343
|
memcpy(out, in, 16);
|
|
349
344
|
#if defined(OPENSSL_SSE2)
|
|
350
345
|
// No conversions needed.
|
|
@@ -370,7 +365,7 @@ static inline void aes_nohw_compact_block(aes_word_t out[AES_NOHW_BLOCK_WORDS],
|
|
|
370
365
|
#endif
|
|
371
366
|
}
|
|
372
367
|
|
|
373
|
-
static
|
|
368
|
+
static void aes_nohw_uncompact_block(
|
|
374
369
|
uint8_t out[16], const aes_word_t in[AES_NOHW_BLOCK_WORDS]) {
|
|
375
370
|
#if defined(OPENSSL_SSE2)
|
|
376
371
|
memcpy(out, in, 16); // No conversions needed.
|
|
@@ -411,11 +406,11 @@ static inline void aes_nohw_uncompact_block(
|
|
|
411
406
|
}
|
|
412
407
|
|
|
413
408
|
// aes_nohw_swap_bits is a variation on a delta swap. It swaps the bits in
|
|
414
|
-
//
|
|
415
|
-
//
|
|
416
|
-
// is repeated to the full width of
|
|
409
|
+
// `*a & (mask << shift)` with the bits in `*b & mask`. `mask` and
|
|
410
|
+
// `mask << shift` must not overlap. `mask` is specified as a `uint32_t`, but it
|
|
411
|
+
// is repeated to the full width of `aes_word_t`.
|
|
417
412
|
#if defined(OPENSSL_SSE2)
|
|
418
|
-
// This must be a macro because
|
|
413
|
+
// This must be a macro because `_mm_srli_epi32` and `_mm_slli_epi32` require
|
|
419
414
|
// constant shift values.
|
|
420
415
|
#define aes_nohw_swap_bits(/*__m128i* */ a, /*__m128i* */ b, \
|
|
421
416
|
/* uint32_t */ mask, /* const */ shift) \
|
|
@@ -428,8 +423,8 @@ static inline void aes_nohw_uncompact_block(
|
|
|
428
423
|
\
|
|
429
424
|
} while (0)
|
|
430
425
|
#else
|
|
431
|
-
static
|
|
432
|
-
|
|
426
|
+
static void aes_nohw_swap_bits(aes_word_t *a, aes_word_t *b, uint32_t mask,
|
|
427
|
+
aes_word_t shift) {
|
|
433
428
|
#if defined(OPENSSL_64_BIT)
|
|
434
429
|
aes_word_t mask_w = (((uint64_t)mask) << 32) | mask;
|
|
435
430
|
#else
|
|
@@ -442,7 +437,7 @@ static inline void aes_nohw_swap_bits(aes_word_t *a, aes_word_t *b,
|
|
|
442
437
|
}
|
|
443
438
|
#endif // OPENSSL_SSE2
|
|
444
439
|
|
|
445
|
-
// aes_nohw_transpose converts
|
|
440
|
+
// aes_nohw_transpose converts `batch` to and from bitsliced form. It divides
|
|
446
441
|
// the 8 × word_size bits into AES_NOHW_BATCH_SIZE × AES_NOHW_BATCH_SIZE squares
|
|
447
442
|
// and transposes each square.
|
|
448
443
|
static void aes_nohw_transpose(AES_NOHW_BATCH *batch) {
|
|
@@ -469,8 +464,8 @@ static void aes_nohw_transpose(AES_NOHW_BATCH *batch) {
|
|
|
469
464
|
#endif
|
|
470
465
|
}
|
|
471
466
|
|
|
472
|
-
// aes_nohw_to_batch initializes
|
|
473
|
-
//
|
|
467
|
+
// aes_nohw_to_batch initializes `out` with the `num_blocks` blocks from `in`.
|
|
468
|
+
// `num_blocks` must be at most `AES_NOHW_BATCH`.
|
|
474
469
|
static void aes_nohw_to_batch(AES_NOHW_BATCH *out, const uint8_t *in,
|
|
475
470
|
size_t num_blocks) {
|
|
476
471
|
// Don't leave unused blocks uninitialized.
|
|
@@ -485,8 +480,8 @@ static void aes_nohw_to_batch(AES_NOHW_BATCH *out, const uint8_t *in,
|
|
|
485
480
|
aes_nohw_transpose(out);
|
|
486
481
|
}
|
|
487
482
|
|
|
488
|
-
// aes_nohw_to_batch writes the first
|
|
489
|
-
//
|
|
483
|
+
// aes_nohw_to_batch writes the first `num_blocks` blocks in `batch` to `out`.
|
|
484
|
+
// `num_blocks` must be at most `AES_NOHW_BATCH`.
|
|
490
485
|
static void aes_nohw_from_batch(uint8_t *out, size_t num_blocks,
|
|
491
486
|
const AES_NOHW_BATCH *batch) {
|
|
492
487
|
AES_NOHW_BATCH copy = *batch;
|
|
@@ -701,8 +696,8 @@ static void aes_nohw_inv_sub_bytes(AES_NOHW_BATCH *batch) {
|
|
|
701
696
|
aes_nohw_sub_bytes_inv_affine(batch);
|
|
702
697
|
}
|
|
703
698
|
|
|
704
|
-
// aes_nohw_rotate_cols_right returns
|
|
705
|
-
// to the right by
|
|
699
|
+
// aes_nohw_rotate_cols_right returns `v` with the columns in each row rotated
|
|
700
|
+
// to the right by `n`. This is a macro because `aes_nohw_shift_*` require
|
|
706
701
|
// constant shift counts in the SSE2 implementation.
|
|
707
702
|
#define aes_nohw_rotate_cols_right(/* aes_word_t */ v, /* const */ n) \
|
|
708
703
|
(aes_nohw_or(aes_nohw_shift_right((v), (n)*4), \
|
|
@@ -734,9 +729,9 @@ static void aes_nohw_inv_shift_rows(AES_NOHW_BATCH *batch) {
|
|
|
734
729
|
}
|
|
735
730
|
}
|
|
736
731
|
|
|
737
|
-
// aes_nohw_rotate_rows_down returns
|
|
732
|
+
// aes_nohw_rotate_rows_down returns `v` with the rows in each column rotated
|
|
738
733
|
// down by one.
|
|
739
|
-
static
|
|
734
|
+
static aes_word_t aes_nohw_rotate_rows_down(aes_word_t v) {
|
|
740
735
|
#if defined(OPENSSL_SSE2)
|
|
741
736
|
return _mm_or_si128(_mm_srli_epi32(v, 8), _mm_slli_epi32(v, 24));
|
|
742
737
|
#elif defined(OPENSSL_64_BIT)
|
|
@@ -747,9 +742,9 @@ static inline aes_word_t aes_nohw_rotate_rows_down(aes_word_t v) {
|
|
|
747
742
|
#endif
|
|
748
743
|
}
|
|
749
744
|
|
|
750
|
-
// aes_nohw_rotate_rows_twice returns
|
|
745
|
+
// aes_nohw_rotate_rows_twice returns `v` with the rows in each column rotated
|
|
751
746
|
// by two.
|
|
752
|
-
static
|
|
747
|
+
static aes_word_t aes_nohw_rotate_rows_twice(aes_word_t v) {
|
|
753
748
|
#if defined(OPENSSL_SSE2)
|
|
754
749
|
return _mm_or_si128(_mm_srli_epi32(v, 16), _mm_slli_epi32(v, 16));
|
|
755
750
|
#elif defined(OPENSSL_64_BIT)
|
|
@@ -915,9 +910,9 @@ static void aes_nohw_expand_round_keys(AES_NOHW_SCHEDULE *out,
|
|
|
915
910
|
static const uint8_t aes_nohw_rcon[10] = {0x01, 0x02, 0x04, 0x08, 0x10,
|
|
916
911
|
0x20, 0x40, 0x80, 0x1b, 0x36};
|
|
917
912
|
|
|
918
|
-
// aes_nohw_rcon_slice returns the
|
|
919
|
-
//
|
|
920
|
-
static
|
|
913
|
+
// aes_nohw_rcon_slice returns the `i`th group of `AES_NOHW_BATCH_SIZE` bits in
|
|
914
|
+
// `rcon`, stored in a `aes_word_t`.
|
|
915
|
+
static aes_word_t aes_nohw_rcon_slice(uint8_t rcon, size_t i) {
|
|
921
916
|
rcon = (rcon >> (i * AES_NOHW_BATCH_SIZE)) & ((1 << AES_NOHW_BATCH_SIZE) - 1);
|
|
922
917
|
#if defined(OPENSSL_SSE2)
|
|
923
918
|
return _mm_set_epi32(0, 0, 0, rcon);
|
|
@@ -949,7 +944,7 @@ static void aes_nohw_setup_key_128(AES_KEY *key, const uint8_t in[16]) {
|
|
|
949
944
|
aes_nohw_sub_block(sub, block);
|
|
950
945
|
uint8_t rcon = aes_nohw_rcon[i - 1];
|
|
951
946
|
for (size_t j = 0; j < AES_NOHW_BLOCK_WORDS; j++) {
|
|
952
|
-
// Incorporate
|
|
947
|
+
// Incorporate `rcon` and the transformed word into the first word.
|
|
953
948
|
block[j] = aes_nohw_xor(block[j], aes_nohw_rcon_slice(rcon, j));
|
|
954
949
|
block[j] = aes_nohw_xor(
|
|
955
950
|
block[j],
|
|
@@ -976,9 +971,9 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
976
971
|
// We maintain a sliding window of two blocks, filled to 1.5 blocks at a time.
|
|
977
972
|
// We loop below every three blocks or two key schedule iterations.
|
|
978
973
|
//
|
|
979
|
-
// On entry to the loop,
|
|
980
|
-
// previous key schedule iteration.
|
|
981
|
-
//
|
|
974
|
+
// On entry to the loop, `block1` and the first half of `block2` contain the
|
|
975
|
+
// previous key schedule iteration. `block1` has been written to `key`, but
|
|
976
|
+
// `block2` has not as it is incomplete.
|
|
982
977
|
aes_nohw_compact_block(block1, in);
|
|
983
978
|
memcpy(key->rd_key, block1, 16);
|
|
984
979
|
|
|
@@ -992,17 +987,17 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
992
987
|
uint8_t rcon = aes_nohw_rcon[2 * i];
|
|
993
988
|
for (size_t j = 0; j < AES_NOHW_BLOCK_WORDS; j++) {
|
|
994
989
|
// Compute the first two words of the next key schedule iteration, which
|
|
995
|
-
// go in the second half of
|
|
996
|
-
// iteration are in the first half of
|
|
990
|
+
// go in the second half of `block2`. The first two words of the previous
|
|
991
|
+
// iteration are in the first half of `block1`. Apply `rcon` here too
|
|
997
992
|
// because the shifts match.
|
|
998
993
|
block2[j] = aes_nohw_or(
|
|
999
994
|
block2[j],
|
|
1000
995
|
aes_nohw_shift_left(
|
|
1001
996
|
aes_nohw_xor(block1[j], aes_nohw_rcon_slice(rcon, j)), 8));
|
|
1002
997
|
// Incorporate the transformed word and propagate. Note the last word of
|
|
1003
|
-
// the previous iteration corresponds to the second word of
|
|
998
|
+
// the previous iteration corresponds to the second word of `copy`. This
|
|
1004
999
|
// is incorporated into the first word of the next iteration, or the third
|
|
1005
|
-
// word of
|
|
1000
|
+
// word of `block2`.
|
|
1006
1001
|
block2[j] = aes_nohw_xor(
|
|
1007
1002
|
block2[j], aes_nohw_and(aes_nohw_shift_left(
|
|
1008
1003
|
aes_nohw_rotate_rows_down(sub[j]), 4),
|
|
@@ -1011,12 +1006,12 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
1011
1006
|
block2[j],
|
|
1012
1007
|
aes_nohw_and(aes_nohw_shift_left(block2[j], 4), AES_NOHW_COL3_MASK));
|
|
1013
1008
|
|
|
1014
|
-
// Compute the remaining four words, which fill
|
|
1009
|
+
// Compute the remaining four words, which fill `block1`. Begin by moving
|
|
1015
1010
|
// the corresponding words of the previous iteration: the second half of
|
|
1016
|
-
//
|
|
1011
|
+
// `block1` and the first half of `block2`.
|
|
1017
1012
|
block1[j] = aes_nohw_shift_right(block1[j], 8);
|
|
1018
1013
|
block1[j] = aes_nohw_or(block1[j], aes_nohw_shift_left(block2[j], 8));
|
|
1019
|
-
// Incorporate the second word, computed previously in
|
|
1014
|
+
// Incorporate the second word, computed previously in `block2`, and
|
|
1020
1015
|
// propagate.
|
|
1021
1016
|
block1[j] = aes_nohw_xor(block1[j], aes_nohw_shift_right(block2[j], 12));
|
|
1022
1017
|
aes_word_t v = block1[j];
|
|
@@ -1025,7 +1020,7 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
1025
1020
|
block1[j] = aes_nohw_xor(block1[j], aes_nohw_shift_left(v, 12));
|
|
1026
1021
|
}
|
|
1027
1022
|
|
|
1028
|
-
// This completes two round keys. Note half of
|
|
1023
|
+
// This completes two round keys. Note half of `block2` was computed in the
|
|
1029
1024
|
// previous loop iteration but was not yet output.
|
|
1030
1025
|
memcpy(key->rd_key + 4 * (3 * i + 1), block2, 16);
|
|
1031
1026
|
memcpy(key->rd_key + 4 * (3 * i + 2), block1, 16);
|
|
@@ -1034,12 +1029,12 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
1034
1029
|
rcon = aes_nohw_rcon[2 * i + 1];
|
|
1035
1030
|
for (size_t j = 0; j < AES_NOHW_BLOCK_WORDS; j++) {
|
|
1036
1031
|
// Compute the first four words of the next key schedule iteration in
|
|
1037
|
-
//
|
|
1038
|
-
// iteration: the second half of
|
|
1032
|
+
// `block2`. Begin by moving the corresponding words of the previous
|
|
1033
|
+
// iteration: the second half of `block2` and the first half of `block1`.
|
|
1039
1034
|
block2[j] = aes_nohw_shift_right(block2[j], 8);
|
|
1040
1035
|
block2[j] = aes_nohw_or(block2[j], aes_nohw_shift_left(block1[j], 8));
|
|
1041
1036
|
// Incorporate rcon and the transformed word. Note the last word of the
|
|
1042
|
-
// previous iteration corresponds to the last word of
|
|
1037
|
+
// previous iteration corresponds to the last word of `copy`.
|
|
1043
1038
|
block2[j] = aes_nohw_xor(block2[j], aes_nohw_rcon_slice(rcon, j));
|
|
1044
1039
|
block2[j] = aes_nohw_xor(
|
|
1045
1040
|
block2[j],
|
|
@@ -1050,9 +1045,9 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
1050
1045
|
block2[j] = aes_nohw_xor(block2[j], aes_nohw_shift_left(v, 8));
|
|
1051
1046
|
block2[j] = aes_nohw_xor(block2[j], aes_nohw_shift_left(v, 12));
|
|
1052
1047
|
|
|
1053
|
-
// Compute the last two words, which go in the first half of
|
|
1048
|
+
// Compute the last two words, which go in the first half of `block1`. The
|
|
1054
1049
|
// last two words of the previous iteration are in the second half of
|
|
1055
|
-
//
|
|
1050
|
+
// `block1`.
|
|
1056
1051
|
block1[j] = aes_nohw_shift_right(block1[j], 8);
|
|
1057
1052
|
// Propagate blocks and mask off the excess.
|
|
1058
1053
|
block1[j] = aes_nohw_xor(block1[j], aes_nohw_shift_right(block2[j], 12));
|
|
@@ -1060,7 +1055,7 @@ static void aes_nohw_setup_key_192(AES_KEY *key, const uint8_t in[24]) {
|
|
|
1060
1055
|
block1[j] = aes_nohw_and(block1[j], AES_NOHW_COL01_MASK);
|
|
1061
1056
|
}
|
|
1062
1057
|
|
|
1063
|
-
//
|
|
1058
|
+
// `block2` has a complete round key. `block1` will be completed in the next
|
|
1064
1059
|
// iteration.
|
|
1065
1060
|
memcpy(key->rd_key + 4 * (3 * i + 3), block2, 16);
|
|
1066
1061
|
|
|
@@ -1087,7 +1082,7 @@ static void aes_nohw_setup_key_256(AES_KEY *key, const uint8_t in[32]) {
|
|
|
1087
1082
|
aes_nohw_sub_block(sub, block2);
|
|
1088
1083
|
uint8_t rcon = aes_nohw_rcon[i / 2 - 1];
|
|
1089
1084
|
for (size_t j = 0; j < AES_NOHW_BLOCK_WORDS; j++) {
|
|
1090
|
-
// Incorporate
|
|
1085
|
+
// Incorporate `rcon` and the transformed word into the first word.
|
|
1091
1086
|
block1[j] = aes_nohw_xor(block1[j], aes_nohw_rcon_slice(rcon, j));
|
|
1092
1087
|
block1[j] = aes_nohw_xor(
|
|
1093
1088
|
block1[j],
|
|
@@ -1121,8 +1116,8 @@ static void aes_nohw_setup_key_256(AES_KEY *key, const uint8_t in[32]) {
|
|
|
1121
1116
|
|
|
1122
1117
|
// External API.
|
|
1123
1118
|
|
|
1124
|
-
int aes_nohw_set_encrypt_key(const uint8_t *key, unsigned bits,
|
|
1125
|
-
|
|
1119
|
+
int bssl::aes_nohw_set_encrypt_key(const uint8_t *key, unsigned bits,
|
|
1120
|
+
AES_KEY *aeskey) {
|
|
1126
1121
|
switch (bits) {
|
|
1127
1122
|
case 128:
|
|
1128
1123
|
aes_nohw_setup_key_128(aeskey, key);
|
|
@@ -1137,12 +1132,13 @@ int aes_nohw_set_encrypt_key(const uint8_t *key, unsigned bits,
|
|
|
1137
1132
|
return 1;
|
|
1138
1133
|
}
|
|
1139
1134
|
|
|
1140
|
-
int aes_nohw_set_decrypt_key(const uint8_t *key, unsigned bits,
|
|
1141
|
-
|
|
1135
|
+
int bssl::aes_nohw_set_decrypt_key(const uint8_t *key, unsigned bits,
|
|
1136
|
+
AES_KEY *aeskey) {
|
|
1142
1137
|
return aes_nohw_set_encrypt_key(key, bits, aeskey);
|
|
1143
1138
|
}
|
|
1144
1139
|
|
|
1145
|
-
void aes_nohw_encrypt(const uint8_t *in, uint8_t *out,
|
|
1140
|
+
void bssl::aes_nohw_encrypt(const uint8_t *in, uint8_t *out,
|
|
1141
|
+
const AES_KEY *key) {
|
|
1146
1142
|
AES_NOHW_SCHEDULE sched;
|
|
1147
1143
|
aes_nohw_expand_round_keys(&sched, key);
|
|
1148
1144
|
AES_NOHW_BATCH batch;
|
|
@@ -1151,7 +1147,8 @@ void aes_nohw_encrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
|
|
|
1151
1147
|
aes_nohw_from_batch(out, /*num_blocks=*/1, &batch);
|
|
1152
1148
|
}
|
|
1153
1149
|
|
|
1154
|
-
void aes_nohw_decrypt(const uint8_t *in, uint8_t *out,
|
|
1150
|
+
void bssl::aes_nohw_decrypt(const uint8_t *in, uint8_t *out,
|
|
1151
|
+
const AES_KEY *key) {
|
|
1155
1152
|
AES_NOHW_SCHEDULE sched;
|
|
1156
1153
|
aes_nohw_expand_round_keys(&sched, key);
|
|
1157
1154
|
AES_NOHW_BATCH batch;
|
|
@@ -1160,8 +1157,8 @@ void aes_nohw_decrypt(const uint8_t *in, uint8_t *out, const AES_KEY *key) {
|
|
|
1160
1157
|
aes_nohw_from_batch(out, /*num_blocks=*/1, &batch);
|
|
1161
1158
|
}
|
|
1162
1159
|
|
|
1163
|
-
static
|
|
1164
|
-
|
|
1160
|
+
static void aes_nohw_xor_block(uint8_t out[16], const uint8_t a[16],
|
|
1161
|
+
const uint8_t b[16]) {
|
|
1165
1162
|
for (size_t i = 0; i < 16; i += sizeof(aes_word_t)) {
|
|
1166
1163
|
aes_word_t x, y;
|
|
1167
1164
|
memcpy(&x, a + i, sizeof(aes_word_t));
|
|
@@ -1171,9 +1168,9 @@ static inline void aes_nohw_xor_block(uint8_t out[16], const uint8_t a[16],
|
|
|
1171
1168
|
}
|
|
1172
1169
|
}
|
|
1173
1170
|
|
|
1174
|
-
void aes_nohw_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out,
|
|
1175
|
-
|
|
1176
|
-
|
|
1171
|
+
void bssl::aes_nohw_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out,
|
|
1172
|
+
size_t blocks, const AES_KEY *key,
|
|
1173
|
+
const uint8_t ivec[16]) {
|
|
1177
1174
|
if (blocks == 0) {
|
|
1178
1175
|
return;
|
|
1179
1176
|
}
|
|
@@ -1181,7 +1178,7 @@ void aes_nohw_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out,
|
|
|
1181
1178
|
AES_NOHW_SCHEDULE sched;
|
|
1182
1179
|
aes_nohw_expand_round_keys(&sched, key);
|
|
1183
1180
|
|
|
1184
|
-
// Make
|
|
1181
|
+
// Make `AES_NOHW_BATCH_SIZE` copies of `ivec`.
|
|
1185
1182
|
alignas(AES_NOHW_WORD_SIZE) uint8_t ivs[AES_NOHW_BATCH_SIZE * 16];
|
|
1186
1183
|
alignas(AES_NOHW_WORD_SIZE) uint8_t enc_ivs[AES_NOHW_BATCH_SIZE * 16];
|
|
1187
1184
|
for (size_t i = 0; i < AES_NOHW_BATCH_SIZE; i++) {
|
|
@@ -1216,8 +1213,9 @@ void aes_nohw_ctr32_encrypt_blocks(const uint8_t *in, uint8_t *out,
|
|
|
1216
1213
|
}
|
|
1217
1214
|
}
|
|
1218
1215
|
|
|
1219
|
-
void aes_nohw_cbc_encrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
1220
|
-
|
|
1216
|
+
void bssl::aes_nohw_cbc_encrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
1217
|
+
const AES_KEY *key, uint8_t *ivec,
|
|
1218
|
+
const int enc) {
|
|
1221
1219
|
assert(len % 16 == 0);
|
|
1222
1220
|
size_t blocks = len / 16;
|
|
1223
1221
|
if (blocks == 0) {
|
|
@@ -19,16 +19,18 @@
|
|
|
19
19
|
#include "../../internal.h"
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
22
|
+
using namespace bssl;
|
|
23
|
+
|
|
24
|
+
void bssl::CRYPTO_cbc128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
25
|
+
const AES_KEY *key, uint8_t ivec[16],
|
|
26
|
+
block128_f block) {
|
|
27
|
+
assert(key != nullptr && ivec != nullptr);
|
|
26
28
|
if (len == 0) {
|
|
27
|
-
// Avoid
|
|
29
|
+
// Avoid `ivec` == `iv` in the `memcpy` below, which is not legal in C.
|
|
28
30
|
return;
|
|
29
31
|
}
|
|
30
32
|
|
|
31
|
-
assert(in !=
|
|
33
|
+
assert(in != nullptr && out != nullptr);
|
|
32
34
|
size_t n;
|
|
33
35
|
const uint8_t *iv = ivec;
|
|
34
36
|
while (len >= 16) {
|
|
@@ -60,26 +62,26 @@ void CRYPTO_cbc128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
|
60
62
|
OPENSSL_memcpy(ivec, iv, 16);
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
assert(key !=
|
|
65
|
+
void bssl::CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
66
|
+
const AES_KEY *key, uint8_t ivec[16],
|
|
67
|
+
block128_f block) {
|
|
68
|
+
assert(key != nullptr && ivec != nullptr);
|
|
67
69
|
if (len == 0) {
|
|
68
|
-
// Avoid
|
|
70
|
+
// Avoid `ivec` == `iv` in the `memcpy` below, which is not legal in C.
|
|
69
71
|
return;
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
assert(in !=
|
|
74
|
+
assert(in != nullptr && out != nullptr);
|
|
73
75
|
|
|
74
76
|
const uintptr_t inptr = (uintptr_t) in;
|
|
75
77
|
const uintptr_t outptr = (uintptr_t) out;
|
|
76
|
-
// If
|
|
78
|
+
// If `in` and `out` alias, `in` must be ahead.
|
|
77
79
|
assert(inptr >= outptr || inptr + len <= outptr);
|
|
78
80
|
|
|
79
81
|
size_t n;
|
|
80
82
|
alignas(16) uint8_t tmp[16];
|
|
81
83
|
if ((inptr >= 32 && outptr <= inptr - 32) || inptr < outptr) {
|
|
82
|
-
// If
|
|
84
|
+
// If `out` is at least two blocks behind `in` or completely disjoint, there
|
|
83
85
|
// is no need to decrypt to a temporary block.
|
|
84
86
|
const uint8_t *iv = ivec;
|
|
85
87
|
while (len >= 16) {
|