grpc 1.64.3 → 1.65.0
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 +57 -58
- data/include/grpc/event_engine/event_engine.h +13 -6
- data/include/grpc/impl/channel_arg_names.h +7 -3
- data/include/grpc/module.modulemap +1 -0
- data/include/grpc/passive_listener.h +62 -0
- data/include/grpc/support/log.h +7 -17
- data/include/grpc/support/port_platform.h +3 -0
- data/src/core/channelz/channel_trace.cc +1 -1
- data/src/core/channelz/channel_trace.h +1 -1
- data/src/core/channelz/channelz.cc +3 -3
- data/src/core/channelz/channelz.h +7 -7
- data/src/core/channelz/channelz_registry.cc +4 -3
- data/src/core/client_channel/backup_poller.cc +4 -5
- data/src/core/client_channel/client_channel.cc +1324 -0
- data/src/core/client_channel/client_channel.h +243 -0
- data/src/core/client_channel/client_channel_filter.cc +266 -709
- data/src/core/client_channel/client_channel_filter.h +11 -64
- data/src/core/client_channel/client_channel_internal.h +16 -5
- data/src/core/client_channel/client_channel_plugin.cc +1 -14
- data/src/core/client_channel/client_channel_service_config.h +3 -3
- data/src/core/client_channel/config_selector.cc +1 -1
- data/src/core/client_channel/config_selector.h +1 -1
- data/src/core/client_channel/dynamic_filters.cc +3 -3
- data/src/core/client_channel/dynamic_filters.h +1 -3
- data/src/core/client_channel/load_balanced_call_destination.cc +336 -0
- data/src/core/client_channel/load_balanced_call_destination.h +49 -0
- data/src/core/client_channel/retry_filter.cc +2 -9
- data/src/core/client_channel/retry_filter.h +2 -7
- data/src/core/client_channel/retry_filter_legacy_call_data.cc +65 -72
- data/src/core/client_channel/retry_filter_legacy_call_data.h +0 -2
- data/src/core/client_channel/retry_service_config.cc +4 -5
- data/src/core/client_channel/retry_service_config.h +3 -3
- data/src/core/client_channel/subchannel.cc +220 -112
- data/src/core/client_channel/subchannel.h +31 -18
- data/src/core/client_channel/subchannel_pool_interface.cc +0 -2
- data/src/core/client_channel/subchannel_pool_interface.h +2 -4
- data/src/core/client_channel/subchannel_stream_client.cc +36 -49
- data/src/core/client_channel/subchannel_stream_client.h +2 -4
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +7 -10
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.h +1 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_provider.h +7 -0
- data/src/core/ext/filters/census/grpc_context.cc +2 -4
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.cc +8 -15
- data/src/core/ext/filters/channel_idle/legacy_channel_idle_filter.h +2 -0
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +3 -7
- data/src/core/ext/filters/fault_injection/fault_injection_filter.h +1 -0
- data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.h +3 -3
- data/src/core/ext/filters/http/client/http_client_filter.cc +1 -0
- data/src/core/ext/filters/http/client/http_client_filter.h +1 -0
- data/src/core/ext/filters/http/client_authority_filter.cc +1 -0
- data/src/core/ext/filters/http/client_authority_filter.h +1 -0
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +10 -15
- data/src/core/ext/filters/http/message_compress/compression_filter.h +2 -0
- data/src/core/ext/filters/http/server/http_server_filter.cc +2 -2
- data/src/core/ext/filters/http/server/http_server_filter.h +1 -0
- data/src/core/ext/filters/message_size/message_size_filter.cc +6 -9
- data/src/core/ext/filters/message_size/message_size_filter.h +6 -6
- data/src/core/ext/filters/rbac/rbac_filter.cc +2 -5
- data/src/core/ext/filters/rbac/rbac_filter.h +1 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +2 -2
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +1 -1
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +2 -6
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +1 -0
- data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +8 -25
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -5
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +223 -148
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +33 -0
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -107
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +8 -8
- data/src/core/ext/transport/chttp2/transport/context_list_entry.h +1 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -4
- data/src/core/ext/transport/chttp2/transport/flow_control.h +0 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +1 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +9 -5
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -4
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +9 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +32 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +1 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +3 -8
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +29 -19
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -25
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.cc +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_callbacks.h +0 -2
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/ping_rate_policy.h +5 -4
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +3 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +24 -25
- data/src/core/ext/transport/inproc/inproc_transport.cc +56 -32
- data/src/core/ext/transport/inproc/inproc_transport.h +1 -3
- data/src/core/ext/transport/inproc/legacy_inproc_transport.cc +13 -15
- data/src/core/ext/transport/inproc/legacy_inproc_transport.h +0 -2
- data/src/core/handshaker/handshaker.cc +6 -14
- data/src/core/handshaker/http_connect/http_connect_handshaker.cc +9 -17
- data/src/core/handshaker/http_connect/http_proxy_mapper.cc +3 -2
- data/src/core/handshaker/security/secure_endpoint.cc +38 -32
- data/src/core/handshaker/security/secure_endpoint.h +0 -2
- data/src/core/handshaker/security/security_handshaker.cc +25 -37
- data/src/core/handshaker/tcp_connect/tcp_connect_handshaker.cc +2 -1
- data/src/core/lib/address_utils/parse_address.cc +27 -39
- data/src/core/lib/address_utils/sockaddr_utils.cc +5 -6
- data/src/core/lib/avl/avl.h +1 -1
- data/src/core/lib/channel/channel_args.cc +13 -17
- data/src/core/lib/channel/channel_args.h +19 -8
- data/src/core/lib/channel/channel_stack.cc +5 -63
- data/src/core/lib/channel/channel_stack.h +13 -37
- data/src/core/lib/channel/channel_stack_builder.h +0 -5
- data/src/core/lib/channel/channel_stack_builder_impl.cc +0 -142
- data/src/core/lib/channel/channel_stack_builder_impl.h +0 -2
- data/src/core/lib/channel/connected_channel.cc +37 -676
- data/src/core/lib/channel/promise_based_filter.cc +41 -47
- data/src/core/lib/channel/promise_based_filter.h +124 -477
- data/src/core/lib/channel/status_util.cc +1 -1
- data/src/core/lib/compression/compression.cc +1 -1
- data/src/core/lib/compression/message_compress.cc +6 -6
- data/src/core/lib/config/config_vars.cc +3 -8
- data/src/core/lib/config/config_vars.h +1 -5
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/trace.cc +43 -59
- data/src/core/lib/debug/trace.h +2 -97
- data/src/core/lib/debug/trace_flags.cc +255 -0
- data/src/core/lib/debug/trace_flags.h +133 -0
- data/src/core/lib/debug/trace_impl.h +115 -0
- data/src/core/lib/event_engine/ares_resolver.cc +5 -7
- data/src/core/lib/event_engine/ares_resolver.h +1 -3
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +1 -1
- data/src/core/lib/event_engine/cf_engine/dns_service_resolver.cc +17 -22
- data/src/core/lib/event_engine/event_engine.cc +29 -4
- data/src/core/lib/event_engine/extensions/supports_fd.h +7 -0
- data/src/core/lib/event_engine/extensions/tcp_trace.h +43 -0
- data/src/core/lib/event_engine/forkable.cc +4 -5
- data/src/core/lib/event_engine/forkable.h +0 -11
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +10 -11
- data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +4 -3
- data/src/core/lib/event_engine/posix_engine/native_posix_dns_resolver.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +19 -33
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +24 -7
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +14 -16
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +18 -22
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +13 -17
- data/src/core/lib/event_engine/posix_engine/timer.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/timer_manager.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +2 -1
- data/src/core/lib/event_engine/shim.cc +1 -1
- data/src/core/lib/event_engine/tcp_socket_utils.cc +6 -8
- data/src/core/lib/event_engine/thread_local.h +1 -1
- data/src/core/lib/event_engine/thread_pool/thread_count.h +1 -1
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +19 -21
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +3 -6
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +14 -13
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +4 -3
- data/src/core/lib/event_engine/trace.h +6 -17
- data/src/core/lib/event_engine/windows/iocp.h +1 -1
- data/src/core/lib/event_engine/windows/win_socket.cc +23 -17
- data/src/core/lib/event_engine/windows/win_socket.h +4 -5
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +6 -9
- data/src/core/lib/event_engine/windows/windows_engine.cc +201 -87
- data/src/core/lib/event_engine/windows/windows_engine.h +136 -25
- data/src/core/lib/event_engine/windows/windows_listener.cc +12 -23
- data/src/core/lib/experiments/experiments.cc +35 -151
- data/src/core/lib/experiments/experiments.h +12 -45
- data/src/core/lib/gprpp/bitset.h +1 -1
- data/src/core/lib/gprpp/crash.cc +2 -3
- data/src/core/lib/gprpp/dual_ref_counted.h +45 -33
- data/src/core/lib/gprpp/dump_args.cc +54 -0
- data/src/core/lib/gprpp/dump_args.h +69 -0
- data/src/core/lib/gprpp/glob.cc +70 -0
- data/src/core/lib/gprpp/glob.h +29 -0
- data/src/core/lib/gprpp/per_cpu.cc +1 -1
- data/src/core/lib/gprpp/posix/stat.cc +3 -4
- data/src/core/lib/gprpp/posix/thd.cc +8 -9
- data/src/core/lib/gprpp/ref_counted.h +30 -22
- data/src/core/lib/gprpp/single_set_ptr.h +5 -3
- data/src/core/lib/gprpp/status_helper.cc +11 -30
- data/src/core/lib/gprpp/status_helper.h +3 -31
- data/src/core/lib/gprpp/time.cc +3 -4
- data/src/core/lib/gprpp/time.h +3 -2
- data/src/core/lib/gprpp/unique_type_name.h +1 -1
- data/src/core/lib/gprpp/validation_errors.cc +10 -1
- data/src/core/lib/gprpp/validation_errors.h +11 -0
- data/src/core/lib/gprpp/windows/stat.cc +3 -4
- data/src/core/lib/gprpp/windows/thd.cc +3 -2
- data/src/core/lib/gprpp/work_serializer.cc +48 -57
- data/src/core/lib/iomgr/buffer_list.cc +4 -2
- data/src/core/lib/iomgr/call_combiner.cc +18 -27
- data/src/core/lib/iomgr/call_combiner.h +1 -3
- data/src/core/lib/iomgr/cfstream_handle.cc +4 -6
- data/src/core/lib/iomgr/closure.h +2 -4
- data/src/core/lib/iomgr/combiner.cc +6 -8
- data/src/core/lib/iomgr/combiner.h +0 -2
- data/src/core/lib/iomgr/endpoint.cc +0 -6
- data/src/core/lib/iomgr/endpoint.h +0 -2
- data/src/core/lib/iomgr/endpoint_cfstream.cc +19 -41
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +1 -1
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +5 -6
- data/src/core/lib/iomgr/error.cc +13 -21
- data/src/core/lib/iomgr/error.h +1 -1
- data/src/core/lib/iomgr/ev_apple.cc +3 -5
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +43 -42
- data/src/core/lib/iomgr/ev_poll_posix.cc +38 -29
- data/src/core/lib/iomgr/ev_posix.cc +8 -9
- data/src/core/lib/iomgr/ev_posix.h +10 -7
- data/src/core/lib/iomgr/event_engine_shims/closure.cc +2 -2
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +14 -28
- data/src/core/lib/iomgr/exec_ctx.cc +2 -2
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +6 -15
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/fork_posix.cc +8 -10
- data/src/core/lib/iomgr/fork_windows.cc +3 -1
- data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +2 -3
- data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +3 -5
- data/src/core/lib/iomgr/internal_errqueue.cc +4 -2
- data/src/core/lib/iomgr/iocp_windows.cc +4 -3
- data/src/core/lib/iomgr/iomgr.cc +13 -17
- data/src/core/lib/iomgr/lockfree_event.cc +3 -5
- data/src/core/lib/iomgr/pollset.h +0 -2
- data/src/core/lib/iomgr/pollset_windows.cc +0 -2
- data/src/core/lib/iomgr/resolve_address_posix.cc +7 -14
- data/src/core/lib/iomgr/resolve_address_windows.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +11 -17
- data/src/core/lib/iomgr/socket_windows.cc +4 -6
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +3 -5
- data/src/core/lib/iomgr/tcp_client_posix.cc +9 -15
- data/src/core/lib/iomgr/tcp_client_windows.cc +2 -4
- data/src/core/lib/iomgr/tcp_posix.cc +57 -84
- data/src/core/lib/iomgr/tcp_posix.h +0 -2
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -3
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +4 -6
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +7 -7
- data/src/core/lib/iomgr/tcp_server_windows.cc +10 -16
- data/src/core/lib/iomgr/tcp_windows.cc +25 -41
- data/src/core/lib/iomgr/timer_generic.cc +17 -20
- data/src/core/lib/iomgr/timer_heap.cc +1 -1
- data/src/core/lib/iomgr/timer_manager.cc +17 -30
- data/src/core/lib/iomgr/unix_sockets_posix.cc +1 -1
- data/src/core/lib/iomgr/vsock.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.cc +3 -3
- data/src/core/lib/promise/activity.h +27 -4
- data/src/core/lib/promise/cancel_callback.h +24 -0
- data/src/core/lib/promise/context.h +11 -0
- data/src/core/lib/promise/detail/basic_seq.h +1 -2
- data/src/core/lib/promise/detail/join_state.h +354 -398
- data/src/core/lib/promise/detail/promise_like.h +6 -5
- data/src/core/lib/promise/detail/seq_state.h +1178 -1178
- data/src/core/lib/promise/for_each.h +6 -6
- data/src/core/lib/promise/interceptor_list.h +6 -7
- data/src/core/lib/promise/latch.h +9 -9
- data/src/core/lib/promise/map.h +17 -0
- data/src/core/lib/promise/observable.h +182 -0
- data/src/core/lib/promise/party.cc +7 -8
- data/src/core/lib/promise/party.h +10 -8
- data/src/core/lib/promise/pipe.h +16 -35
- data/src/core/lib/promise/promise.h +1 -0
- data/src/core/lib/promise/status_flag.h +2 -0
- data/src/core/lib/resource_quota/arena.cc +56 -79
- data/src/core/lib/resource_quota/arena.h +118 -209
- data/src/core/lib/resource_quota/memory_quota.cc +12 -13
- data/src/core/lib/resource_quota/memory_quota.h +2 -3
- data/src/core/lib/resource_quota/periodic_update.cc +1 -1
- data/src/core/lib/resource_quota/resource_quota.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
- data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +1 -1
- data/src/core/lib/security/authorization/evaluate_args.cc +6 -8
- data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +5 -6
- data/src/core/lib/security/authorization/grpc_server_authz_filter.h +1 -0
- data/src/core/lib/security/authorization/matchers.cc +3 -3
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +2 -2
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +2 -3
- data/src/core/lib/security/context/security_context.cc +12 -13
- data/src/core/lib/security/context/security_context.h +31 -8
- data/src/core/lib/security/credentials/alts/alts_credentials.h +1 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +3 -1
- data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +2 -3
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +5 -5
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +3 -3
- data/src/core/lib/security/credentials/call_creds_util.cc +2 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +2 -2
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +5 -3
- data/src/core/lib/security/credentials/composite/composite_credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials.cc +6 -6
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +2 -2
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +9 -11
- data/src/core/lib/security/credentials/external/external_account_credentials.h +3 -3
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +2 -2
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +4 -4
- data/src/core/lib/security/credentials/external/url_external_account_credentials.h +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.h +1 -1
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +11 -11
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +1 -1
- data/src/core/lib/security/credentials/iam/iam_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.cc +14 -15
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +6 -5
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +50 -54
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +1 -1
- data/src/core/lib/security/credentials/local/local_credentials.h +1 -1
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +12 -11
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +4 -4
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +1 -3
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +15 -21
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +21 -30
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -4
- data/src/core/lib/security/credentials/tls/grpc_tls_crl_provider.cc +3 -5
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +14 -16
- data/src/core/lib/security/credentials/tls/tls_utils.cc +4 -4
- data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -16
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +15 -12
- data/src/core/lib/security/security_connector/load_system_roots_supported.cc +6 -6
- data/src/core/lib/security/security_connector/load_system_roots_windows.cc +1 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +8 -12
- data/src/core/lib/security/security_connector/security_connector.cc +1 -4
- data/src/core/lib/security/security_connector/security_connector.h +1 -3
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +17 -19
- data/src/core/lib/security/security_connector/ssl_utils.cc +19 -21
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +29 -40
- data/src/core/lib/security/transport/auth_filters.h +1 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +7 -13
- data/src/core/lib/security/transport/server_auth_filter.cc +3 -8
- data/src/core/lib/security/util/json_util.h +1 -1
- data/src/core/lib/slice/slice.h +1 -1
- data/src/core/lib/slice/slice_refcount.h +2 -4
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/surface/api_trace.h +1 -3
- data/src/core/lib/surface/call.cc +64 -3738
- data/src/core/lib/surface/call.h +41 -143
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_utils.cc +276 -0
- data/src/core/lib/surface/call_utils.h +449 -0
- data/src/core/lib/surface/channel.cc +8 -3
- data/src/core/lib/surface/channel.h +10 -7
- data/src/core/lib/surface/channel_create.cc +14 -6
- data/src/core/lib/surface/channel_create.h +3 -2
- data/src/core/lib/surface/channel_init.cc +21 -77
- data/src/core/lib/surface/channel_init.h +19 -97
- data/src/core/lib/surface/client_call.cc +419 -0
- data/src/core/lib/surface/client_call.h +180 -0
- data/src/core/lib/surface/completion_queue.cc +28 -33
- data/src/core/lib/surface/completion_queue.h +0 -8
- data/src/core/lib/surface/filter_stack_call.cc +1157 -0
- data/src/core/lib/surface/filter_stack_call.h +369 -0
- data/src/core/lib/surface/init.cc +7 -6
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/legacy_channel.cc +40 -27
- data/src/core/lib/surface/legacy_channel.h +9 -18
- data/src/core/lib/surface/server_call.cc +222 -0
- data/src/core/lib/surface/server_call.h +167 -0
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +3 -5
- data/src/core/lib/transport/bdp_estimator.h +2 -4
- data/src/core/lib/transport/call_arena_allocator.h +9 -7
- data/src/core/lib/transport/call_destination.h +76 -0
- data/src/core/lib/transport/call_filters.cc +28 -10
- data/src/core/lib/transport/call_filters.h +128 -22
- data/src/core/lib/transport/call_spine.cc +5 -6
- data/src/core/lib/transport/call_spine.h +159 -334
- data/src/core/lib/transport/connectivity_state.cc +8 -10
- data/src/core/lib/transport/connectivity_state.h +0 -2
- data/src/core/lib/transport/interception_chain.cc +155 -0
- data/src/core/lib/transport/interception_chain.h +236 -0
- data/src/core/lib/transport/metadata_batch.h +10 -1
- data/src/core/lib/transport/metadata_info.h +1 -1
- data/src/core/lib/transport/transport.cc +3 -6
- data/src/core/lib/transport/transport.h +43 -40
- data/src/core/load_balancing/child_policy_handler.cc +8 -8
- data/src/core/load_balancing/endpoint_list.cc +5 -5
- data/src/core/load_balancing/endpoint_list.h +1 -1
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +1 -0
- data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -0
- data/src/core/load_balancing/grpclb/grpclb.cc +25 -29
- data/src/core/load_balancing/grpclb/grpclb_balancer_addresses.cc +1 -1
- data/src/core/load_balancing/grpclb/load_balancer_api.cc +3 -4
- data/src/core/load_balancing/health_check_client.cc +10 -13
- data/src/core/load_balancing/lb_policy.cc +5 -8
- data/src/core/load_balancing/lb_policy.h +19 -3
- data/src/core/load_balancing/lb_policy_factory.h +1 -1
- data/src/core/load_balancing/lb_policy_registry.cc +2 -3
- data/src/core/load_balancing/lb_policy_registry.h +1 -1
- data/src/core/load_balancing/oob_backend_metric.cc +2 -4
- data/src/core/load_balancing/outlier_detection/outlier_detection.cc +33 -35
- data/src/core/load_balancing/outlier_detection/outlier_detection.h +3 -3
- data/src/core/load_balancing/pick_first/pick_first.cc +65 -65
- data/src/core/load_balancing/priority/priority.cc +26 -28
- data/src/core/load_balancing/ring_hash/ring_hash.cc +11 -13
- data/src/core/load_balancing/ring_hash/ring_hash.h +3 -3
- data/src/core/load_balancing/rls/rls.cc +82 -82
- data/src/core/load_balancing/round_robin/round_robin.cc +17 -20
- data/src/core/load_balancing/weighted_round_robin/weighted_round_robin.cc +54 -43
- data/src/core/load_balancing/weighted_target/weighted_target.cc +21 -24
- data/src/core/load_balancing/xds/cds.cc +14 -16
- data/src/core/load_balancing/xds/xds_cluster_impl.cc +16 -18
- data/src/core/load_balancing/xds/xds_cluster_manager.cc +15 -17
- data/src/core/load_balancing/xds/xds_override_host.cc +40 -41
- data/src/core/load_balancing/xds/xds_override_host.h +3 -3
- data/src/core/load_balancing/xds/xds_wrr_locality.cc +10 -12
- data/src/core/plugin_registry/grpc_plugin_registry.cc +5 -1
- data/src/core/resolver/binder/binder_resolver.cc +3 -2
- data/src/core/resolver/dns/c_ares/dns_resolver_ares.cc +3 -2
- data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +7 -14
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -5
- data/src/core/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/resolver/dns/dns_resolver_plugin.cc +6 -5
- data/src/core/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +4 -9
- data/src/core/resolver/dns/event_engine/service_config_helper.cc +5 -5
- data/src/core/resolver/dns/native/dns_resolver.cc +8 -9
- data/src/core/resolver/endpoint_addresses.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/resolver/fake/fake_resolver.h +1 -1
- data/src/core/resolver/google_c2p/google_c2p_resolver.cc +13 -14
- data/src/core/resolver/polling_resolver.cc +30 -35
- data/src/core/resolver/resolver.cc +2 -6
- data/src/core/resolver/resolver.h +0 -2
- data/src/core/resolver/resolver_registry.cc +6 -8
- data/src/core/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/resolver/xds/xds_dependency_manager.cc +22 -23
- data/src/core/resolver/xds/xds_resolver.cc +13 -15
- data/src/core/server/server.cc +269 -389
- data/src/core/server/server.h +37 -19
- data/src/core/server/server_call_tracer_filter.cc +7 -14
- data/src/core/server/server_config_selector.h +1 -1
- data/src/core/server/server_config_selector_filter.cc +3 -3
- data/src/core/server/server_interface.h +2 -0
- data/src/core/server/xds_channel_stack_modifier.cc +1 -1
- data/src/core/server/xds_channel_stack_modifier.h +1 -1
- data/src/core/server/xds_server_config_fetcher.cc +1 -4
- data/src/core/service_config/service_config.h +1 -1
- data/src/core/service_config/service_config_call_data.h +13 -11
- data/src/core/service_config/service_config_channel_arg_filter.cc +6 -4
- data/src/core/service_config/service_config_impl.cc +5 -5
- data/src/core/service_config/service_config_impl.h +1 -1
- data/src/core/service_config/service_config_parser.cc +3 -6
- data/src/core/service_config/service_config_parser.h +1 -1
- data/src/core/{lib/channel → telemetry}/call_tracer.cc +20 -30
- data/src/core/{lib/channel → telemetry}/call_tracer.h +32 -9
- data/src/core/{lib/debug → telemetry}/histogram_view.cc +1 -1
- data/src/core/{lib/debug → telemetry}/histogram_view.h +3 -3
- data/src/core/telemetry/metrics.cc +178 -0
- data/src/core/telemetry/metrics.h +562 -0
- data/src/core/{lib/debug → telemetry}/stats.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats.h +5 -5
- data/src/core/{lib/debug → telemetry}/stats_data.cc +1 -1
- data/src/core/{lib/debug → telemetry}/stats_data.h +4 -4
- data/src/core/{lib/channel → telemetry}/tcp_tracer.h +3 -3
- data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +12 -13
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +25 -27
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -33
- data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
- data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +5 -4
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +5 -3
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -3
- data/src/core/tsi/fake_transport_security.cc +14 -17
- data/src/core/tsi/local_transport_security.cc +6 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +4 -4
- data/src/core/tsi/ssl_transport_security.cc +76 -81
- data/src/core/tsi/ssl_transport_security_utils.cc +74 -18
- data/src/core/tsi/ssl_transport_security_utils.h +11 -0
- data/src/core/tsi/transport_security.cc +0 -4
- data/src/core/tsi/transport_security.h +0 -2
- data/src/core/tsi/transport_security_interface.h +0 -4
- data/src/core/{lib/gpr → util}/alloc.h +3 -3
- data/src/core/{lib/gpr → util}/android/log.cc +0 -19
- data/src/core/{lib/gpr → util}/atm.cc +1 -1
- data/src/core/{ext/gcp/metadata_query.cc → util/gcp_metadata_query.cc} +25 -26
- data/src/core/{ext/gcp/metadata_query.h → util/gcp_metadata_query.h} +11 -11
- data/src/core/{lib/http → util/http_client}/format_request.cc +4 -3
- data/src/core/{lib/http → util/http_client}/format_request.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli.cc +9 -10
- data/src/core/{lib/http → util/http_client}/httpcli.h +6 -5
- data/src/core/{lib/http → util/http_client}/httpcli_security_connector.cc +9 -9
- data/src/core/{lib/http → util/http_client}/httpcli_ssl_credentials.h +5 -4
- data/src/core/{lib/http → util/http_client}/parser.cc +4 -5
- data/src/core/{lib/http → util/http_client}/parser.h +5 -6
- data/src/core/{lib → util}/json/json.h +5 -4
- data/src/core/{lib → util}/json/json_args.h +5 -5
- data/src/core/{lib → util}/json/json_channel_args.h +6 -6
- data/src/core/{lib → util}/json/json_object_loader.cc +3 -2
- data/src/core/{lib → util}/json/json_object_loader.h +7 -7
- data/src/core/{lib → util}/json/json_reader.cc +3 -2
- data/src/core/{lib → util}/json/json_reader.h +6 -6
- data/src/core/{lib → util}/json/json_util.cc +4 -4
- data/src/core/{lib → util}/json/json_util.h +6 -6
- data/src/core/{lib → util}/json/json_writer.cc +3 -3
- data/src/core/{lib → util}/json/json_writer.h +6 -6
- data/src/core/{lib/gpr → util}/linux/log.cc +0 -45
- data/src/core/util/log.cc +165 -0
- data/src/core/{lib/gpr → util}/msys/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/posix/cpu.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/log.cc +0 -42
- data/src/core/{lib/gpr → util}/posix/time.cc +1 -1
- data/src/core/{lib/gpr → util}/posix/tmpfile.cc +2 -2
- data/src/core/{lib/gpr → util}/spinlock.h +3 -3
- data/src/core/{lib/gpr → util}/string.cc +2 -2
- data/src/core/{lib/gpr → util}/string.h +3 -3
- data/src/core/{lib/gpr → util}/time_precise.cc +1 -1
- data/src/core/{lib/gpr → util}/time_precise.h +3 -3
- data/src/core/{lib/gpr → util}/tmpfile.h +3 -3
- data/src/core/{lib/gpr → util}/useful.h +3 -3
- data/src/core/{lib/gpr → util}/windows/log.cc +1 -44
- data/src/core/{lib/gpr → util}/windows/string.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/string_util.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/time.cc +1 -1
- data/src/core/{lib/gpr → util}/windows/tmpfile.cc +1 -1
- data/src/core/xds/grpc/certificate_provider_store.cc +3 -3
- data/src/core/xds/grpc/certificate_provider_store.h +4 -4
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +3 -3
- data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +3 -3
- data/src/core/xds/grpc/xds_audit_logger_registry.h +1 -1
- data/src/core/xds/grpc/xds_bootstrap_grpc.cc +5 -5
- data/src/core/xds/grpc/xds_bootstrap_grpc.h +3 -3
- data/src/core/xds/grpc/xds_certificate_provider.h +1 -1
- data/src/core/xds/grpc/xds_client_grpc.cc +27 -23
- data/src/core/xds/grpc/xds_client_grpc.h +2 -2
- data/src/core/xds/grpc/xds_cluster.cc +4 -5
- data/src/core/xds/grpc/xds_cluster.h +1 -1
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.cc +2 -2
- data/src/core/xds/grpc/xds_cluster_specifier_plugin.h +1 -1
- data/src/core/xds/grpc/xds_common_types.cc +1 -1
- data/src/core/xds/grpc/xds_common_types.h +1 -1
- data/src/core/xds/grpc/xds_endpoint.cc +4 -5
- data/src/core/xds/grpc/xds_http_fault_filter.cc +2 -2
- data/src/core/xds/grpc/xds_http_filters.h +2 -2
- data/src/core/xds/grpc/xds_http_rbac_filter.cc +3 -3
- data/src/core/xds/grpc/xds_http_stateful_session_filter.cc +2 -2
- data/src/core/xds/grpc/xds_lb_policy_registry.h +1 -1
- data/src/core/xds/grpc/xds_listener.cc +4 -6
- data/src/core/xds/grpc/xds_route_config.cc +7 -8
- data/src/core/xds/grpc/xds_transport_grpc.cc +2 -2
- data/src/core/xds/grpc/xds_transport_grpc.h +1 -1
- data/src/core/xds/xds_client/xds_api.cc +5 -9
- data/src/core/xds/xds_client/xds_bootstrap.cc +1 -1
- data/src/core/xds/xds_client/xds_bootstrap.h +1 -1
- data/src/core/xds/xds_client/xds_client.cc +39 -45
- data/src/core/xds/xds_client/xds_client.h +0 -3
- data/src/core/xds/xds_client/xds_client_stats.cc +6 -6
- data/src/core/xds/xds_client/xds_client_stats.h +2 -2
- data/src/ruby/bin/math_pb.rb +1 -22
- data/src/ruby/ext/grpc/rb_call.c +8 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +15 -32
- data/src/ruby/ext/grpc/rb_completion_queue.h +7 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -2
- data/src/ruby/ext/grpc/rb_server.c +39 -22
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +1 -22
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services_pb.rb +5 -5
- data/src/ruby/pb/grpc/testing/metrics_pb.rb +10 -19
- data/src/ruby/pb/grpc/testing/metrics_services_pb.rb +5 -5
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +1 -22
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +1 -22
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +66 -41
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/dilithium.c +1497 -0
- data/third_party/boringssl-with-bazel/src/crypto/dilithium/internal.h +58 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -3
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c +0 -2
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +5 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +45 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +33 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c +3 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/internal.h +9 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +6 -0
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +7 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +0 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/v3_utl.c +49 -16
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +0 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +7 -17
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +8 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +3 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/experimental/dilithium.h +125 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +0 -23
- data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -10
- metadata +103 -93
- data/src/core/ext/transport/chttp2/transport/http_trace.cc +0 -19
- data/src/core/ext/transport/chttp2/transport/http_trace.h +0 -24
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -23
- data/src/core/handshaker/security/tsi_error.cc +0 -31
- data/src/core/handshaker/security/tsi_error.h +0 -30
- data/src/core/lib/channel/channel_stack_trace.cc +0 -19
- data/src/core/lib/channel/channel_stack_trace.h +0 -24
- data/src/core/lib/channel/context.h +0 -105
- data/src/core/lib/channel/metrics.cc +0 -334
- data/src/core/lib/channel/metrics.h +0 -365
- data/src/core/lib/event_engine/trace.cc +0 -25
- data/src/core/lib/gpr/log.cc +0 -166
- data/src/core/lib/iomgr/ev_windows.cc +0 -30
- data/src/core/lib/promise/trace.cc +0 -20
- data/src/core/lib/promise/trace.h +0 -24
- data/src/core/lib/resource_quota/trace.cc +0 -19
- data/src/core/lib/resource_quota/trace.h +0 -24
- data/src/core/lib/slice/slice_refcount.cc +0 -20
- data/src/core/lib/surface/api_trace.cc +0 -25
- data/src/core/lib/surface/call_trace.h +0 -24
- data/src/core/lib/surface/wait_for_cq_end_op.cc +0 -75
- data/src/core/lib/surface/wait_for_cq_end_op.h +0 -72
- data/src/core/lib/transport/batch_builder.cc +0 -172
- data/src/core/lib/transport/batch_builder.h +0 -474
- data/src/core/resolver/xds/xds_resolver_trace.cc +0 -25
- data/src/core/resolver/xds/xds_resolver_trace.h +0 -30
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +0 -122
- /data/src/core/{lib/gpr → util}/alloc.cc +0 -0
- /data/src/core/{lib/gpr → util}/iphone/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/linux/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/string.cc +0 -0
- /data/src/core/{lib/gpr → util}/posix/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync.cc +0 -0
- /data/src/core/{lib/gpr → util}/sync_abseil.cc +0 -0
- /data/src/core/{lib/gpr → util}/time.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/cpu.cc +0 -0
- /data/src/core/{lib/gpr → util}/windows/sync.cc +0 -0
@@ -0,0 +1,58 @@
|
|
1
|
+
/* Copyright (c) 2023, Google LLC
|
2
|
+
*
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
6
|
+
*
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
14
|
+
|
15
|
+
#ifndef OPENSSL_HEADER_CRYPTO_DILITHIUM_INTERNAL_H
|
16
|
+
#define OPENSSL_HEADER_CRYPTO_DILITHIUM_INTERNAL_H
|
17
|
+
|
18
|
+
#include <openssl/base.h>
|
19
|
+
#include <openssl/experimental/dilithium.h>
|
20
|
+
|
21
|
+
#if defined(__cplusplus)
|
22
|
+
extern "C" {
|
23
|
+
#endif
|
24
|
+
|
25
|
+
|
26
|
+
// DILITHIUM_GENERATE_KEY_ENTROPY is the number of bytes of uniformly random
|
27
|
+
// entropy necessary to generate a key pair.
|
28
|
+
#define DILITHIUM_GENERATE_KEY_ENTROPY 32
|
29
|
+
|
30
|
+
// DILITHIUM_SIGNATURE_RANDOMIZER_BYTES is the number of bytes of uniformly
|
31
|
+
// random entropy necessary to generate a signature in randomized mode.
|
32
|
+
#define DILITHIUM_SIGNATURE_RANDOMIZER_BYTES 32
|
33
|
+
|
34
|
+
// DILITHIUM_generate_key_external_entropy generates a public/private key pair
|
35
|
+
// using the given seed, writes the encoded public key to
|
36
|
+
// |out_encoded_public_key| and sets |out_private_key| to the private key,
|
37
|
+
// returning 1 on success and 0 on failure. Returns 1 on success and 0 on
|
38
|
+
// failure.
|
39
|
+
OPENSSL_EXPORT int DILITHIUM_generate_key_external_entropy(
|
40
|
+
uint8_t out_encoded_public_key[DILITHIUM_PUBLIC_KEY_BYTES],
|
41
|
+
struct DILITHIUM_private_key *out_private_key,
|
42
|
+
const uint8_t entropy[DILITHIUM_GENERATE_KEY_ENTROPY]);
|
43
|
+
|
44
|
+
// DILITHIUM_sign_deterministic generates a signature for the message |msg| of
|
45
|
+
// length |msg_len| using |private_key| following the deterministic algorithm,
|
46
|
+
// and writes the encoded signature to |out_encoded_signature|. Returns 1 on
|
47
|
+
// success and 0 on failure.
|
48
|
+
OPENSSL_EXPORT int DILITHIUM_sign_deterministic(
|
49
|
+
uint8_t out_encoded_signature[DILITHIUM_SIGNATURE_BYTES],
|
50
|
+
const struct DILITHIUM_private_key *private_key, const uint8_t *msg,
|
51
|
+
size_t msg_len);
|
52
|
+
|
53
|
+
|
54
|
+
#if defined(__cplusplus)
|
55
|
+
} // extern C
|
56
|
+
#endif
|
57
|
+
|
58
|
+
#endif // OPENSSL_HEADER_CRYPTO_DILITHIUM_INTERNAL_H
|
@@ -208,6 +208,11 @@ int DSA_set0_pqg(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g) {
|
|
208
208
|
int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
209
209
|
size_t seed_len, int *out_counter,
|
210
210
|
unsigned long *out_h, BN_GENCB *cb) {
|
211
|
+
if (bits > OPENSSL_DSA_MAX_MODULUS_BITS) {
|
212
|
+
OPENSSL_PUT_ERROR(DSA, DSA_R_INVALID_PARAMETERS);
|
213
|
+
return 0;
|
214
|
+
}
|
215
|
+
|
211
216
|
int ok = 0;
|
212
217
|
unsigned char seed[SHA256_DIGEST_LENGTH];
|
213
218
|
unsigned char md[SHA256_DIGEST_LENGTH];
|
@@ -479,11 +484,13 @@ DSA *DSAparams_dup(const DSA *dsa) {
|
|
479
484
|
}
|
480
485
|
|
481
486
|
int DSA_generate_key(DSA *dsa) {
|
487
|
+
if (!dsa_check_key(dsa)) {
|
488
|
+
return 0;
|
489
|
+
}
|
490
|
+
|
482
491
|
int ok = 0;
|
483
|
-
BN_CTX *ctx = NULL;
|
484
492
|
BIGNUM *pub_key = NULL, *priv_key = NULL;
|
485
|
-
|
486
|
-
ctx = BN_CTX_new();
|
493
|
+
BN_CTX *ctx = BN_CTX_new();
|
487
494
|
if (ctx == NULL) {
|
488
495
|
goto err;
|
489
496
|
}
|
@@ -65,8 +65,6 @@
|
|
65
65
|
#include "../bytestring/internal.h"
|
66
66
|
|
67
67
|
|
68
|
-
#define OPENSSL_DSA_MAX_MODULUS_BITS 10000
|
69
|
-
|
70
68
|
// This function is in dsa_asn1.c rather than dsa.c because it is reachable from
|
71
69
|
// |EVP_PKEY| parsers. This makes it easier for the static linker to drop most
|
72
70
|
// of the DSA implementation.
|
@@ -42,6 +42,8 @@ struct dsa_st {
|
|
42
42
|
CRYPTO_EX_DATA ex_data;
|
43
43
|
};
|
44
44
|
|
45
|
+
#define OPENSSL_DSA_MAX_MODULUS_BITS 10000
|
46
|
+
|
45
47
|
// dsa_check_key performs cheap self-checks on |dsa|, and ensures it is within
|
46
48
|
// DoS bounds. It returns one on success and zero on error.
|
47
49
|
int dsa_check_key(const DSA *dsa);
|
@@ -263,6 +263,11 @@ int BORINGSSL_integrity_test(void) {
|
|
263
263
|
OPENSSL_cleanse(result, sizeof(result)); // FIPS 140-3, AS05.10.
|
264
264
|
return 1;
|
265
265
|
}
|
266
|
+
|
267
|
+
const uint8_t* FIPS_module_hash(void) {
|
268
|
+
return BORINGSSL_bcm_text_hash;
|
269
|
+
}
|
270
|
+
|
266
271
|
#endif // OPENSSL_ASAN
|
267
272
|
|
268
273
|
void BORINGSSL_FIPS_abort(void) {
|
@@ -119,6 +119,50 @@
|
|
119
119
|
#include "internal.h"
|
120
120
|
#include "rsaz_exp.h"
|
121
121
|
|
122
|
+
#if defined(OPENSSL_BN_ASM_MONT5)
|
123
|
+
|
124
|
+
// bn_mul_mont_gather5 multiples loads index |power| of |table|, multiplies it
|
125
|
+
// by |ap| modulo |np|, and stores the result in |rp|. The values are |num|
|
126
|
+
// words long and represented in Montgomery form. |n0| is a pointer to the
|
127
|
+
// corresponding field in |BN_MONT_CTX|. |table| must be aligned to at least
|
128
|
+
// 16 bytes. |power| must be less than 32 and is treated as secret.
|
129
|
+
//
|
130
|
+
// WARNING: This function implements Almost Montgomery Multiplication from
|
131
|
+
// https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
|
132
|
+
// However, even if they are fully reduced, the output may not be.
|
133
|
+
static void bn_mul_mont_gather5(
|
134
|
+
BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table, const BN_ULONG *np,
|
135
|
+
const BN_ULONG *n0, int num, int power) {
|
136
|
+
if (bn_mulx4x_mont_gather5_capable(num)) {
|
137
|
+
bn_mulx4x_mont_gather5(rp, ap, table, np, n0, num, power);
|
138
|
+
} else if (bn_mul4x_mont_gather5_capable(num)) {
|
139
|
+
bn_mul4x_mont_gather5(rp, ap, table, np, n0, num, power);
|
140
|
+
} else {
|
141
|
+
bn_mul_mont_gather5_nohw(rp, ap, table, np, n0, num, power);
|
142
|
+
}
|
143
|
+
}
|
144
|
+
|
145
|
+
// bn_power5 squares |ap| five times and multiplies it by the value stored at
|
146
|
+
// index |power| of |table|, modulo |np|. It stores the result in |rp|. The
|
147
|
+
// values are |num| words long and represented in Montgomery form. |n0| is a
|
148
|
+
// pointer to the corresponding field in |BN_MONT_CTX|. |num| must be divisible
|
149
|
+
// by 8. |power| must be less than 32 and is treated as secret.
|
150
|
+
//
|
151
|
+
// WARNING: This function implements Almost Montgomery Multiplication from
|
152
|
+
// https://eprint.iacr.org/2011/239. The inputs do not need to be fully reduced.
|
153
|
+
// However, even if they are fully reduced, the output may not be.
|
154
|
+
static void bn_power5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
|
155
|
+
const BN_ULONG *np, const BN_ULONG *n0, int num,
|
156
|
+
int power) {
|
157
|
+
assert(bn_power5_capable(num));
|
158
|
+
if (bn_powerx5_capable(num)) {
|
159
|
+
bn_powerx5(rp, ap, table, np, n0, num, power);
|
160
|
+
} else {
|
161
|
+
bn_power5_nohw(rp, ap, table, np, n0, num, power);
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
#endif // defined(OPENSSL_BN_ASM_MONT5)
|
122
166
|
|
123
167
|
int BN_exp(BIGNUM *r, const BIGNUM *a, const BIGNUM *p, BN_CTX *ctx) {
|
124
168
|
int i, bits, ret = 0;
|
@@ -1079,7 +1123,7 @@ int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a, const BIGNUM *p,
|
|
1079
1123
|
|
1080
1124
|
// Scan the exponent one window at a time starting from the most
|
1081
1125
|
// significant bits.
|
1082
|
-
if (top
|
1126
|
+
if (!bn_power5_capable(top)) {
|
1083
1127
|
while (bits >= 0) {
|
1084
1128
|
for (wvalue = 0, i = 0; i < 5; i++, bits--) {
|
1085
1129
|
wvalue = (wvalue << 1) + BN_is_bit_set(p, bits);
|
@@ -438,18 +438,26 @@ int bn_mul_mont_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *bp,
|
|
438
438
|
#if !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64)
|
439
439
|
#define OPENSSL_BN_ASM_MONT5
|
440
440
|
|
441
|
-
//
|
442
|
-
//
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
441
|
+
// The following functions implement |bn_mul_mont_gather5|. See
|
442
|
+
// |bn_mul_mont_gather5| for details.
|
443
|
+
OPENSSL_INLINE int bn_mul4x_mont_gather5_capable(int num) {
|
444
|
+
return (num & 7) == 0;
|
445
|
+
}
|
446
|
+
void bn_mul4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
447
|
+
const BN_ULONG *table, const BN_ULONG *np,
|
448
|
+
const BN_ULONG *n0, int num, int power);
|
449
|
+
|
450
|
+
OPENSSL_INLINE int bn_mulx4x_mont_gather5_capable(int num) {
|
451
|
+
return bn_mul4x_mont_gather5_capable(num) && CRYPTO_is_ADX_capable() &&
|
452
|
+
CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
|
453
|
+
}
|
454
|
+
void bn_mulx4x_mont_gather5(BN_ULONG *rp, const BN_ULONG *ap,
|
455
|
+
const BN_ULONG *table, const BN_ULONG *np,
|
456
|
+
const BN_ULONG *n0, int num, int power);
|
457
|
+
|
458
|
+
void bn_mul_mont_gather5_nohw(BN_ULONG *rp, const BN_ULONG *ap,
|
459
|
+
const BN_ULONG *table, const BN_ULONG *np,
|
460
|
+
const BN_ULONG *n0, int num, int power);
|
453
461
|
|
454
462
|
// bn_scatter5 stores |inp| to index |power| of |table|. |inp| and each entry of
|
455
463
|
// |table| are |num| words long. |power| must be less than 32 and is treated as
|
@@ -463,17 +471,19 @@ void bn_scatter5(const BN_ULONG *inp, size_t num, BN_ULONG *table,
|
|
463
471
|
// is treated as secret. |table| must be aligned to at least 16 bytes.
|
464
472
|
void bn_gather5(BN_ULONG *out, size_t num, const BN_ULONG *table, size_t power);
|
465
473
|
|
466
|
-
//
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
474
|
+
// The following functions implement |bn_power5|. See |bn_power5| for details.
|
475
|
+
void bn_power5_nohw(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
|
476
|
+
const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
|
477
|
+
|
478
|
+
OPENSSL_INLINE int bn_power5_capable(int num) { return (num & 7) == 0; }
|
479
|
+
|
480
|
+
OPENSSL_INLINE int bn_powerx5_capable(int num) {
|
481
|
+
return bn_power5_capable(num) && CRYPTO_is_ADX_capable() &&
|
482
|
+
CRYPTO_is_BMI1_capable() && CRYPTO_is_BMI2_capable();
|
483
|
+
}
|
484
|
+
void bn_powerx5(BN_ULONG *rp, const BN_ULONG *ap, const BN_ULONG *table,
|
485
|
+
const BN_ULONG *np, const BN_ULONG *n0, int num, int power);
|
486
|
+
|
477
487
|
#endif // !OPENSSL_NO_ASM && OPENSSL_X86_64
|
478
488
|
|
479
489
|
uint64_t bn_mont_n0(const BIGNUM *n);
|
@@ -20,13 +20,10 @@
|
|
20
20
|
// that must be replaced with the real value during the build process. This
|
21
21
|
// value need only be distinct, i.e. so that we can safely search-and-replace it
|
22
22
|
// in an object file.
|
23
|
-
const uint8_t BORINGSSL_bcm_text_hash[
|
24
|
-
const uint8_t BORINGSSL_bcm_text_hash[
|
23
|
+
const uint8_t BORINGSSL_bcm_text_hash[32];
|
24
|
+
const uint8_t BORINGSSL_bcm_text_hash[32] = {
|
25
25
|
0xae, 0x2c, 0xea, 0x2a, 0xbd, 0xa6, 0xf3, 0xec, 0x97, 0x7f, 0x9b,
|
26
26
|
0xf6, 0x94, 0x9a, 0xfc, 0x83, 0x68, 0x27, 0xcb, 0xa0, 0xa0, 0x9f,
|
27
|
-
0x6b, 0x6f, 0xde, 0x52, 0xcd, 0xe2, 0xcd, 0xff, 0x31, 0x80,
|
28
|
-
0xd4, 0xc3, 0x66, 0x0f, 0xc2, 0x6a, 0x7b, 0xf4, 0xbe, 0x39, 0xa2,
|
29
|
-
0xd7, 0x25, 0xdb, 0x21, 0x98, 0xe9, 0xd5, 0x53, 0xbf, 0x5c, 0x32,
|
30
|
-
0x06, 0x83, 0x34, 0x0c, 0x65, 0x89, 0x52, 0xbd, 0x1f,
|
27
|
+
0x6b, 0x6f, 0xde, 0x52, 0xcd, 0xe2, 0xcd, 0xff, 0x31, 0x80,
|
31
28
|
};
|
32
29
|
#endif // FIPS && SHARED_LIBRARY
|
@@ -80,6 +80,7 @@ OPENSSL_INLINE int sha512_hw_capable(void) {
|
|
80
80
|
|
81
81
|
#define SHA1_ASM_NOHW
|
82
82
|
#define SHA256_ASM_NOHW
|
83
|
+
#define SHA512_ASM_NOHW
|
83
84
|
|
84
85
|
#define SHA1_ASM_SSSE3
|
85
86
|
OPENSSL_INLINE int sha1_ssse3_capable(void) {
|
@@ -127,10 +128,14 @@ OPENSSL_INLINE int sha256_avx_capable(void) {
|
|
127
128
|
void sha256_block_data_order_avx(uint32_t state[8], const uint8_t *data,
|
128
129
|
size_t num);
|
129
130
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
131
|
+
#define SHA512_ASM_SSSE3
|
132
|
+
OPENSSL_INLINE int sha512_ssse3_capable(void) {
|
133
|
+
// TODO(davidben): Do we need to check the FXSR bit? The Intel manual does not
|
134
|
+
// say to.
|
135
|
+
return CRYPTO_is_SSSE3_capable() && CRYPTO_is_FXSR_capable();
|
136
|
+
}
|
137
|
+
void sha512_block_data_order_ssse3(uint64_t state[8], const uint8_t *data,
|
138
|
+
size_t num);
|
134
139
|
|
135
140
|
#elif !defined(OPENSSL_NO_ASM) && defined(OPENSSL_X86_64)
|
136
141
|
|
@@ -516,6 +516,12 @@ static void sha512_block_data_order(uint64_t state[8], const uint8_t *data,
|
|
516
516
|
return;
|
517
517
|
}
|
518
518
|
#endif
|
519
|
+
#if defined(SHA512_ASM_SSSE3)
|
520
|
+
if (sha512_ssse3_capable()) {
|
521
|
+
sha512_block_data_order_ssse3(state, data, num);
|
522
|
+
return;
|
523
|
+
}
|
524
|
+
#endif
|
519
525
|
#if defined(SHA512_ASM_NEON)
|
520
526
|
if (CRYPTO_is_NEON_capable()) {
|
521
527
|
sha512_block_data_order_neon(state, data, num);
|
@@ -1174,6 +1174,11 @@ static inline uint64_t CRYPTO_rotr_u64(uint64_t value, int shift) {
|
|
1174
1174
|
|
1175
1175
|
// Arithmetic functions.
|
1176
1176
|
|
1177
|
+
// The most efficient versions of these functions on GCC and Clang depend on C11
|
1178
|
+
// |_Generic|. If we ever need to call these from C++, we'll need to add a
|
1179
|
+
// variant that uses C++ overloads instead.
|
1180
|
+
#if !defined(__cplusplus)
|
1181
|
+
|
1177
1182
|
// CRYPTO_addc_* returns |x + y + carry|, and sets |*out_carry| to the carry
|
1178
1183
|
// bit. |carry| must be zero or one.
|
1179
1184
|
#if OPENSSL_HAS_BUILTIN(__builtin_addc)
|
@@ -1275,6 +1280,8 @@ static inline uint64_t CRYPTO_subc_u64(uint64_t x, uint64_t y, uint64_t borrow,
|
|
1275
1280
|
#define CRYPTO_subc_w CRYPTO_subc_u32
|
1276
1281
|
#endif
|
1277
1282
|
|
1283
|
+
#endif // !__cplusplus
|
1284
|
+
|
1278
1285
|
|
1279
1286
|
// FIPS functions.
|
1280
1287
|
|
@@ -341,8 +341,6 @@ struct x509_store_st {
|
|
341
341
|
|
342
342
|
// Callbacks for various operations
|
343
343
|
X509_STORE_CTX_verify_cb verify_cb; // error callback
|
344
|
-
X509_STORE_CTX_get_crl_fn get_crl; // retrieve CRL
|
345
|
-
X509_STORE_CTX_check_crl_fn check_crl; // Check CRL validity
|
346
344
|
|
347
345
|
CRYPTO_refcount_t references;
|
348
346
|
} /* X509_STORE */;
|
@@ -374,8 +372,6 @@ struct x509_store_ctx_st {
|
|
374
372
|
|
375
373
|
// Callbacks for various operations
|
376
374
|
X509_STORE_CTX_verify_cb verify_cb; // error callback
|
377
|
-
X509_STORE_CTX_get_crl_fn get_crl; // retrieve CRL
|
378
|
-
X509_STORE_CTX_check_crl_fn check_crl; // Check CRL validity
|
379
375
|
|
380
376
|
// The following is built up
|
381
377
|
int last_untrusted; // index of last untrusted cert
|
@@ -82,10 +82,10 @@ static void str_free(OPENSSL_STRING str);
|
|
82
82
|
static int append_ia5(STACK_OF(OPENSSL_STRING) **sk,
|
83
83
|
const ASN1_IA5STRING *email);
|
84
84
|
|
85
|
-
static int ipv4_from_asc(
|
86
|
-
static int ipv6_from_asc(
|
85
|
+
static int ipv4_from_asc(uint8_t v4[4], const char *in);
|
86
|
+
static int ipv6_from_asc(uint8_t v6[16], const char *in);
|
87
87
|
static int ipv6_cb(const char *elem, size_t len, void *usr);
|
88
|
-
static int ipv6_hex(
|
88
|
+
static int ipv6_hex(uint8_t *out, const char *in, size_t inlen);
|
89
89
|
|
90
90
|
// Add a CONF_VALUE name value pair to stack
|
91
91
|
|
@@ -1154,7 +1154,7 @@ err:
|
|
1154
1154
|
return NULL;
|
1155
1155
|
}
|
1156
1156
|
|
1157
|
-
int x509v3_a2i_ipadd(
|
1157
|
+
int x509v3_a2i_ipadd(uint8_t ipout[16], const char *ipasc) {
|
1158
1158
|
// If string contains a ':' assume IPv6
|
1159
1159
|
|
1160
1160
|
if (strchr(ipasc, ':')) {
|
@@ -1170,25 +1170,58 @@ int x509v3_a2i_ipadd(unsigned char ipout[16], const char *ipasc) {
|
|
1170
1170
|
}
|
1171
1171
|
}
|
1172
1172
|
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1173
|
+
// get_ipv4_component consumes one IPv4 component, terminated by either '.' or
|
1174
|
+
// the end of the string, from |*str|. On success, it returns one, sets |*out|
|
1175
|
+
// to the component, and advances |*str| to the first unconsumed character. On
|
1176
|
+
// invalid input, it returns zero.
|
1177
|
+
static int get_ipv4_component(uint8_t *out_byte, const char **str) {
|
1178
|
+
// Store a slightly larger intermediary so the overflow check is easier.
|
1179
|
+
uint32_t out = 0;
|
1180
|
+
for (;;) {
|
1181
|
+
if (!OPENSSL_isdigit(**str)) {
|
1182
|
+
return 0;
|
1183
|
+
}
|
1184
|
+
out = (out * 10) + (**str - '0');
|
1185
|
+
if (out > 255) {
|
1186
|
+
// Components must be 8-bit.
|
1187
|
+
return 0;
|
1188
|
+
}
|
1189
|
+
(*str)++;
|
1190
|
+
if ((**str) == '.' || (**str) == '\0') {
|
1191
|
+
*out_byte = (uint8_t)out;
|
1192
|
+
return 1;
|
1193
|
+
}
|
1194
|
+
if (out == 0) {
|
1195
|
+
// Reject extra leading zeros. Parsers sometimes treat them as octal, so
|
1196
|
+
// accepting them would misinterpret input.
|
1197
|
+
return 0;
|
1198
|
+
}
|
1199
|
+
}
|
1200
|
+
}
|
1201
|
+
|
1202
|
+
// get_ipv4_dot consumes a '.' from |*str| and advances it. It returns one on
|
1203
|
+
// success and zero if |*str| does not point to a '.'.
|
1204
|
+
static int get_ipv4_dot(const char **str) {
|
1205
|
+
if (**str != '.') {
|
1176
1206
|
return 0;
|
1177
1207
|
}
|
1178
|
-
|
1179
|
-
|
1208
|
+
(*str)++;
|
1209
|
+
return 1;
|
1210
|
+
}
|
1211
|
+
|
1212
|
+
static int ipv4_from_asc(uint8_t v4[4], const char *in) {
|
1213
|
+
if (!get_ipv4_component(&v4[0], &in) || !get_ipv4_dot(&in) ||
|
1214
|
+
!get_ipv4_component(&v4[1], &in) || !get_ipv4_dot(&in) ||
|
1215
|
+
!get_ipv4_component(&v4[2], &in) || !get_ipv4_dot(&in) ||
|
1216
|
+
!get_ipv4_component(&v4[3], &in) || *in != '\0') {
|
1180
1217
|
return 0;
|
1181
1218
|
}
|
1182
|
-
v4[0] = a0;
|
1183
|
-
v4[1] = a1;
|
1184
|
-
v4[2] = a2;
|
1185
|
-
v4[3] = a3;
|
1186
1219
|
return 1;
|
1187
1220
|
}
|
1188
1221
|
|
1189
1222
|
typedef struct {
|
1190
1223
|
// Temporary store for IPV6 output
|
1191
|
-
|
1224
|
+
uint8_t tmp[16];
|
1192
1225
|
// Total number of bytes in tmp
|
1193
1226
|
int total;
|
1194
1227
|
// The position of a zero (corresponding to '::')
|
@@ -1197,7 +1230,7 @@ typedef struct {
|
|
1197
1230
|
int zero_cnt;
|
1198
1231
|
} IPV6_STAT;
|
1199
1232
|
|
1200
|
-
static int ipv6_from_asc(
|
1233
|
+
static int ipv6_from_asc(uint8_t v6[16], const char *in) {
|
1201
1234
|
IPV6_STAT v6stat;
|
1202
1235
|
v6stat.total = 0;
|
1203
1236
|
v6stat.zero_pos = -1;
|
@@ -1305,7 +1338,7 @@ static int ipv6_cb(const char *elem, size_t len, void *usr) {
|
|
1305
1338
|
|
1306
1339
|
// Convert a string of up to 4 hex digits into the corresponding IPv6 form.
|
1307
1340
|
|
1308
|
-
static int ipv6_hex(
|
1341
|
+
static int ipv6_hex(uint8_t *out, const char *in, size_t inlen) {
|
1309
1342
|
if (inlen > 4) {
|
1310
1343
|
return 0;
|
1311
1344
|
}
|
@@ -594,16 +594,6 @@ void X509_STORE_set_verify_cb(X509_STORE *ctx,
|
|
594
594
|
ctx->verify_cb = verify_cb;
|
595
595
|
}
|
596
596
|
|
597
|
-
void X509_STORE_set_get_crl(X509_STORE *ctx,
|
598
|
-
X509_STORE_CTX_get_crl_fn get_crl) {
|
599
|
-
ctx->get_crl = get_crl;
|
600
|
-
}
|
601
|
-
|
602
|
-
void X509_STORE_set_check_crl(X509_STORE *ctx,
|
603
|
-
X509_STORE_CTX_check_crl_fn check_crl) {
|
604
|
-
ctx->check_crl = check_crl;
|
605
|
-
}
|
606
|
-
|
607
597
|
X509_STORE *X509_STORE_CTX_get0_store(const X509_STORE_CTX *ctx) {
|
608
598
|
return ctx->ctx;
|
609
599
|
}
|
@@ -117,6 +117,7 @@ static int get_crl(X509_STORE_CTX *ctx, X509_CRL **pcrl, X509 *x);
|
|
117
117
|
static int crl_akid_check(X509_STORE_CTX *ctx, X509_CRL *crl, X509 **pissuer,
|
118
118
|
int *pcrl_score);
|
119
119
|
static int crl_crldp_check(X509 *x, X509_CRL *crl, int crl_score);
|
120
|
+
static int check_crl(X509_STORE_CTX *ctx, X509_CRL *crl);
|
120
121
|
static int cert_crl(X509_STORE_CTX *ctx, X509_CRL *crl, X509 *x);
|
121
122
|
|
122
123
|
static int internal_verify(X509_STORE_CTX *ctx);
|
@@ -769,17 +770,18 @@ static int check_cert(X509_STORE_CTX *ctx) {
|
|
769
770
|
// Try to retrieve the relevant CRL. Note that |get_crl| sets
|
770
771
|
// |current_crl_issuer| and |current_crl_score|, which |check_crl| then reads.
|
771
772
|
//
|
772
|
-
// TODO(davidben):
|
773
|
-
//
|
774
|
-
//
|
775
|
-
|
773
|
+
// TODO(davidben): The awkward internal calling convention is a historical
|
774
|
+
// artifact of when these functions were user-overridable callbacks, even
|
775
|
+
// though there was no way to set them correctly. These callbacks have since
|
776
|
+
// been removed, so we can pass input and output parameters more directly.
|
777
|
+
if (!get_crl(ctx, &crl, x)) {
|
776
778
|
ctx->error = X509_V_ERR_UNABLE_TO_GET_CRL;
|
777
779
|
ok = call_verify_cb(0, ctx);
|
778
780
|
goto err;
|
779
781
|
}
|
780
782
|
|
781
783
|
ctx->current_crl = crl;
|
782
|
-
if (!
|
784
|
+
if (!check_crl(ctx, crl) || //
|
783
785
|
!cert_crl(ctx, crl, x)) {
|
784
786
|
goto err;
|
785
787
|
}
|
@@ -1560,18 +1562,6 @@ int X509_STORE_CTX_init(X509_STORE_CTX *ctx, X509_STORE *store, X509 *x509,
|
|
1560
1562
|
ctx->verify_cb = null_callback;
|
1561
1563
|
}
|
1562
1564
|
|
1563
|
-
if (store->get_crl) {
|
1564
|
-
ctx->get_crl = store->get_crl;
|
1565
|
-
} else {
|
1566
|
-
ctx->get_crl = get_crl;
|
1567
|
-
}
|
1568
|
-
|
1569
|
-
if (store->check_crl) {
|
1570
|
-
ctx->check_crl = store->check_crl;
|
1571
|
-
} else {
|
1572
|
-
ctx->check_crl = check_crl;
|
1573
|
-
}
|
1574
|
-
|
1575
1565
|
return 1;
|
1576
1566
|
|
1577
1567
|
err:
|
@@ -714,33 +714,35 @@ OPENSSL_EXPORT void BIO_meth_free(BIO_METHOD *method);
|
|
714
714
|
// and returns one. The function should return one on success and zero on
|
715
715
|
// error.
|
716
716
|
OPENSSL_EXPORT int BIO_meth_set_create(BIO_METHOD *method,
|
717
|
-
int (*
|
717
|
+
int (*create_func)(BIO *));
|
718
718
|
|
719
719
|
// BIO_meth_set_destroy sets a function to release data associated with a |BIO|
|
720
720
|
// and returns one. The function's return value is ignored.
|
721
721
|
OPENSSL_EXPORT int BIO_meth_set_destroy(BIO_METHOD *method,
|
722
|
-
int (*
|
722
|
+
int (*destroy_func)(BIO *));
|
723
723
|
|
724
724
|
// BIO_meth_set_write sets the implementation of |BIO_write| for |method| and
|
725
725
|
// returns one. |BIO_METHOD|s which implement |BIO_write| should also implement
|
726
726
|
// |BIO_CTRL_FLUSH|. (See |BIO_meth_set_ctrl|.)
|
727
727
|
OPENSSL_EXPORT int BIO_meth_set_write(BIO_METHOD *method,
|
728
|
-
int (*
|
728
|
+
int (*write_func)(BIO *, const char *,
|
729
|
+
int));
|
729
730
|
|
730
731
|
// BIO_meth_set_read sets the implementation of |BIO_read| for |method| and
|
731
732
|
// returns one.
|
732
733
|
OPENSSL_EXPORT int BIO_meth_set_read(BIO_METHOD *method,
|
733
|
-
int (*
|
734
|
+
int (*read_func)(BIO *, char *, int));
|
734
735
|
|
735
736
|
// BIO_meth_set_gets sets the implementation of |BIO_gets| for |method| and
|
736
737
|
// returns one.
|
737
738
|
OPENSSL_EXPORT int BIO_meth_set_gets(BIO_METHOD *method,
|
738
|
-
int (*
|
739
|
+
int (*gets_func)(BIO *, char *, int));
|
739
740
|
|
740
741
|
// BIO_meth_set_ctrl sets the implementation of |BIO_ctrl| for |method| and
|
741
742
|
// returns one.
|
742
743
|
OPENSSL_EXPORT int BIO_meth_set_ctrl(BIO_METHOD *method,
|
743
|
-
long (*
|
744
|
+
long (*ctrl_func)(BIO *, int, long,
|
745
|
+
void *));
|
744
746
|
|
745
747
|
// BIO_set_data sets custom data on |bio|. It may be retried with
|
746
748
|
// |BIO_get_data|.
|
@@ -178,6 +178,9 @@ OPENSSL_EXPORT int FIPS_mode_set(int on);
|
|
178
178
|
// FIPS_module_name returns the name of the FIPS module.
|
179
179
|
OPENSSL_EXPORT const char *FIPS_module_name(void);
|
180
180
|
|
181
|
+
// FIPS_module_hash returns the 32-byte hash of the FIPS module.
|
182
|
+
OPENSSL_EXPORT const uint8_t* FIPS_module_hash(void);
|
183
|
+
|
181
184
|
// FIPS_version returns the version of the FIPS module, or zero if the build
|
182
185
|
// isn't exactly at a verified version. The version, expressed in base 10, will
|
183
186
|
// be a date in the form yyyymmddXX where XX is often "00", but can be
|