grpc 1.53.1 → 1.54.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +78 -66
- data/include/grpc/event_engine/event_engine.h +30 -14
- data/include/grpc/grpc_security.h +4 -0
- data/include/grpc/support/port_platform.h +4 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +11 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +6 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +2 -11
- data/src/core/ext/filters/client_channel/backup_poller.h +0 -3
- data/src/core/ext/filters/client_channel/client_channel.cc +848 -813
- data/src/core/ext/filters/client_channel/client_channel.h +131 -173
- data/src/core/ext/filters/client_channel/client_channel_internal.h +114 -0
- data/src/core/ext/filters/client_channel/config_selector.h +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +6 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +17 -18
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +134 -151
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +14 -10
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +68 -30
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -3
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +8 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +30 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +20 -26
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +31 -179
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -2
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +95 -102
- data/src/core/ext/filters/client_channel/subchannel.cc +2 -4
- data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +26 -27
- data/src/core/ext/filters/client_channel/subchannel_stream_client.h +8 -5
- data/src/core/ext/filters/http/client/http_client_filter.cc +3 -3
- data/src/core/ext/filters/http/http_filters_plugin.cc +1 -12
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +27 -11
- data/src/core/ext/filters/message_size/message_size_filter.cc +141 -224
- data/src/core/ext/filters/message_size/message_size_filter.h +48 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +7 -6
- data/src/core/ext/gcp/metadata_query.cc +142 -0
- data/src/core/ext/gcp/metadata_query.h +82 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +70 -55
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +8 -12
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -5
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +116 -58
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +5 -2
- data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -1
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +4 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +222 -118
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +113 -295
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +0 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +277 -451
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +12 -14
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +1 -9
- data/src/core/ext/transport/chttp2/transport/internal.h +16 -3
- data/src/core/ext/transport/chttp2/transport/parsing.cc +3 -2
- data/src/core/ext/transport/chttp2/transport/writing.cc +10 -5
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -14
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +23 -5
- data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +94 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +23 -2
- data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +6 -3
- data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +22 -0
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +24 -6
- data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +111 -12
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +9 -7
- data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +27 -9
- data/src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c +0 -1
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +11 -7
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +56 -12
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.h +24 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c +13 -2
- data/src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.h +49 -0
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +24 -9
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +66 -12
- data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +191 -187
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +139 -136
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +31 -15
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +15 -0
- data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +54 -45
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +135 -119
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +100 -97
- data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c +15 -18
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +272 -264
- data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +117 -117
- data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +5 -5
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c +12 -9
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.h +5 -0
- data/src/core/ext/xds/xds_channel_stack_modifier.cc +1 -2
- data/src/core/ext/xds/xds_client_stats.cc +29 -15
- data/src/core/ext/xds/xds_client_stats.h +24 -20
- data/src/core/ext/xds/xds_endpoint.cc +5 -2
- data/src/core/ext/xds/xds_endpoint.h +9 -1
- data/src/core/ext/xds/xds_http_rbac_filter.cc +1 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +13 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -1
- data/src/core/lib/channel/call_finalization.h +1 -1
- data/src/core/lib/channel/call_tracer.cc +51 -0
- data/src/core/lib/channel/call_tracer.h +101 -38
- data/src/core/lib/channel/connected_channel.cc +483 -1050
- data/src/core/lib/channel/context.h +8 -1
- data/src/core/lib/channel/promise_based_filter.cc +106 -42
- data/src/core/lib/channel/promise_based_filter.h +27 -13
- data/src/core/lib/channel/server_call_tracer_filter.cc +110 -0
- data/src/core/lib/config/config_vars.cc +151 -0
- data/src/core/lib/config/config_vars.h +127 -0
- data/src/core/lib/config/config_vars_non_generated.cc +51 -0
- data/src/core/lib/config/load_config.cc +66 -0
- data/src/core/lib/config/load_config.h +49 -0
- data/src/core/lib/debug/trace.cc +5 -6
- data/src/core/lib/debug/trace.h +0 -5
- data/src/core/lib/event_engine/event_engine.cc +37 -2
- data/src/core/lib/event_engine/handle_containers.h +7 -22
- data/src/core/lib/event_engine/memory_allocator_factory.h +47 -0
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +0 -4
- data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +3 -9
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +48 -15
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +8 -8
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +6 -5
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +6 -3
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +27 -18
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +0 -3
- data/src/core/lib/event_engine/resolved_address.cc +2 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +0 -1
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +129 -82
- data/src/core/lib/event_engine/windows/windows_endpoint.h +21 -5
- data/src/core/lib/event_engine/windows/windows_engine.cc +39 -18
- data/src/core/lib/event_engine/windows/windows_engine.h +2 -1
- data/src/core/lib/event_engine/windows/windows_listener.cc +370 -0
- data/src/core/lib/event_engine/windows/windows_listener.h +155 -0
- data/src/core/lib/experiments/config.cc +3 -10
- data/src/core/lib/experiments/experiments.cc +7 -0
- data/src/core/lib/experiments/experiments.h +9 -1
- data/src/core/lib/gpr/log.cc +15 -28
- data/src/core/lib/gprpp/fork.cc +8 -14
- data/src/core/lib/gprpp/orphanable.h +4 -3
- data/src/core/lib/gprpp/per_cpu.h +9 -3
- data/src/core/lib/gprpp/{thd_posix.cc → posix/thd.cc} +49 -37
- data/src/core/lib/gprpp/ref_counted.h +33 -34
- data/src/core/lib/gprpp/thd.h +16 -0
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/gprpp/time.h +4 -4
- data/src/core/lib/gprpp/{thd_windows.cc → windows/thd.cc} +2 -2
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +4 -2
- data/src/core/lib/iomgr/ev_posix.cc +13 -53
- data/src/core/lib/iomgr/ev_posix.h +0 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +103 -76
- data/src/core/lib/iomgr/iomgr.cc +4 -8
- data/src/core/lib/iomgr/iomgr_windows.cc +8 -2
- data/src/core/lib/iomgr/pollset_set_windows.cc +9 -9
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +16 -3
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -2
- data/src/core/lib/iomgr/tcp_posix.cc +0 -1
- data/src/core/lib/iomgr/tcp_server_posix.cc +5 -16
- data/src/core/lib/iomgr/tcp_server_windows.cc +176 -9
- data/src/core/lib/iomgr/tcp_windows.cc +12 -8
- data/src/core/lib/load_balancing/lb_policy.cc +9 -13
- data/src/core/lib/load_balancing/lb_policy.h +4 -2
- data/src/core/lib/promise/activity.cc +22 -6
- data/src/core/lib/promise/activity.h +61 -24
- data/src/core/lib/promise/cancel_callback.h +77 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -1
- data/src/core/lib/promise/detail/promise_factory.h +4 -0
- data/src/core/lib/promise/for_each.h +176 -0
- data/src/core/lib/promise/if.h +9 -0
- data/src/core/lib/promise/interceptor_list.h +23 -2
- data/src/core/lib/promise/latch.h +89 -3
- data/src/core/lib/promise/loop.h +13 -9
- data/src/core/lib/promise/map.h +7 -0
- data/src/core/lib/promise/party.cc +286 -0
- data/src/core/lib/promise/party.h +499 -0
- data/src/core/lib/promise/pipe.h +197 -57
- data/src/core/lib/promise/poll.h +48 -0
- data/src/core/lib/promise/promise.h +2 -2
- data/src/core/lib/resource_quota/arena.cc +19 -3
- data/src/core/lib/resource_quota/arena.h +119 -5
- data/src/core/lib/resource_quota/memory_quota.cc +1 -1
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +12 -35
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +0 -59
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +10 -5
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +13 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +2 -0
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +5 -9
- data/src/core/lib/security/security_connector/ssl_utils.cc +11 -25
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +12 -0
- data/src/core/lib/security/transport/secure_endpoint.cc +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +20 -2
- data/src/core/lib/slice/slice.cc +1 -1
- data/src/core/lib/surface/builtins.cc +2 -0
- data/src/core/lib/surface/call.cc +926 -1024
- data/src/core/lib/surface/call.h +10 -0
- data/src/core/lib/surface/lame_client.cc +1 -0
- data/src/core/lib/surface/validate_metadata.cc +42 -43
- data/src/core/lib/surface/validate_metadata.h +0 -9
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +179 -0
- data/src/core/lib/transport/batch_builder.h +468 -0
- data/src/core/lib/transport/bdp_estimator.cc +7 -7
- data/src/core/lib/transport/bdp_estimator.h +10 -6
- data/src/core/lib/transport/custom_metadata.h +30 -0
- data/src/core/lib/transport/metadata_batch.cc +5 -2
- data/src/core/lib/transport/metadata_batch.h +17 -113
- data/src/core/lib/transport/parsed_metadata.h +6 -16
- data/src/core/lib/transport/timeout_encoding.cc +6 -1
- data/src/core/lib/transport/transport.cc +30 -2
- data/src/core/lib/transport/transport.h +70 -14
- data/src/core/lib/transport/transport_impl.h +7 -0
- data/src/core/lib/transport/transport_op_string.cc +52 -42
- data/src/core/plugin_registry/grpc_plugin_registry.cc +2 -2
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +1 -0
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +21 -4
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +5 -0
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +4 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +1 -1
- data/third_party/abseil-cpp/absl/flags/commandlineflag.cc +34 -0
- data/third_party/abseil-cpp/absl/flags/commandlineflag.h +200 -0
- data/third_party/abseil-cpp/absl/flags/config.h +68 -0
- data/third_party/abseil-cpp/absl/flags/declare.h +73 -0
- data/third_party/abseil-cpp/absl/flags/flag.cc +38 -0
- data/third_party/abseil-cpp/absl/flags/flag.h +310 -0
- data/{src/core/lib/gprpp/global_config_custom.h → third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc} +11 -14
- data/third_party/abseil-cpp/absl/flags/internal/commandlineflag.h +68 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.cc +615 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag.h +800 -0
- data/third_party/abseil-cpp/absl/flags/internal/flag_msvc.inc +116 -0
- data/third_party/abseil-cpp/absl/flags/internal/path_util.h +62 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc +65 -0
- data/third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.h +61 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.cc +60 -0
- data/third_party/abseil-cpp/absl/flags/internal/program_name.h +50 -0
- data/third_party/abseil-cpp/absl/flags/internal/registry.h +97 -0
- data/third_party/abseil-cpp/absl/flags/internal/sequence_lock.h +187 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.cc +241 -0
- data/third_party/abseil-cpp/absl/flags/marshalling.h +356 -0
- data/third_party/abseil-cpp/absl/flags/reflection.cc +354 -0
- data/third_party/abseil-cpp/absl/flags/reflection.h +90 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.cc +165 -0
- data/third_party/abseil-cpp/absl/flags/usage_config.h +135 -0
- data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +12 -8
- data/third_party/boringssl-with-bazel/err_data.c +728 -712
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +177 -177
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +28 -55
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c +21 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c +20 -23
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c +66 -185
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c +18 -21
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +356 -311
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +174 -194
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +146 -210
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c +6 -9
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c +346 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +110 -131
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +130 -116
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +93 -60
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +93 -181
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +242 -305
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c +41 -18
- data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +30 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +36 -33
- data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +133 -88
- data/third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c +230 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +791 -791
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +526 -526
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +114 -135
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c +201 -207
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c +21 -26
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c +55 -68
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +11 -7
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +15 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +1 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/printf.c +0 -13
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +9 -5
- data/third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c +10 -23
- data/third_party/boringssl-with-bazel/src/crypto/buf/buf.c +2 -6
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c +29 -28
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c +161 -201
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c +254 -39
- data/third_party/boringssl-with-bazel/src/crypto/bytestring/internal.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c +37 -75
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c +8 -10
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/cipher → cipher_extra}/e_des.c +100 -78
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -11
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +6 -10
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +74 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-fuchsia.c → cpu_aarch64_fuchsia.c} +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-linux.c → cpu_aarch64_linux.c} +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-aarch64-win.c → cpu_aarch64_win.c} +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm.c → cpu_arm.c} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.c → cpu_arm_linux.c} +11 -90
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-arm-linux.h → cpu_arm_linux.h} +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/{cpu-intel.c → cpu_intel.c} +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/crypto.c +25 -20
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +16 -27
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +17 -32
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/des.c +232 -232
- data/third_party/boringssl-with-bazel/src/crypto/{fipsmodule/des → des}/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c +232 -29
- data/third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +39 -16
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +37 -7
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +11 -36
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +214 -99
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +21 -5
- data/third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +83 -60
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +46 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c +25 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/internal.h +43 -9
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c +75 -44
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +19 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +96 -45
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c +26 -23
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c +233 -0
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c +42 -25
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c +35 -47
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +135 -244
- data/third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/sign.c +15 -10
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +29 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +13 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/internal.h +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/key_wrap.c +13 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +9 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +35 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bn.c +16 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/bytes.c +88 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/cmp.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/ctx.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +99 -113
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd_extra.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/generic.c +112 -168
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +86 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +11 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +4 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/random.c +13 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +19 -108
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.h +19 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/shift.c +15 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/sqrt.c +22 -21
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/aead.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +79 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +102 -99
- data/third_party/boringssl-with-bazel/src/crypto/{cipher_extra → fipsmodule/cipher}/e_aesccm.c +52 -46
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/internal.h +39 -0
- data/third_party/boringssl-with-bazel/src/crypto/{cmac → fipsmodule/cmac}/cmac.c +55 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/check.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +21 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +56 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +5 -3
- data/third_party/boringssl-with-bazel/src/crypto/{evp → fipsmodule/digestsign}/digestsign.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +25 -25
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +91 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +34 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +54 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +44 -60
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64-table.h → p256-nistz-table.h} +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.c → p256-nistz.c} +60 -53
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/{p256-x86_64.h → p256-nistz.h} +5 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +48 -36
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +2 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +2 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +42 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hmac/hmac.c +52 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +9 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +71 -43
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +14 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/ctrdrbg.c +31 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +16 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +3 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +9 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +73 -59
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -45
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +22 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +63 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +107 -62
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +58 -31
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +41 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +523 -422
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/internal.h +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/service_indicator/service_indicator.c +334 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +3 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +12 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +14 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +19 -6
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +32 -14
- data/third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c +65 -29
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +373 -18
- data/third_party/boringssl-with-bazel/src/crypto/kyber/internal.h +61 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c +205 -0
- data/third_party/boringssl-with-bazel/src/crypto/lhash/internal.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +220 -13
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -7
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +13 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c +81 -90
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c +150 -245
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +629 -613
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c +17 -17
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c +142 -149
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c +99 -131
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +0 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -66
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c +31 -38
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c +18 -31
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/pool/pool.c +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +129 -5
- data/third_party/boringssl-with-bazel/src/crypto/refcount_c11.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/refcount_lock.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c +8 -11
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +61 -27
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +66 -34
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +190 -77
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +81 -284
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +109 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c +22 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +54 -55
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c +32 -34
- data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +32 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +465 -704
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +284 -331
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_file.c +183 -178
- data/third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +67 -50
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +153 -150
- data/third_party/boringssl-with-bazel/src/crypto/x509/policy.c +786 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c +95 -102
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c +72 -57
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +12 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +227 -252
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +52 -47
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +230 -224
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +161 -327
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c +37 -33
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c +14 -31
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c +55 -85
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +534 -618
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c +129 -122
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +116 -182
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +132 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +181 -202
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c +64 -79
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +175 -160
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1865 -2050
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +433 -462
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +156 -163
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +267 -263
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +40 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +59 -63
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +114 -144
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +25 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +326 -415
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c +8 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_info.c +30 -28
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +354 -370
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c +37 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +116 -119
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +36 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c +10 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +419 -261
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +113 -105
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/ext_dat.h +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +78 -170
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c +126 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c +3 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +465 -469
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c +56 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c +46 -49
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +309 -346
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +341 -365
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c +429 -393
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c +29 -24
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c +65 -59
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c +125 -121
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c +43 -42
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +122 -125
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c +50 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +247 -253
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c +386 -389
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c +45 -32
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c +57 -54
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c +63 -67
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +143 -136
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +664 -707
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +83 -75
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1062 -1146
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +8 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +28 -48
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +211 -187
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1t.h +26 -78
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +19 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +49 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +99 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +49 -60
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +2 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/cpu.h +16 -200
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +34 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ctrdrbg.h +82 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +32 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +48 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +37 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/err.h +33 -5
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +22 -30
- data/third_party/boringssl-with-bazel/src/include/openssl/ex_data.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/hmac.h +7 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +41 -16
- data/third_party/boringssl-with-bazel/src/include/openssl/kdf.h +91 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/mem.h +74 -8
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +13 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +1 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +11 -15
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +12 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +7 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/service_indicator.h +96 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +13 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -75
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl3.h +1 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +384 -286
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +5 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/time.h +41 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +18 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +49 -23
- data/third_party/boringssl-with-bazel/src/include/openssl/type_check.h +0 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +1592 -1074
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +202 -205
- data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +6 -13
- data/third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc +17 -18
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +4 -5
- data/third_party/boringssl-with-bazel/src/ssl/dtls_record.cc +25 -33
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +34 -20
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +65 -34
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +198 -54
- data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +5 -5
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +32 -28
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +76 -44
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +130 -98
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +27 -11
- data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +91 -75
- data/third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc +8 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +39 -65
- data/third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc +1 -0
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +5 -9
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +30 -33
- data/third_party/boringssl-with-bazel/src/ssl/ssl_file.cc +77 -100
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +120 -107
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +164 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +150 -60
- data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +22 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc +22 -6
- data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +15 -13
- data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +5 -43
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +7 -4
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +22 -34
- data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +2 -2
- data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +16 -98
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +1241 -657
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +751 -398
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +3551 -1938
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +1272 -487
- metadata +103 -70
- data/src/core/ext/filters/client_channel/lb_call_state_internal.h +0 -39
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.cc +0 -30
- data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +0 -29
- data/src/core/lib/gprpp/global_config.h +0 -93
- data/src/core/lib/gprpp/global_config_env.cc +0 -140
- data/src/core/lib/gprpp/global_config_env.h +0 -133
- data/src/core/lib/gprpp/global_config_generic.h +0 -40
- data/src/core/lib/promise/intra_activity_waiter.h +0 -55
- data/src/core/lib/security/security_connector/ssl_utils_config.cc +0 -32
- data/src/core/lib/security/security_connector/ssl_utils_config.h +0 -29
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +0 -195
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_print.c +0 -83
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utf8.c +0 -236
- data/third_party/boringssl-with-bazel/src/crypto/asn1/charmap.h +0 -15
- data/third_party/boringssl-with-bazel/src/crypto/asn1/time_support.c +0 -206
- data/third_party/boringssl-with-bazel/src/crypto/cpu-ppc64le.c +0 -38
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1-altivec.c +0 -361
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_cache.c +0 -287
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +0 -132
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_lib.c +0 -155
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_map.c +0 -131
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_node.c +0 -189
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_tree.c +0 -843
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pci.c +0 -289
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcia.c +0 -57
- /data/src/core/lib/gpr/{log_android.cc → android/log.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_iphone.cc → iphone/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_linux.cc → linux/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_linux.cc → linux/log.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_msys.cc → msys/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_posix.cc → posix/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_posix.cc → posix/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_posix.cc → posix/string.cc} +0 -0
- /data/src/core/lib/gpr/{sync_posix.cc → posix/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_posix.cc → posix/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_posix.cc → posix/tmpfile.cc} +0 -0
- /data/src/core/lib/gpr/{cpu_windows.cc → windows/cpu.cc} +0 -0
- /data/src/core/lib/gpr/{log_windows.cc → windows/log.cc} +0 -0
- /data/src/core/lib/gpr/{string_windows.cc → windows/string.cc} +0 -0
- /data/src/core/lib/gpr/{string_util_windows.cc → windows/string_util.cc} +0 -0
- /data/src/core/lib/gpr/{sync_windows.cc → windows/sync.cc} +0 -0
- /data/src/core/lib/gpr/{time_windows.cc → windows/time.cc} +0 -0
- /data/src/core/lib/gpr/{tmpfile_windows.cc → windows/tmpfile.cc} +0 -0
- /data/src/core/lib/gprpp/{env_linux.cc → linux/env.cc} +0 -0
- /data/src/core/lib/gprpp/{env_posix.cc → posix/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_posix.cc → posix/stat.cc} +0 -0
- /data/src/core/lib/gprpp/{env_windows.cc → windows/env.cc} +0 -0
- /data/src/core/lib/gprpp/{stat_windows.cc → windows/stat.cc} +0 -0
@@ -22,7 +22,6 @@
|
|
22
22
|
#include <openssl/ec.h>
|
23
23
|
#include <openssl/err.h>
|
24
24
|
#include <openssl/mem.h>
|
25
|
-
#include <openssl/type_check.h>
|
26
25
|
|
27
26
|
#include <assert.h>
|
28
27
|
#include <string.h>
|
@@ -31,8 +30,6 @@
|
|
31
30
|
#include "../delocate.h"
|
32
31
|
#include "./internal.h"
|
33
32
|
|
34
|
-
|
35
|
-
// MSVC does not implement uint128_t, and crashes with intrinsics
|
36
33
|
#if defined(BORINGSSL_HAS_UINT128)
|
37
34
|
#define BORINGSSL_NISTP256_64BIT 1
|
38
35
|
#include "../../../third_party/fiat/p256_64.h"
|
@@ -79,17 +76,22 @@ static void fiat_p256_cmovznz(fiat_p256_limb_t out[FIAT_P256_NLIMBS],
|
|
79
76
|
fiat_p256_selectznz(out, !!t, z, nz);
|
80
77
|
}
|
81
78
|
|
79
|
+
static void fiat_p256_from_words(fiat_p256_felem out,
|
80
|
+
const BN_ULONG in[32 / sizeof(BN_ULONG)]) {
|
81
|
+
// Typically, |BN_ULONG| and |fiat_p256_limb_t| will be the same type, but on
|
82
|
+
// 64-bit platforms without |uint128_t|, they are different. However, on
|
83
|
+
// little-endian systems, |uint64_t[4]| and |uint32_t[8]| have the same
|
84
|
+
// layout.
|
85
|
+
OPENSSL_memcpy(out, in, 32);
|
86
|
+
}
|
87
|
+
|
82
88
|
static void fiat_p256_from_generic(fiat_p256_felem out, const EC_FELEM *in) {
|
83
|
-
|
89
|
+
fiat_p256_from_words(out, in->words);
|
84
90
|
}
|
85
91
|
|
86
92
|
static void fiat_p256_to_generic(EC_FELEM *out, const fiat_p256_felem in) {
|
87
|
-
//
|
88
|
-
|
89
|
-
OPENSSL_STATIC_ASSERT(
|
90
|
-
256 / 8 == sizeof(BN_ULONG) * ((256 + BN_BITS2 - 1) / BN_BITS2),
|
91
|
-
"fiat_p256_to_bytes leaves bytes uninitialized");
|
92
|
-
fiat_p256_to_bytes(out->bytes, in);
|
93
|
+
// See |fiat_p256_from_words|.
|
94
|
+
OPENSSL_memcpy(out->words, in, 32);
|
93
95
|
}
|
94
96
|
|
95
97
|
// fiat_p256_inv_square calculates |out| = |in|^{-2}
|
@@ -392,12 +394,18 @@ static void fiat_p256_select_point(const fiat_p256_limb_t idx, size_t size,
|
|
392
394
|
}
|
393
395
|
}
|
394
396
|
|
395
|
-
// fiat_p256_get_bit returns the |i|th bit in |in
|
396
|
-
static crypto_word_t fiat_p256_get_bit(const
|
397
|
+
// fiat_p256_get_bit returns the |i|th bit in |in|.
|
398
|
+
static crypto_word_t fiat_p256_get_bit(const EC_SCALAR *in, int i) {
|
397
399
|
if (i < 0 || i >= 256) {
|
398
400
|
return 0;
|
399
401
|
}
|
400
|
-
|
402
|
+
#if defined(OPENSSL_64_BIT)
|
403
|
+
static_assert(sizeof(BN_ULONG) == 8, "BN_ULONG was not 64-bit");
|
404
|
+
return (in->words[i >> 6] >> (i & 63)) & 1;
|
405
|
+
#else
|
406
|
+
static_assert(sizeof(BN_ULONG) == 4, "BN_ULONG was not 32-bit");
|
407
|
+
return (in->words[i >> 5] >> (i & 31)) & 1;
|
408
|
+
#endif
|
401
409
|
}
|
402
410
|
|
403
411
|
// OPENSSL EC_METHOD FUNCTIONS
|
@@ -498,12 +506,12 @@ static void ec_GFp_nistp256_point_mul(const EC_GROUP *group, EC_RAW_POINT *r,
|
|
498
506
|
|
499
507
|
// do other additions every 5 doublings
|
500
508
|
if (i % 5 == 0) {
|
501
|
-
crypto_word_t bits = fiat_p256_get_bit(scalar
|
502
|
-
bits |= fiat_p256_get_bit(scalar
|
503
|
-
bits |= fiat_p256_get_bit(scalar
|
504
|
-
bits |= fiat_p256_get_bit(scalar
|
505
|
-
bits |= fiat_p256_get_bit(scalar
|
506
|
-
bits |= fiat_p256_get_bit(scalar
|
509
|
+
crypto_word_t bits = fiat_p256_get_bit(scalar, i + 4) << 5;
|
510
|
+
bits |= fiat_p256_get_bit(scalar, i + 3) << 4;
|
511
|
+
bits |= fiat_p256_get_bit(scalar, i + 2) << 3;
|
512
|
+
bits |= fiat_p256_get_bit(scalar, i + 1) << 2;
|
513
|
+
bits |= fiat_p256_get_bit(scalar, i) << 1;
|
514
|
+
bits |= fiat_p256_get_bit(scalar, i - 1);
|
507
515
|
crypto_word_t sign, digit;
|
508
516
|
ec_GFp_nistp_recode_scalar_bits(&sign, &digit, bits);
|
509
517
|
|
@@ -543,10 +551,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
|
|
543
551
|
}
|
544
552
|
|
545
553
|
// First, look 32 bits upwards.
|
546
|
-
crypto_word_t bits = fiat_p256_get_bit(scalar
|
547
|
-
bits |= fiat_p256_get_bit(scalar
|
548
|
-
bits |= fiat_p256_get_bit(scalar
|
549
|
-
bits |= fiat_p256_get_bit(scalar
|
554
|
+
crypto_word_t bits = fiat_p256_get_bit(scalar, i + 224) << 3;
|
555
|
+
bits |= fiat_p256_get_bit(scalar, i + 160) << 2;
|
556
|
+
bits |= fiat_p256_get_bit(scalar, i + 96) << 1;
|
557
|
+
bits |= fiat_p256_get_bit(scalar, i + 32);
|
550
558
|
// Select the point to add, in constant time.
|
551
559
|
fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
|
552
560
|
fiat_p256_g_pre_comp[1], tmp);
|
@@ -562,10 +570,10 @@ static void ec_GFp_nistp256_point_mul_base(const EC_GROUP *group,
|
|
562
570
|
}
|
563
571
|
|
564
572
|
// Second, look at the current position.
|
565
|
-
bits = fiat_p256_get_bit(scalar
|
566
|
-
bits |= fiat_p256_get_bit(scalar
|
567
|
-
bits |= fiat_p256_get_bit(scalar
|
568
|
-
bits |= fiat_p256_get_bit(scalar
|
573
|
+
bits = fiat_p256_get_bit(scalar, i + 192) << 3;
|
574
|
+
bits |= fiat_p256_get_bit(scalar, i + 128) << 2;
|
575
|
+
bits |= fiat_p256_get_bit(scalar, i + 64) << 1;
|
576
|
+
bits |= fiat_p256_get_bit(scalar, i);
|
569
577
|
// Select the point to add, in constant time.
|
570
578
|
fiat_p256_select_point_affine((fiat_p256_limb_t)bits, 15,
|
571
579
|
fiat_p256_g_pre_comp[0], tmp);
|
@@ -615,10 +623,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
|
|
615
623
|
// constant-time lookup.
|
616
624
|
if (i <= 31) {
|
617
625
|
// First, look 32 bits upwards.
|
618
|
-
crypto_word_t bits = fiat_p256_get_bit(g_scalar
|
619
|
-
bits |= fiat_p256_get_bit(g_scalar
|
620
|
-
bits |= fiat_p256_get_bit(g_scalar
|
621
|
-
bits |= fiat_p256_get_bit(g_scalar
|
626
|
+
crypto_word_t bits = fiat_p256_get_bit(g_scalar, i + 224) << 3;
|
627
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 160) << 2;
|
628
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 96) << 1;
|
629
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 32);
|
622
630
|
if (bits != 0) {
|
623
631
|
size_t index = (size_t)(bits - 1);
|
624
632
|
fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
|
@@ -629,10 +637,10 @@ static void ec_GFp_nistp256_point_mul_public(const EC_GROUP *group,
|
|
629
637
|
}
|
630
638
|
|
631
639
|
// Second, look at the current position.
|
632
|
-
bits = fiat_p256_get_bit(g_scalar
|
633
|
-
bits |= fiat_p256_get_bit(g_scalar
|
634
|
-
bits |= fiat_p256_get_bit(g_scalar
|
635
|
-
bits |= fiat_p256_get_bit(g_scalar
|
640
|
+
bits = fiat_p256_get_bit(g_scalar, i + 192) << 3;
|
641
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 128) << 2;
|
642
|
+
bits |= fiat_p256_get_bit(g_scalar, i + 64) << 1;
|
643
|
+
bits |= fiat_p256_get_bit(g_scalar, i);
|
636
644
|
if (bits != 0) {
|
637
645
|
size_t index = (size_t)(bits - 1);
|
638
646
|
fiat_p256_point_add(ret[0], ret[1], ret[2], ret[0], ret[1], ret[2],
|
@@ -685,7 +693,7 @@ static int ec_GFp_nistp256_cmp_x_coordinate(const EC_GROUP *group,
|
|
685
693
|
fiat_p256_mul(Z2_mont, Z2_mont, Z2_mont);
|
686
694
|
|
687
695
|
fiat_p256_felem r_Z2;
|
688
|
-
|
696
|
+
fiat_p256_from_words(r_Z2, r->words); // r < order < p, so this is valid.
|
689
697
|
fiat_p256_mul(r_Z2, r_Z2, Z2_mont);
|
690
698
|
|
691
699
|
fiat_p256_felem X;
|
@@ -731,6 +739,10 @@ DEFINE_METHOD_FUNCTION(EC_METHOD, EC_GFp_nistp256_method) {
|
|
731
739
|
out->felem_sqr = ec_GFp_mont_felem_sqr;
|
732
740
|
out->felem_to_bytes = ec_GFp_mont_felem_to_bytes;
|
733
741
|
out->felem_from_bytes = ec_GFp_mont_felem_from_bytes;
|
742
|
+
out->felem_reduce = ec_GFp_mont_felem_reduce;
|
743
|
+
// TODO(davidben): This should use the specialized field arithmetic
|
744
|
+
// implementation, rather than the generic one.
|
745
|
+
out->felem_exp = ec_GFp_mont_felem_exp;
|
734
746
|
out->scalar_inv0_montgomery = ec_simple_scalar_inv0_montgomery;
|
735
747
|
out->scalar_to_montgomery_inv_vartime =
|
736
748
|
ec_simple_scalar_to_montgomery_inv_vartime;
|
@@ -54,9 +54,7 @@ int ec_random_nonzero_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
54
54
|
void ec_scalar_to_bytes(const EC_GROUP *group, uint8_t *out, size_t *out_len,
|
55
55
|
const EC_SCALAR *in) {
|
56
56
|
size_t len = BN_num_bytes(&group->order);
|
57
|
-
|
58
|
-
out[len - i - 1] = in->bytes[i];
|
59
|
-
}
|
57
|
+
bn_words_to_big_endian(out, len, in->words, group->order.width);
|
60
58
|
*out_len = len;
|
61
59
|
}
|
62
60
|
|
@@ -67,11 +65,7 @@ int ec_scalar_from_bytes(const EC_GROUP *group, EC_SCALAR *out,
|
|
67
65
|
return 0;
|
68
66
|
}
|
69
67
|
|
70
|
-
|
71
|
-
|
72
|
-
for (size_t i = 0; i < len; i++) {
|
73
|
-
out->bytes[i] = in[len - i - 1];
|
74
|
-
}
|
68
|
+
bn_big_endian_to_words(out->words, group->order.width, in, len);
|
75
69
|
|
76
70
|
if (!bn_less_than_words(out->words, group->order.d, group->order.width)) {
|
77
71
|
OPENSSL_PUT_ERROR(EC, EC_R_INVALID_SCALAR);
|
@@ -330,9 +330,7 @@ int ec_GFp_simple_cmp_x_coordinate(const EC_GROUP *group, const EC_RAW_POINT *p,
|
|
330
330
|
void ec_GFp_simple_felem_to_bytes(const EC_GROUP *group, uint8_t *out,
|
331
331
|
size_t *out_len, const EC_FELEM *in) {
|
332
332
|
size_t len = BN_num_bytes(&group->field);
|
333
|
-
|
334
|
-
out[i] = in->bytes[len - 1 - i];
|
335
|
-
}
|
333
|
+
bn_words_to_big_endian(out, len, in->words, group->field.width);
|
336
334
|
*out_len = len;
|
337
335
|
}
|
338
336
|
|
@@ -343,10 +341,7 @@ int ec_GFp_simple_felem_from_bytes(const EC_GROUP *group, EC_FELEM *out,
|
|
343
341
|
return 0;
|
344
342
|
}
|
345
343
|
|
346
|
-
|
347
|
-
for (size_t i = 0; i < len; i++) {
|
348
|
-
out->bytes[i] = in[len - 1 - i];
|
349
|
-
}
|
344
|
+
bn_big_endian_to_words(out->words, group->field.width, in, len);
|
350
345
|
|
351
346
|
if (!bn_less_than_words(out->words, group->field.d, group->field.width)) {
|
352
347
|
OPENSSL_PUT_ERROR(EC, EC_R_DECODE_ERROR);
|
@@ -202,9 +202,8 @@ int ec_GFp_mont_init_precomp(const EC_GROUP *group, EC_PRECOMP *out,
|
|
202
202
|
|
203
203
|
// Store the comb in affine coordinates to shrink the table. (This reduces
|
204
204
|
// cache pressure and makes the constant-time selects faster.)
|
205
|
-
|
206
|
-
|
207
|
-
"comb sizes did not match");
|
205
|
+
static_assert(OPENSSL_ARRAY_SIZE(comb) == OPENSSL_ARRAY_SIZE(out->comb),
|
206
|
+
"comb sizes did not match");
|
208
207
|
return ec_jacobian_to_affine_batch(group, out->comb, comb,
|
209
208
|
OPENSSL_ARRAY_SIZE(comb));
|
210
209
|
}
|
@@ -205,7 +205,6 @@ int ec_GFp_mont_mul_public_batch(const EC_GROUP *group, EC_RAW_POINT *r,
|
|
205
205
|
wNAF_alloc = OPENSSL_malloc(num * sizeof(wNAF_alloc[0]));
|
206
206
|
precomp_alloc = OPENSSL_malloc(num * sizeof(precomp_alloc[0]));
|
207
207
|
if (wNAF_alloc == NULL || precomp_alloc == NULL) {
|
208
|
-
OPENSSL_PUT_ERROR(EC, ERR_R_MALLOC_FAILURE);
|
209
208
|
goto err;
|
210
209
|
}
|
211
210
|
wNAF = wNAF_alloc;
|
@@ -74,11 +74,15 @@
|
|
74
74
|
#include <openssl/mem.h>
|
75
75
|
#include <openssl/sha.h>
|
76
76
|
|
77
|
+
#include "../../internal.h"
|
77
78
|
#include "../ec/internal.h"
|
79
|
+
#include "../service_indicator/internal.h"
|
78
80
|
|
79
81
|
|
80
82
|
int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
|
81
83
|
const EC_KEY *priv_key) {
|
84
|
+
boringssl_ensure_ecc_self_test();
|
85
|
+
|
82
86
|
if (priv_key->priv_key == NULL) {
|
83
87
|
OPENSSL_PUT_ERROR(ECDH, ECDH_R_NO_PRIVATE_VALUE);
|
84
88
|
return 0;
|
@@ -100,6 +104,7 @@ int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
|
|
100
104
|
return 0;
|
101
105
|
}
|
102
106
|
|
107
|
+
FIPS_service_indicator_lock_state();
|
103
108
|
switch (out_len) {
|
104
109
|
case SHA224_DIGEST_LENGTH:
|
105
110
|
SHA224(buf, buflen, out);
|
@@ -115,8 +120,11 @@ int ECDH_compute_key_fips(uint8_t *out, size_t out_len, const EC_POINT *pub_key,
|
|
115
120
|
break;
|
116
121
|
default:
|
117
122
|
OPENSSL_PUT_ERROR(ECDH, ECDH_R_UNKNOWN_DIGEST_LENGTH);
|
123
|
+
FIPS_service_indicator_unlock_state();
|
118
124
|
return 0;
|
119
125
|
}
|
126
|
+
FIPS_service_indicator_unlock_state();
|
120
127
|
|
128
|
+
ECDH_verify_service_indicator(priv_key);
|
121
129
|
return 1;
|
122
130
|
}
|
@@ -59,11 +59,11 @@
|
|
59
59
|
#include <openssl/err.h>
|
60
60
|
#include <openssl/mem.h>
|
61
61
|
#include <openssl/sha.h>
|
62
|
-
#include <openssl/type_check.h>
|
63
62
|
|
64
63
|
#include "../../internal.h"
|
65
64
|
#include "../bn/internal.h"
|
66
65
|
#include "../ec/internal.h"
|
66
|
+
#include "../service_indicator/internal.h"
|
67
67
|
#include "internal.h"
|
68
68
|
|
69
69
|
|
@@ -78,10 +78,7 @@ static void digest_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
|
78
78
|
if (digest_len > num_bytes) {
|
79
79
|
digest_len = num_bytes;
|
80
80
|
}
|
81
|
-
|
82
|
-
for (size_t i = 0; i < digest_len; i++) {
|
83
|
-
out->bytes[i] = digest[digest_len - 1 - i];
|
84
|
-
}
|
81
|
+
bn_big_endian_to_words(out->words, order->width, digest, digest_len);
|
85
82
|
|
86
83
|
// If it is still too long, truncate remaining bits with a shift.
|
87
84
|
if (8 * digest_len > num_bits) {
|
@@ -151,8 +148,8 @@ int ECDSA_SIG_set0(ECDSA_SIG *sig, BIGNUM *r, BIGNUM *s) {
|
|
151
148
|
return 1;
|
152
149
|
}
|
153
150
|
|
154
|
-
int
|
155
|
-
|
151
|
+
int ecdsa_do_verify_no_self_test(const uint8_t *digest, size_t digest_len,
|
152
|
+
const ECDSA_SIG *sig, const EC_KEY *eckey) {
|
156
153
|
const EC_GROUP *group = EC_KEY_get0_group(eckey);
|
157
154
|
const EC_POINT *pub_key = EC_KEY_get0_public_key(eckey);
|
158
155
|
if (group == NULL || pub_key == NULL || sig == NULL) {
|
@@ -198,6 +195,13 @@ int ECDSA_do_verify(const uint8_t *digest, size_t digest_len,
|
|
198
195
|
return 1;
|
199
196
|
}
|
200
197
|
|
198
|
+
int ECDSA_do_verify(const uint8_t *digest, size_t digest_len,
|
199
|
+
const ECDSA_SIG *sig, const EC_KEY *eckey) {
|
200
|
+
boringssl_ensure_ecc_self_test();
|
201
|
+
|
202
|
+
return ecdsa_do_verify_no_self_test(digest, digest_len, sig, eckey);
|
203
|
+
}
|
204
|
+
|
201
205
|
static ECDSA_SIG *ecdsa_sign_impl(const EC_GROUP *group, int *out_retry,
|
202
206
|
const EC_SCALAR *priv_key, const EC_SCALAR *k,
|
203
207
|
const uint8_t *digest, size_t digest_len) {
|
@@ -292,12 +296,16 @@ ECDSA_SIG *ecdsa_sign_with_nonce_for_known_answer_test(const uint8_t *digest,
|
|
292
296
|
ECDSA_SIG *ECDSA_sign_with_nonce_and_leak_private_key_for_testing(
|
293
297
|
const uint8_t *digest, size_t digest_len, const EC_KEY *eckey,
|
294
298
|
const uint8_t *nonce, size_t nonce_len) {
|
299
|
+
boringssl_ensure_ecc_self_test();
|
300
|
+
|
295
301
|
return ecdsa_sign_with_nonce_for_known_answer_test(digest, digest_len, eckey,
|
296
302
|
nonce, nonce_len);
|
297
303
|
}
|
298
304
|
|
299
305
|
ECDSA_SIG *ECDSA_do_sign(const uint8_t *digest, size_t digest_len,
|
300
306
|
const EC_KEY *eckey) {
|
307
|
+
boringssl_ensure_ecc_self_test();
|
308
|
+
|
301
309
|
if (eckey->ecdsa_meth && eckey->ecdsa_meth->sign) {
|
302
310
|
OPENSSL_PUT_ERROR(ECDSA, ECDSA_R_NOT_IMPLEMENTED);
|
303
311
|
return NULL;
|
@@ -313,8 +321,11 @@ ECDSA_SIG *ECDSA_do_sign(const uint8_t *digest, size_t digest_len,
|
|
313
321
|
|
314
322
|
// Pass a SHA512 hash of the private key and digest as additional data
|
315
323
|
// into the RBG. This is a hardening measure against entropy failure.
|
316
|
-
|
317
|
-
|
324
|
+
static_assert(SHA512_DIGEST_LENGTH >= 32,
|
325
|
+
"additional_data is too large for SHA-512");
|
326
|
+
|
327
|
+
FIPS_service_indicator_lock_state();
|
328
|
+
|
318
329
|
SHA512_CTX sha;
|
319
330
|
uint8_t additional_data[SHA512_DIGEST_LENGTH];
|
320
331
|
SHA512_Init(&sha);
|
@@ -322,17 +333,34 @@ ECDSA_SIG *ECDSA_do_sign(const uint8_t *digest, size_t digest_len,
|
|
322
333
|
SHA512_Update(&sha, digest, digest_len);
|
323
334
|
SHA512_Final(additional_data, &sha);
|
324
335
|
|
336
|
+
// Cap iterations so callers who supply invalid values as custom groups do not
|
337
|
+
// infinite loop. This does not impact valid parameters (e.g. those covered by
|
338
|
+
// FIPS) because the probability of requiring even one retry is negligible,
|
339
|
+
// let alone 32.
|
340
|
+
static const int kMaxIterations = 32;
|
341
|
+
ECDSA_SIG *ret = NULL;
|
342
|
+
int iters = 0;
|
325
343
|
for (;;) {
|
326
344
|
EC_SCALAR k;
|
327
345
|
if (!ec_random_nonzero_scalar(group, &k, additional_data)) {
|
328
|
-
|
346
|
+
ret = NULL;
|
347
|
+
goto out;
|
329
348
|
}
|
330
349
|
|
331
350
|
int retry;
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
351
|
+
ret = ecdsa_sign_impl(group, &retry, priv_key, &k, digest, digest_len);
|
352
|
+
if (ret != NULL || !retry) {
|
353
|
+
goto out;
|
354
|
+
}
|
355
|
+
|
356
|
+
iters++;
|
357
|
+
if (iters > kMaxIterations) {
|
358
|
+
OPENSSL_PUT_ERROR(ECDSA, ECDSA_R_TOO_MANY_ITERATIONS);
|
359
|
+
goto out;
|
336
360
|
}
|
337
361
|
}
|
362
|
+
|
363
|
+
out:
|
364
|
+
FIPS_service_indicator_unlock_state();
|
365
|
+
return ret;
|
338
366
|
}
|
@@ -31,6 +31,12 @@ ECDSA_SIG *ecdsa_sign_with_nonce_for_known_answer_test(const uint8_t *digest,
|
|
31
31
|
const uint8_t *nonce,
|
32
32
|
size_t nonce_len);
|
33
33
|
|
34
|
+
// ecdsa_do_verify_no_self_test does the same as |ECDSA_do_verify|, but doesn't
|
35
|
+
// try to run the self-test first. This is for use in the self tests themselves,
|
36
|
+
// to prevent an infinite loop.
|
37
|
+
int ecdsa_do_verify_no_self_test(const uint8_t *digest, size_t digest_len,
|
38
|
+
const ECDSA_SIG *sig, const EC_KEY *eckey);
|
39
|
+
|
34
40
|
|
35
41
|
#if defined(__cplusplus)
|
36
42
|
}
|
@@ -63,6 +63,7 @@
|
|
63
63
|
#include <openssl/mem.h>
|
64
64
|
|
65
65
|
#include "../../internal.h"
|
66
|
+
#include "../service_indicator/internal.h"
|
66
67
|
|
67
68
|
|
68
69
|
uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len,
|
@@ -70,13 +71,22 @@ uint8_t *HMAC(const EVP_MD *evp_md, const void *key, size_t key_len,
|
|
70
71
|
unsigned int *out_len) {
|
71
72
|
HMAC_CTX ctx;
|
72
73
|
HMAC_CTX_init(&ctx);
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
74
|
+
|
75
|
+
// The underlying hash functions should not set the FIPS service indicator
|
76
|
+
// until all operations have completed.
|
77
|
+
FIPS_service_indicator_lock_state();
|
78
|
+
const int ok = HMAC_Init_ex(&ctx, key, key_len, evp_md, NULL) &&
|
79
|
+
HMAC_Update(&ctx, data, data_len) &&
|
80
|
+
HMAC_Final(&ctx, out, out_len);
|
81
|
+
FIPS_service_indicator_unlock_state();
|
78
82
|
|
79
83
|
HMAC_CTX_cleanup(&ctx);
|
84
|
+
|
85
|
+
if (!ok) {
|
86
|
+
return NULL;
|
87
|
+
}
|
88
|
+
|
89
|
+
HMAC_verify_service_indicator(evp_md);
|
80
90
|
return out;
|
81
91
|
}
|
82
92
|
|
@@ -102,6 +112,13 @@ void HMAC_CTX_cleanup(HMAC_CTX *ctx) {
|
|
102
112
|
OPENSSL_cleanse(ctx, sizeof(HMAC_CTX));
|
103
113
|
}
|
104
114
|
|
115
|
+
void HMAC_CTX_cleanse(HMAC_CTX *ctx) {
|
116
|
+
EVP_MD_CTX_cleanse(&ctx->i_ctx);
|
117
|
+
EVP_MD_CTX_cleanse(&ctx->o_ctx);
|
118
|
+
EVP_MD_CTX_cleanse(&ctx->md_ctx);
|
119
|
+
OPENSSL_cleanse(ctx, sizeof(HMAC_CTX));
|
120
|
+
}
|
121
|
+
|
105
122
|
void HMAC_CTX_free(HMAC_CTX *ctx) {
|
106
123
|
if (ctx == NULL) {
|
107
124
|
return;
|
@@ -113,6 +130,9 @@ void HMAC_CTX_free(HMAC_CTX *ctx) {
|
|
113
130
|
|
114
131
|
int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
|
115
132
|
const EVP_MD *md, ENGINE *impl) {
|
133
|
+
int ret = 0;
|
134
|
+
FIPS_service_indicator_lock_state();
|
135
|
+
|
116
136
|
if (md == NULL) {
|
117
137
|
md = ctx->md;
|
118
138
|
}
|
@@ -131,12 +151,13 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
|
|
131
151
|
|
132
152
|
size_t block_size = EVP_MD_block_size(md);
|
133
153
|
assert(block_size <= sizeof(key_block));
|
154
|
+
assert(EVP_MD_size(md) <= block_size);
|
134
155
|
if (block_size < key_len) {
|
135
156
|
// Long keys are hashed.
|
136
157
|
if (!EVP_DigestInit_ex(&ctx->md_ctx, md, impl) ||
|
137
158
|
!EVP_DigestUpdate(&ctx->md_ctx, key, key_len) ||
|
138
159
|
!EVP_DigestFinal_ex(&ctx->md_ctx, key_block, &key_block_len)) {
|
139
|
-
|
160
|
+
goto out;
|
140
161
|
}
|
141
162
|
} else {
|
142
163
|
assert(key_len <= sizeof(key_block));
|
@@ -144,34 +165,32 @@ int HMAC_Init_ex(HMAC_CTX *ctx, const void *key, size_t key_len,
|
|
144
165
|
key_block_len = (unsigned)key_len;
|
145
166
|
}
|
146
167
|
// Keys are then padded with zeros.
|
147
|
-
|
148
|
-
OPENSSL_memset(&key_block[key_block_len], 0, sizeof(key_block) - key_block_len);
|
149
|
-
}
|
168
|
+
OPENSSL_memset(key_block + key_block_len, 0, block_size - key_block_len);
|
150
169
|
|
151
|
-
for (size_t i = 0; i <
|
170
|
+
for (size_t i = 0; i < block_size; i++) {
|
152
171
|
pad[i] = 0x36 ^ key_block[i];
|
153
172
|
}
|
154
173
|
if (!EVP_DigestInit_ex(&ctx->i_ctx, md, impl) ||
|
155
|
-
!EVP_DigestUpdate(&ctx->i_ctx, pad,
|
156
|
-
|
174
|
+
!EVP_DigestUpdate(&ctx->i_ctx, pad, block_size)) {
|
175
|
+
goto out;
|
157
176
|
}
|
158
177
|
|
159
|
-
for (size_t i = 0; i <
|
178
|
+
for (size_t i = 0; i < block_size; i++) {
|
160
179
|
pad[i] = 0x5c ^ key_block[i];
|
161
180
|
}
|
162
181
|
if (!EVP_DigestInit_ex(&ctx->o_ctx, md, impl) ||
|
163
|
-
!EVP_DigestUpdate(&ctx->o_ctx, pad,
|
164
|
-
|
182
|
+
!EVP_DigestUpdate(&ctx->o_ctx, pad, block_size)) {
|
183
|
+
goto out;
|
165
184
|
}
|
166
185
|
|
167
186
|
ctx->md = md;
|
168
187
|
}
|
169
188
|
|
170
|
-
|
171
|
-
return 0;
|
172
|
-
}
|
189
|
+
ret = EVP_MD_CTX_copy_ex(&ctx->md_ctx, &ctx->i_ctx);
|
173
190
|
|
174
|
-
|
191
|
+
out:
|
192
|
+
FIPS_service_indicator_unlock_state();
|
193
|
+
return ret;
|
175
194
|
}
|
176
195
|
|
177
196
|
int HMAC_Update(HMAC_CTX *ctx, const uint8_t *data, size_t data_len) {
|
@@ -179,9 +198,11 @@ int HMAC_Update(HMAC_CTX *ctx, const uint8_t *data, size_t data_len) {
|
|
179
198
|
}
|
180
199
|
|
181
200
|
int HMAC_Final(HMAC_CTX *ctx, uint8_t *out, unsigned int *out_len) {
|
201
|
+
int ret = 0;
|
182
202
|
unsigned int i;
|
183
203
|
uint8_t buf[EVP_MAX_MD_SIZE];
|
184
204
|
|
205
|
+
FIPS_service_indicator_lock_state();
|
185
206
|
// TODO(davidben): The only thing that can officially fail here is
|
186
207
|
// |EVP_MD_CTX_copy_ex|, but even that should be impossible in this case.
|
187
208
|
if (!EVP_DigestFinal_ex(&ctx->md_ctx, buf, &i) ||
|
@@ -189,16 +210,23 @@ int HMAC_Final(HMAC_CTX *ctx, uint8_t *out, unsigned int *out_len) {
|
|
189
210
|
!EVP_DigestUpdate(&ctx->md_ctx, buf, i) ||
|
190
211
|
!EVP_DigestFinal_ex(&ctx->md_ctx, out, out_len)) {
|
191
212
|
*out_len = 0;
|
192
|
-
|
213
|
+
goto out;
|
193
214
|
}
|
194
215
|
|
195
|
-
|
196
|
-
}
|
216
|
+
ret = 1;
|
197
217
|
|
198
|
-
|
199
|
-
|
218
|
+
out:
|
219
|
+
FIPS_service_indicator_unlock_state();
|
220
|
+
if (ret) {
|
221
|
+
HMAC_verify_service_indicator(ctx->md);
|
222
|
+
}
|
223
|
+
return ret;
|
200
224
|
}
|
201
225
|
|
226
|
+
size_t HMAC_size(const HMAC_CTX *ctx) { return EVP_MD_size(ctx->md); }
|
227
|
+
|
228
|
+
const EVP_MD *HMAC_CTX_get_md(const HMAC_CTX *ctx) { return ctx->md; }
|
229
|
+
|
202
230
|
int HMAC_CTX_copy_ex(HMAC_CTX *dest, const HMAC_CTX *src) {
|
203
231
|
if (!EVP_MD_CTX_copy_ex(&dest->i_ctx, &src->i_ctx) ||
|
204
232
|
!EVP_MD_CTX_copy_ex(&dest->o_ctx, &src->o_ctx) ||
|
@@ -49,8 +49,6 @@
|
|
49
49
|
#include <assert.h>
|
50
50
|
#include <string.h>
|
51
51
|
|
52
|
-
#include <openssl/type_check.h>
|
53
|
-
|
54
52
|
#include "internal.h"
|
55
53
|
#include "../../internal.h"
|
56
54
|
|
@@ -116,16 +114,12 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
116
114
|
assert(inptr >= outptr || inptr + len <= outptr);
|
117
115
|
|
118
116
|
size_t n;
|
119
|
-
|
120
|
-
crypto_word_t t[16 / sizeof(crypto_word_t)];
|
121
|
-
uint8_t c[16];
|
122
|
-
} tmp;
|
123
|
-
|
117
|
+
alignas(16) uint8_t tmp[16];
|
124
118
|
if ((inptr >= 32 && outptr <= inptr - 32) || inptr < outptr) {
|
125
119
|
// If |out| is at least two blocks behind |in| or completely disjoint, there
|
126
120
|
// is no need to decrypt to a temporary block.
|
127
|
-
|
128
|
-
|
121
|
+
static_assert(16 % sizeof(crypto_word_t) == 0,
|
122
|
+
"block cannot be evenly divided into words");
|
129
123
|
const uint8_t *iv = ivec;
|
130
124
|
while (len >= 16) {
|
131
125
|
(*block)(in, out, key);
|
@@ -140,14 +134,14 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
140
134
|
}
|
141
135
|
OPENSSL_memcpy(ivec, iv, 16);
|
142
136
|
} else {
|
143
|
-
|
144
|
-
|
137
|
+
static_assert(16 % sizeof(crypto_word_t) == 0,
|
138
|
+
"block cannot be evenly divided into words");
|
145
139
|
|
146
140
|
while (len >= 16) {
|
147
|
-
(*block)(in, tmp
|
141
|
+
(*block)(in, tmp, key);
|
148
142
|
for (n = 0; n < 16; n += sizeof(crypto_word_t)) {
|
149
143
|
crypto_word_t c = CRYPTO_load_word_le(in + n);
|
150
|
-
CRYPTO_store_word_le(out + n, tmp
|
144
|
+
CRYPTO_store_word_le(out + n, CRYPTO_load_word_le(tmp + n) ^
|
151
145
|
CRYPTO_load_word_le(ivec + n));
|
152
146
|
CRYPTO_store_word_le(ivec + n, c);
|
153
147
|
}
|
@@ -159,10 +153,10 @@ void CRYPTO_cbc128_decrypt(const uint8_t *in, uint8_t *out, size_t len,
|
|
159
153
|
|
160
154
|
while (len) {
|
161
155
|
uint8_t c;
|
162
|
-
(*block)(in, tmp
|
156
|
+
(*block)(in, tmp, key);
|
163
157
|
for (n = 0; n < 16 && n < len; ++n) {
|
164
158
|
c = in[n];
|
165
|
-
out[n] = tmp
|
159
|
+
out[n] = tmp[n] ^ ivec[n];
|
166
160
|
ivec[n] = c;
|
167
161
|
}
|
168
162
|
if (len <= 16) {
|
@@ -46,16 +46,13 @@
|
|
46
46
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
47
47
|
* ==================================================================== */
|
48
48
|
|
49
|
-
#include <openssl/type_check.h>
|
50
|
-
|
51
49
|
#include <assert.h>
|
52
50
|
#include <string.h>
|
53
51
|
|
54
52
|
#include "internal.h"
|
55
53
|
|
56
54
|
|
57
|
-
|
58
|
-
"block cannot be divided into size_t");
|
55
|
+
static_assert(16 % sizeof(size_t) == 0, "block cannot be divided into size_t");
|
59
56
|
|
60
57
|
void CRYPTO_cfb128_encrypt(const uint8_t *in, uint8_t *out, size_t len,
|
61
58
|
const AES_KEY *key, uint8_t ivec[16], unsigned *num,
|
@@ -46,8 +46,6 @@
|
|
46
46
|
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
47
47
|
* ==================================================================== */
|
48
48
|
|
49
|
-
#include <openssl/type_check.h>
|
50
|
-
|
51
49
|
#include <assert.h>
|
52
50
|
#include <string.h>
|
53
51
|
|
@@ -70,8 +68,8 @@ static void ctr128_inc(uint8_t *counter) {
|
|
70
68
|
} while (n);
|
71
69
|
}
|
72
70
|
|
73
|
-
|
74
|
-
|
71
|
+
static_assert(16 % sizeof(crypto_word_t) == 0,
|
72
|
+
"block cannot be divided into crypto_word_t");
|
75
73
|
|
76
74
|
// The input encrypted as though 128bit counter mode is being used. The extra
|
77
75
|
// state information to record how much of the 128bit block we have used is
|