grpc 1.55.0 → 1.56.0.pre3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +100 -68
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -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 +52 -20
- 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 +32 -39
- 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/internal.h +1 -15
- 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/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 +1 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -4
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -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 +148 -107
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
- 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/security_connector/alts/alts_security_connector.cc +1 -5
- 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/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/ruby/ext/grpc/extconf.rb +8 -9
- 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 -14
- 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
|