grpc 1.55.0 → 1.56.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +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 +48 -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
@@ -62,6 +62,8 @@
|
|
62
62
|
#include <openssl/obj.h>
|
63
63
|
#include <openssl/x509.h>
|
64
64
|
|
65
|
+
#include <limits.h>
|
66
|
+
|
65
67
|
#include "internal.h"
|
66
68
|
|
67
69
|
int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
|
@@ -83,17 +85,13 @@ int ASN1_item_sign(const ASN1_ITEM *it, X509_ALGOR *algor1, X509_ALGOR *algor2,
|
|
83
85
|
int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
|
84
86
|
X509_ALGOR *algor2, ASN1_BIT_STRING *signature,
|
85
87
|
void *asn, EVP_MD_CTX *ctx) {
|
86
|
-
|
87
|
-
|
88
|
-
size_t inl = 0, outl = 0;
|
89
|
-
|
88
|
+
int ret = 0;
|
89
|
+
uint8_t *in = NULL, *out = NULL;
|
90
90
|
if (signature->type != V_ASN1_BIT_STRING) {
|
91
91
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_WRONG_TYPE);
|
92
92
|
goto err;
|
93
93
|
}
|
94
94
|
|
95
|
-
pkey = EVP_PKEY_CTX_get0_pkey(ctx->pctx);
|
96
|
-
|
97
95
|
// Write out the requested copies of the AlgorithmIdentifier.
|
98
96
|
if (algor1 && !x509_digest_sign_algorithm(ctx, algor1)) {
|
99
97
|
goto err;
|
@@ -102,26 +100,37 @@ int ASN1_item_sign_ctx(const ASN1_ITEM *it, X509_ALGOR *algor1,
|
|
102
100
|
goto err;
|
103
101
|
}
|
104
102
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
103
|
+
int in_len = ASN1_item_i2d(asn, &in, it);
|
104
|
+
if (in_len < 0) {
|
105
|
+
goto err;
|
106
|
+
}
|
107
|
+
|
108
|
+
EVP_PKEY *pkey = EVP_PKEY_CTX_get0_pkey(ctx->pctx);
|
109
|
+
size_t out_len = EVP_PKEY_size(pkey);
|
110
|
+
if (out_len > INT_MAX) {
|
111
|
+
OPENSSL_PUT_ERROR(X509, ERR_R_OVERFLOW);
|
110
112
|
goto err;
|
111
113
|
}
|
112
114
|
|
113
|
-
|
114
|
-
|
115
|
+
out = OPENSSL_malloc(out_len);
|
116
|
+
if (out == NULL) {
|
117
|
+
goto err;
|
118
|
+
}
|
119
|
+
|
120
|
+
if (!EVP_DigestSign(ctx, out, &out_len, in, in_len)) {
|
115
121
|
OPENSSL_PUT_ERROR(X509, ERR_R_EVP_LIB);
|
116
122
|
goto err;
|
117
123
|
}
|
118
|
-
|
119
|
-
|
124
|
+
|
125
|
+
ASN1_STRING_set0(signature, out, (int)out_len);
|
126
|
+
out = NULL;
|
120
127
|
signature->flags &= ~(ASN1_STRING_FLAG_BITS_LEFT | 0x07);
|
121
128
|
signature->flags |= ASN1_STRING_FLAG_BITS_LEFT;
|
129
|
+
ret = (int)out_len;
|
130
|
+
|
122
131
|
err:
|
123
132
|
EVP_MD_CTX_cleanup(ctx);
|
124
|
-
OPENSSL_free(
|
125
|
-
OPENSSL_free(
|
126
|
-
return
|
133
|
+
OPENSSL_free(in);
|
134
|
+
OPENSSL_free(out);
|
135
|
+
return ret;
|
127
136
|
}
|
@@ -509,7 +509,7 @@ static int generate_v3(CBB *cbb, const char *str, const X509V3_CTX *cnf,
|
|
509
509
|
CBB_flush(cbb);
|
510
510
|
}
|
511
511
|
if (format == ASN1_GEN_FORMAT_HEX) {
|
512
|
-
|
512
|
+
size_t len;
|
513
513
|
uint8_t *data = x509v3_hex_to_bytes(value, &len);
|
514
514
|
if (data == NULL) {
|
515
515
|
OPENSSL_PUT_ERROR(ASN1, ASN1_R_ILLEGAL_HEX);
|
@@ -56,6 +56,7 @@
|
|
56
56
|
|
57
57
|
#include <openssl/x509.h>
|
58
58
|
|
59
|
+
#include <assert.h>
|
59
60
|
#include <inttypes.h>
|
60
61
|
#include <string.h>
|
61
62
|
|
@@ -84,8 +85,7 @@ static int do_indent(BIO *out, int indent) {
|
|
84
85
|
|
85
86
|
static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
|
86
87
|
unsigned long flags) {
|
87
|
-
int
|
88
|
-
int fn_opt, fn_nid;
|
88
|
+
int prev = -1, orflags;
|
89
89
|
char objtmp[80];
|
90
90
|
const char *objbuf;
|
91
91
|
int outlen, len;
|
@@ -142,10 +142,8 @@ static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
|
|
142
142
|
sep_eq_len = 1;
|
143
143
|
}
|
144
144
|
|
145
|
-
|
146
|
-
|
147
|
-
cnt = X509_NAME_entry_count(n);
|
148
|
-
for (i = 0; i < cnt; i++) {
|
145
|
+
int cnt = X509_NAME_entry_count(n);
|
146
|
+
for (int i = 0; i < cnt; i++) {
|
149
147
|
const X509_NAME_ENTRY *ent;
|
150
148
|
if (flags & XN_FLAG_DN_REV) {
|
151
149
|
ent = X509_NAME_get_entry(n, cnt - i - 1);
|
@@ -172,40 +170,20 @@ static int do_name_ex(BIO *out, const X509_NAME *n, int indent,
|
|
172
170
|
prev = X509_NAME_ENTRY_set(ent);
|
173
171
|
const ASN1_OBJECT *fn = X509_NAME_ENTRY_get_object(ent);
|
174
172
|
const ASN1_STRING *val = X509_NAME_ENTRY_get_data(ent);
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
fld_len = FN_WIDTH_LN;
|
188
|
-
objbuf = OBJ_nid2ln(fn_nid);
|
189
|
-
} else {
|
190
|
-
fld_len = 0; // XXX: what should this be?
|
191
|
-
objbuf = "";
|
192
|
-
}
|
193
|
-
}
|
194
|
-
objlen = strlen(objbuf);
|
195
|
-
if (!maybe_write(out, objbuf, objlen)) {
|
196
|
-
return -1;
|
197
|
-
}
|
198
|
-
if ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {
|
199
|
-
if (!do_indent(out, fld_len - objlen)) {
|
200
|
-
return -1;
|
201
|
-
}
|
202
|
-
outlen += fld_len - objlen;
|
203
|
-
}
|
204
|
-
if (!maybe_write(out, sep_eq, sep_eq_len)) {
|
205
|
-
return -1;
|
206
|
-
}
|
207
|
-
outlen += objlen + sep_eq_len;
|
173
|
+
assert((flags & XN_FLAG_FN_MASK) == XN_FLAG_FN_SN);
|
174
|
+
int fn_nid = OBJ_obj2nid(fn);
|
175
|
+
if (fn_nid == NID_undef) {
|
176
|
+
OBJ_obj2txt(objtmp, sizeof(objtmp), fn, 1);
|
177
|
+
objbuf = objtmp;
|
178
|
+
} else {
|
179
|
+
objbuf = OBJ_nid2sn(fn_nid);
|
180
|
+
}
|
181
|
+
int objlen = strlen(objbuf);
|
182
|
+
if (!maybe_write(out, objbuf, objlen) ||
|
183
|
+
!maybe_write(out, sep_eq, sep_eq_len)) {
|
184
|
+
return -1;
|
208
185
|
}
|
186
|
+
outlen += objlen + sep_eq_len;
|
209
187
|
// If the field name is unknown then fix up the DER dump flag. We
|
210
188
|
// might want to limit this further so it will DER dump on anything
|
211
189
|
// other than a few 'standard' fields.
|
@@ -91,14 +91,8 @@ int X509_print(BIO *bp, X509 *x) {
|
|
91
91
|
|
92
92
|
int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
|
93
93
|
unsigned long cflag) {
|
94
|
-
|
95
|
-
int ret = 0, i;
|
96
|
-
char *m = NULL, mlch = ' ';
|
94
|
+
char mlch = ' ';
|
97
95
|
int nmindent = 0;
|
98
|
-
X509_CINF *ci;
|
99
|
-
EVP_PKEY *pkey = NULL;
|
100
|
-
const char *neg;
|
101
|
-
|
102
96
|
if ((nmflags & XN_FLAG_SEP_MASK) == XN_FLAG_SEP_MULTILINE) {
|
103
97
|
mlch = '\n';
|
104
98
|
nmindent = 12;
|
@@ -108,26 +102,26 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
|
|
108
102
|
nmindent = 16;
|
109
103
|
}
|
110
104
|
|
111
|
-
ci = x->cert_info;
|
105
|
+
const X509_CINF *ci = x->cert_info;
|
112
106
|
if (!(cflag & X509_FLAG_NO_HEADER)) {
|
113
107
|
if (BIO_write(bp, "Certificate:\n", 13) <= 0) {
|
114
|
-
|
108
|
+
return 0;
|
115
109
|
}
|
116
110
|
if (BIO_write(bp, " Data:\n", 10) <= 0) {
|
117
|
-
|
111
|
+
return 0;
|
118
112
|
}
|
119
113
|
}
|
120
114
|
if (!(cflag & X509_FLAG_NO_VERSION)) {
|
121
|
-
l = X509_get_version(x);
|
115
|
+
long l = X509_get_version(x);
|
122
116
|
assert(X509_VERSION_1 <= l && l <= X509_VERSION_3);
|
123
117
|
if (BIO_printf(bp, "%8sVersion: %ld (0x%lx)\n", "", l + 1,
|
124
118
|
(unsigned long)l) <= 0) {
|
125
|
-
|
119
|
+
return 0;
|
126
120
|
}
|
127
121
|
}
|
128
122
|
if (!(cflag & X509_FLAG_NO_SERIAL)) {
|
129
123
|
if (BIO_write(bp, " Serial Number:", 22) <= 0) {
|
130
|
-
|
124
|
+
return 0;
|
131
125
|
}
|
132
126
|
|
133
127
|
const ASN1_INTEGER *serial = X509_get0_serialNumber(x);
|
@@ -136,19 +130,20 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
|
|
136
130
|
assert(serial->type != V_ASN1_NEG_INTEGER);
|
137
131
|
if (BIO_printf(bp, " %" PRIu64 " (0x%" PRIx64 ")\n", serial_u64,
|
138
132
|
serial_u64) <= 0) {
|
139
|
-
|
133
|
+
return 0;
|
140
134
|
}
|
141
135
|
} else {
|
142
136
|
ERR_clear_error(); // Clear |ASN1_INTEGER_get_uint64|'s error.
|
143
|
-
neg =
|
137
|
+
const char *neg =
|
138
|
+
(serial->type == V_ASN1_NEG_INTEGER) ? " (Negative)" : "";
|
144
139
|
if (BIO_printf(bp, "\n%12s%s", "", neg) <= 0) {
|
145
|
-
|
140
|
+
return 0;
|
146
141
|
}
|
147
142
|
|
148
|
-
for (i = 0; i < serial->length; i++) {
|
143
|
+
for (int i = 0; i < serial->length; i++) {
|
149
144
|
if (BIO_printf(bp, "%02x%c", serial->data[i],
|
150
145
|
((i + 1 == serial->length) ? '\n' : ':')) <= 0) {
|
151
|
-
|
146
|
+
return 0;
|
152
147
|
}
|
153
148
|
}
|
154
149
|
}
|
@@ -156,69 +151,69 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
|
|
156
151
|
|
157
152
|
if (!(cflag & X509_FLAG_NO_SIGNAME)) {
|
158
153
|
if (X509_signature_print(bp, ci->signature, NULL) <= 0) {
|
159
|
-
|
154
|
+
return 0;
|
160
155
|
}
|
161
156
|
}
|
162
157
|
|
163
158
|
if (!(cflag & X509_FLAG_NO_ISSUER)) {
|
164
159
|
if (BIO_printf(bp, " Issuer:%c", mlch) <= 0) {
|
165
|
-
|
160
|
+
return 0;
|
166
161
|
}
|
167
162
|
if (X509_NAME_print_ex(bp, X509_get_issuer_name(x), nmindent, nmflags) <
|
168
163
|
0) {
|
169
|
-
|
164
|
+
return 0;
|
170
165
|
}
|
171
166
|
if (BIO_write(bp, "\n", 1) <= 0) {
|
172
|
-
|
167
|
+
return 0;
|
173
168
|
}
|
174
169
|
}
|
175
170
|
if (!(cflag & X509_FLAG_NO_VALIDITY)) {
|
176
171
|
if (BIO_write(bp, " Validity\n", 17) <= 0) {
|
177
|
-
|
172
|
+
return 0;
|
178
173
|
}
|
179
174
|
if (BIO_write(bp, " Not Before: ", 24) <= 0) {
|
180
|
-
|
175
|
+
return 0;
|
181
176
|
}
|
182
177
|
if (!ASN1_TIME_print(bp, X509_get_notBefore(x))) {
|
183
|
-
|
178
|
+
return 0;
|
184
179
|
}
|
185
180
|
if (BIO_write(bp, "\n Not After : ", 25) <= 0) {
|
186
|
-
|
181
|
+
return 0;
|
187
182
|
}
|
188
183
|
if (!ASN1_TIME_print(bp, X509_get_notAfter(x))) {
|
189
|
-
|
184
|
+
return 0;
|
190
185
|
}
|
191
186
|
if (BIO_write(bp, "\n", 1) <= 0) {
|
192
|
-
|
187
|
+
return 0;
|
193
188
|
}
|
194
189
|
}
|
195
190
|
if (!(cflag & X509_FLAG_NO_SUBJECT)) {
|
196
191
|
if (BIO_printf(bp, " Subject:%c", mlch) <= 0) {
|
197
|
-
|
192
|
+
return 0;
|
198
193
|
}
|
199
194
|
if (X509_NAME_print_ex(bp, X509_get_subject_name(x), nmindent, nmflags) <
|
200
195
|
0) {
|
201
|
-
|
196
|
+
return 0;
|
202
197
|
}
|
203
198
|
if (BIO_write(bp, "\n", 1) <= 0) {
|
204
|
-
|
199
|
+
return 0;
|
205
200
|
}
|
206
201
|
}
|
207
202
|
if (!(cflag & X509_FLAG_NO_PUBKEY)) {
|
208
203
|
if (BIO_write(bp, " Subject Public Key Info:\n", 33) <= 0) {
|
209
|
-
|
204
|
+
return 0;
|
210
205
|
}
|
211
206
|
if (BIO_printf(bp, "%12sPublic Key Algorithm: ", "") <= 0) {
|
212
|
-
|
207
|
+
return 0;
|
213
208
|
}
|
214
209
|
if (i2a_ASN1_OBJECT(bp, ci->key->algor->algorithm) <= 0) {
|
215
|
-
|
210
|
+
return 0;
|
216
211
|
}
|
217
212
|
if (BIO_puts(bp, "\n") <= 0) {
|
218
|
-
|
213
|
+
return 0;
|
219
214
|
}
|
220
215
|
|
221
|
-
pkey = X509_get_pubkey(x);
|
216
|
+
EVP_PKEY *pkey = X509_get_pubkey(x);
|
222
217
|
if (pkey == NULL) {
|
223
218
|
BIO_printf(bp, "%12sUnable to load Public Key\n", "");
|
224
219
|
ERR_print_errors(bp);
|
@@ -231,18 +226,18 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
|
|
231
226
|
if (!(cflag & X509_FLAG_NO_IDS)) {
|
232
227
|
if (ci->issuerUID) {
|
233
228
|
if (BIO_printf(bp, "%8sIssuer Unique ID: ", "") <= 0) {
|
234
|
-
|
229
|
+
return 0;
|
235
230
|
}
|
236
231
|
if (!X509_signature_dump(bp, ci->issuerUID, 12)) {
|
237
|
-
|
232
|
+
return 0;
|
238
233
|
}
|
239
234
|
}
|
240
235
|
if (ci->subjectUID) {
|
241
236
|
if (BIO_printf(bp, "%8sSubject Unique ID: ", "") <= 0) {
|
242
|
-
|
237
|
+
return 0;
|
243
238
|
}
|
244
239
|
if (!X509_signature_dump(bp, ci->subjectUID, 12)) {
|
245
|
-
|
240
|
+
return 0;
|
246
241
|
}
|
247
242
|
}
|
248
243
|
}
|
@@ -253,20 +248,16 @@ int X509_print_ex(BIO *bp, X509 *x, unsigned long nmflags,
|
|
253
248
|
|
254
249
|
if (!(cflag & X509_FLAG_NO_SIGDUMP)) {
|
255
250
|
if (X509_signature_print(bp, x->sig_alg, x->signature) <= 0) {
|
256
|
-
|
251
|
+
return 0;
|
257
252
|
}
|
258
253
|
}
|
259
254
|
if (!(cflag & X509_FLAG_NO_AUX)) {
|
260
255
|
if (!X509_CERT_AUX_print(bp, x->aux, 0)) {
|
261
|
-
|
256
|
+
return 0;
|
262
257
|
}
|
263
258
|
}
|
264
|
-
|
265
|
-
|
266
|
-
if (m != NULL) {
|
267
|
-
OPENSSL_free(m);
|
268
|
-
}
|
269
|
-
return ret;
|
259
|
+
|
260
|
+
return 1;
|
270
261
|
}
|
271
262
|
|
272
263
|
int X509_signature_print(BIO *bp, const X509_ALGOR *sigalg,
|
@@ -56,153 +56,13 @@
|
|
56
56
|
|
57
57
|
#include <openssl/asn1.h>
|
58
58
|
#include <openssl/err.h>
|
59
|
-
#include <openssl/evp.h>
|
60
59
|
#include <openssl/obj.h>
|
61
|
-
#include <openssl/stack.h>
|
62
60
|
#include <openssl/x509.h>
|
63
61
|
|
64
62
|
#include "../asn1/internal.h"
|
65
63
|
#include "internal.h"
|
66
64
|
|
67
65
|
|
68
|
-
int X509at_get_attr_count(const STACK_OF(X509_ATTRIBUTE) *x) {
|
69
|
-
return sk_X509_ATTRIBUTE_num(x);
|
70
|
-
}
|
71
|
-
|
72
|
-
int X509at_get_attr_by_NID(const STACK_OF(X509_ATTRIBUTE) *x, int nid,
|
73
|
-
int lastpos) {
|
74
|
-
const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
|
75
|
-
if (obj == NULL) {
|
76
|
-
return -1;
|
77
|
-
}
|
78
|
-
return X509at_get_attr_by_OBJ(x, obj, lastpos);
|
79
|
-
}
|
80
|
-
|
81
|
-
int X509at_get_attr_by_OBJ(const STACK_OF(X509_ATTRIBUTE) *sk,
|
82
|
-
const ASN1_OBJECT *obj, int lastpos) {
|
83
|
-
int n;
|
84
|
-
X509_ATTRIBUTE *ex;
|
85
|
-
|
86
|
-
if (sk == NULL) {
|
87
|
-
return -1;
|
88
|
-
}
|
89
|
-
lastpos++;
|
90
|
-
if (lastpos < 0) {
|
91
|
-
lastpos = 0;
|
92
|
-
}
|
93
|
-
n = sk_X509_ATTRIBUTE_num(sk);
|
94
|
-
for (; lastpos < n; lastpos++) {
|
95
|
-
ex = sk_X509_ATTRIBUTE_value(sk, lastpos);
|
96
|
-
if (OBJ_cmp(ex->object, obj) == 0) {
|
97
|
-
return lastpos;
|
98
|
-
}
|
99
|
-
}
|
100
|
-
return -1;
|
101
|
-
}
|
102
|
-
|
103
|
-
X509_ATTRIBUTE *X509at_get_attr(const STACK_OF(X509_ATTRIBUTE) *x, int loc) {
|
104
|
-
if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc) {
|
105
|
-
return NULL;
|
106
|
-
} else {
|
107
|
-
return sk_X509_ATTRIBUTE_value(x, loc);
|
108
|
-
}
|
109
|
-
}
|
110
|
-
|
111
|
-
X509_ATTRIBUTE *X509at_delete_attr(STACK_OF(X509_ATTRIBUTE) *x, int loc) {
|
112
|
-
X509_ATTRIBUTE *ret;
|
113
|
-
|
114
|
-
if (x == NULL || loc < 0 || sk_X509_ATTRIBUTE_num(x) <= (size_t)loc) {
|
115
|
-
return NULL;
|
116
|
-
}
|
117
|
-
ret = sk_X509_ATTRIBUTE_delete(x, loc);
|
118
|
-
return ret;
|
119
|
-
}
|
120
|
-
|
121
|
-
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr(STACK_OF(X509_ATTRIBUTE) **x,
|
122
|
-
X509_ATTRIBUTE *attr) {
|
123
|
-
X509_ATTRIBUTE *new_attr = NULL;
|
124
|
-
STACK_OF(X509_ATTRIBUTE) *sk = NULL;
|
125
|
-
|
126
|
-
if (x == NULL) {
|
127
|
-
OPENSSL_PUT_ERROR(X509, ERR_R_PASSED_NULL_PARAMETER);
|
128
|
-
goto err;
|
129
|
-
}
|
130
|
-
|
131
|
-
if (*x == NULL) {
|
132
|
-
if ((sk = sk_X509_ATTRIBUTE_new_null()) == NULL) {
|
133
|
-
goto err;
|
134
|
-
}
|
135
|
-
} else {
|
136
|
-
sk = *x;
|
137
|
-
}
|
138
|
-
|
139
|
-
if ((new_attr = X509_ATTRIBUTE_dup(attr)) == NULL) {
|
140
|
-
goto err;
|
141
|
-
}
|
142
|
-
if (!sk_X509_ATTRIBUTE_push(sk, new_attr)) {
|
143
|
-
goto err;
|
144
|
-
}
|
145
|
-
if (*x == NULL) {
|
146
|
-
*x = sk;
|
147
|
-
}
|
148
|
-
return sk;
|
149
|
-
err:
|
150
|
-
if (new_attr != NULL) {
|
151
|
-
X509_ATTRIBUTE_free(new_attr);
|
152
|
-
}
|
153
|
-
if (sk != NULL) {
|
154
|
-
sk_X509_ATTRIBUTE_free(sk);
|
155
|
-
}
|
156
|
-
return NULL;
|
157
|
-
}
|
158
|
-
|
159
|
-
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_OBJ(STACK_OF(X509_ATTRIBUTE) **x,
|
160
|
-
const ASN1_OBJECT *obj,
|
161
|
-
int type,
|
162
|
-
const unsigned char *bytes,
|
163
|
-
int len) {
|
164
|
-
X509_ATTRIBUTE *attr;
|
165
|
-
STACK_OF(X509_ATTRIBUTE) *ret;
|
166
|
-
attr = X509_ATTRIBUTE_create_by_OBJ(NULL, obj, type, bytes, len);
|
167
|
-
if (!attr) {
|
168
|
-
return 0;
|
169
|
-
}
|
170
|
-
ret = X509at_add1_attr(x, attr);
|
171
|
-
X509_ATTRIBUTE_free(attr);
|
172
|
-
return ret;
|
173
|
-
}
|
174
|
-
|
175
|
-
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_NID(STACK_OF(X509_ATTRIBUTE) **x,
|
176
|
-
int nid, int type,
|
177
|
-
const unsigned char *bytes,
|
178
|
-
int len) {
|
179
|
-
X509_ATTRIBUTE *attr;
|
180
|
-
STACK_OF(X509_ATTRIBUTE) *ret;
|
181
|
-
attr = X509_ATTRIBUTE_create_by_NID(NULL, nid, type, bytes, len);
|
182
|
-
if (!attr) {
|
183
|
-
return 0;
|
184
|
-
}
|
185
|
-
ret = X509at_add1_attr(x, attr);
|
186
|
-
X509_ATTRIBUTE_free(attr);
|
187
|
-
return ret;
|
188
|
-
}
|
189
|
-
|
190
|
-
STACK_OF(X509_ATTRIBUTE) *X509at_add1_attr_by_txt(STACK_OF(X509_ATTRIBUTE) **x,
|
191
|
-
const char *attrname,
|
192
|
-
int type,
|
193
|
-
const unsigned char *bytes,
|
194
|
-
int len) {
|
195
|
-
X509_ATTRIBUTE *attr;
|
196
|
-
STACK_OF(X509_ATTRIBUTE) *ret;
|
197
|
-
attr = X509_ATTRIBUTE_create_by_txt(NULL, attrname, type, bytes, len);
|
198
|
-
if (!attr) {
|
199
|
-
return 0;
|
200
|
-
}
|
201
|
-
ret = X509at_add1_attr(x, attr);
|
202
|
-
X509_ATTRIBUTE_free(attr);
|
203
|
-
return ret;
|
204
|
-
}
|
205
|
-
|
206
66
|
X509_ATTRIBUTE *X509_ATTRIBUTE_create_by_NID(X509_ATTRIBUTE **attr, int nid,
|
207
67
|
int attrtype, const void *data,
|
208
68
|
int len) {
|
@@ -160,62 +160,111 @@ int X509_REQ_add_extensions(X509_REQ *req,
|
|
160
160
|
return X509_REQ_add_extensions_nid(req, exts, NID_ext_req);
|
161
161
|
}
|
162
162
|
|
163
|
-
// Request attribute functions
|
164
|
-
|
165
163
|
int X509_REQ_get_attr_count(const X509_REQ *req) {
|
166
|
-
return
|
164
|
+
return sk_X509_ATTRIBUTE_num(req->req_info->attributes);
|
167
165
|
}
|
168
166
|
|
169
167
|
int X509_REQ_get_attr_by_NID(const X509_REQ *req, int nid, int lastpos) {
|
170
|
-
|
168
|
+
const ASN1_OBJECT *obj = OBJ_nid2obj(nid);
|
169
|
+
if (obj == NULL) {
|
170
|
+
return -1;
|
171
|
+
}
|
172
|
+
return X509_REQ_get_attr_by_OBJ(req, obj, lastpos);
|
171
173
|
}
|
172
174
|
|
173
175
|
int X509_REQ_get_attr_by_OBJ(const X509_REQ *req, const ASN1_OBJECT *obj,
|
174
176
|
int lastpos) {
|
175
|
-
|
177
|
+
if (req->req_info->attributes == NULL) {
|
178
|
+
return -1;
|
179
|
+
}
|
180
|
+
lastpos++;
|
181
|
+
if (lastpos < 0) {
|
182
|
+
lastpos = 0;
|
183
|
+
}
|
184
|
+
int n = sk_X509_ATTRIBUTE_num(req->req_info->attributes);
|
185
|
+
for (; lastpos < n; lastpos++) {
|
186
|
+
const X509_ATTRIBUTE *attr =
|
187
|
+
sk_X509_ATTRIBUTE_value(req->req_info->attributes, lastpos);
|
188
|
+
if (OBJ_cmp(attr->object, obj) == 0) {
|
189
|
+
return lastpos;
|
190
|
+
}
|
191
|
+
}
|
192
|
+
return -1;
|
176
193
|
}
|
177
194
|
|
178
195
|
X509_ATTRIBUTE *X509_REQ_get_attr(const X509_REQ *req, int loc) {
|
179
|
-
|
196
|
+
if (req->req_info->attributes == NULL || loc < 0 ||
|
197
|
+
sk_X509_ATTRIBUTE_num(req->req_info->attributes) <= (size_t)loc) {
|
198
|
+
return NULL;
|
199
|
+
}
|
200
|
+
return sk_X509_ATTRIBUTE_value(req->req_info->attributes, loc);
|
180
201
|
}
|
181
202
|
|
182
203
|
X509_ATTRIBUTE *X509_REQ_delete_attr(X509_REQ *req, int loc) {
|
183
|
-
|
204
|
+
if (req->req_info->attributes == NULL || loc < 0 ||
|
205
|
+
sk_X509_ATTRIBUTE_num(req->req_info->attributes) <= (size_t)loc) {
|
206
|
+
return NULL;
|
207
|
+
}
|
208
|
+
return sk_X509_ATTRIBUTE_delete(req->req_info->attributes, loc);
|
184
209
|
}
|
185
210
|
|
186
|
-
int
|
187
|
-
if (
|
188
|
-
|
211
|
+
static int X509_REQ_add0_attr(X509_REQ *req, X509_ATTRIBUTE *attr) {
|
212
|
+
if (req->req_info->attributes == NULL) {
|
213
|
+
req->req_info->attributes = sk_X509_ATTRIBUTE_new_null();
|
189
214
|
}
|
190
|
-
|
215
|
+
if (req->req_info->attributes == NULL ||
|
216
|
+
!sk_X509_ATTRIBUTE_push(req->req_info->attributes, attr)) {
|
217
|
+
return 0;
|
218
|
+
}
|
219
|
+
|
220
|
+
return 1;
|
221
|
+
}
|
222
|
+
|
223
|
+
int X509_REQ_add1_attr(X509_REQ *req, const X509_ATTRIBUTE *attr) {
|
224
|
+
X509_ATTRIBUTE *new_attr = X509_ATTRIBUTE_dup(attr);
|
225
|
+
if (new_attr == NULL || !X509_REQ_add0_attr(req, new_attr)) {
|
226
|
+
X509_ATTRIBUTE_free(new_attr);
|
227
|
+
return 0;
|
228
|
+
}
|
229
|
+
|
230
|
+
return 1;
|
191
231
|
}
|
192
232
|
|
193
233
|
int X509_REQ_add1_attr_by_OBJ(X509_REQ *req, const ASN1_OBJECT *obj,
|
194
234
|
int attrtype, const unsigned char *data,
|
195
235
|
int len) {
|
196
|
-
|
197
|
-
|
198
|
-
|
236
|
+
X509_ATTRIBUTE *attr =
|
237
|
+
X509_ATTRIBUTE_create_by_OBJ(NULL, obj, attrtype, data, len);
|
238
|
+
if (attr == NULL || !X509_REQ_add0_attr(req, attr)) {
|
239
|
+
X509_ATTRIBUTE_free(attr);
|
240
|
+
return 0;
|
199
241
|
}
|
200
|
-
|
242
|
+
|
243
|
+
return 1;
|
201
244
|
}
|
202
245
|
|
203
246
|
int X509_REQ_add1_attr_by_NID(X509_REQ *req, int nid, int attrtype,
|
204
247
|
const unsigned char *data, int len) {
|
205
|
-
|
206
|
-
|
207
|
-
|
248
|
+
X509_ATTRIBUTE *attr =
|
249
|
+
X509_ATTRIBUTE_create_by_NID(NULL, nid, attrtype, data, len);
|
250
|
+
if (attr == NULL || !X509_REQ_add0_attr(req, attr)) {
|
251
|
+
X509_ATTRIBUTE_free(attr);
|
252
|
+
return 0;
|
208
253
|
}
|
209
|
-
|
254
|
+
|
255
|
+
return 1;
|
210
256
|
}
|
211
257
|
|
212
258
|
int X509_REQ_add1_attr_by_txt(X509_REQ *req, const char *attrname, int attrtype,
|
213
259
|
const unsigned char *data, int len) {
|
214
|
-
|
215
|
-
|
216
|
-
|
260
|
+
X509_ATTRIBUTE *attr =
|
261
|
+
X509_ATTRIBUTE_create_by_txt(NULL, attrname, attrtype, data, len);
|
262
|
+
if (attr == NULL || !X509_REQ_add0_attr(req, attr)) {
|
263
|
+
X509_ATTRIBUTE_free(attr);
|
264
|
+
return 0;
|
217
265
|
}
|
218
|
-
|
266
|
+
|
267
|
+
return 1;
|
219
268
|
}
|
220
269
|
|
221
270
|
void X509_REQ_get0_signature(const X509_REQ *req, const ASN1_BIT_STRING **psig,
|