grpc 1.24.0 → 1.25.0.pre1
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/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 +71 -43
- 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
@@ -31,7 +31,7 @@
|
|
31
31
|
#define FUZZER_MODE false
|
32
32
|
#endif
|
33
33
|
|
34
|
-
|
34
|
+
BSSL_NAMESPACE_BEGIN
|
35
35
|
|
36
36
|
SSLAEADContext::SSLAEADContext(uint16_t version_arg, bool is_dtls_arg,
|
37
37
|
const SSL_CIPHER *cipher_arg)
|
@@ -40,10 +40,9 @@ SSLAEADContext::SSLAEADContext(uint16_t version_arg, bool is_dtls_arg,
|
|
40
40
|
is_dtls_(is_dtls_arg),
|
41
41
|
variable_nonce_included_in_record_(false),
|
42
42
|
random_variable_nonce_(false),
|
43
|
+
xor_fixed_nonce_(false),
|
43
44
|
omit_length_in_ad_(false),
|
44
|
-
|
45
|
-
omit_ad_(false),
|
46
|
-
xor_fixed_nonce_(false) {
|
45
|
+
ad_is_header_(false) {
|
47
46
|
OPENSSL_memset(fixed_nonce_, 0, sizeof(fixed_nonce_));
|
48
47
|
}
|
49
48
|
|
@@ -55,7 +54,7 @@ UniquePtr<SSLAEADContext> SSLAEADContext::CreateNullCipher(bool is_dtls) {
|
|
55
54
|
}
|
56
55
|
|
57
56
|
UniquePtr<SSLAEADContext> SSLAEADContext::Create(
|
58
|
-
enum evp_aead_direction_t direction, uint16_t version,
|
57
|
+
enum evp_aead_direction_t direction, uint16_t version, bool is_dtls,
|
59
58
|
const SSL_CIPHER *cipher, Span<const uint8_t> enc_key,
|
60
59
|
Span<const uint8_t> mac_key, Span<const uint8_t> fixed_iv) {
|
61
60
|
const EVP_AEAD *aead;
|
@@ -134,7 +133,7 @@ UniquePtr<SSLAEADContext> SSLAEADContext::Create(
|
|
134
133
|
aead_ctx->xor_fixed_nonce_ = true;
|
135
134
|
aead_ctx->variable_nonce_len_ = 8;
|
136
135
|
aead_ctx->variable_nonce_included_in_record_ = false;
|
137
|
-
aead_ctx->
|
136
|
+
aead_ctx->ad_is_header_ = true;
|
138
137
|
assert(fixed_iv.size() >= aead_ctx->variable_nonce_len_);
|
139
138
|
}
|
140
139
|
} else {
|
@@ -142,12 +141,16 @@ UniquePtr<SSLAEADContext> SSLAEADContext::Create(
|
|
142
141
|
aead_ctx->variable_nonce_included_in_record_ = true;
|
143
142
|
aead_ctx->random_variable_nonce_ = true;
|
144
143
|
aead_ctx->omit_length_in_ad_ = true;
|
145
|
-
aead_ctx->omit_version_in_ad_ = (protocol_version == SSL3_VERSION);
|
146
144
|
}
|
147
145
|
|
148
146
|
return aead_ctx;
|
149
147
|
}
|
150
148
|
|
149
|
+
UniquePtr<SSLAEADContext> SSLAEADContext::CreatePlaceholderForQUIC(
|
150
|
+
uint16_t version, const SSL_CIPHER *cipher) {
|
151
|
+
return MakeUnique<SSLAEADContext>(version, false, cipher);
|
152
|
+
}
|
153
|
+
|
151
154
|
void SSLAEADContext::SetVersionIfNullCipher(uint16_t version) {
|
152
155
|
if (is_null_cipher()) {
|
153
156
|
version_ = version;
|
@@ -193,6 +196,22 @@ bool SSLAEADContext::SuffixLen(size_t *out_suffix_len, const size_t in_len,
|
|
193
196
|
extra_in_len);
|
194
197
|
}
|
195
198
|
|
199
|
+
bool SSLAEADContext::CiphertextLen(size_t *out_len, const size_t in_len,
|
200
|
+
const size_t extra_in_len) const {
|
201
|
+
size_t len;
|
202
|
+
if (!SuffixLen(&len, in_len, extra_in_len)) {
|
203
|
+
return false;
|
204
|
+
}
|
205
|
+
len += ExplicitNonceLen();
|
206
|
+
len += in_len;
|
207
|
+
if (len < in_len || len >= 0xffff) {
|
208
|
+
OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
|
209
|
+
return false;
|
210
|
+
}
|
211
|
+
*out_len = len;
|
212
|
+
return true;
|
213
|
+
}
|
214
|
+
|
196
215
|
size_t SSLAEADContext::MaxOverhead() const {
|
197
216
|
return ExplicitNonceLen() +
|
198
217
|
(is_null_cipher() || FUZZER_MODE
|
@@ -200,31 +219,28 @@ size_t SSLAEADContext::MaxOverhead() const {
|
|
200
219
|
: EVP_AEAD_max_overhead(EVP_AEAD_CTX_aead(ctx_.get())));
|
201
220
|
}
|
202
221
|
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
return 0;
|
222
|
+
Span<const uint8_t> SSLAEADContext::GetAdditionalData(
|
223
|
+
uint8_t storage[13], uint8_t type, uint16_t record_version,
|
224
|
+
const uint8_t seqnum[8], size_t plaintext_len, Span<const uint8_t> header) {
|
225
|
+
if (ad_is_header_) {
|
226
|
+
return header;
|
209
227
|
}
|
210
228
|
|
211
|
-
OPENSSL_memcpy(
|
229
|
+
OPENSSL_memcpy(storage, seqnum, 8);
|
212
230
|
size_t len = 8;
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
out[len++] = static_cast<uint8_t>(record_version);
|
217
|
-
}
|
231
|
+
storage[len++] = type;
|
232
|
+
storage[len++] = static_cast<uint8_t>((record_version >> 8));
|
233
|
+
storage[len++] = static_cast<uint8_t>(record_version);
|
218
234
|
if (!omit_length_in_ad_) {
|
219
|
-
|
220
|
-
|
235
|
+
storage[len++] = static_cast<uint8_t>((plaintext_len >> 8));
|
236
|
+
storage[len++] = static_cast<uint8_t>(plaintext_len);
|
221
237
|
}
|
222
|
-
return len;
|
238
|
+
return MakeConstSpan(storage, len);
|
223
239
|
}
|
224
240
|
|
225
241
|
bool SSLAEADContext::Open(Span<uint8_t> *out, uint8_t type,
|
226
242
|
uint16_t record_version, const uint8_t seqnum[8],
|
227
|
-
Span<uint8_t> in) {
|
243
|
+
Span<const uint8_t> header, Span<uint8_t> in) {
|
228
244
|
if (is_null_cipher() || FUZZER_MODE) {
|
229
245
|
// Handle the initial NULL cipher.
|
230
246
|
*out = in;
|
@@ -243,9 +259,10 @@ bool SSLAEADContext::Open(Span<uint8_t> *out, uint8_t type,
|
|
243
259
|
}
|
244
260
|
plaintext_len = in.size() - overhead;
|
245
261
|
}
|
246
|
-
|
247
|
-
|
248
|
-
|
262
|
+
|
263
|
+
uint8_t ad_storage[13];
|
264
|
+
Span<const uint8_t> ad = GetAdditionalData(ad_storage, type, record_version,
|
265
|
+
seqnum, plaintext_len, header);
|
249
266
|
|
250
267
|
// Assemble the nonce.
|
251
268
|
uint8_t nonce[EVP_AEAD_MAX_NONCE_LENGTH];
|
@@ -286,7 +303,8 @@ bool SSLAEADContext::Open(Span<uint8_t> *out, uint8_t type,
|
|
286
303
|
// Decrypt in-place.
|
287
304
|
size_t len;
|
288
305
|
if (!EVP_AEAD_CTX_open(ctx_.get(), in.data(), &len, in.size(), nonce,
|
289
|
-
nonce_len, in.data(), in.size(), ad,
|
306
|
+
nonce_len, in.data(), in.size(), ad.data(),
|
307
|
+
ad.size())) {
|
290
308
|
return false;
|
291
309
|
}
|
292
310
|
*out = in.subspan(0, len);
|
@@ -296,7 +314,8 @@ bool SSLAEADContext::Open(Span<uint8_t> *out, uint8_t type,
|
|
296
314
|
bool SSLAEADContext::SealScatter(uint8_t *out_prefix, uint8_t *out,
|
297
315
|
uint8_t *out_suffix, uint8_t type,
|
298
316
|
uint16_t record_version,
|
299
|
-
const uint8_t seqnum[8],
|
317
|
+
const uint8_t seqnum[8],
|
318
|
+
Span<const uint8_t> header, const uint8_t *in,
|
300
319
|
size_t in_len, const uint8_t *extra_in,
|
301
320
|
size_t extra_in_len) {
|
302
321
|
const size_t prefix_len = ExplicitNonceLen();
|
@@ -319,8 +338,9 @@ bool SSLAEADContext::SealScatter(uint8_t *out_prefix, uint8_t *out,
|
|
319
338
|
return true;
|
320
339
|
}
|
321
340
|
|
322
|
-
uint8_t
|
323
|
-
|
341
|
+
uint8_t ad_storage[13];
|
342
|
+
Span<const uint8_t> ad = GetAdditionalData(ad_storage, type, record_version,
|
343
|
+
seqnum, in_len, header);
|
324
344
|
|
325
345
|
// Assemble the nonce.
|
326
346
|
uint8_t nonce[EVP_AEAD_MAX_NONCE_LENGTH];
|
@@ -371,15 +391,15 @@ bool SSLAEADContext::SealScatter(uint8_t *out_prefix, uint8_t *out,
|
|
371
391
|
size_t written_suffix_len;
|
372
392
|
bool result = !!EVP_AEAD_CTX_seal_scatter(
|
373
393
|
ctx_.get(), out, out_suffix, &written_suffix_len, suffix_len, nonce,
|
374
|
-
nonce_len, in, in_len, extra_in, extra_in_len, ad,
|
394
|
+
nonce_len, in, in_len, extra_in, extra_in_len, ad.data(), ad.size());
|
375
395
|
assert(!result || written_suffix_len == suffix_len);
|
376
396
|
return result;
|
377
397
|
}
|
378
398
|
|
379
399
|
bool SSLAEADContext::Seal(uint8_t *out, size_t *out_len, size_t max_out_len,
|
380
400
|
uint8_t type, uint16_t record_version,
|
381
|
-
const uint8_t seqnum[8], const uint8_t
|
382
|
-
size_t in_len) {
|
401
|
+
const uint8_t seqnum[8], Span<const uint8_t> header,
|
402
|
+
const uint8_t *in, size_t in_len) {
|
383
403
|
const size_t prefix_len = ExplicitNonceLen();
|
384
404
|
size_t suffix_len;
|
385
405
|
if (!SuffixLen(&suffix_len, in_len, 0)) {
|
@@ -397,7 +417,7 @@ bool SSLAEADContext::Seal(uint8_t *out, size_t *out_len, size_t max_out_len,
|
|
397
417
|
}
|
398
418
|
|
399
419
|
if (!SealScatter(out, out + prefix_len, out + prefix_len + in_len, type,
|
400
|
-
record_version, seqnum, in, in_len, 0, 0)) {
|
420
|
+
record_version, seqnum, header, in, in_len, 0, 0)) {
|
401
421
|
return false;
|
402
422
|
}
|
403
423
|
*out_len = prefix_len + in_len + suffix_len;
|
@@ -409,4 +429,4 @@ bool SSLAEADContext::GetIV(const uint8_t **out_iv, size_t *out_iv_len) const {
|
|
409
429
|
EVP_AEAD_CTX_get_iv(ctx_.get(), out_iv, out_iv_len);
|
410
430
|
}
|
411
431
|
|
412
|
-
|
432
|
+
BSSL_NAMESPACE_END
|
@@ -80,13 +80,6 @@
|
|
80
80
|
* OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OR
|
81
81
|
* OTHERWISE. */
|
82
82
|
|
83
|
-
// Per C99, various stdint.h macros are unavailable in C++ unless some macros
|
84
|
-
// are defined. C++11 overruled this decision, but older Android NDKs still
|
85
|
-
// require it.
|
86
|
-
#if !defined(__STDC_LIMIT_MACROS)
|
87
|
-
#define __STDC_LIMIT_MACROS
|
88
|
-
#endif
|
89
|
-
|
90
83
|
#include <openssl/ssl.h>
|
91
84
|
|
92
85
|
#include <limits.h>
|
@@ -104,7 +97,7 @@
|
|
104
97
|
#include "internal.h"
|
105
98
|
|
106
99
|
|
107
|
-
|
100
|
+
BSSL_NAMESPACE_BEGIN
|
108
101
|
|
109
102
|
// An SSL_SESSION is serialized as the following ASN.1 structure:
|
110
103
|
//
|
@@ -224,8 +217,8 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
224
217
|
|
225
218
|
// The peer certificate is only serialized if the SHA-256 isn't
|
226
219
|
// serialized instead.
|
227
|
-
if (sk_CRYPTO_BUFFER_num(in->certs) > 0 && !in->peer_sha256_valid) {
|
228
|
-
const CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(in->certs, 0);
|
220
|
+
if (sk_CRYPTO_BUFFER_num(in->certs.get()) > 0 && !in->peer_sha256_valid) {
|
221
|
+
const CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(in->certs.get(), 0);
|
229
222
|
if (!CBB_add_asn1(&session, &child, kPeerTag) ||
|
230
223
|
!CBB_add_bytes(&child, CRYPTO_BUFFER_data(buffer),
|
231
224
|
CRYPTO_BUFFER_len(buffer))) {
|
@@ -252,25 +245,26 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
252
245
|
|
253
246
|
if (in->psk_identity) {
|
254
247
|
if (!CBB_add_asn1(&session, &child, kPSKIdentityTag) ||
|
255
|
-
!CBB_add_asn1_octet_string(&child,
|
256
|
-
|
248
|
+
!CBB_add_asn1_octet_string(&child,
|
249
|
+
(const uint8_t *)in->psk_identity.get(),
|
250
|
+
strlen(in->psk_identity.get()))) {
|
257
251
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
258
252
|
return 0;
|
259
253
|
}
|
260
254
|
}
|
261
255
|
|
262
|
-
if (in->
|
256
|
+
if (in->ticket_lifetime_hint > 0) {
|
263
257
|
if (!CBB_add_asn1(&session, &child, kTicketLifetimeHintTag) ||
|
264
|
-
!CBB_add_asn1_uint64(&child, in->
|
258
|
+
!CBB_add_asn1_uint64(&child, in->ticket_lifetime_hint)) {
|
265
259
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
266
260
|
return 0;
|
267
261
|
}
|
268
262
|
}
|
269
263
|
|
270
|
-
if (in->
|
264
|
+
if (!in->ticket.empty() && !for_ticket) {
|
271
265
|
if (!CBB_add_asn1(&session, &child, kTicketTag) ||
|
272
|
-
!CBB_add_asn1_octet_string(&child, in->
|
273
|
-
in->
|
266
|
+
!CBB_add_asn1_octet_string(&child, in->ticket.data(),
|
267
|
+
in->ticket.size())) {
|
274
268
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
275
269
|
return 0;
|
276
270
|
}
|
@@ -297,8 +291,8 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
297
291
|
if (in->signed_cert_timestamp_list != nullptr) {
|
298
292
|
if (!CBB_add_asn1(&session, &child, kSignedCertTimestampListTag) ||
|
299
293
|
!CBB_add_asn1_octet_string(
|
300
|
-
&child, CRYPTO_BUFFER_data(in->signed_cert_timestamp_list),
|
301
|
-
CRYPTO_BUFFER_len(in->signed_cert_timestamp_list))) {
|
294
|
+
&child, CRYPTO_BUFFER_data(in->signed_cert_timestamp_list.get()),
|
295
|
+
CRYPTO_BUFFER_len(in->signed_cert_timestamp_list.get()))) {
|
302
296
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
303
297
|
return 0;
|
304
298
|
}
|
@@ -306,9 +300,9 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
306
300
|
|
307
301
|
if (in->ocsp_response != nullptr) {
|
308
302
|
if (!CBB_add_asn1(&session, &child, kOCSPResponseTag) ||
|
309
|
-
!CBB_add_asn1_octet_string(
|
310
|
-
|
311
|
-
|
303
|
+
!CBB_add_asn1_octet_string(
|
304
|
+
&child, CRYPTO_BUFFER_data(in->ocsp_response.get()),
|
305
|
+
CRYPTO_BUFFER_len(in->ocsp_response.get()))) {
|
312
306
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
313
307
|
return 0;
|
314
308
|
}
|
@@ -333,13 +327,13 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
333
327
|
// serialized instead.
|
334
328
|
if (in->certs != NULL &&
|
335
329
|
!in->peer_sha256_valid &&
|
336
|
-
sk_CRYPTO_BUFFER_num(in->certs) >= 2) {
|
330
|
+
sk_CRYPTO_BUFFER_num(in->certs.get()) >= 2) {
|
337
331
|
if (!CBB_add_asn1(&session, &child, kCertChainTag)) {
|
338
332
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
339
333
|
return 0;
|
340
334
|
}
|
341
|
-
for (size_t i = 1; i < sk_CRYPTO_BUFFER_num(in->certs); i++) {
|
342
|
-
const CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(in->certs, i);
|
335
|
+
for (size_t i = 1; i < sk_CRYPTO_BUFFER_num(in->certs.get()); i++) {
|
336
|
+
const CRYPTO_BUFFER *buffer = sk_CRYPTO_BUFFER_value(in->certs.get(), i);
|
343
337
|
if (!CBB_add_bytes(&child, CRYPTO_BUFFER_data(buffer),
|
344
338
|
CRYPTO_BUFFER_len(buffer))) {
|
345
339
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
@@ -386,10 +380,10 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
386
380
|
return 0;
|
387
381
|
}
|
388
382
|
|
389
|
-
if (in->early_alpn) {
|
383
|
+
if (!in->early_alpn.empty()) {
|
390
384
|
if (!CBB_add_asn1(&session, &child, kEarlyALPNTag) ||
|
391
|
-
!CBB_add_asn1_octet_string(&child,
|
392
|
-
in->
|
385
|
+
!CBB_add_asn1_octet_string(&child, in->early_alpn.data(),
|
386
|
+
in->early_alpn.size())) {
|
393
387
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
394
388
|
return 0;
|
395
389
|
}
|
@@ -398,13 +392,11 @@ static int SSL_SESSION_to_bytes_full(const SSL_SESSION *in, CBB *cbb,
|
|
398
392
|
return CBB_flush(cbb);
|
399
393
|
}
|
400
394
|
|
401
|
-
// SSL_SESSION_parse_string gets an optional ASN.1 OCTET STRING
|
402
|
-
//
|
403
|
-
//
|
404
|
-
//
|
405
|
-
|
406
|
-
// decode error.
|
407
|
-
static int SSL_SESSION_parse_string(CBS *cbs, char **out, unsigned tag) {
|
395
|
+
// SSL_SESSION_parse_string gets an optional ASN.1 OCTET STRING explicitly
|
396
|
+
// tagged with |tag| from |cbs| and saves it in |*out|. If the element was not
|
397
|
+
// found, it sets |*out| to NULL. It returns one on success, whether or not the
|
398
|
+
// element was found, and zero on decode error.
|
399
|
+
static int SSL_SESSION_parse_string(CBS *cbs, UniquePtr<char> *out, unsigned tag) {
|
408
400
|
CBS value;
|
409
401
|
int present;
|
410
402
|
if (!CBS_get_optional_asn1_octet_string(cbs, &value, &present, tag)) {
|
@@ -416,38 +408,33 @@ static int SSL_SESSION_parse_string(CBS *cbs, char **out, unsigned tag) {
|
|
416
408
|
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION);
|
417
409
|
return 0;
|
418
410
|
}
|
419
|
-
|
411
|
+
char *raw = nullptr;
|
412
|
+
if (!CBS_strdup(&value, &raw)) {
|
420
413
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
421
414
|
return 0;
|
422
415
|
}
|
416
|
+
out->reset(raw);
|
423
417
|
} else {
|
424
|
-
|
425
|
-
*out = NULL;
|
418
|
+
out->reset();
|
426
419
|
}
|
427
420
|
return 1;
|
428
421
|
}
|
429
422
|
|
430
|
-
//
|
431
|
-
//
|
432
|
-
//
|
433
|
-
|
434
|
-
|
435
|
-
// element was found, and zero on decode error.
|
436
|
-
static int SSL_SESSION_parse_octet_string(CBS *cbs, uint8_t **out_ptr,
|
437
|
-
size_t *out_len, unsigned tag) {
|
423
|
+
// SSL_SESSION_parse_octet_string gets an optional ASN.1 OCTET STRING explicitly
|
424
|
+
// tagged with |tag| from |cbs| and stows it in |*out|. It returns one on
|
425
|
+
// success, whether or not the element was found, and zero on decode error.
|
426
|
+
static bool SSL_SESSION_parse_octet_string(CBS *cbs, Array<uint8_t> *out,
|
427
|
+
unsigned tag) {
|
438
428
|
CBS value;
|
439
429
|
if (!CBS_get_optional_asn1_octet_string(cbs, &value, NULL, tag)) {
|
440
430
|
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION);
|
441
|
-
return
|
431
|
+
return false;
|
442
432
|
}
|
443
|
-
|
444
|
-
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
445
|
-
return 0;
|
446
|
-
}
|
447
|
-
return 1;
|
433
|
+
return out->CopyFrom(value);
|
448
434
|
}
|
449
435
|
|
450
|
-
static int SSL_SESSION_parse_crypto_buffer(CBS *cbs,
|
436
|
+
static int SSL_SESSION_parse_crypto_buffer(CBS *cbs,
|
437
|
+
UniquePtr<CRYPTO_BUFFER> *out,
|
451
438
|
unsigned tag,
|
452
439
|
CRYPTO_BUFFER_POOL *pool) {
|
453
440
|
if (!CBS_peek_asn1_tag(cbs, tag)) {
|
@@ -461,8 +448,7 @@ static int SSL_SESSION_parse_crypto_buffer(CBS *cbs, CRYPTO_BUFFER **out,
|
|
461
448
|
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION);
|
462
449
|
return 0;
|
463
450
|
}
|
464
|
-
|
465
|
-
*out = CRYPTO_BUFFER_new_from_CBS(&value, pool);
|
451
|
+
out->reset(CRYPTO_BUFFER_new_from_CBS(&value, pool));
|
466
452
|
if (*out == nullptr) {
|
467
453
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
468
454
|
return 0;
|
@@ -617,10 +603,9 @@ UniquePtr<SSL_SESSION> SSL_SESSION_parse(CBS *cbs,
|
|
617
603
|
|
618
604
|
if (!SSL_SESSION_parse_string(&session, &ret->psk_identity,
|
619
605
|
kPSKIdentityTag) ||
|
620
|
-
!SSL_SESSION_parse_u32(&session, &ret->
|
606
|
+
!SSL_SESSION_parse_u32(&session, &ret->ticket_lifetime_hint,
|
621
607
|
kTicketLifetimeHintTag, 0) ||
|
622
|
-
!SSL_SESSION_parse_octet_string(&session, &ret->
|
623
|
-
&ret->tlsext_ticklen, kTicketTag)) {
|
608
|
+
!SSL_SESSION_parse_octet_string(&session, &ret->ticket, kTicketTag)) {
|
624
609
|
return nullptr;
|
625
610
|
}
|
626
611
|
|
@@ -680,8 +665,8 @@ UniquePtr<SSL_SESSION> SSL_SESSION_parse(CBS *cbs,
|
|
680
665
|
return nullptr;
|
681
666
|
}
|
682
667
|
if (has_peer || has_cert_chain) {
|
683
|
-
ret->certs
|
684
|
-
if (ret->certs ==
|
668
|
+
ret->certs.reset(sk_CRYPTO_BUFFER_new_null());
|
669
|
+
if (ret->certs == nullptr) {
|
685
670
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
686
671
|
return nullptr;
|
687
672
|
}
|
@@ -689,7 +674,7 @@ UniquePtr<SSL_SESSION> SSL_SESSION_parse(CBS *cbs,
|
|
689
674
|
if (has_peer) {
|
690
675
|
UniquePtr<CRYPTO_BUFFER> buffer(CRYPTO_BUFFER_new_from_CBS(&peer, pool));
|
691
676
|
if (!buffer ||
|
692
|
-
!PushToStack(ret->certs, std::move(buffer))) {
|
677
|
+
!PushToStack(ret->certs.get(), std::move(buffer))) {
|
693
678
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
694
679
|
return nullptr;
|
695
680
|
}
|
@@ -703,21 +688,15 @@ UniquePtr<SSL_SESSION> SSL_SESSION_parse(CBS *cbs,
|
|
703
688
|
return nullptr;
|
704
689
|
}
|
705
690
|
|
706
|
-
CRYPTO_BUFFER
|
707
|
-
if (buffer ==
|
708
|
-
!
|
709
|
-
CRYPTO_BUFFER_free(buffer);
|
691
|
+
UniquePtr<CRYPTO_BUFFER> buffer(CRYPTO_BUFFER_new_from_CBS(&cert, pool));
|
692
|
+
if (buffer == nullptr ||
|
693
|
+
!PushToStack(ret->certs.get(), std::move(buffer))) {
|
710
694
|
OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
|
711
695
|
return nullptr;
|
712
696
|
}
|
713
697
|
}
|
714
698
|
}
|
715
699
|
|
716
|
-
if (!x509_method->session_cache_objects(ret.get())) {
|
717
|
-
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION);
|
718
|
-
return nullptr;
|
719
|
-
}
|
720
|
-
|
721
700
|
CBS age_add;
|
722
701
|
int age_add_present;
|
723
702
|
if (!CBS_get_optional_asn1_octet_string(&session, &age_add, &age_add_present,
|
@@ -727,7 +706,7 @@ UniquePtr<SSL_SESSION> SSL_SESSION_parse(CBS *cbs,
|
|
727
706
|
CBS_len(&age_add) != 0) {
|
728
707
|
return nullptr;
|
729
708
|
}
|
730
|
-
ret->ticket_age_add_valid = age_add_present;
|
709
|
+
ret->ticket_age_add_valid = age_add_present != 0;
|
731
710
|
|
732
711
|
int is_server;
|
733
712
|
if (!CBS_get_optional_asn1_bool(&session, &is_server, kIsServerTag,
|
@@ -747,12 +726,17 @@ UniquePtr<SSL_SESSION> SSL_SESSION_parse(CBS *cbs,
|
|
747
726
|
!SSL_SESSION_parse_u32(&session, &ret->auth_timeout, kAuthTimeoutTag,
|
748
727
|
ret->timeout) ||
|
749
728
|
!SSL_SESSION_parse_octet_string(&session, &ret->early_alpn,
|
750
|
-
|
729
|
+
kEarlyALPNTag) ||
|
751
730
|
CBS_len(&session) != 0) {
|
752
731
|
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION);
|
753
732
|
return nullptr;
|
754
733
|
}
|
755
734
|
|
735
|
+
if (!x509_method->session_cache_objects(ret.get())) {
|
736
|
+
OPENSSL_PUT_ERROR(SSL, SSL_R_INVALID_SSL_SESSION);
|
737
|
+
return nullptr;
|
738
|
+
}
|
739
|
+
|
756
740
|
return ret;
|
757
741
|
}
|
758
742
|
|
@@ -760,7 +744,7 @@ int ssl_session_serialize(const SSL_SESSION *in, CBB *cbb) {
|
|
760
744
|
return SSL_SESSION_to_bytes_full(in, cbb, 0);
|
761
745
|
}
|
762
746
|
|
763
|
-
|
747
|
+
BSSL_NAMESPACE_END
|
764
748
|
|
765
749
|
using namespace bssl;
|
766
750
|
|