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
@@ -84,7 +84,8 @@ static const tsi_zero_copy_grpc_protector_vtable
|
|
84
84
|
local_zero_copy_grpc_protector_vtable = {
|
85
85
|
local_zero_copy_grpc_protector_protect,
|
86
86
|
local_zero_copy_grpc_protector_unprotect,
|
87
|
-
local_zero_copy_grpc_protector_destroy
|
87
|
+
local_zero_copy_grpc_protector_destroy,
|
88
|
+
nullptr /* local_zero_copy_grpc_protector_max_frame_size */};
|
88
89
|
|
89
90
|
tsi_result local_zero_copy_grpc_protector_create(
|
90
91
|
tsi_zero_copy_grpc_protector** protector) {
|
@@ -104,12 +105,13 @@ tsi_result local_zero_copy_grpc_protector_create(
|
|
104
105
|
/* --- tsi_handshaker_result methods implementation. --- */
|
105
106
|
|
106
107
|
static tsi_result handshaker_result_extract_peer(
|
107
|
-
const tsi_handshaker_result* self
|
108
|
+
const tsi_handshaker_result* /*self*/, tsi_peer* /*peer*/) {
|
108
109
|
return TSI_OK;
|
109
110
|
}
|
110
111
|
|
111
112
|
static tsi_result handshaker_result_create_zero_copy_grpc_protector(
|
112
|
-
const tsi_handshaker_result* self,
|
113
|
+
const tsi_handshaker_result* self,
|
114
|
+
size_t* /*max_output_protected_frame_size*/,
|
113
115
|
tsi_zero_copy_grpc_protector** protector) {
|
114
116
|
if (self == nullptr || protector == nullptr) {
|
115
117
|
gpr_log(GPR_ERROR,
|
@@ -157,10 +159,10 @@ static tsi_result create_handshaker_result(bool is_client,
|
|
157
159
|
/* --- tsi_handshaker methods implementation. --- */
|
158
160
|
|
159
161
|
static tsi_result handshaker_next(
|
160
|
-
tsi_handshaker* self, const unsigned char* received_bytes
|
161
|
-
size_t received_bytes_size
|
162
|
+
tsi_handshaker* self, const unsigned char* /*received_bytes*/,
|
163
|
+
size_t /*received_bytes_size*/, const unsigned char** /*bytes_to_send*/,
|
162
164
|
size_t* bytes_to_send_size, tsi_handshaker_result** result,
|
163
|
-
tsi_handshaker_on_next_done_cb cb
|
165
|
+
tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
|
164
166
|
if (self == nullptr) {
|
165
167
|
gpr_log(GPR_ERROR, "Invalid arguments to handshaker_next()");
|
166
168
|
return TSI_INVALID_ARGUMENT;
|
@@ -62,9 +62,7 @@ class SslCachedSession {
|
|
62
62
|
virtual ~SslCachedSession() = default;
|
63
63
|
|
64
64
|
/// Returns a copy of previously cached session.
|
65
|
-
virtual SslSessionPtr CopySession() const
|
66
|
-
|
67
|
-
GRPC_ABSTRACT_BASE_CLASS
|
65
|
+
virtual SslSessionPtr CopySession() const = 0;
|
68
66
|
|
69
67
|
protected:
|
70
68
|
SslCachedSession() = default;
|
@@ -49,8 +49,7 @@ class BoringSslCachedSession : public SslCachedSession {
|
|
49
49
|
|
50
50
|
grpc_core::UniquePtr<SslCachedSession> SslCachedSession::Create(
|
51
51
|
SslSessionPtr session) {
|
52
|
-
return grpc_core::
|
53
|
-
grpc_core::New<BoringSslCachedSession>(std::move(session)));
|
52
|
+
return grpc_core::MakeUnique<BoringSslCachedSession>(std::move(session));
|
54
53
|
}
|
55
54
|
|
56
55
|
} // namespace tsi
|
@@ -28,18 +28,20 @@
|
|
28
28
|
|
29
29
|
namespace tsi {
|
30
30
|
|
31
|
-
static void cache_key_avl_destroy(void* key
|
31
|
+
static void cache_key_avl_destroy(void* /*key*/, void* /*unused*/) {}
|
32
32
|
|
33
|
-
static void* cache_key_avl_copy(void* key, void* unused) { return key; }
|
33
|
+
static void* cache_key_avl_copy(void* key, void* /*unused*/) { return key; }
|
34
34
|
|
35
|
-
static long cache_key_avl_compare(void* key1, void* key2, void* unused) {
|
35
|
+
static long cache_key_avl_compare(void* key1, void* key2, void* /*unused*/) {
|
36
36
|
return grpc_slice_cmp(*static_cast<grpc_slice*>(key1),
|
37
37
|
*static_cast<grpc_slice*>(key2));
|
38
38
|
}
|
39
39
|
|
40
|
-
static void cache_value_avl_destroy(void* value
|
40
|
+
static void cache_value_avl_destroy(void* /*value*/, void* /*unused*/) {}
|
41
41
|
|
42
|
-
static void* cache_value_avl_copy(void* value, void* unused) {
|
42
|
+
static void* cache_value_avl_copy(void* value, void* /*unused*/) {
|
43
|
+
return value;
|
44
|
+
}
|
43
45
|
|
44
46
|
// AVL only stores pointers, ownership belonges to the linked list.
|
45
47
|
static const grpc_avl_vtable cache_avl_vtable = {
|
@@ -53,6 +53,10 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
|
|
53
53
|
return grpc_core::MakeRefCounted<SslSessionLRUCache>(capacity);
|
54
54
|
}
|
55
55
|
|
56
|
+
// Use Create function instead of using this directly.
|
57
|
+
explicit SslSessionLRUCache(size_t capacity);
|
58
|
+
~SslSessionLRUCache();
|
59
|
+
|
56
60
|
// Not copyable nor movable.
|
57
61
|
SslSessionLRUCache(const SslSessionLRUCache&) = delete;
|
58
62
|
SslSessionLRUCache& operator=(const SslSessionLRUCache&) = delete;
|
@@ -67,14 +71,8 @@ class SslSessionLRUCache : public grpc_core::RefCounted<SslSessionLRUCache> {
|
|
67
71
|
SslSessionPtr Get(const char* key);
|
68
72
|
|
69
73
|
private:
|
70
|
-
GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_NEW
|
71
|
-
GRPC_ALLOW_CLASS_TO_USE_NON_PUBLIC_DELETE
|
72
|
-
|
73
74
|
class Node;
|
74
75
|
|
75
|
-
explicit SslSessionLRUCache(size_t capacity);
|
76
|
-
~SslSessionLRUCache();
|
77
|
-
|
78
76
|
Node* FindLocked(const grpc_slice& key);
|
79
77
|
void Remove(Node* node);
|
80
78
|
void PushFront(Node* node);
|
@@ -67,8 +67,7 @@ class OpenSslCachedSession : public SslCachedSession {
|
|
67
67
|
|
68
68
|
grpc_core::UniquePtr<SslCachedSession> SslCachedSession::Create(
|
69
69
|
SslSessionPtr session) {
|
70
|
-
return grpc_core::
|
71
|
-
grpc_core::New<OpenSslCachedSession>(std::move(session)));
|
70
|
+
return grpc_core::MakeUnique<OpenSslCachedSession>(std::move(session));
|
72
71
|
}
|
73
72
|
|
74
73
|
} // namespace tsi
|
@@ -550,7 +550,8 @@ static tsi_result ssl_ctx_use_certificate_chain(SSL_CTX* context,
|
|
550
550
|
break;
|
551
551
|
}
|
552
552
|
/* We don't need to free certificate_authority as its ownership has been
|
553
|
-
|
553
|
+
transferred to the context. That is not the case for certificate
|
554
|
+
though.
|
554
555
|
*/
|
555
556
|
}
|
556
557
|
} while (0);
|
@@ -773,7 +774,7 @@ static tsi_result build_alpn_protocol_name_list(
|
|
773
774
|
// the server's certificate, but we need to pull it anyway, in case a higher
|
774
775
|
// layer wants to look at it. In this case the verification may fail, but
|
775
776
|
// we don't really care.
|
776
|
-
static int NullVerifyCallback(int preverify_ok
|
777
|
+
static int NullVerifyCallback(int /*preverify_ok*/, X509_STORE_CTX* /*ctx*/) {
|
777
778
|
return 1;
|
778
779
|
}
|
779
780
|
|
@@ -1264,7 +1265,7 @@ static tsi_result ssl_handshaker_next(
|
|
1264
1265
|
tsi_handshaker* self, const unsigned char* received_bytes,
|
1265
1266
|
size_t received_bytes_size, const unsigned char** bytes_to_send,
|
1266
1267
|
size_t* bytes_to_send_size, tsi_handshaker_result** handshaker_result,
|
1267
|
-
tsi_handshaker_on_next_done_cb cb
|
1268
|
+
tsi_handshaker_on_next_done_cb /*cb*/, void* /*user_data*/) {
|
1268
1269
|
/* Input sanity check. */
|
1269
1270
|
if ((received_bytes_size > 0 && received_bytes == nullptr) ||
|
1270
1271
|
bytes_to_send == nullptr || bytes_to_send_size == nullptr ||
|
@@ -1464,11 +1465,9 @@ static void tsi_ssl_client_handshaker_factory_destroy(
|
|
1464
1465
|
gpr_free(self);
|
1465
1466
|
}
|
1466
1467
|
|
1467
|
-
static int client_handshaker_factory_npn_callback(
|
1468
|
-
|
1469
|
-
|
1470
|
-
unsigned int inlen,
|
1471
|
-
void* arg) {
|
1468
|
+
static int client_handshaker_factory_npn_callback(
|
1469
|
+
SSL* /*ssl*/, unsigned char** out, unsigned char* outlen,
|
1470
|
+
const unsigned char* in, unsigned int inlen, void* arg) {
|
1472
1471
|
tsi_ssl_client_handshaker_factory* factory =
|
1473
1472
|
static_cast<tsi_ssl_client_handshaker_factory*>(arg);
|
1474
1473
|
return select_protocol_list((const unsigned char**)out, outlen,
|
@@ -1555,7 +1554,8 @@ static int does_entry_match_name(grpc_core::StringView entry,
|
|
1555
1554
|
return !entry.empty() && name_subdomain == entry;
|
1556
1555
|
}
|
1557
1556
|
|
1558
|
-
static int ssl_server_handshaker_factory_servername_callback(SSL* ssl,
|
1557
|
+
static int ssl_server_handshaker_factory_servername_callback(SSL* ssl,
|
1558
|
+
int* /*ap*/,
|
1559
1559
|
void* arg) {
|
1560
1560
|
tsi_ssl_server_handshaker_factory* impl =
|
1561
1561
|
static_cast<tsi_ssl_server_handshaker_factory*>(arg);
|
@@ -1578,7 +1578,7 @@ static int ssl_server_handshaker_factory_servername_callback(SSL* ssl, int* ap,
|
|
1578
1578
|
|
1579
1579
|
#if TSI_OPENSSL_ALPN_SUPPORT
|
1580
1580
|
static int server_handshaker_factory_alpn_callback(
|
1581
|
-
SSL* ssl
|
1581
|
+
SSL* /*ssl*/, const unsigned char** out, unsigned char* outlen,
|
1582
1582
|
const unsigned char* in, unsigned int inlen, void* arg) {
|
1583
1583
|
tsi_ssl_server_handshaker_factory* factory =
|
1584
1584
|
static_cast<tsi_ssl_server_handshaker_factory*>(arg);
|
@@ -1589,7 +1589,7 @@ static int server_handshaker_factory_alpn_callback(
|
|
1589
1589
|
#endif /* TSI_OPENSSL_ALPN_SUPPORT */
|
1590
1590
|
|
1591
1591
|
static int server_handshaker_factory_npn_advertised_callback(
|
1592
|
-
SSL* ssl
|
1592
|
+
SSL* /*ssl*/, const unsigned char** out, unsigned int* outlen, void* arg) {
|
1593
1593
|
tsi_ssl_server_handshaker_factory* factory =
|
1594
1594
|
static_cast<tsi_ssl_server_handshaker_factory*>(arg);
|
1595
1595
|
*out = factory->alpn_protocol_list;
|
@@ -1618,7 +1618,7 @@ static int server_handshaker_factory_new_session_callback(
|
|
1618
1618
|
return 0;
|
1619
1619
|
}
|
1620
1620
|
factory->session_cache->Put(server_name, tsi::SslSessionPtr(session));
|
1621
|
-
// Return 1 to indicate
|
1621
|
+
// Return 1 to indicate transferred ownership over the given session.
|
1622
1622
|
return 1;
|
1623
1623
|
}
|
1624
1624
|
|
@@ -260,8 +260,8 @@ struct tsi_ssl_server_handshaker_options {
|
|
260
260
|
specified. If this parameter is 0, the other alpn parameters must be
|
261
261
|
NULL. */
|
262
262
|
uint16_t num_alpn_protocols;
|
263
|
-
/* session_ticket_key is optional key for encrypting session keys. If
|
264
|
-
is not specified it must be NULL. */
|
263
|
+
/* session_ticket_key is optional key for encrypting session keys. If
|
264
|
+
parameter is not specified it must be NULL. */
|
265
265
|
const char* session_ticket_key;
|
266
266
|
/* session_ticket_key_size is a size of session ticket encryption key. */
|
267
267
|
size_t session_ticket_key_size;
|
@@ -64,3 +64,10 @@ void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self) {
|
|
64
64
|
if (self == nullptr) return;
|
65
65
|
self->vtable->destroy(self);
|
66
66
|
}
|
67
|
+
|
68
|
+
tsi_result tsi_zero_copy_grpc_protector_max_frame_size(
|
69
|
+
tsi_zero_copy_grpc_protector* self, size_t& max_frame_size) {
|
70
|
+
if (self == nullptr) return TSI_INVALID_ARGUMENT;
|
71
|
+
if (self->vtable->max_frame_size == nullptr) return TSI_UNIMPLEMENTED;
|
72
|
+
return self->vtable->max_frame_size(self, max_frame_size);
|
73
|
+
}
|
@@ -56,6 +56,10 @@ tsi_result tsi_zero_copy_grpc_protector_unprotect(
|
|
56
56
|
/* Destroys the tsi_zero_copy_grpc_protector object. */
|
57
57
|
void tsi_zero_copy_grpc_protector_destroy(tsi_zero_copy_grpc_protector* self);
|
58
58
|
|
59
|
+
/* Returns value of max protected frame size. Useful for testing. */
|
60
|
+
tsi_result tsi_zero_copy_grpc_protector_max_frame_size(
|
61
|
+
tsi_zero_copy_grpc_protector* self, size_t& max_frame_size);
|
62
|
+
|
59
63
|
/* Base for tsi_zero_copy_grpc_protector implementations. */
|
60
64
|
typedef struct {
|
61
65
|
tsi_result (*protect)(tsi_zero_copy_grpc_protector* self,
|
@@ -65,6 +69,8 @@ typedef struct {
|
|
65
69
|
grpc_slice_buffer* protected_slices,
|
66
70
|
grpc_slice_buffer* unprotected_slices);
|
67
71
|
void (*destroy)(tsi_zero_copy_grpc_protector* self);
|
72
|
+
tsi_result (*max_frame_size)(tsi_zero_copy_grpc_protector* self,
|
73
|
+
size_t& max_frame_size);
|
68
74
|
} tsi_zero_copy_grpc_protector_vtable;
|
69
75
|
|
70
76
|
struct tsi_zero_copy_grpc_protector {
|
data/src/ruby/ext/grpc/rb_call.c
CHANGED
@@ -170,7 +170,7 @@ static VALUE grpc_rb_call_cancel(VALUE self) {
|
|
170
170
|
/* TODO: expose this as part of the surface API if needed.
|
171
171
|
* This is meant for internal usage by the "write thread" of grpc-ruby
|
172
172
|
* client-side bidi calls. It provides a way for the background write-thread
|
173
|
-
* to
|
173
|
+
* to propagate failures to the main read-thread and give the user an error
|
174
174
|
* message. */
|
175
175
|
static VALUE grpc_rb_call_cancel_with_status(VALUE self, VALUE status_code,
|
176
176
|
VALUE details) {
|
@@ -119,7 +119,7 @@ static void grpc_rb_channel_watch_connection_state_op_complete(
|
|
119
119
|
GPR_ASSERT(!op->op.api_callback_args.called_back);
|
120
120
|
op->op.api_callback_args.called_back = 1;
|
121
121
|
op->op.api_callback_args.success = success;
|
122
|
-
// wake up the watch API call
|
122
|
+
// wake up the watch API call that's waiting on this op
|
123
123
|
gpr_cv_broadcast(&global_connection_polling_cv);
|
124
124
|
}
|
125
125
|
|
@@ -17,7 +17,7 @@ require_relative '../grpc'
|
|
17
17
|
|
18
18
|
# GRPC contains the General RPC module.
|
19
19
|
module GRPC
|
20
|
-
# The BiDiCall class orchestrates
|
20
|
+
# The BiDiCall class orchestrates execution of a BiDi stream on a client or
|
21
21
|
# server.
|
22
22
|
class BidiCall
|
23
23
|
include Core::CallOps
|
@@ -241,7 +241,7 @@ module GRPC
|
|
241
241
|
# server's current call loop is it's last.
|
242
242
|
def stop
|
243
243
|
# if called via run_till_terminated_or_interrupted,
|
244
|
-
# signal stop_server_thread and
|
244
|
+
# signal stop_server_thread and don't do anything
|
245
245
|
if @stop_server.nil? == false && @stop_server == false
|
246
246
|
@stop_server = true
|
247
247
|
@stop_server_cv.broadcast
|
@@ -67,7 +67,7 @@ describe 'conversion from a status struct to a google protobuf status' do
|
|
67
67
|
expect(rpc_status).to eq(proto)
|
68
68
|
end
|
69
69
|
|
70
|
-
it 'can
|
70
|
+
it 'can successfully convert a status struct into a google protobuf status '\
|
71
71
|
'when there are no rpcstatus details' do
|
72
72
|
proto = Google::Rpc::Status.new(code: 1, message: 'matching message')
|
73
73
|
encoded_proto = Google::Rpc::Status.encode(proto)
|
@@ -79,7 +79,7 @@ describe 'conversion from a status struct to a google protobuf status' do
|
|
79
79
|
expect(out.details).to eq([])
|
80
80
|
end
|
81
81
|
|
82
|
-
it 'can
|
82
|
+
it 'can successfully convert a status struct into a google protobuf '\
|
83
83
|
'status when there are multiple rpcstatus details' do
|
84
84
|
simple_request_any = Google::Protobuf::Any.new
|
85
85
|
simple_request = Grpc::Testing::SimpleRequest.new(
|
@@ -62,17 +62,30 @@
|
|
62
62
|
int i2d_ASN1_BOOLEAN(int a, unsigned char **pp)
|
63
63
|
{
|
64
64
|
int r;
|
65
|
-
unsigned char *p;
|
65
|
+
unsigned char *p, *allocated = NULL;
|
66
66
|
|
67
67
|
r = ASN1_object_size(0, 1, V_ASN1_BOOLEAN);
|
68
68
|
if (pp == NULL)
|
69
69
|
return (r);
|
70
|
-
|
70
|
+
|
71
|
+
if (*pp == NULL) {
|
72
|
+
if ((p = allocated = OPENSSL_malloc(r)) == NULL) {
|
73
|
+
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
74
|
+
return 0;
|
75
|
+
}
|
76
|
+
} else {
|
77
|
+
p = *pp;
|
78
|
+
}
|
71
79
|
|
72
80
|
ASN1_put_object(&p, 0, 1, V_ASN1_BOOLEAN, V_ASN1_UNIVERSAL);
|
73
|
-
*
|
74
|
-
|
75
|
-
|
81
|
+
*p = (unsigned char)a;
|
82
|
+
|
83
|
+
/*
|
84
|
+
* If a new buffer was allocated, just return it back.
|
85
|
+
* If not, return the incremented buffer pointer.
|
86
|
+
*/
|
87
|
+
*pp = allocated != NULL ? allocated : p + 1;
|
88
|
+
return r;
|
76
89
|
}
|
77
90
|
|
78
91
|
int d2i_ASN1_BOOLEAN(int *a, const unsigned char **pp, long length)
|
@@ -58,240 +58,36 @@
|
|
58
58
|
|
59
59
|
#include <limits.h>
|
60
60
|
|
61
|
-
#include <openssl/
|
61
|
+
#include <openssl/bio.h>
|
62
62
|
#include <openssl/err.h>
|
63
63
|
#include <openssl/mem.h>
|
64
64
|
|
65
|
-
static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb);
|
66
|
-
|
67
|
-
#ifndef NO_OLD_ASN1
|
68
|
-
# ifndef OPENSSL_NO_FP_API
|
69
|
-
|
70
|
-
void *ASN1_d2i_fp(void *(*xnew) (void), d2i_of_void *d2i, FILE *in, void **x)
|
71
|
-
{
|
72
|
-
BIO *b;
|
73
|
-
void *ret;
|
74
|
-
|
75
|
-
if ((b = BIO_new(BIO_s_file())) == NULL) {
|
76
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_BUF_LIB);
|
77
|
-
return (NULL);
|
78
|
-
}
|
79
|
-
BIO_set_fp(b, in, BIO_NOCLOSE);
|
80
|
-
ret = ASN1_d2i_bio(xnew, d2i, b, x);
|
81
|
-
BIO_free(b);
|
82
|
-
return (ret);
|
83
|
-
}
|
84
|
-
# endif
|
85
|
-
|
86
|
-
void *ASN1_d2i_bio(void *(*xnew) (void), d2i_of_void *d2i, BIO *in, void **x)
|
87
|
-
{
|
88
|
-
BUF_MEM *b = NULL;
|
89
|
-
const unsigned char *p;
|
90
|
-
void *ret = NULL;
|
91
|
-
int len;
|
92
|
-
|
93
|
-
len = asn1_d2i_read_bio(in, &b);
|
94
|
-
if (len < 0)
|
95
|
-
goto err;
|
96
|
-
|
97
|
-
p = (unsigned char *)b->data;
|
98
|
-
ret = d2i(x, &p, len);
|
99
|
-
err:
|
100
|
-
if (b != NULL)
|
101
|
-
BUF_MEM_free(b);
|
102
|
-
return (ret);
|
103
|
-
}
|
104
|
-
|
105
|
-
#endif
|
106
65
|
|
107
66
|
void *ASN1_item_d2i_bio(const ASN1_ITEM *it, BIO *in, void *x)
|
108
67
|
{
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
ret
|
120
|
-
err:
|
121
|
-
if (b != NULL)
|
122
|
-
BUF_MEM_free(b);
|
123
|
-
return (ret);
|
68
|
+
uint8_t *data;
|
69
|
+
size_t len;
|
70
|
+
// Historically, this function did not impose a limit in OpenSSL and is used
|
71
|
+
// to read CRLs, so we leave this without an external bound.
|
72
|
+
if (!BIO_read_asn1(in, &data, &len, INT_MAX)) {
|
73
|
+
return NULL;
|
74
|
+
}
|
75
|
+
const uint8_t *ptr = data;
|
76
|
+
void *ret = ASN1_item_d2i(x, &ptr, len, it);
|
77
|
+
OPENSSL_free(data);
|
78
|
+
return ret;
|
124
79
|
}
|
125
80
|
|
126
81
|
#ifndef OPENSSL_NO_FP_API
|
127
82
|
void *ASN1_item_d2i_fp(const ASN1_ITEM *it, FILE *in, void *x)
|
128
83
|
{
|
129
|
-
BIO *b;
|
130
|
-
|
131
|
-
|
132
|
-
if ((b = BIO_new(BIO_s_file())) == NULL) {
|
84
|
+
BIO *b = BIO_new_fp(in, BIO_NOCLOSE);
|
85
|
+
if (b == NULL) {
|
133
86
|
OPENSSL_PUT_ERROR(ASN1, ERR_R_BUF_LIB);
|
134
|
-
return
|
87
|
+
return NULL;
|
135
88
|
}
|
136
|
-
|
137
|
-
ret = ASN1_item_d2i_bio(it, b, x);
|
89
|
+
void *ret = ASN1_item_d2i_bio(it, b, x);
|
138
90
|
BIO_free(b);
|
139
|
-
return
|
91
|
+
return ret;
|
140
92
|
}
|
141
93
|
#endif
|
142
|
-
|
143
|
-
typedef struct asn1_const_ctx_st
|
144
|
-
{
|
145
|
-
const unsigned char *p;/* work char pointer */
|
146
|
-
int eos; /* end of sequence read for indefinite encoding */
|
147
|
-
int error; /* error code to use when returning an error */
|
148
|
-
int inf; /* constructed if 0x20, indefinite is 0x21 */
|
149
|
-
int tag; /* tag from last 'get object' */
|
150
|
-
int xclass; /* class from last 'get object' */
|
151
|
-
long slen; /* length of last 'get object' */
|
152
|
-
const unsigned char *max; /* largest value of p allowed */
|
153
|
-
const unsigned char *q;/* temporary variable */
|
154
|
-
const unsigned char **pp;/* variable */
|
155
|
-
int line; /* used in error processing */
|
156
|
-
} ASN1_const_CTX;
|
157
|
-
|
158
|
-
#define HEADER_SIZE 8
|
159
|
-
#define ASN1_CHUNK_INITIAL_SIZE (16 * 1024)
|
160
|
-
static int asn1_d2i_read_bio(BIO *in, BUF_MEM **pb)
|
161
|
-
{
|
162
|
-
BUF_MEM *b;
|
163
|
-
unsigned char *p;
|
164
|
-
int i;
|
165
|
-
ASN1_const_CTX c;
|
166
|
-
size_t want = HEADER_SIZE;
|
167
|
-
int eos = 0;
|
168
|
-
size_t off = 0;
|
169
|
-
size_t len = 0;
|
170
|
-
|
171
|
-
b = BUF_MEM_new();
|
172
|
-
if (b == NULL) {
|
173
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
174
|
-
return -1;
|
175
|
-
}
|
176
|
-
|
177
|
-
ERR_clear_error();
|
178
|
-
for (;;) {
|
179
|
-
if (want >= (len - off)) {
|
180
|
-
want -= (len - off);
|
181
|
-
|
182
|
-
if (len + want < len || !BUF_MEM_grow_clean(b, len + want)) {
|
183
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
184
|
-
goto err;
|
185
|
-
}
|
186
|
-
i = BIO_read(in, &(b->data[len]), want);
|
187
|
-
if ((i < 0) && ((len - off) == 0)) {
|
188
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NOT_ENOUGH_DATA);
|
189
|
-
goto err;
|
190
|
-
}
|
191
|
-
if (i > 0) {
|
192
|
-
if (len + i < len) {
|
193
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
|
194
|
-
goto err;
|
195
|
-
}
|
196
|
-
len += i;
|
197
|
-
}
|
198
|
-
}
|
199
|
-
/* else data already loaded */
|
200
|
-
|
201
|
-
p = (unsigned char *)&(b->data[off]);
|
202
|
-
c.p = p;
|
203
|
-
c.inf = ASN1_get_object(&(c.p), &(c.slen), &(c.tag), &(c.xclass),
|
204
|
-
len - off);
|
205
|
-
if (c.inf & 0x80) {
|
206
|
-
uint32_t e;
|
207
|
-
|
208
|
-
e = ERR_GET_REASON(ERR_peek_error());
|
209
|
-
if (e != ASN1_R_TOO_LONG)
|
210
|
-
goto err;
|
211
|
-
else
|
212
|
-
ERR_clear_error(); /* clear error */
|
213
|
-
}
|
214
|
-
i = c.p - p; /* header length */
|
215
|
-
off += i; /* end of data */
|
216
|
-
|
217
|
-
if (c.inf & 1) {
|
218
|
-
/* no data body so go round again */
|
219
|
-
eos++;
|
220
|
-
if (eos < 0) {
|
221
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_HEADER_TOO_LONG);
|
222
|
-
goto err;
|
223
|
-
}
|
224
|
-
want = HEADER_SIZE;
|
225
|
-
} else if (eos && (c.slen == 0) && (c.tag == V_ASN1_EOC)) {
|
226
|
-
/* eos value, so go back and read another header */
|
227
|
-
eos--;
|
228
|
-
if (eos <= 0)
|
229
|
-
break;
|
230
|
-
else
|
231
|
-
want = HEADER_SIZE;
|
232
|
-
} else {
|
233
|
-
/* suck in c.slen bytes of data */
|
234
|
-
want = c.slen;
|
235
|
-
if (want > (len - off)) {
|
236
|
-
size_t chunk_max = ASN1_CHUNK_INITIAL_SIZE;
|
237
|
-
want -= (len - off);
|
238
|
-
if (want > INT_MAX /* BIO_read takes an int length */ ||
|
239
|
-
len + want < len) {
|
240
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
|
241
|
-
goto err;
|
242
|
-
}
|
243
|
-
while (want > 0) {
|
244
|
-
/*
|
245
|
-
* Read content in chunks of increasing size
|
246
|
-
* so we can return an error for EOF without
|
247
|
-
* having to allocate the entire content length
|
248
|
-
* in one go.
|
249
|
-
*/
|
250
|
-
size_t chunk = want > chunk_max ? chunk_max : want;
|
251
|
-
|
252
|
-
if (!BUF_MEM_grow_clean(b, len + chunk)) {
|
253
|
-
OPENSSL_PUT_ERROR(ASN1, ERR_R_MALLOC_FAILURE);
|
254
|
-
goto err;
|
255
|
-
}
|
256
|
-
want -= chunk;
|
257
|
-
while (chunk > 0) {
|
258
|
-
i = BIO_read(in, &(b->data[len]), chunk);
|
259
|
-
if (i <= 0) {
|
260
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_NOT_ENOUGH_DATA);
|
261
|
-
goto err;
|
262
|
-
}
|
263
|
-
/*
|
264
|
-
* This can't overflow because |len+want| didn't
|
265
|
-
* overflow.
|
266
|
-
*/
|
267
|
-
len += i;
|
268
|
-
chunk -= i;
|
269
|
-
}
|
270
|
-
if (chunk_max < INT_MAX/2)
|
271
|
-
chunk_max *= 2;
|
272
|
-
}
|
273
|
-
}
|
274
|
-
if (off + c.slen < off) {
|
275
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
|
276
|
-
goto err;
|
277
|
-
}
|
278
|
-
off += c.slen;
|
279
|
-
if (eos <= 0) {
|
280
|
-
break;
|
281
|
-
} else
|
282
|
-
want = HEADER_SIZE;
|
283
|
-
}
|
284
|
-
}
|
285
|
-
|
286
|
-
if (off > INT_MAX) {
|
287
|
-
OPENSSL_PUT_ERROR(ASN1, ASN1_R_TOO_LONG);
|
288
|
-
goto err;
|
289
|
-
}
|
290
|
-
|
291
|
-
*pb = b;
|
292
|
-
return off;
|
293
|
-
err:
|
294
|
-
if (b != NULL)
|
295
|
-
BUF_MEM_free(b);
|
296
|
-
return -1;
|
297
|
-
}
|