grpc 1.24.0 → 1.25.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 +306 -243
- data/etc/roots.pem +0 -100
- data/include/grpc/grpc_security.h +44 -18
- data/include/grpc/impl/codegen/grpc_types.h +15 -0
- data/include/grpc/impl/codegen/port_platform.h +27 -11
- data/include/grpc/impl/codegen/sync_generic.h +1 -1
- data/src/boringssl/err_data.c +695 -650
- data/src/core/ext/filters/client_channel/client_channel.cc +257 -179
- data/src/core/ext/filters/client_channel/client_channel.h +24 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +2 -3
- data/src/core/ext/filters/client_channel/client_channel_factory.h +1 -5
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +18 -45
- data/src/core/ext/filters/client_channel/health/health_check_client.h +5 -13
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +2 -3
- data/src/core/ext/filters/client_channel/lb_policy.h +65 -55
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -14
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +113 -36
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +3 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +814 -1589
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +2 -5
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -6
- data/src/core/ext/filters/client_channel/resolver.cc +1 -2
- data/src/core/ext/filters/client_channel/resolver.h +8 -16
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +25 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +46 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +10 -17
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +7 -8
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +111 -44
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +22 -14
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +29 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +27 -36
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +7 -10
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +60 -16
- data/src/core/ext/filters/client_channel/resolver_factory.h +4 -8
- data/src/core/ext/filters/client_channel/resolver_registry.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +7 -10
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +7 -8
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +1 -1
- data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -5
- data/src/core/ext/filters/client_channel/retry_throttle.h +1 -4
- data/src/core/ext/filters/client_channel/service_config.h +8 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +53 -86
- data/src/core/ext/filters/client_channel/subchannel.h +7 -9
- data/src/core/ext/filters/client_channel/subchannel_interface.h +9 -13
- data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +3 -6
- data/src/core/ext/filters/client_channel/{lb_policy/xds/xds_load_balancer_api.cc → xds/xds_api.cc} +169 -52
- data/src/core/ext/filters/client_channel/xds/xds_api.h +171 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +450 -0
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +99 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel.h +8 -6
- data/src/core/ext/filters/client_channel/xds/xds_channel_args.h +26 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_channel_secure.cc +28 -11
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +1413 -0
- data/src/core/ext/filters/client_channel/xds/xds_client.h +221 -0
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.cc +1 -5
- data/src/core/ext/filters/client_channel/{lb_policy/xds → xds}/xds_client_stats.h +3 -4
- data/src/core/ext/filters/deadline/deadline_filter.cc +20 -20
- data/src/core/ext/filters/http/client/http_client_filter.cc +15 -15
- data/src/core/ext/filters/http/client_authority_filter.cc +14 -14
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +12 -12
- data/src/core/ext/filters/max_age/max_age_filter.cc +59 -50
- data/src/core/ext/filters/message_size/message_size_filter.cc +18 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +233 -175
- data/src/core/ext/transport/chttp2/transport/flow_control.h +21 -24
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +253 -163
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +24 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/internal.h +13 -15
- data/src/core/ext/transport/chttp2/transport/writing.cc +3 -0
- data/src/core/ext/transport/inproc/inproc_transport.cc +20 -13
- data/src/core/lib/channel/channel_args.cc +16 -0
- data/src/core/lib/channel/channel_args.h +22 -0
- data/src/core/lib/channel/channelz.cc +5 -6
- data/src/core/lib/channel/channelz.h +1 -1
- data/src/core/lib/channel/connected_channel.cc +20 -20
- data/src/core/lib/channel/handshaker.h +3 -4
- data/src/core/lib/channel/handshaker_factory.h +1 -3
- data/src/core/lib/debug/trace.h +3 -2
- data/src/core/lib/gprpp/arena.cc +3 -3
- data/src/core/lib/gprpp/arena.h +2 -3
- data/src/core/lib/gprpp/inlined_vector.h +9 -0
- data/src/core/lib/gprpp/map.h +3 -501
- data/src/core/lib/gprpp/memory.h +45 -41
- data/src/core/lib/gprpp/mpscq.cc +108 -0
- data/src/core/lib/gprpp/mpscq.h +98 -0
- data/src/core/lib/gprpp/orphanable.h +6 -11
- data/src/core/lib/gprpp/ref_counted.h +25 -19
- data/src/core/lib/gprpp/set.h +33 -0
- data/src/core/lib/gprpp/thd.h +2 -4
- data/src/core/lib/http/httpcli.cc +1 -1
- data/src/core/lib/http/httpcli_security_connector.cc +15 -11
- data/src/core/lib/http/parser.cc +1 -1
- data/src/core/lib/iomgr/buffer_list.cc +4 -5
- data/src/core/lib/iomgr/buffer_list.h +5 -6
- data/src/core/lib/iomgr/call_combiner.cc +4 -5
- data/src/core/lib/iomgr/call_combiner.h +2 -2
- data/src/core/lib/iomgr/cfstream_handle.h +3 -5
- data/src/core/lib/iomgr/closure.h +8 -3
- data/src/core/lib/iomgr/combiner.cc +45 -82
- data/src/core/lib/iomgr/combiner.h +32 -8
- data/src/core/lib/iomgr/endpoint_cfstream.cc +5 -3
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -15
- data/src/core/lib/iomgr/ev_poll_posix.cc +3 -1
- data/src/core/lib/iomgr/exec_ctx.h +4 -3
- data/src/core/lib/iomgr/executor.cc +4 -2
- data/src/core/lib/iomgr/executor.h +3 -0
- data/src/core/lib/iomgr/executor/mpmcqueue.h +3 -6
- data/src/core/lib/iomgr/executor/threadpool.cc +1 -2
- data/src/core/lib/iomgr/executor/threadpool.h +7 -11
- data/src/core/lib/iomgr/resource_quota.cc +55 -51
- data/src/core/lib/iomgr/resource_quota.h +13 -9
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +13 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +4 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -11
- data/src/core/lib/iomgr/tcp_custom.cc +9 -7
- data/src/core/lib/iomgr/tcp_posix.cc +20 -16
- data/src/core/lib/iomgr/tcp_server.h +1 -4
- data/src/core/lib/iomgr/tcp_server_custom.cc +5 -5
- data/src/core/lib/iomgr/tcp_server_posix.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -11
- data/src/core/lib/iomgr/timer_custom.cc +2 -2
- data/src/core/lib/iomgr/udp_server.cc +3 -2
- data/src/core/lib/iomgr/udp_server.h +6 -12
- data/src/core/lib/json/json.h +1 -1
- data/src/core/lib/json/json_string.cc +2 -2
- data/src/core/lib/profiling/basic_timers.cc +2 -2
- data/src/core/lib/security/credentials/alts/alts_credentials.cc +2 -2
- data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +1 -1
- data/src/core/lib/security/credentials/credentials.h +4 -20
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +4 -4
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -3
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +64 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +9 -7
- data/src/core/lib/security/security_connector/load_system_roots_linux.cc +2 -0
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +4 -4
- data/src/core/lib/security/security_connector/security_connector.cc +1 -0
- data/src/core/lib/security/security_connector/security_connector.h +19 -17
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +8 -5
- data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
- data/src/core/lib/security/security_connector/ssl_utils.h +1 -1
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.cc +14 -6
- data/src/core/lib/security/security_connector/tls/spiffe_security_connector.h +4 -2
- data/src/core/lib/security/transport/client_auth_filter.cc +17 -17
- data/src/core/lib/security/transport/security_handshaker.cc +29 -13
- data/src/core/lib/security/transport/security_handshaker.h +4 -2
- data/src/core/lib/security/transport/server_auth_filter.cc +14 -14
- data/src/core/lib/slice/slice.cc +2 -10
- data/src/core/lib/slice/slice_hash_table.h +4 -6
- data/src/core/lib/slice/slice_intern.cc +42 -39
- data/src/core/lib/slice/slice_internal.h +3 -3
- data/src/core/lib/slice/slice_utils.h +21 -4
- data/src/core/lib/slice/slice_weak_hash_table.h +4 -6
- data/src/core/lib/surface/call.cc +3 -3
- data/src/core/lib/surface/channel.cc +7 -0
- data/src/core/lib/surface/completion_queue.cc +12 -11
- data/src/core/lib/surface/completion_queue.h +4 -2
- data/src/core/lib/surface/init.cc +1 -0
- data/src/core/lib/surface/lame_client.cc +33 -18
- data/src/core/lib/surface/server.cc +77 -76
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/lib/transport/byte_stream.h +3 -7
- data/src/core/lib/transport/connectivity_state.cc +112 -98
- data/src/core/lib/transport/connectivity_state.h +100 -50
- data/src/core/lib/transport/static_metadata.cc +276 -288
- data/src/core/lib/transport/static_metadata.h +73 -76
- data/src/core/lib/transport/status_conversion.cc +1 -1
- data/src/core/lib/transport/status_metadata.cc +1 -1
- data/src/core/lib/transport/transport.cc +2 -2
- data/src/core/lib/transport/transport.h +12 -4
- data/src/core/lib/transport/transport_op_string.cc +14 -11
- data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +5 -5
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +12 -2
- data/src/core/tsi/fake_transport_security.cc +7 -5
- data/src/core/tsi/grpc_shadow_boringssl.h +2918 -2627
- data/src/core/tsi/local_transport_security.cc +8 -6
- data/src/core/tsi/ssl/session_cache/ssl_session.h +1 -3
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -2
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +7 -5
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -6
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +12 -12
- data/src/core/tsi/ssl_transport_security.h +2 -2
- data/src/core/tsi/transport_security_grpc.cc +7 -0
- data/src/core/tsi/transport_security_grpc.h +6 -0
- data/src/ruby/ext/grpc/extconf.rb +1 -0
- data/src/ruby/ext/grpc/rb_call.c +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +2 -2
- data/third_party/boringssl/crypto/asn1/a_bool.c +18 -5
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +17 -221
- data/third_party/boringssl/crypto/asn1/a_dup.c +0 -24
- data/third_party/boringssl/crypto/asn1/a_enum.c +2 -2
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +10 -72
- data/third_party/boringssl/crypto/asn1/a_int.c +12 -71
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +110 -216
- data/third_party/boringssl/crypto/asn1/a_object.c +16 -5
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -1
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +3 -1
- data/third_party/boringssl/crypto/base64/base64.c +2 -2
- data/third_party/boringssl/crypto/bio/bio.c +73 -9
- data/third_party/boringssl/crypto/bio/connect.c +4 -0
- data/third_party/boringssl/crypto/bio/fd.c +4 -0
- data/third_party/boringssl/crypto/bio/file.c +5 -2
- data/third_party/boringssl/crypto/bio/socket.c +4 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +4 -0
- data/third_party/boringssl/crypto/bn_extra/convert.c +11 -7
- data/third_party/boringssl/crypto/bytestring/ber.c +8 -4
- data/third_party/boringssl/crypto/bytestring/cbb.c +19 -7
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -15
- data/third_party/boringssl/crypto/bytestring/internal.h +28 -7
- data/third_party/boringssl/crypto/bytestring/unicode.c +155 -0
- data/third_party/boringssl/crypto/chacha/chacha.c +36 -19
- data/third_party/boringssl/crypto/chacha/internal.h +45 -0
- data/third_party/boringssl/crypto/cipher_extra/cipher_extra.c +29 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesccm.c +269 -25
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +16 -14
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +54 -38
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +133 -41
- data/third_party/boringssl/crypto/cipher_extra/e_tls.c +23 -15
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +24 -15
- data/third_party/boringssl/crypto/cmac/cmac.c +62 -25
- data/third_party/boringssl/crypto/conf/conf.c +7 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +4 -148
- data/third_party/boringssl/crypto/cpu-arm-linux.h +201 -0
- data/third_party/boringssl/crypto/cpu-intel.c +45 -51
- data/third_party/boringssl/crypto/crypto.c +39 -22
- data/third_party/boringssl/crypto/curve25519/spake25519.c +1 -1
- data/third_party/boringssl/crypto/dsa/dsa.c +77 -53
- data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +20 -8
- data/third_party/boringssl/crypto/ec_extra/ec_derive.c +96 -0
- data/third_party/boringssl/crypto/{ecdh/ecdh.c → ecdh_extra/ecdh_extra.c} +20 -58
- data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -9
- data/third_party/boringssl/crypto/engine/engine.c +2 -1
- data/third_party/boringssl/crypto/err/err.c +2 -0
- data/third_party/boringssl/crypto/err/internal.h +2 -2
- data/third_party/boringssl/crypto/evp/evp.c +89 -8
- data/third_party/boringssl/crypto/evp/evp_asn1.c +56 -5
- data/third_party/boringssl/crypto/evp/evp_ctx.c +52 -14
- data/third_party/boringssl/crypto/evp/internal.h +18 -1
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +51 -3
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +6 -7
- data/third_party/boringssl/crypto/evp/p_ed25519.c +36 -3
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +76 -45
- data/third_party/boringssl/crypto/evp/p_rsa.c +3 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +5 -0
- data/third_party/boringssl/crypto/evp/p_x25519.c +110 -0
- data/third_party/boringssl/crypto/evp/p_x25519_asn1.c +249 -0
- data/third_party/boringssl/crypto/evp/scrypt.c +6 -2
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +34 -274
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +161 -21
- data/third_party/boringssl/crypto/fipsmodule/aes/key_wrap.c +111 -13
- data/third_party/boringssl/crypto/fipsmodule/aes/mode_wrappers.c +17 -21
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +119 -7
- data/third_party/boringssl/crypto/fipsmodule/bn/bn.c +19 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/bn/ctx.c +93 -160
- data/third_party/boringssl/crypto/fipsmodule/bn/div.c +48 -57
- data/third_party/boringssl/crypto/fipsmodule/bn/div_extra.c +87 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +143 -211
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd.c +0 -305
- data/third_party/boringssl/crypto/fipsmodule/bn/gcd_extra.c +325 -0
- data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +168 -50
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +68 -92
- data/third_party/boringssl/crypto/fipsmodule/bn/montgomery_inv.c +7 -6
- data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +11 -14
- data/third_party/boringssl/crypto/fipsmodule/bn/prime.c +358 -443
- data/third_party/boringssl/crypto/fipsmodule/bn/random.c +25 -35
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.c +20 -25
- data/third_party/boringssl/crypto/fipsmodule/bn/rsaz_exp.h +76 -5
- data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +14 -14
- data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +7 -2
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_aes.c +383 -516
- data/third_party/boringssl/crypto/fipsmodule/cipher/e_des.c +4 -0
- data/third_party/boringssl/crypto/fipsmodule/cipher/internal.h +3 -4
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +3 -2
- data/third_party/boringssl/crypto/fipsmodule/digest/digest.c +32 -17
- data/third_party/boringssl/crypto/fipsmodule/digest/md32_common.h +3 -3
- data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +228 -122
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_key.c +34 -8
- data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +311 -98
- data/third_party/boringssl/crypto/fipsmodule/ec/felem.c +82 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +263 -97
- data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +22 -59
- data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +317 -234
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64-table.h +9473 -9475
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +313 -109
- data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.h +36 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/scalar.c +96 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +126 -792
- data/third_party/boringssl/crypto/fipsmodule/ec/simple_mul.c +84 -0
- data/third_party/boringssl/crypto/fipsmodule/ec/util.c +163 -12
- data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +84 -211
- data/third_party/boringssl/crypto/fipsmodule/ecdh/ecdh.c +122 -0
- data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +60 -205
- data/third_party/boringssl/crypto/fipsmodule/fips_shared_support.c +32 -0
- data/third_party/boringssl/crypto/fipsmodule/is_fips.c +2 -0
- data/third_party/boringssl/crypto/fipsmodule/md4/md4.c +3 -1
- data/third_party/boringssl/crypto/fipsmodule/md5/internal.h +37 -0
- data/third_party/boringssl/crypto/fipsmodule/md5/md5.c +11 -8
- data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +35 -79
- data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +7 -39
- data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +7 -27
- data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +123 -309
- data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +189 -126
- data/third_party/boringssl/crypto/fipsmodule/modes/ofb.c +3 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/ctrdrbg.c +2 -2
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +35 -0
- data/third_party/boringssl/crypto/fipsmodule/rand/rand.c +24 -19
- data/third_party/boringssl/crypto/fipsmodule/rand/urandom.c +256 -77
- data/third_party/boringssl/crypto/fipsmodule/rsa/padding.c +10 -7
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +5 -1
- data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +131 -14
- data/third_party/boringssl/crypto/fipsmodule/self_check/self_check.c +83 -10
- data/third_party/boringssl/crypto/fipsmodule/sha/internal.h +53 -0
- data/third_party/boringssl/crypto/fipsmodule/sha/sha1.c +9 -13
- data/third_party/boringssl/crypto/fipsmodule/sha/sha256.c +18 -12
- data/third_party/boringssl/crypto/fipsmodule/sha/sha512.c +95 -168
- data/third_party/boringssl/crypto/hrss/hrss.c +2201 -0
- data/third_party/boringssl/crypto/hrss/internal.h +62 -0
- data/third_party/boringssl/crypto/internal.h +95 -20
- data/third_party/boringssl/crypto/lhash/lhash.c +45 -33
- data/third_party/boringssl/crypto/mem.c +39 -2
- data/third_party/boringssl/crypto/obj/obj.c +4 -4
- data/third_party/boringssl/crypto/obj/obj_dat.h +6181 -875
- data/third_party/boringssl/crypto/pem/pem_all.c +2 -3
- data/third_party/boringssl/crypto/pem/pem_info.c +144 -162
- data/third_party/boringssl/crypto/pem/pem_lib.c +53 -52
- data/third_party/boringssl/crypto/pem/pem_pkey.c +13 -21
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +15 -22
- data/third_party/boringssl/crypto/pkcs7/pkcs7_x509.c +168 -16
- data/third_party/boringssl/crypto/pkcs8/internal.h +11 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +24 -15
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +42 -25
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +559 -43
- data/third_party/boringssl/crypto/pool/internal.h +1 -1
- data/third_party/boringssl/crypto/pool/pool.c +21 -0
- data/third_party/boringssl/crypto/rand_extra/deterministic.c +8 -0
- data/third_party/boringssl/crypto/rand_extra/fuchsia.c +1 -14
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa_extra/rsa_print.c +22 -0
- data/third_party/boringssl/crypto/siphash/siphash.c +80 -0
- data/third_party/boringssl/crypto/stack/stack.c +83 -32
- data/third_party/boringssl/crypto/thread_none.c +2 -2
- data/third_party/boringssl/crypto/thread_pthread.c +2 -2
- data/third_party/boringssl/crypto/thread_win.c +38 -19
- data/third_party/boringssl/crypto/x509/a_strex.c +22 -2
- data/third_party/boringssl/crypto/x509/asn1_gen.c +2 -1
- data/third_party/boringssl/crypto/x509/by_dir.c +7 -0
- data/third_party/boringssl/crypto/x509/by_file.c +12 -10
- data/third_party/boringssl/crypto/x509/t_crl.c +5 -8
- data/third_party/boringssl/crypto/x509/t_req.c +1 -3
- data/third_party/boringssl/crypto/x509/t_x509.c +5 -8
- data/third_party/boringssl/crypto/x509/x509_cmp.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +1 -1
- data/third_party/boringssl/crypto/x509/x509_lu.c +114 -5
- data/third_party/boringssl/crypto/x509/x509_req.c +20 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +1 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +4 -5
- data/third_party/boringssl/crypto/x509/x509_vfy.c +145 -138
- data/third_party/boringssl/crypto/x509/x509_vpm.c +2 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +40 -0
- data/third_party/boringssl/crypto/x509/x509name.c +2 -3
- data/third_party/boringssl/crypto/x509/x_all.c +109 -210
- data/third_party/boringssl/crypto/x509/x_x509.c +6 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +1 -3
- data/third_party/boringssl/crypto/x509v3/internal.h +56 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +4 -2
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +19 -13
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +3 -2
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -6
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +1 -0
- data/third_party/boringssl/crypto/x509v3/v3_ocsp.c +68 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +47 -69
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +5 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +69 -25
- data/third_party/boringssl/include/openssl/aead.h +45 -19
- data/third_party/boringssl/include/openssl/aes.h +32 -7
- data/third_party/boringssl/include/openssl/asn1.h +7 -77
- data/third_party/boringssl/include/openssl/base.h +120 -6
- data/third_party/boringssl/include/openssl/base64.h +4 -1
- data/third_party/boringssl/include/openssl/bio.h +112 -81
- data/third_party/boringssl/include/openssl/blowfish.h +3 -3
- data/third_party/boringssl/include/openssl/bn.h +55 -29
- data/third_party/boringssl/include/openssl/buf.h +2 -2
- data/third_party/boringssl/include/openssl/bytestring.h +54 -32
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +46 -16
- data/third_party/boringssl/include/openssl/cmac.h +6 -2
- data/third_party/boringssl/include/openssl/conf.h +3 -6
- data/third_party/boringssl/include/openssl/cpu.h +25 -9
- data/third_party/boringssl/include/openssl/crypto.h +32 -10
- data/third_party/boringssl/include/openssl/curve25519.h +4 -4
- data/third_party/boringssl/include/openssl/dh.h +3 -2
- data/third_party/boringssl/include/openssl/digest.h +21 -7
- data/third_party/boringssl/include/openssl/dsa.h +8 -2
- data/third_party/boringssl/include/openssl/e_os2.h +18 -0
- data/third_party/boringssl/include/openssl/ec.h +25 -21
- data/third_party/boringssl/include/openssl/ec_key.h +36 -8
- data/third_party/boringssl/include/openssl/ecdh.h +17 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +3 -3
- data/third_party/boringssl/include/openssl/engine.h +4 -4
- data/third_party/boringssl/include/openssl/err.h +3 -0
- data/third_party/boringssl/include/openssl/evp.h +199 -42
- data/third_party/boringssl/include/openssl/hmac.h +4 -4
- data/third_party/boringssl/include/openssl/hrss.h +100 -0
- data/third_party/boringssl/include/openssl/lhash.h +131 -23
- data/third_party/boringssl/include/openssl/md4.h +6 -4
- data/third_party/boringssl/include/openssl/md5.h +6 -4
- data/third_party/boringssl/include/openssl/mem.h +6 -2
- data/third_party/boringssl/include/openssl/nid.h +3 -0
- data/third_party/boringssl/include/openssl/obj.h +3 -0
- data/third_party/boringssl/include/openssl/pem.h +102 -64
- data/third_party/boringssl/include/openssl/pkcs7.h +136 -3
- data/third_party/boringssl/include/openssl/pkcs8.h +42 -3
- data/third_party/boringssl/include/openssl/pool.h +13 -2
- data/third_party/boringssl/include/openssl/ripemd.h +5 -4
- data/third_party/boringssl/include/openssl/rsa.h +46 -15
- data/third_party/boringssl/include/openssl/sha.h +40 -28
- data/third_party/boringssl/include/openssl/siphash.h +37 -0
- data/third_party/boringssl/include/openssl/span.h +17 -9
- data/third_party/boringssl/include/openssl/ssl.h +766 -393
- data/third_party/boringssl/include/openssl/ssl3.h +4 -3
- data/third_party/boringssl/include/openssl/stack.h +134 -77
- data/third_party/boringssl/include/openssl/thread.h +1 -1
- data/third_party/boringssl/include/openssl/tls1.h +25 -9
- data/third_party/boringssl/include/openssl/type_check.h +14 -15
- data/third_party/boringssl/include/openssl/x509.h +28 -3
- data/third_party/boringssl/include/openssl/x509_vfy.h +98 -32
- data/third_party/boringssl/include/openssl/x509v3.h +17 -13
- data/third_party/boringssl/ssl/d1_both.cc +9 -18
- data/third_party/boringssl/ssl/d1_lib.cc +4 -3
- data/third_party/boringssl/ssl/d1_pkt.cc +4 -4
- data/third_party/boringssl/ssl/d1_srtp.cc +15 -15
- data/third_party/boringssl/ssl/dtls_method.cc +0 -1
- data/third_party/boringssl/ssl/dtls_record.cc +28 -28
- data/third_party/boringssl/ssl/handoff.cc +295 -91
- data/third_party/boringssl/ssl/handshake.cc +133 -72
- data/third_party/boringssl/ssl/handshake_client.cc +218 -189
- data/third_party/boringssl/ssl/handshake_server.cc +399 -272
- data/third_party/boringssl/ssl/internal.h +1413 -928
- data/third_party/boringssl/ssl/s3_both.cc +175 -36
- data/third_party/boringssl/ssl/s3_lib.cc +9 -13
- data/third_party/boringssl/ssl/s3_pkt.cc +63 -29
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +55 -35
- data/third_party/boringssl/ssl/ssl_asn1.cc +57 -73
- data/third_party/boringssl/ssl/ssl_buffer.cc +13 -12
- data/third_party/boringssl/ssl/ssl_cert.cc +313 -210
- data/third_party/boringssl/ssl/ssl_cipher.cc +159 -221
- data/third_party/boringssl/ssl/ssl_file.cc +2 -0
- data/third_party/boringssl/ssl/ssl_key_share.cc +164 -19
- data/third_party/boringssl/ssl/ssl_lib.cc +847 -555
- data/third_party/boringssl/ssl/ssl_privkey.cc +441 -111
- data/third_party/boringssl/ssl/ssl_session.cc +230 -178
- data/third_party/boringssl/ssl/ssl_transcript.cc +21 -142
- data/third_party/boringssl/ssl/ssl_versions.cc +88 -93
- data/third_party/boringssl/ssl/ssl_x509.cc +279 -218
- data/third_party/boringssl/ssl/t1_enc.cc +5 -96
- data/third_party/boringssl/ssl/t1_lib.cc +931 -678
- data/third_party/boringssl/ssl/tls13_both.cc +251 -121
- data/third_party/boringssl/ssl/tls13_client.cc +129 -73
- data/third_party/boringssl/ssl/tls13_enc.cc +350 -282
- data/third_party/boringssl/ssl/tls13_server.cc +259 -192
- data/third_party/boringssl/ssl/tls_method.cc +26 -21
- data/third_party/boringssl/ssl/tls_record.cc +42 -47
- data/third_party/boringssl/third_party/fiat/curve25519.c +261 -1324
- data/third_party/boringssl/third_party/fiat/curve25519_32.h +911 -0
- data/third_party/boringssl/third_party/fiat/curve25519_64.h +559 -0
- data/third_party/boringssl/third_party/fiat/p256.c +238 -999
- data/third_party/boringssl/third_party/fiat/p256_32.h +3226 -0
- data/third_party/boringssl/third_party/fiat/p256_64.h +1217 -0
- data/third_party/upb/upb/port_def.inc +1 -1
- data/third_party/upb/upb/table.c +2 -1
- metadata +72 -44
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_load_balancer_api.h +0 -127
- data/src/core/lib/gpr/mpscq.cc +0 -117
- data/src/core/lib/gpr/mpscq.h +0 -88
- data/src/core/lib/gprpp/abstract.h +0 -47
- data/src/core/lib/gprpp/pair.h +0 -38
- data/third_party/boringssl/crypto/cipher_extra/e_ssl3.c +0 -460
- data/third_party/boringssl/crypto/fipsmodule/modes/ccm.c +0 -256
- data/third_party/boringssl/include/openssl/lhash_macros.h +0 -174
- data/third_party/boringssl/ssl/custom_extensions.cc +0 -265
@@ -313,6 +313,12 @@ int i2d_X509_AUX(X509 *a, unsigned char **pp)
|
|
313
313
|
return length;
|
314
314
|
}
|
315
315
|
|
316
|
+
int i2d_re_X509_tbs(X509 *x, unsigned char **pp)
|
317
|
+
{
|
318
|
+
x->cert_info->enc.modified = 1;
|
319
|
+
return i2d_X509_CINF(x->cert_info, pp);
|
320
|
+
}
|
321
|
+
|
316
322
|
void X509_get0_signature(const ASN1_BIT_STRING **psig, const X509_ALGOR **palg,
|
317
323
|
const X509 *x)
|
318
324
|
{
|
@@ -107,19 +107,17 @@ static const X509V3_EXT_METHOD *const standard_exts[] = {
|
|
107
107
|
&v3_ext_ku,
|
108
108
|
&v3_delta_crl,
|
109
109
|
&v3_crl_reason,
|
110
|
-
#ifndef OPENSSL_NO_OCSP
|
111
110
|
&v3_crl_invdate,
|
112
|
-
#endif
|
113
111
|
&v3_sxnet,
|
114
112
|
&v3_info,
|
115
113
|
#ifndef OPENSSL_NO_OCSP
|
116
114
|
&v3_ocsp_nonce,
|
117
115
|
&v3_ocsp_crlid,
|
118
116
|
&v3_ocsp_accresp,
|
119
|
-
&v3_ocsp_nocheck,
|
120
117
|
&v3_ocsp_acutoff,
|
121
118
|
&v3_ocsp_serviceloc,
|
122
119
|
#endif
|
120
|
+
&v3_ocsp_nocheck,
|
123
121
|
&v3_sinfo,
|
124
122
|
&v3_policy_constraints,
|
125
123
|
#ifndef OPENSSL_NO_OCSP
|
@@ -0,0 +1,56 @@
|
|
1
|
+
/* Copyright (c) 2018, Google Inc.
|
2
|
+
*
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
6
|
+
*
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
14
|
+
|
15
|
+
#ifndef OPENSSL_HEADER_X509V3_INTERNAL_H
|
16
|
+
#define OPENSSL_HEADER_X509V3_INTERNAL_H
|
17
|
+
|
18
|
+
#include <openssl/base.h>
|
19
|
+
|
20
|
+
#if defined(__cplusplus)
|
21
|
+
extern "C" {
|
22
|
+
#endif
|
23
|
+
|
24
|
+
|
25
|
+
// x509v3_bytes_to_hex encodes |len| bytes from |buffer| to hex and returns a
|
26
|
+
// newly-allocated NUL-terminated string containing the result, or NULL on
|
27
|
+
// allocation error.
|
28
|
+
//
|
29
|
+
// Note this function was historically named |hex_to_string| in OpenSSL, not
|
30
|
+
// |string_to_hex|.
|
31
|
+
char *x509v3_bytes_to_hex(const unsigned char *buffer, long len);
|
32
|
+
|
33
|
+
// x509v3_hex_string_to_bytes decodes |str| in hex and returns a newly-allocated
|
34
|
+
// array containing the result, or NULL on error. On success, it sets |*len| to
|
35
|
+
// the length of the result. Colon separators between bytes in the input are
|
36
|
+
// allowed and ignored.
|
37
|
+
//
|
38
|
+
// Note this function was historically named |string_to_hex| in OpenSSL, not
|
39
|
+
// |hex_to_string|.
|
40
|
+
unsigned char *x509v3_hex_to_bytes(const char *str, long *len);
|
41
|
+
|
42
|
+
// x509v3_name_cmp returns zero if |name| is equal to |cmp| or begins with |cmp|
|
43
|
+
// followed by '.'. Otherwise, it returns a non-zero number.
|
44
|
+
int x509v3_name_cmp(const char *name, const char *cmp);
|
45
|
+
|
46
|
+
// x509v3_looks_like_dns_name returns one if |in| looks like a DNS name and zero
|
47
|
+
// otherwise.
|
48
|
+
OPENSSL_EXPORT int x509v3_looks_like_dns_name(const unsigned char *in,
|
49
|
+
size_t len);
|
50
|
+
|
51
|
+
|
52
|
+
#if defined(__cplusplus)
|
53
|
+
} /* extern C */
|
54
|
+
#endif
|
55
|
+
|
56
|
+
#endif /* OPENSSL_HEADER_X509V3_INTERNAL_H */
|
@@ -93,6 +93,7 @@ static int policy_cache_create(X509 *x,
|
|
93
93
|
/*
|
94
94
|
* Duplicate policy OIDs are illegal: reject if matches found.
|
95
95
|
*/
|
96
|
+
sk_X509_POLICY_DATA_sort(cache->data);
|
96
97
|
if (OBJ_obj2nid(data->valid_policy) == NID_any_policy) {
|
97
98
|
if (cache->anyPolicy) {
|
98
99
|
ret = -1;
|
@@ -262,6 +263,7 @@ X509_POLICY_DATA *policy_cache_find_data(const X509_POLICY_CACHE *cache,
|
|
262
263
|
X509_POLICY_DATA tmp;
|
263
264
|
|
264
265
|
tmp.valid_policy = (ASN1_OBJECT *)id;
|
266
|
+
sk_X509_POLICY_DATA_sort(cache->data);
|
265
267
|
if (!sk_X509_POLICY_DATA_find(cache->data, &idx, &tmp))
|
266
268
|
return NULL;
|
267
269
|
return sk_X509_POLICY_DATA_value(cache->data, idx);
|
@@ -543,9 +543,11 @@ static int tree_add_auth_node(STACK_OF(X509_POLICY_NODE) **pnodes,
|
|
543
543
|
*pnodes = policy_node_cmp_new();
|
544
544
|
if (!*pnodes)
|
545
545
|
return 0;
|
546
|
-
} else
|
546
|
+
} else {
|
547
|
+
sk_X509_POLICY_NODE_sort(*pnodes);
|
548
|
+
if (sk_X509_POLICY_NODE_find(*pnodes, NULL, pcy))
|
547
549
|
return 1;
|
548
|
-
|
550
|
+
}
|
549
551
|
if (!sk_X509_POLICY_NODE_push(*pnodes, pcy))
|
550
552
|
return 0;
|
551
553
|
|
@@ -66,6 +66,9 @@
|
|
66
66
|
#include <openssl/obj.h>
|
67
67
|
#include <openssl/x509v3.h>
|
68
68
|
|
69
|
+
#include "internal.h"
|
70
|
+
|
71
|
+
|
69
72
|
static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
|
70
73
|
AUTHORITY_KEYID *akeyid,
|
71
74
|
STACK_OF(CONF_VALUE)
|
@@ -92,14 +95,14 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_KEYID(X509V3_EXT_METHOD *method,
|
|
92
95
|
{
|
93
96
|
char *tmp;
|
94
97
|
if (akeyid->keyid) {
|
95
|
-
tmp =
|
98
|
+
tmp = x509v3_bytes_to_hex(akeyid->keyid->data, akeyid->keyid->length);
|
96
99
|
X509V3_add_value("keyid", tmp, &extlist);
|
97
100
|
OPENSSL_free(tmp);
|
98
101
|
}
|
99
102
|
if (akeyid->issuer)
|
100
103
|
extlist = i2v_GENERAL_NAMES(NULL, akeyid->issuer, extlist);
|
101
104
|
if (akeyid->serial) {
|
102
|
-
tmp =
|
105
|
+
tmp = x509v3_bytes_to_hex(akeyid->serial->data, akeyid->serial->length);
|
103
106
|
X509V3_add_value("serial", tmp, &extlist);
|
104
107
|
OPENSSL_free(tmp);
|
105
108
|
}
|
@@ -64,6 +64,9 @@
|
|
64
64
|
#include <openssl/obj.h>
|
65
65
|
#include <openssl/x509v3.h>
|
66
66
|
|
67
|
+
#include "internal.h"
|
68
|
+
|
69
|
+
|
67
70
|
static GENERAL_NAMES *v2i_subject_alt(X509V3_EXT_METHOD *method,
|
68
71
|
X509V3_CTX *ctx,
|
69
72
|
STACK_OF(CONF_VALUE) *nval);
|
@@ -207,15 +210,18 @@ int GENERAL_NAME_print(BIO *out, GENERAL_NAME *gen)
|
|
207
210
|
break;
|
208
211
|
|
209
212
|
case GEN_EMAIL:
|
210
|
-
BIO_printf(out, "email
|
213
|
+
BIO_printf(out, "email:");
|
214
|
+
ASN1_STRING_print(out, gen->d.ia5);
|
211
215
|
break;
|
212
216
|
|
213
217
|
case GEN_DNS:
|
214
|
-
BIO_printf(out, "DNS
|
218
|
+
BIO_printf(out, "DNS:");
|
219
|
+
ASN1_STRING_print(out, gen->d.ia5);
|
215
220
|
break;
|
216
221
|
|
217
222
|
case GEN_URI:
|
218
|
-
BIO_printf(out, "URI
|
223
|
+
BIO_printf(out, "URI:");
|
224
|
+
ASN1_STRING_print(out, gen->d.ia5);
|
219
225
|
break;
|
220
226
|
|
221
227
|
case GEN_DIRNAME:
|
@@ -261,7 +267,7 @@ static GENERAL_NAMES *v2i_issuer_alt(X509V3_EXT_METHOD *method,
|
|
261
267
|
}
|
262
268
|
for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
|
263
269
|
cnf = sk_CONF_VALUE_value(nval, i);
|
264
|
-
if (!
|
270
|
+
if (!x509v3_name_cmp(cnf->name, "issuer") && cnf->value &&
|
265
271
|
!strcmp(cnf->value, "copy")) {
|
266
272
|
if (!copy_issuer(ctx, gens))
|
267
273
|
goto err;
|
@@ -331,11 +337,11 @@ static GENERAL_NAMES *v2i_subject_alt(X509V3_EXT_METHOD *method,
|
|
331
337
|
}
|
332
338
|
for (i = 0; i < sk_CONF_VALUE_num(nval); i++) {
|
333
339
|
cnf = sk_CONF_VALUE_value(nval, i);
|
334
|
-
if (!
|
340
|
+
if (!x509v3_name_cmp(cnf->name, "email") && cnf->value &&
|
335
341
|
!strcmp(cnf->value, "copy")) {
|
336
342
|
if (!copy_email(ctx, gens, 0))
|
337
343
|
goto err;
|
338
|
-
} else if (!
|
344
|
+
} else if (!x509v3_name_cmp(cnf->name, "email") && cnf->value &&
|
339
345
|
!strcmp(cnf->value, "move")) {
|
340
346
|
if (!copy_email(ctx, gens, 1))
|
341
347
|
goto err;
|
@@ -545,19 +551,19 @@ GENERAL_NAME *v2i_GENERAL_NAME_ex(GENERAL_NAME *out,
|
|
545
551
|
return NULL;
|
546
552
|
}
|
547
553
|
|
548
|
-
if (!
|
554
|
+
if (!x509v3_name_cmp(name, "email"))
|
549
555
|
type = GEN_EMAIL;
|
550
|
-
else if (!
|
556
|
+
else if (!x509v3_name_cmp(name, "URI"))
|
551
557
|
type = GEN_URI;
|
552
|
-
else if (!
|
558
|
+
else if (!x509v3_name_cmp(name, "DNS"))
|
553
559
|
type = GEN_DNS;
|
554
|
-
else if (!
|
560
|
+
else if (!x509v3_name_cmp(name, "RID"))
|
555
561
|
type = GEN_RID;
|
556
|
-
else if (!
|
562
|
+
else if (!x509v3_name_cmp(name, "IP"))
|
557
563
|
type = GEN_IPADD;
|
558
|
-
else if (!
|
564
|
+
else if (!x509v3_name_cmp(name, "dirName"))
|
559
565
|
type = GEN_DIRNAME;
|
560
|
-
else if (!
|
566
|
+
else if (!x509v3_name_cmp(name, "otherName"))
|
561
567
|
type = GEN_OTHERNAME;
|
562
568
|
else {
|
563
569
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_UNSUPPORTED_OPTION);
|
@@ -69,6 +69,7 @@
|
|
69
69
|
#include <openssl/x509v3.h>
|
70
70
|
|
71
71
|
#include "../internal.h"
|
72
|
+
#include "internal.h"
|
72
73
|
|
73
74
|
static int v3_check_critical(char **value);
|
74
75
|
static int v3_check_generic(char **value);
|
@@ -278,7 +279,7 @@ static X509_EXTENSION *v3_generic_extension(const char *ext, char *value,
|
|
278
279
|
}
|
279
280
|
|
280
281
|
if (gen_type == 1)
|
281
|
-
ext_der =
|
282
|
+
ext_der = x509v3_hex_to_bytes(value, &ext_len);
|
282
283
|
else if (gen_type == 2)
|
283
284
|
ext_der = generic_asn1(value, ctx, &ext_len);
|
284
285
|
|
@@ -69,6 +69,7 @@
|
|
69
69
|
#include <openssl/stack.h>
|
70
70
|
#include <openssl/x509v3.h>
|
71
71
|
|
72
|
+
#include "internal.h"
|
72
73
|
#include "pcy_int.h"
|
73
74
|
|
74
75
|
/* Certificate policies extension support: this one is a bit complex... */
|
@@ -231,7 +232,7 @@ static POLICYINFO *policy_section(X509V3_CTX *ctx,
|
|
231
232
|
}
|
232
233
|
pol->policyid = pobj;
|
233
234
|
|
234
|
-
} else if (!
|
235
|
+
} else if (!x509v3_name_cmp(cnf->name, "CPS")) {
|
235
236
|
if (!pol->qualifiers)
|
236
237
|
pol->qualifiers = sk_POLICYQUALINFO_new_null();
|
237
238
|
if (!(qual = POLICYQUALINFO_new()))
|
@@ -251,7 +252,7 @@ static POLICYINFO *policy_section(X509V3_CTX *ctx,
|
|
251
252
|
if (!ASN1_STRING_set(qual->d.cpsuri, cnf->value,
|
252
253
|
strlen(cnf->value)))
|
253
254
|
goto merr;
|
254
|
-
} else if (!
|
255
|
+
} else if (!x509v3_name_cmp(cnf->name, "userNotice")) {
|
255
256
|
STACK_OF(CONF_VALUE) *unot;
|
256
257
|
if (*cnf->value != '@') {
|
257
258
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_EXPECTED_A_SECTION_NAME);
|
@@ -100,12 +100,7 @@ ASN1_ITEM_TEMPLATE_END(GENERAL_NAMES)
|
|
100
100
|
|
101
101
|
IMPLEMENT_ASN1_FUNCTIONS(GENERAL_NAMES)
|
102
102
|
|
103
|
-
|
104
|
-
{
|
105
|
-
return (GENERAL_NAME *)ASN1_dup((i2d_of_void *)i2d_GENERAL_NAME,
|
106
|
-
(d2i_of_void *)d2i_GENERAL_NAME,
|
107
|
-
(char *)a);
|
108
|
-
}
|
103
|
+
IMPLEMENT_ASN1_DUP_FUNCTION(GENERAL_NAME)
|
109
104
|
|
110
105
|
/* Returns 0 if they are equal, != 0 otherwise. */
|
111
106
|
int GENERAL_NAME_cmp(GENERAL_NAME *a, GENERAL_NAME *b)
|
@@ -116,6 +116,7 @@ const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid)
|
|
116
116
|
if (!ext_list)
|
117
117
|
return NULL;
|
118
118
|
|
119
|
+
sk_X509V3_EXT_METHOD_sort(ext_list);
|
119
120
|
if (!sk_X509V3_EXT_METHOD_find(ext_list, &idx, &tmp))
|
120
121
|
return NULL;
|
121
122
|
return sk_X509V3_EXT_METHOD_value(ext_list, idx);
|
@@ -0,0 +1,68 @@
|
|
1
|
+
/*
|
2
|
+
* Copyright 2000-2016 The OpenSSL Project Authors. All Rights Reserved.
|
3
|
+
*
|
4
|
+
* Licensed under the OpenSSL license (the "License"). You may not use
|
5
|
+
* this file except in compliance with the License. You can obtain a copy
|
6
|
+
* in the file LICENSE in the source distribution or at
|
7
|
+
* https://www.openssl.org/source/license.html
|
8
|
+
*/
|
9
|
+
|
10
|
+
#include <openssl/x509v3.h>
|
11
|
+
|
12
|
+
#include <openssl/asn1.h>
|
13
|
+
#include <openssl/bio.h>
|
14
|
+
#include <openssl/nid.h>
|
15
|
+
|
16
|
+
/*
|
17
|
+
* OCSP extensions and a couple of CRL entry extensions
|
18
|
+
*/
|
19
|
+
|
20
|
+
static int i2r_ocsp_acutoff(const X509V3_EXT_METHOD *method, void *nonce,
|
21
|
+
BIO *out, int indent);
|
22
|
+
|
23
|
+
static int i2r_ocsp_nocheck(const X509V3_EXT_METHOD *method,
|
24
|
+
void *nocheck, BIO *out, int indent);
|
25
|
+
static void *s2i_ocsp_nocheck(const X509V3_EXT_METHOD *method,
|
26
|
+
X509V3_CTX *ctx, const char *str);
|
27
|
+
|
28
|
+
const X509V3_EXT_METHOD v3_crl_invdate = {
|
29
|
+
NID_invalidity_date, 0, ASN1_ITEM_ref(ASN1_GENERALIZEDTIME),
|
30
|
+
0, 0, 0, 0,
|
31
|
+
0, 0,
|
32
|
+
0, 0,
|
33
|
+
i2r_ocsp_acutoff, 0,
|
34
|
+
NULL
|
35
|
+
};
|
36
|
+
|
37
|
+
const X509V3_EXT_METHOD v3_ocsp_nocheck = {
|
38
|
+
NID_id_pkix_OCSP_noCheck, 0, ASN1_ITEM_ref(ASN1_NULL),
|
39
|
+
0, 0, 0, 0,
|
40
|
+
0, s2i_ocsp_nocheck,
|
41
|
+
0, 0,
|
42
|
+
i2r_ocsp_nocheck, 0,
|
43
|
+
NULL
|
44
|
+
};
|
45
|
+
|
46
|
+
static int i2r_ocsp_acutoff(const X509V3_EXT_METHOD *method, void *cutoff,
|
47
|
+
BIO *bp, int ind)
|
48
|
+
{
|
49
|
+
if (BIO_printf(bp, "%*s", ind, "") <= 0)
|
50
|
+
return 0;
|
51
|
+
if (!ASN1_GENERALIZEDTIME_print(bp, cutoff))
|
52
|
+
return 0;
|
53
|
+
return 1;
|
54
|
+
}
|
55
|
+
|
56
|
+
/* Nocheck is just a single NULL. Don't print anything and always set it */
|
57
|
+
|
58
|
+
static int i2r_ocsp_nocheck(const X509V3_EXT_METHOD *method, void *nocheck,
|
59
|
+
BIO *out, int indent)
|
60
|
+
{
|
61
|
+
return 1;
|
62
|
+
}
|
63
|
+
|
64
|
+
static void *s2i_ocsp_nocheck(const X509V3_EXT_METHOD *method,
|
65
|
+
X509V3_CTX *ctx, const char *str)
|
66
|
+
{
|
67
|
+
return ASN1_NULL_new();
|
68
|
+
}
|
@@ -44,6 +44,7 @@
|
|
44
44
|
#include <openssl/x509v3.h>
|
45
45
|
|
46
46
|
#include "../internal.h"
|
47
|
+
#include "internal.h"
|
47
48
|
|
48
49
|
|
49
50
|
static int i2r_pci(X509V3_EXT_METHOD *method, PROXY_CERT_INFO_EXTENSION *ext,
|
@@ -123,7 +124,7 @@ static int process_pci_value(CONF_VALUE *val,
|
|
123
124
|
}
|
124
125
|
if (strncmp(val->value, "hex:", 4) == 0) {
|
125
126
|
unsigned char *tmp_data2 =
|
126
|
-
|
127
|
+
x509v3_hex_to_bytes(val->value + 4, &val_len);
|
127
128
|
|
128
129
|
if (!tmp_data2) {
|
129
130
|
OPENSSL_PUT_ERROR(X509V3, X509V3_R_ILLEGAL_HEX_DIGIT);
|
@@ -80,7 +80,6 @@
|
|
80
80
|
|
81
81
|
static void x509v3_cache_extensions(X509 *x);
|
82
82
|
|
83
|
-
static int check_ssl_ca(const X509 *x);
|
84
83
|
static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x,
|
85
84
|
int ca);
|
86
85
|
static int check_purpose_ssl_server(const X509_PURPOSE *xp, const X509 *x,
|
@@ -205,6 +204,7 @@ int X509_PURPOSE_get_by_id(int purpose)
|
|
205
204
|
if (!xptable)
|
206
205
|
return -1;
|
207
206
|
|
207
|
+
sk_X509_PURPOSE_sort(xptable);
|
208
208
|
if (!sk_X509_PURPOSE_find(xptable, &idx, &tmp))
|
209
209
|
return -1;
|
210
210
|
return idx + X509_PURPOSE_COUNT;
|
@@ -562,39 +562,20 @@ static void x509v3_cache_extensions(X509 *x)
|
|
562
562
|
CRYPTO_MUTEX_unlock_write(&x->lock);
|
563
563
|
}
|
564
564
|
|
565
|
-
/*
|
566
|
-
*
|
567
|
-
* basicConstraints absent so "maybe" a CA 3 basicConstraints absent but self
|
568
|
-
* signed V1. 4 basicConstraints absent but keyUsage present and keyCertSign
|
569
|
-
* asserted.
|
570
|
-
*/
|
571
|
-
|
565
|
+
/* check_ca returns one if |x| should be considered a CA certificate and zero
|
566
|
+
* otherwise. */
|
572
567
|
static int check_ca(const X509 *x)
|
573
568
|
{
|
574
569
|
/* keyUsage if present should allow cert signing */
|
575
570
|
if (ku_reject(x, KU_KEY_CERT_SIGN))
|
576
571
|
return 0;
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
/* If basicConstraints says not a CA then say so */
|
581
|
-
else
|
582
|
-
return 0;
|
583
|
-
} else {
|
584
|
-
/* we support V1 roots for... uh, I don't really know why. */
|
585
|
-
if ((x->ex_flags & V1_ROOT) == V1_ROOT)
|
586
|
-
return 3;
|
587
|
-
/*
|
588
|
-
* If key usage present it must have certSign so tolerate it
|
589
|
-
*/
|
590
|
-
else if (x->ex_flags & EXFLAG_KUSAGE)
|
591
|
-
return 4;
|
592
|
-
/* Older certificates could have Netscape-specific CA types */
|
593
|
-
else if (x->ex_flags & EXFLAG_NSCERT && x->ex_nscert & NS_ANY_CA)
|
594
|
-
return 5;
|
595
|
-
/* can this still be regarded a CA certificate? I doubt it */
|
596
|
-
return 0;
|
572
|
+
/* Version 1 certificates are considered CAs and don't have extensions. */
|
573
|
+
if ((x->ex_flags & V1_ROOT) == V1_ROOT) {
|
574
|
+
return 1;
|
597
575
|
}
|
576
|
+
/* Otherwise, it's only a CA if basicConstraints says so. */
|
577
|
+
return ((x->ex_flags & EXFLAG_BCONS) &&
|
578
|
+
(x->ex_flags & EXFLAG_CA));
|
598
579
|
}
|
599
580
|
|
600
581
|
int X509_check_ca(X509 *x)
|
@@ -603,27 +584,13 @@ int X509_check_ca(X509 *x)
|
|
603
584
|
return check_ca(x);
|
604
585
|
}
|
605
586
|
|
606
|
-
/* Check SSL CA: common checks for SSL client and server */
|
607
|
-
static int check_ssl_ca(const X509 *x)
|
608
|
-
{
|
609
|
-
int ca_ret;
|
610
|
-
ca_ret = check_ca(x);
|
611
|
-
if (!ca_ret)
|
612
|
-
return 0;
|
613
|
-
/* check nsCertType if present */
|
614
|
-
if (ca_ret != 5 || x->ex_nscert & NS_SSL_CA)
|
615
|
-
return ca_ret;
|
616
|
-
else
|
617
|
-
return 0;
|
618
|
-
}
|
619
|
-
|
620
587
|
static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x,
|
621
588
|
int ca)
|
622
589
|
{
|
623
590
|
if (xku_reject(x, XKU_SSL_CLIENT))
|
624
591
|
return 0;
|
625
592
|
if (ca)
|
626
|
-
return
|
593
|
+
return check_ca(x);
|
627
594
|
/* We need to do digital signatures or key agreement */
|
628
595
|
if (ku_reject(x, KU_DIGITAL_SIGNATURE | KU_KEY_AGREEMENT))
|
629
596
|
return 0;
|
@@ -644,10 +611,10 @@ static int check_purpose_ssl_client(const X509_PURPOSE *xp, const X509 *x,
|
|
644
611
|
static int check_purpose_ssl_server(const X509_PURPOSE *xp, const X509 *x,
|
645
612
|
int ca)
|
646
613
|
{
|
647
|
-
if (xku_reject(x, XKU_SSL_SERVER
|
614
|
+
if (xku_reject(x, XKU_SSL_SERVER))
|
648
615
|
return 0;
|
649
616
|
if (ca)
|
650
|
-
return
|
617
|
+
return check_ca(x);
|
651
618
|
|
652
619
|
if (ns_reject(x, NS_SSL_SERVER))
|
653
620
|
return 0;
|
@@ -671,29 +638,23 @@ static int check_purpose_ns_ssl_server(const X509_PURPOSE *xp, const X509 *x,
|
|
671
638
|
return ret;
|
672
639
|
}
|
673
640
|
|
674
|
-
/*
|
641
|
+
/* purpose_smime returns one if |x| is a valid S/MIME leaf (|ca| is zero) or CA
|
642
|
+
* (|ca| is one) certificate, and zero otherwise. */
|
675
643
|
static int purpose_smime(const X509 *x, int ca)
|
676
644
|
{
|
677
645
|
if (xku_reject(x, XKU_SMIME))
|
678
646
|
return 0;
|
679
647
|
if (ca) {
|
680
|
-
int ca_ret;
|
681
|
-
ca_ret = check_ca(x);
|
682
|
-
if (!ca_ret)
|
683
|
-
return 0;
|
684
648
|
/* check nsCertType if present */
|
685
|
-
if (
|
686
|
-
|
687
|
-
|
688
|
-
|
649
|
+
if ((x->ex_flags & EXFLAG_NSCERT) &&
|
650
|
+
(x->ex_nscert & NS_SMIME_CA) == 0) {
|
651
|
+
return 0;
|
652
|
+
}
|
653
|
+
|
654
|
+
return check_ca(x);
|
689
655
|
}
|
690
656
|
if (x->ex_flags & EXFLAG_NSCERT) {
|
691
|
-
|
692
|
-
return 1;
|
693
|
-
/* Workaround for some buggy certificates */
|
694
|
-
if (x->ex_nscert & NS_SSL_CLIENT)
|
695
|
-
return 2;
|
696
|
-
return 0;
|
657
|
+
return (x->ex_nscert & NS_SMIME) == NS_SMIME;
|
697
658
|
}
|
698
659
|
return 1;
|
699
660
|
}
|
@@ -726,11 +687,7 @@ static int check_purpose_crl_sign(const X509_PURPOSE *xp, const X509 *x,
|
|
726
687
|
int ca)
|
727
688
|
{
|
728
689
|
if (ca) {
|
729
|
-
|
730
|
-
if ((ca_ret = check_ca(x)) != 2)
|
731
|
-
return ca_ret;
|
732
|
-
else
|
733
|
-
return 0;
|
690
|
+
return check_ca(x);
|
734
691
|
}
|
735
692
|
if (ku_reject(x, KU_CRL_SIGN))
|
736
693
|
return 0;
|
@@ -744,10 +701,6 @@ static int check_purpose_crl_sign(const X509_PURPOSE *xp, const X509 *x,
|
|
744
701
|
|
745
702
|
static int ocsp_helper(const X509_PURPOSE *xp, const X509 *x, int ca)
|
746
703
|
{
|
747
|
-
/*
|
748
|
-
* Must be a valid CA. Should we really support the "I don't know" value
|
749
|
-
* (2)?
|
750
|
-
*/
|
751
704
|
if (ca)
|
752
705
|
return check_ca(x);
|
753
706
|
/* leaf certificate is checked in OCSP_verify() */
|
@@ -864,3 +817,28 @@ int X509_check_akid(X509 *issuer, AUTHORITY_KEYID *akid)
|
|
864
817
|
}
|
865
818
|
return X509_V_OK;
|
866
819
|
}
|
820
|
+
|
821
|
+
uint32_t X509_get_extension_flags(X509 *x)
|
822
|
+
{
|
823
|
+
/* Call for side-effect of computing hash and caching extensions */
|
824
|
+
X509_check_purpose(x, -1, -1);
|
825
|
+
return x->ex_flags;
|
826
|
+
}
|
827
|
+
|
828
|
+
uint32_t X509_get_key_usage(X509 *x)
|
829
|
+
{
|
830
|
+
/* Call for side-effect of computing hash and caching extensions */
|
831
|
+
X509_check_purpose(x, -1, -1);
|
832
|
+
if (x->ex_flags & EXFLAG_KUSAGE)
|
833
|
+
return x->ex_kusage;
|
834
|
+
return UINT32_MAX;
|
835
|
+
}
|
836
|
+
|
837
|
+
uint32_t X509_get_extended_key_usage(X509 *x)
|
838
|
+
{
|
839
|
+
/* Call for side-effect of computing hash and caching extensions */
|
840
|
+
X509_check_purpose(x, -1, -1);
|
841
|
+
if (x->ex_flags & EXFLAG_XKUSAGE)
|
842
|
+
return x->ex_xkusage;
|
843
|
+
return UINT32_MAX;
|
844
|
+
}
|