grpc 1.55.0 → 1.56.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +102 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/grpc_security.h +19 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +86 -104
- data/src/core/ext/filters/client_channel/client_channel.h +6 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +53 -21
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +42 -40
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +176 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +325 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +567 -543
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +150 -9
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +46 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -5
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/backoff/random_early_detection.h +5 -0
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -19
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +2 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +33 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +10 -8
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +182 -119
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +21 -0
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +8 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +5 -1
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -1
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +1 -1
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/validate_metadata.cc +37 -22
- data/src/core/lib/surface/validate_metadata.h +13 -3
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/core/tsi/ssl_transport_security.cc +5 -2
- data/src/core/tsi/ssl_transport_security.h +13 -1
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -12
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -178,8 +178,8 @@ X509_NAME_ENTRY *X509_NAME_delete_entry(X509_NAME *name, int loc) {
|
|
178
178
|
}
|
179
179
|
|
180
180
|
int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj,
|
181
|
-
int type, const unsigned char *bytes,
|
182
|
-
int loc, int set) {
|
181
|
+
int type, const unsigned char *bytes,
|
182
|
+
ossl_ssize_t len, int loc, int set) {
|
183
183
|
X509_NAME_ENTRY *ne =
|
184
184
|
X509_NAME_ENTRY_create_by_OBJ(NULL, obj, type, bytes, len);
|
185
185
|
if (!ne) {
|
@@ -191,8 +191,8 @@ int X509_NAME_add_entry_by_OBJ(X509_NAME *name, const ASN1_OBJECT *obj,
|
|
191
191
|
}
|
192
192
|
|
193
193
|
int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
|
194
|
-
const unsigned char *bytes,
|
195
|
-
int set) {
|
194
|
+
const unsigned char *bytes, ossl_ssize_t len,
|
195
|
+
int loc, int set) {
|
196
196
|
X509_NAME_ENTRY *ne =
|
197
197
|
X509_NAME_ENTRY_create_by_NID(NULL, nid, type, bytes, len);
|
198
198
|
if (!ne) {
|
@@ -204,8 +204,8 @@ int X509_NAME_add_entry_by_NID(X509_NAME *name, int nid, int type,
|
|
204
204
|
}
|
205
205
|
|
206
206
|
int X509_NAME_add_entry_by_txt(X509_NAME *name, const char *field, int type,
|
207
|
-
const unsigned char *bytes,
|
208
|
-
int set) {
|
207
|
+
const unsigned char *bytes, ossl_ssize_t len,
|
208
|
+
int loc, int set) {
|
209
209
|
X509_NAME_ENTRY *ne =
|
210
210
|
X509_NAME_ENTRY_create_by_txt(NULL, field, type, bytes, len);
|
211
211
|
if (!ne) {
|
@@ -282,7 +282,7 @@ err:
|
|
282
282
|
X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
|
283
283
|
const char *field, int type,
|
284
284
|
const unsigned char *bytes,
|
285
|
-
|
285
|
+
ossl_ssize_t len) {
|
286
286
|
ASN1_OBJECT *obj;
|
287
287
|
X509_NAME_ENTRY *nentry;
|
288
288
|
|
@@ -300,7 +300,7 @@ X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_txt(X509_NAME_ENTRY **ne,
|
|
300
300
|
X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
|
301
301
|
int type,
|
302
302
|
const unsigned char *bytes,
|
303
|
-
|
303
|
+
ossl_ssize_t len) {
|
304
304
|
const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
|
305
305
|
if (obj == NULL) {
|
306
306
|
OPENSSL_PUT_ERROR(X509, X509_R_UNKNOWN_NID);
|
@@ -312,7 +312,7 @@ X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_NID(X509_NAME_ENTRY **ne, int nid,
|
|
312
312
|
X509_NAME_ENTRY *X509_NAME_ENTRY_create_by_OBJ(X509_NAME_ENTRY **ne,
|
313
313
|
const ASN1_OBJECT *obj, int type,
|
314
314
|
const unsigned char *bytes,
|
315
|
-
|
315
|
+
ossl_ssize_t len) {
|
316
316
|
X509_NAME_ENTRY *ret;
|
317
317
|
|
318
318
|
if ((ne == NULL) || (*ne == NULL)) {
|
@@ -352,9 +352,7 @@ int X509_NAME_ENTRY_set_object(X509_NAME_ENTRY *ne, const ASN1_OBJECT *obj) {
|
|
352
352
|
}
|
353
353
|
|
354
354
|
int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
|
355
|
-
const unsigned char *bytes,
|
356
|
-
int i;
|
357
|
-
|
355
|
+
const unsigned char *bytes, ossl_ssize_t len) {
|
358
356
|
if ((ne == NULL) || ((bytes == NULL) && (len != 0))) {
|
359
357
|
return 0;
|
360
358
|
}
|
@@ -367,8 +365,7 @@ int X509_NAME_ENTRY_set_data(X509_NAME_ENTRY *ne, int type,
|
|
367
365
|
if (len < 0) {
|
368
366
|
len = strlen((const char *)bytes);
|
369
367
|
}
|
370
|
-
|
371
|
-
if (!i) {
|
368
|
+
if (!ASN1_STRING_set(ne->value, bytes, len)) {
|
372
369
|
return 0;
|
373
370
|
}
|
374
371
|
if (type != V_ASN1_UNDEF) {
|
@@ -77,7 +77,7 @@ EVP_PKEY *NETSCAPE_SPKI_get_pubkey(NETSCAPE_SPKI *x) {
|
|
77
77
|
|
78
78
|
// Load a Netscape SPKI from a base64 encoded string
|
79
79
|
|
80
|
-
NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str,
|
80
|
+
NETSCAPE_SPKI *NETSCAPE_SPKI_b64_decode(const char *str, ossl_ssize_t len) {
|
81
81
|
unsigned char *spki_der;
|
82
82
|
const unsigned char *p;
|
83
83
|
size_t spki_len;
|
@@ -90,7 +90,7 @@ static X509_CERT_AUX *aux_get(X509 *x) {
|
|
90
90
|
return x->aux;
|
91
91
|
}
|
92
92
|
|
93
|
-
int X509_alias_set1(X509 *x, const unsigned char *name,
|
93
|
+
int X509_alias_set1(X509 *x, const unsigned char *name, ossl_ssize_t len) {
|
94
94
|
X509_CERT_AUX *aux;
|
95
95
|
// TODO(davidben): Empty aliases are not meaningful in PKCS#12, and the
|
96
96
|
// getters cannot quite represent them. Also erase the object if |len| is
|
@@ -112,7 +112,7 @@ int X509_alias_set1(X509 *x, const unsigned char *name, int len) {
|
|
112
112
|
return ASN1_STRING_set(aux->alias, name, len);
|
113
113
|
}
|
114
114
|
|
115
|
-
int X509_keyid_set1(X509 *x, const unsigned char *id,
|
115
|
+
int X509_keyid_set1(X509 *x, const unsigned char *id, ossl_ssize_t len) {
|
116
116
|
X509_CERT_AUX *aux;
|
117
117
|
// TODO(davidben): Empty key IDs are not meaningful in PKCS#12, and the
|
118
118
|
// getters cannot quite represent them. Also erase the object if |len| is
|
@@ -90,7 +90,7 @@ OPENSSL_EXPORT char *x509v3_bytes_to_hex(const uint8_t *in, size_t len);
|
|
90
90
|
//
|
91
91
|
// This function was historically named |string_to_hex| in OpenSSL. Despite the
|
92
92
|
// name, |string_to_hex| converted from hex.
|
93
|
-
unsigned char *x509v3_hex_to_bytes(const char *str,
|
93
|
+
unsigned char *x509v3_hex_to_bytes(const char *str, size_t *len);
|
94
94
|
|
95
95
|
// x509v3_conf_name_matches returns one if |name| is equal to |cmp| or begins
|
96
96
|
// with |cmp| followed by '.', and zero otherwise.
|
@@ -57,6 +57,7 @@
|
|
57
57
|
// extension creation utilities
|
58
58
|
|
59
59
|
#include <ctype.h>
|
60
|
+
#include <limits.h>
|
60
61
|
#include <stdio.h>
|
61
62
|
#include <string.h>
|
62
63
|
|
@@ -81,7 +82,7 @@ static X509_EXTENSION *v3_generic_extension(const char *ext, const char *value,
|
|
81
82
|
static X509_EXTENSION *do_ext_i2d(const X509V3_EXT_METHOD *method, int ext_nid,
|
82
83
|
int crit, void *ext_struc);
|
83
84
|
static unsigned char *generic_asn1(const char *value, const X509V3_CTX *ctx,
|
84
|
-
|
85
|
+
size_t *ext_len);
|
85
86
|
|
86
87
|
X509_EXTENSION *X509V3_EXT_nconf(const CONF *conf, const X509V3_CTX *ctx,
|
87
88
|
const char *name, const char *value) {
|
@@ -191,52 +192,30 @@ static X509_EXTENSION *do_ext_nconf(const CONF *conf, const X509V3_CTX *ctx,
|
|
191
192
|
}
|
192
193
|
|
193
194
|
ext = do_ext_i2d(method, ext_nid, crit, ext_struc);
|
194
|
-
|
195
|
-
ASN1_item_free(ext_struc, ASN1_ITEM_ptr(method->it));
|
196
|
-
} else {
|
197
|
-
method->ext_free(ext_struc);
|
198
|
-
}
|
195
|
+
ASN1_item_free(ext_struc, ASN1_ITEM_ptr(method->it));
|
199
196
|
return ext;
|
200
197
|
}
|
201
198
|
|
202
199
|
static X509_EXTENSION *do_ext_i2d(const X509V3_EXT_METHOD *method, int ext_nid,
|
203
200
|
int crit, void *ext_struc) {
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
if (method->it) {
|
210
|
-
ext_der = NULL;
|
211
|
-
ext_len = ASN1_item_i2d(ext_struc, &ext_der, ASN1_ITEM_ptr(method->it));
|
212
|
-
if (ext_len < 0) {
|
213
|
-
goto merr;
|
214
|
-
}
|
215
|
-
} else {
|
216
|
-
unsigned char *p;
|
217
|
-
ext_len = method->i2d(ext_struc, NULL);
|
218
|
-
if (!(ext_der = OPENSSL_malloc(ext_len))) {
|
219
|
-
goto merr;
|
220
|
-
}
|
221
|
-
p = ext_der;
|
222
|
-
method->i2d(ext_struc, &p);
|
223
|
-
}
|
224
|
-
if (!(ext_oct = ASN1_OCTET_STRING_new())) {
|
225
|
-
goto merr;
|
201
|
+
// Convert the extension's internal representation to DER.
|
202
|
+
unsigned char *ext_der = NULL;
|
203
|
+
int ext_len = ASN1_item_i2d(ext_struc, &ext_der, ASN1_ITEM_ptr(method->it));
|
204
|
+
if (ext_len < 0) {
|
205
|
+
return NULL;
|
226
206
|
}
|
227
|
-
ext_oct->data = ext_der;
|
228
|
-
ext_oct->length = ext_len;
|
229
207
|
|
230
|
-
|
231
|
-
if (
|
232
|
-
|
208
|
+
ASN1_OCTET_STRING *ext_oct = ASN1_OCTET_STRING_new();
|
209
|
+
if (ext_oct == NULL) {
|
210
|
+
OPENSSL_free(ext_der);
|
211
|
+
return NULL;
|
233
212
|
}
|
234
|
-
|
213
|
+
ASN1_STRING_set0(ext_oct, ext_der, ext_len);
|
235
214
|
|
215
|
+
X509_EXTENSION *ext =
|
216
|
+
X509_EXTENSION_create_by_NID(NULL, ext_nid, crit, ext_oct);
|
217
|
+
ASN1_OCTET_STRING_free(ext_oct);
|
236
218
|
return ext;
|
237
|
-
|
238
|
-
merr:
|
239
|
-
return NULL;
|
240
219
|
}
|
241
220
|
|
242
221
|
// Given an internal structure, nid and critical flag create an extension
|
@@ -290,7 +269,7 @@ static X509_EXTENSION *v3_generic_extension(const char *ext, const char *value,
|
|
290
269
|
int crit, int gen_type,
|
291
270
|
const X509V3_CTX *ctx) {
|
292
271
|
unsigned char *ext_der = NULL;
|
293
|
-
|
272
|
+
size_t ext_len = 0;
|
294
273
|
ASN1_OBJECT *obj = NULL;
|
295
274
|
ASN1_OCTET_STRING *oct = NULL;
|
296
275
|
X509_EXTENSION *extension = NULL;
|
@@ -312,12 +291,17 @@ static X509_EXTENSION *v3_generic_extension(const char *ext, const char *value,
|
|
312
291
|
goto err;
|
313
292
|
}
|
314
293
|
|
315
|
-
if (
|
294
|
+
if (ext_len > INT_MAX) {
|
295
|
+
OPENSSL_PUT_ERROR(X509V3, ERR_R_OVERFLOW);
|
296
|
+
goto err;
|
297
|
+
}
|
298
|
+
|
299
|
+
oct = ASN1_OCTET_STRING_new();
|
300
|
+
if (oct == NULL) {
|
316
301
|
goto err;
|
317
302
|
}
|
318
303
|
|
319
|
-
oct
|
320
|
-
oct->length = ext_len;
|
304
|
+
ASN1_STRING_set0(oct, ext_der, (int)ext_len);
|
321
305
|
ext_der = NULL;
|
322
306
|
|
323
307
|
extension = X509_EXTENSION_create_by_OBJ(NULL, obj, crit, oct);
|
@@ -330,15 +314,18 @@ err:
|
|
330
314
|
}
|
331
315
|
|
332
316
|
static unsigned char *generic_asn1(const char *value, const X509V3_CTX *ctx,
|
333
|
-
|
334
|
-
ASN1_TYPE *typ;
|
335
|
-
unsigned char *ext_der = NULL;
|
336
|
-
typ = ASN1_generate_v3(value, ctx);
|
317
|
+
size_t *ext_len) {
|
318
|
+
ASN1_TYPE *typ = ASN1_generate_v3(value, ctx);
|
337
319
|
if (typ == NULL) {
|
338
320
|
return NULL;
|
339
321
|
}
|
340
|
-
*
|
322
|
+
unsigned char *ext_der = NULL;
|
323
|
+
int len = i2d_ASN1_TYPE(typ, &ext_der);
|
341
324
|
ASN1_TYPE_free(typ);
|
325
|
+
if (len < 0) {
|
326
|
+
return NULL;
|
327
|
+
}
|
328
|
+
*ext_len = len;
|
342
329
|
return ext_der;
|
343
330
|
}
|
344
331
|
|
@@ -356,6 +356,7 @@ static POLICYQUALINFO *notice_section(const X509V3_CTX *ctx,
|
|
356
356
|
if (!nos || !sk_CONF_VALUE_num(nos)) {
|
357
357
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_NUMBERS);
|
358
358
|
X509V3_conf_err(cnf);
|
359
|
+
sk_CONF_VALUE_pop_free(nos, X509V3_conf_free);
|
359
360
|
goto err;
|
360
361
|
}
|
361
362
|
int ret = nref_nos(nref->noticenos, nos);
|
@@ -168,7 +168,6 @@ static void *v2i_AUTHORITY_INFO_ACCESS(const X509V3_EXT_METHOD *method,
|
|
168
168
|
const STACK_OF(CONF_VALUE) *nval) {
|
169
169
|
AUTHORITY_INFO_ACCESS *ainfo = NULL;
|
170
170
|
ACCESS_DESCRIPTION *acc;
|
171
|
-
char *objtmp, *ptmp;
|
172
171
|
if (!(ainfo = sk_ACCESS_DESCRIPTION_new_null())) {
|
173
172
|
return NULL;
|
174
173
|
}
|
@@ -178,22 +177,21 @@ static void *v2i_AUTHORITY_INFO_ACCESS(const X509V3_EXT_METHOD *method,
|
|
178
177
|
!sk_ACCESS_DESCRIPTION_push(ainfo, acc)) {
|
179
178
|
goto err;
|
180
179
|
}
|
181
|
-
ptmp = strchr(cnf->name, ';');
|
180
|
+
char *ptmp = strchr(cnf->name, ';');
|
182
181
|
if (!ptmp) {
|
183
182
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_INVALID_SYNTAX);
|
184
183
|
goto err;
|
185
184
|
}
|
186
|
-
int objlen = ptmp - cnf->name;
|
187
185
|
CONF_VALUE ctmp;
|
188
186
|
ctmp.name = ptmp + 1;
|
189
187
|
ctmp.value = cnf->value;
|
190
188
|
if (!v2i_GENERAL_NAME_ex(acc->location, method, ctx, &ctmp, 0)) {
|
191
189
|
goto err;
|
192
190
|
}
|
193
|
-
|
191
|
+
char *objtmp = OPENSSL_strndup(cnf->name, ptmp - cnf->name);
|
192
|
+
if (objtmp == NULL) {
|
194
193
|
goto err;
|
195
194
|
}
|
196
|
-
OPENSSL_strlcpy(objtmp, cnf->name, objlen + 1);
|
197
195
|
acc->method = OBJ_txt2obj(objtmp, 0);
|
198
196
|
if (!acc->method) {
|
199
197
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_BAD_OBJECT);
|
@@ -57,6 +57,7 @@
|
|
57
57
|
*/
|
58
58
|
/* X509 v3 extension utilities */
|
59
59
|
|
60
|
+
#include <assert.h>
|
60
61
|
#include <stdio.h>
|
61
62
|
|
62
63
|
#include <openssl/conf.h>
|
@@ -70,21 +71,20 @@
|
|
70
71
|
#include "ext_dat.h"
|
71
72
|
static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL;
|
72
73
|
|
73
|
-
static void ext_list_free(X509V3_EXT_METHOD *ext);
|
74
|
-
|
75
74
|
static int ext_stack_cmp(const X509V3_EXT_METHOD *const *a,
|
76
75
|
const X509V3_EXT_METHOD *const *b) {
|
77
76
|
return ((*a)->ext_nid - (*b)->ext_nid);
|
78
77
|
}
|
79
78
|
|
80
79
|
int X509V3_EXT_add(X509V3_EXT_METHOD *ext) {
|
80
|
+
// We only support |ASN1_ITEM|-based extensions.
|
81
|
+
assert(ext->it != NULL);
|
82
|
+
|
81
83
|
// TODO(davidben): This should be locked. Also check for duplicates.
|
82
84
|
if (!ext_list && !(ext_list = sk_X509V3_EXT_METHOD_new(ext_stack_cmp))) {
|
83
|
-
ext_list_free(ext);
|
84
85
|
return 0;
|
85
86
|
}
|
86
87
|
if (!sk_X509V3_EXT_METHOD_push(ext_list, ext)) {
|
87
|
-
ext_list_free(ext);
|
88
88
|
return 0;
|
89
89
|
}
|
90
90
|
sk_X509V3_EXT_METHOD_sort(ext_list);
|
@@ -136,28 +136,12 @@ int X509V3_EXT_free(int nid, void *ext_data) {
|
|
136
136
|
return 0;
|
137
137
|
}
|
138
138
|
|
139
|
-
|
140
|
-
ASN1_item_free(ext_data, ASN1_ITEM_ptr(ext_method->it));
|
141
|
-
} else if (ext_method->ext_free != NULL) {
|
142
|
-
ext_method->ext_free(ext_data);
|
143
|
-
} else {
|
144
|
-
OPENSSL_PUT_ERROR(X509V3, X509V3_R_CANNOT_FIND_FREE_FUNCTION);
|
145
|
-
return 0;
|
146
|
-
}
|
147
|
-
|
148
|
-
return 1;
|
149
|
-
}
|
150
|
-
|
151
|
-
int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist) {
|
152
|
-
for (; extlist->ext_nid != -1; extlist++) {
|
153
|
-
if (!X509V3_EXT_add(extlist)) {
|
154
|
-
return 0;
|
155
|
-
}
|
156
|
-
}
|
139
|
+
ASN1_item_free(ext_data, ASN1_ITEM_ptr(ext_method->it));
|
157
140
|
return 1;
|
158
141
|
}
|
159
142
|
|
160
143
|
int X509V3_EXT_add_alias(int nid_to, int nid_from) {
|
144
|
+
OPENSSL_BEGIN_ALLOW_DEPRECATED
|
161
145
|
const X509V3_EXT_METHOD *ext;
|
162
146
|
X509V3_EXT_METHOD *tmpext;
|
163
147
|
|
@@ -171,19 +155,12 @@ int X509V3_EXT_add_alias(int nid_to, int nid_from) {
|
|
171
155
|
}
|
172
156
|
*tmpext = *ext;
|
173
157
|
tmpext->ext_nid = nid_to;
|
174
|
-
tmpext
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
void X509V3_EXT_cleanup(void) {
|
179
|
-
sk_X509V3_EXT_METHOD_pop_free(ext_list, ext_list_free);
|
180
|
-
ext_list = NULL;
|
181
|
-
}
|
182
|
-
|
183
|
-
static void ext_list_free(X509V3_EXT_METHOD *ext) {
|
184
|
-
if (ext->ext_flags & X509V3_EXT_DYNAMIC) {
|
185
|
-
OPENSSL_free(ext);
|
158
|
+
if (!X509V3_EXT_add(tmpext)) {
|
159
|
+
OPENSSL_free(tmpext);
|
160
|
+
return 0;
|
186
161
|
}
|
162
|
+
return 1;
|
163
|
+
OPENSSL_END_ALLOW_DEPRECATED
|
187
164
|
}
|
188
165
|
|
189
166
|
// Legacy function: we don't need to add standard extensions any more because
|
@@ -201,23 +178,14 @@ void *X509V3_EXT_d2i(const X509_EXTENSION *ext) {
|
|
201
178
|
return NULL;
|
202
179
|
}
|
203
180
|
p = ext->value->data;
|
204
|
-
void *ret
|
205
|
-
|
206
|
-
ret =
|
207
|
-
ASN1_item_d2i(NULL, &p, ext->value->length, ASN1_ITEM_ptr(method->it));
|
208
|
-
} else {
|
209
|
-
ret = method->d2i(NULL, &p, ext->value->length);
|
210
|
-
}
|
181
|
+
void *ret =
|
182
|
+
ASN1_item_d2i(NULL, &p, ext->value->length, ASN1_ITEM_ptr(method->it));
|
211
183
|
if (ret == NULL) {
|
212
184
|
return NULL;
|
213
185
|
}
|
214
186
|
// Check for trailing data.
|
215
187
|
if (p != ext->value->data + ext->value->length) {
|
216
|
-
|
217
|
-
ASN1_item_free(ret, ASN1_ITEM_ptr(method->it));
|
218
|
-
} else {
|
219
|
-
method->ext_free(ret);
|
220
|
-
}
|
188
|
+
ASN1_item_free(ret, ASN1_ITEM_ptr(method->it));
|
221
189
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_TRAILING_DATA_IN_EXTENSION);
|
222
190
|
return NULL;
|
223
191
|
}
|
@@ -105,59 +105,47 @@ void X509V3_EXT_val_prn(BIO *out, const STACK_OF(CONF_VALUE) *val, int indent,
|
|
105
105
|
|
106
106
|
int X509V3_EXT_print(BIO *out, const X509_EXTENSION *ext, unsigned long flag,
|
107
107
|
int indent) {
|
108
|
-
|
109
|
-
|
110
|
-
const X509V3_EXT_METHOD *method;
|
111
|
-
STACK_OF(CONF_VALUE) *nval = NULL;
|
112
|
-
int ok = 1;
|
113
|
-
|
114
|
-
if (!(method = X509V3_EXT_get(ext))) {
|
108
|
+
const X509V3_EXT_METHOD *method = X509V3_EXT_get(ext);
|
109
|
+
if (method == NULL) {
|
115
110
|
return unknown_ext_print(out, ext, flag, indent, 0);
|
116
111
|
}
|
117
112
|
const ASN1_STRING *ext_data = X509_EXTENSION_get_data(ext);
|
118
113
|
const unsigned char *p = ASN1_STRING_get0_data(ext_data);
|
119
|
-
|
120
|
-
|
121
|
-
ASN1_ITEM_ptr(method->it));
|
122
|
-
} else {
|
123
|
-
ext_str = method->d2i(NULL, &p, ASN1_STRING_length(ext_data));
|
124
|
-
}
|
125
|
-
|
114
|
+
void *ext_str = ASN1_item_d2i(NULL, &p, ASN1_STRING_length(ext_data),
|
115
|
+
ASN1_ITEM_ptr(method->it));
|
126
116
|
if (!ext_str) {
|
127
117
|
return unknown_ext_print(out, ext, flag, indent, 1);
|
128
118
|
}
|
129
119
|
|
120
|
+
char *value = NULL;
|
121
|
+
STACK_OF(CONF_VALUE) *nval = NULL;
|
122
|
+
int ok = 0;
|
130
123
|
if (method->i2s) {
|
131
124
|
if (!(value = method->i2s(method, ext_str))) {
|
132
|
-
ok = 0;
|
133
125
|
goto err;
|
134
126
|
}
|
135
127
|
BIO_printf(out, "%*s%s", indent, "", value);
|
136
128
|
} else if (method->i2v) {
|
137
129
|
if (!(nval = method->i2v(method, ext_str, NULL))) {
|
138
|
-
ok = 0;
|
139
130
|
goto err;
|
140
131
|
}
|
141
132
|
X509V3_EXT_val_prn(out, nval, indent,
|
142
133
|
method->ext_flags & X509V3_EXT_MULTILINE);
|
143
134
|
} else if (method->i2r) {
|
144
135
|
if (!method->i2r(method, ext_str, out, indent)) {
|
145
|
-
|
136
|
+
goto err;
|
146
137
|
}
|
147
138
|
} else {
|
148
|
-
|
139
|
+
OPENSSL_PUT_ERROR(X509V3, X509V3_R_OPERATION_NOT_DEFINED);
|
140
|
+
goto err;
|
149
141
|
}
|
150
142
|
|
143
|
+
ok = 1;
|
144
|
+
|
151
145
|
err:
|
152
146
|
sk_CONF_VALUE_pop_free(nval, X509V3_conf_free);
|
153
|
-
|
154
|
-
|
155
|
-
}
|
156
|
-
if (method->it) {
|
157
|
-
ASN1_item_free(ext_str, ASN1_ITEM_ptr(method->it));
|
158
|
-
} else {
|
159
|
-
method->ext_free(ext_str);
|
160
|
-
}
|
147
|
+
OPENSSL_free(value);
|
148
|
+
ASN1_item_free(ext_str, ASN1_ITEM_ptr(method->it));
|
161
149
|
return ok;
|
162
150
|
}
|
163
151
|
|
@@ -54,12 +54,14 @@
|
|
54
54
|
* (eay@cryptsoft.com). This product includes software written by Tim
|
55
55
|
* Hudson (tjh@cryptsoft.com). */
|
56
56
|
|
57
|
+
#include <limits.h>
|
57
58
|
#include <stdio.h>
|
58
59
|
#include <string.h>
|
59
60
|
|
60
61
|
#include <openssl/digest.h>
|
61
62
|
#include <openssl/err.h>
|
62
63
|
#include <openssl/obj.h>
|
64
|
+
#include <openssl/mem.h>
|
63
65
|
#include <openssl/x509v3.h>
|
64
66
|
|
65
67
|
#include "../x509/internal.h"
|
@@ -74,21 +76,26 @@ char *i2s_ASN1_OCTET_STRING(const X509V3_EXT_METHOD *method,
|
|
74
76
|
ASN1_OCTET_STRING *s2i_ASN1_OCTET_STRING(const X509V3_EXT_METHOD *method,
|
75
77
|
const X509V3_CTX *ctx,
|
76
78
|
const char *str) {
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
if (!(oct = ASN1_OCTET_STRING_new())) {
|
79
|
+
size_t len;
|
80
|
+
uint8_t *data = x509v3_hex_to_bytes(str, &len);
|
81
|
+
if (data == NULL) {
|
81
82
|
return NULL;
|
82
83
|
}
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
return NULL;
|
84
|
+
if (len > INT_MAX) {
|
85
|
+
OPENSSL_PUT_ERROR(X509V3, ERR_R_OVERFLOW);
|
86
|
+
goto err;
|
87
87
|
}
|
88
88
|
|
89
|
-
oct
|
90
|
-
|
89
|
+
ASN1_OCTET_STRING *oct = ASN1_OCTET_STRING_new();
|
90
|
+
if (oct == NULL) {
|
91
|
+
goto err;
|
92
|
+
}
|
93
|
+
ASN1_STRING_set0(oct, data, (int)len);
|
91
94
|
return oct;
|
95
|
+
|
96
|
+
err:
|
97
|
+
OPENSSL_free(data);
|
98
|
+
return NULL;
|
92
99
|
}
|
93
100
|
|
94
101
|
static char *i2s_ASN1_OCTET_STRING_cb(const X509V3_EXT_METHOD *method,
|
@@ -494,7 +494,7 @@ err:
|
|
494
494
|
return NULL;
|
495
495
|
}
|
496
496
|
|
497
|
-
unsigned char *x509v3_hex_to_bytes(const char *str,
|
497
|
+
unsigned char *x509v3_hex_to_bytes(const char *str, size_t *len) {
|
498
498
|
unsigned char *hexbuf, *q;
|
499
499
|
unsigned char ch, cl, *p;
|
500
500
|
uint8_t high, low;
|
@@ -138,12 +138,10 @@ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_ctr_hmac_sha256(void);
|
|
138
138
|
// authentication. See |EVP_aead_aes_128_ctr_hmac_sha256| for details.
|
139
139
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_ctr_hmac_sha256(void);
|
140
140
|
|
141
|
-
// EVP_aead_aes_128_gcm_siv is AES-128 in GCM-SIV mode. See
|
142
|
-
// https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02
|
141
|
+
// EVP_aead_aes_128_gcm_siv is AES-128 in GCM-SIV mode. See RFC 8452.
|
143
142
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm_siv(void);
|
144
143
|
|
145
|
-
// EVP_aead_aes_256_gcm_siv is AES-256 in GCM-SIV mode. See
|
146
|
-
// https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02
|
144
|
+
// EVP_aead_aes_256_gcm_siv is AES-256 in GCM-SIV mode. See RFC 8452.
|
147
145
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm_siv(void);
|
148
146
|
|
149
147
|
// EVP_aead_aes_128_gcm_randnonce is AES-128 in Galois Counter Mode with
|
@@ -212,7 +210,7 @@ OPENSSL_EXPORT size_t EVP_AEAD_max_tag_len(const EVP_AEAD *aead);
|
|
212
210
|
// AEAD operations.
|
213
211
|
|
214
212
|
union evp_aead_ctx_st_state {
|
215
|
-
uint8_t opaque[
|
213
|
+
uint8_t opaque[564];
|
216
214
|
uint64_t alignment;
|
217
215
|
};
|
218
216
|
|
@@ -402,14 +400,14 @@ OPENSSL_EXPORT const EVP_AEAD *EVP_AEAD_CTX_aead(const EVP_AEAD_CTX *ctx);
|
|
402
400
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls(void);
|
403
401
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls_implicit_iv(void);
|
404
402
|
|
403
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha256_tls(void);
|
404
|
+
|
405
405
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls(void);
|
406
406
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_tls_implicit_iv(void);
|
407
407
|
|
408
408
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls(void);
|
409
409
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls_implicit_iv(void);
|
410
410
|
|
411
|
-
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_tls(void);
|
412
|
-
|
413
411
|
// EVP_aead_aes_128_gcm_tls12 is AES-128 in Galois Counter Mode using the TLS
|
414
412
|
// 1.2 nonce construction.
|
415
413
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm_tls12(void);
|
@@ -740,15 +740,17 @@ OPENSSL_EXPORT int ASN1_STRING_to_UTF8(unsigned char **out,
|
|
740
740
|
// the result. If |out| is NULL, it returns the selected output type without
|
741
741
|
// constructing an |ASN1_STRING|. On error, this function returns -1.
|
742
742
|
OPENSSL_EXPORT int ASN1_mbstring_copy(ASN1_STRING **out, const uint8_t *in,
|
743
|
-
|
743
|
+
ossl_ssize_t len, int inform,
|
744
|
+
unsigned long mask);
|
744
745
|
|
745
746
|
// ASN1_mbstring_ncopy behaves like |ASN1_mbstring_copy| but returns an error if
|
746
747
|
// the input is less than |minsize| or greater than |maxsize| codepoints long. A
|
747
748
|
// |maxsize| value of zero is ignored. Note the sizes are measured in
|
748
749
|
// codepoints, not output bytes.
|
749
750
|
OPENSSL_EXPORT int ASN1_mbstring_ncopy(ASN1_STRING **out, const uint8_t *in,
|
750
|
-
|
751
|
-
long
|
751
|
+
ossl_ssize_t len, int inform,
|
752
|
+
unsigned long mask, ossl_ssize_t minsize,
|
753
|
+
ossl_ssize_t maxsize);
|
752
754
|
|
753
755
|
// ASN1_STRING_set_by_NID behaves like |ASN1_mbstring_ncopy|, but determines
|
754
756
|
// |mask|, |minsize|, and |maxsize| based on |nid|. When |nid| is a recognized
|
@@ -774,7 +776,7 @@ OPENSSL_EXPORT int ASN1_mbstring_ncopy(ASN1_STRING **out, const uint8_t *in,
|
|
774
776
|
// to call |ASN1_mbstring_ncopy| directly instead.
|
775
777
|
OPENSSL_EXPORT ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out,
|
776
778
|
const unsigned char *in,
|
777
|
-
|
779
|
+
ossl_ssize_t len, int inform,
|
778
780
|
int nid);
|
779
781
|
|
780
782
|
// STABLE_NO_MASK causes |ASN1_STRING_TABLE_add| to allow types other than
|
@@ -164,6 +164,10 @@ extern "C" {
|
|
164
164
|
#define OPENSSL_FREEBSD
|
165
165
|
#endif
|
166
166
|
|
167
|
+
#if defined(__OpenBSD__)
|
168
|
+
#define OPENSSL_OPENBSD
|
169
|
+
#endif
|
170
|
+
|
167
171
|
// BoringSSL requires platform's locking APIs to make internal global state
|
168
172
|
// thread-safe, including the PRNG. On some single-threaded embedded platforms,
|
169
173
|
// locking APIs may not exist, so this dependency may be disabled with the
|
@@ -193,7 +197,7 @@ extern "C" {
|
|
193
197
|
// A consumer may use this symbol in the preprocessor to temporarily build
|
194
198
|
// against multiple revisions of BoringSSL at the same time. It is not
|
195
199
|
// recommended to do so for longer than is necessary.
|
196
|
-
#define BORINGSSL_API_VERSION
|
200
|
+
#define BORINGSSL_API_VERSION 21
|
197
201
|
|
198
202
|
#if defined(BORINGSSL_SHARED_LIBRARY)
|
199
203
|
|
@@ -221,6 +225,33 @@ extern "C" {
|
|
221
225
|
|
222
226
|
#endif // defined(BORINGSSL_SHARED_LIBRARY)
|
223
227
|
|
228
|
+
#if defined(_MSC_VER)
|
229
|
+
|
230
|
+
// OPENSSL_DEPRECATED is used to mark a function as deprecated. Use
|
231
|
+
// of any functions so marked in caller code will produce a warning.
|
232
|
+
// OPENSSL_BEGIN_ALLOW_DEPRECATED and OPENSSL_END_ALLOW_DEPRECATED
|
233
|
+
// can be used to suppress the warning in regions of caller code.
|
234
|
+
#define OPENSSL_DEPRECATED __declspec(deprecated)
|
235
|
+
#define OPENSSL_BEGIN_ALLOW_DEPRECATED \
|
236
|
+
__pragma(warning(push)) __pragma(warning(disable : 4996))
|
237
|
+
#define OPENSSL_END_ALLOW_DEPRECATED __pragma(warning(pop))
|
238
|
+
|
239
|
+
#elif defined(__GNUC__) || defined(__clang__)
|
240
|
+
|
241
|
+
#define OPENSSL_DEPRECATED __attribute__((__deprecated__))
|
242
|
+
#define OPENSSL_BEGIN_ALLOW_DEPRECATED \
|
243
|
+
_Pragma("GCC diagnostic push") \
|
244
|
+
_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"")
|
245
|
+
#define OPENSSL_END_ALLOW_DEPRECATED _Pragma("GCC diagnostic pop")
|
246
|
+
|
247
|
+
#else
|
248
|
+
|
249
|
+
#define OPENSSL_DEPRECATED
|
250
|
+
#define OPENSSL_BEGIN_ALLOW_DEPRECATED
|
251
|
+
#define OPENSSL_END_ALLOW_DEPRECATED
|
252
|
+
|
253
|
+
#endif
|
254
|
+
|
224
255
|
|
225
256
|
#if defined(__GNUC__) || defined(__clang__)
|
226
257
|
// MinGW has two different printf implementations. Ensure the format macro
|