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
@@ -54,10 +54,6 @@
|
|
54
54
|
* copied and put under another distribution licence
|
55
55
|
* [including the GNU Public Licence.] */
|
56
56
|
|
57
|
-
#if !defined(__STDC_FORMAT_MACROS)
|
58
|
-
#define __STDC_FORMAT_MACROS
|
59
|
-
#endif
|
60
|
-
|
61
57
|
#include <openssl/cpu.h>
|
62
58
|
|
63
59
|
|
@@ -127,9 +123,17 @@ static uint64_t OPENSSL_xgetbv(uint32_t xcr) {
|
|
127
123
|
// and |out[1]|. See the comment in |OPENSSL_cpuid_setup| about this.
|
128
124
|
static void handle_cpu_env(uint32_t *out, const char *in) {
|
129
125
|
const int invert = in[0] == '~';
|
126
|
+
const int hex = in[invert] == '0' && in[invert+1] == 'x';
|
127
|
+
|
128
|
+
int sscanf_result;
|
130
129
|
uint64_t v;
|
130
|
+
if (hex) {
|
131
|
+
sscanf_result = sscanf(in + invert + 2, "%" PRIx64, &v);
|
132
|
+
} else {
|
133
|
+
sscanf_result = sscanf(in + invert, "%" PRIu64, &v);
|
134
|
+
}
|
131
135
|
|
132
|
-
if (!
|
136
|
+
if (!sscanf_result) {
|
133
137
|
return;
|
134
138
|
}
|
135
139
|
|
@@ -156,50 +160,43 @@ void OPENSSL_cpuid_setup(void) {
|
|
156
160
|
edx == 0x69746e65 /* enti */ &&
|
157
161
|
ecx == 0x444d4163 /* cAMD */;
|
158
162
|
|
159
|
-
|
160
|
-
if (is_amd) {
|
161
|
-
// AMD-specific logic.
|
162
|
-
// See http://developer.amd.com/wordpress/media/2012/10/254811.pdf
|
163
|
-
OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 0x80000000);
|
164
|
-
uint32_t num_extended_ids = eax;
|
165
|
-
if (num_extended_ids >= 0x80000001) {
|
166
|
-
OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 0x80000001);
|
167
|
-
if (ecx & (1u << 11)) {
|
168
|
-
has_amd_xop = 1;
|
169
|
-
}
|
170
|
-
}
|
171
|
-
}
|
172
|
-
|
173
|
-
uint32_t extended_features = 0;
|
163
|
+
uint32_t extended_features[2] = {0};
|
174
164
|
if (num_ids >= 7) {
|
175
165
|
OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 7);
|
176
|
-
extended_features = ebx;
|
177
|
-
|
178
|
-
|
179
|
-
// Determine the number of cores sharing an L1 data cache to adjust the
|
180
|
-
// hyper-threading bit.
|
181
|
-
uint32_t cores_per_cache = 0;
|
182
|
-
if (is_amd) {
|
183
|
-
// AMD CPUs never share an L1 data cache between threads but do set the HTT
|
184
|
-
// bit on multi-core CPUs.
|
185
|
-
cores_per_cache = 1;
|
186
|
-
} else if (num_ids >= 4) {
|
187
|
-
// TODO(davidben): The Intel manual says this CPUID leaf enumerates all
|
188
|
-
// caches using ECX and doesn't say which is first. Does this matter?
|
189
|
-
OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 4);
|
190
|
-
cores_per_cache = 1 + ((eax >> 14) & 0xfff);
|
166
|
+
extended_features[0] = ebx;
|
167
|
+
extended_features[1] = ecx;
|
191
168
|
}
|
192
169
|
|
193
170
|
OPENSSL_cpuid(&eax, &ebx, &ecx, &edx, 1);
|
194
171
|
|
195
|
-
|
196
|
-
|
197
|
-
uint32_t
|
198
|
-
|
199
|
-
|
172
|
+
if (is_amd) {
|
173
|
+
// See https://www.amd.com/system/files/TechDocs/25481.pdf, page 10.
|
174
|
+
const uint32_t base_family = (eax >> 8) & 15;
|
175
|
+
const uint32_t base_model = (eax >> 4) & 15;
|
176
|
+
|
177
|
+
uint32_t family = base_family;
|
178
|
+
uint32_t model = base_model;
|
179
|
+
if (base_family == 0xf) {
|
180
|
+
const uint32_t ext_family = (eax >> 20) & 255;
|
181
|
+
family += ext_family;
|
182
|
+
const uint32_t ext_model = (eax >> 16) & 15;
|
183
|
+
model |= ext_model << 4;
|
184
|
+
}
|
185
|
+
|
186
|
+
if (family < 0x17 || (family == 0x17 && 0x70 <= model && model <= 0x7f)) {
|
187
|
+
// Disable RDRAND on AMD families before 0x17 (Zen) due to reported
|
188
|
+
// failures after suspend.
|
189
|
+
// https://bugzilla.redhat.com/show_bug.cgi?id=1150286
|
190
|
+
// Also disable for family 0x17, models 0x70–0x7f, due to possible RDRAND
|
191
|
+
// failures there too.
|
192
|
+
ecx &= ~(1u << 30);
|
200
193
|
}
|
201
194
|
}
|
202
195
|
|
196
|
+
// Force the hyper-threading bit so that the more conservative path is always
|
197
|
+
// chosen.
|
198
|
+
edx |= 1u << 28;
|
199
|
+
|
203
200
|
// Reserved bit #20 was historically repurposed to control the in-memory
|
204
201
|
// representation of RC4 state. Always set it to zero.
|
205
202
|
edx &= ~(1u << 20);
|
@@ -219,12 +216,9 @@ void OPENSSL_cpuid_setup(void) {
|
|
219
216
|
edx &= ~(1u << 30);
|
220
217
|
}
|
221
218
|
|
222
|
-
// The SDBG bit is repurposed to denote AMD XOP support.
|
223
|
-
|
224
|
-
|
225
|
-
} else {
|
226
|
-
ecx &= ~(1u << 11);
|
227
|
-
}
|
219
|
+
// The SDBG bit is repurposed to denote AMD XOP support. Don't ever use AMD
|
220
|
+
// XOP code paths.
|
221
|
+
ecx &= ~(1u << 11);
|
228
222
|
|
229
223
|
uint64_t xcr0 = 0;
|
230
224
|
if (ecx & (1u << 27)) {
|
@@ -241,26 +235,26 @@ void OPENSSL_cpuid_setup(void) {
|
|
241
235
|
//
|
242
236
|
// TODO(davidben): Should bits 17 and 26-28 also be cleared? Upstream
|
243
237
|
// doesn't clear those.
|
244
|
-
extended_features &=
|
238
|
+
extended_features[0] &=
|
245
239
|
~((1u << 5) | (1u << 16) | (1u << 21) | (1u << 30) | (1u << 31));
|
246
240
|
}
|
247
241
|
// See Intel manual, volume 1, section 15.2.
|
248
242
|
if ((xcr0 & 0xe6) != 0xe6) {
|
249
243
|
// Clear AVX512F. Note we don't touch other AVX512 extensions because they
|
250
244
|
// can be used with YMM.
|
251
|
-
extended_features &= ~(1u << 16);
|
245
|
+
extended_features[0] &= ~(1u << 16);
|
252
246
|
}
|
253
247
|
|
254
248
|
// Disable ADX instructions on Knights Landing. See OpenSSL commit
|
255
249
|
// 64d92d74985ebb3d0be58a9718f9e080a14a8e7f.
|
256
250
|
if ((ecx & (1u << 26)) == 0) {
|
257
|
-
extended_features &= ~(1u << 19);
|
251
|
+
extended_features[0] &= ~(1u << 19);
|
258
252
|
}
|
259
253
|
|
260
254
|
OPENSSL_ia32cap_P[0] = edx;
|
261
255
|
OPENSSL_ia32cap_P[1] = ecx;
|
262
|
-
OPENSSL_ia32cap_P[2] = extended_features;
|
263
|
-
OPENSSL_ia32cap_P[3] =
|
256
|
+
OPENSSL_ia32cap_P[2] = extended_features[0];
|
257
|
+
OPENSSL_ia32cap_P[3] = extended_features[1];
|
264
258
|
|
265
259
|
const char *env1, *env2;
|
266
260
|
env1 = getenv("OPENSSL_ia32cap");
|
@@ -36,8 +36,8 @@
|
|
36
36
|
#define BORINGSSL_NO_STATIC_INITIALIZER
|
37
37
|
#endif
|
38
38
|
|
39
|
-
#endif
|
40
|
-
|
39
|
+
#endif // !NO_ASM && !STATIC_ARMCAP &&
|
40
|
+
// (X86 || X86_64 || ARM || AARCH64 || PPC64LE)
|
41
41
|
|
42
42
|
|
43
43
|
// Our assembly does not use the GOT to reference symbols, which means
|
@@ -60,8 +60,7 @@
|
|
60
60
|
// that tests the capability values will still skip the constructor but, so
|
61
61
|
// far, the init constructor function only sets the capability variables.
|
62
62
|
|
63
|
-
#if defined(
|
64
|
-
|
63
|
+
#if defined(BORINGSSL_DISPATCH_TEST)
|
65
64
|
// This value must be explicitly initialised to zero in order to work around a
|
66
65
|
// bug in libtool or the linker on OS X.
|
67
66
|
//
|
@@ -69,6 +68,12 @@
|
|
69
68
|
// archive, linking on OS X will fail to resolve common symbols. By
|
70
69
|
// initialising it to zero, it becomes a "data symbol", which isn't so
|
71
70
|
// affected.
|
71
|
+
HIDDEN uint8_t BORINGSSL_function_hit[7] = {0};
|
72
|
+
#endif
|
73
|
+
|
74
|
+
#if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
|
75
|
+
|
76
|
+
// This value must be explicitly initialized to zero. See similar comment above.
|
72
77
|
HIDDEN uint32_t OPENSSL_ia32cap_P[4] = {0};
|
73
78
|
|
74
79
|
#elif defined(OPENSSL_PPC64LE)
|
@@ -82,7 +87,8 @@ HIDDEN unsigned long OPENSSL_ppc64le_hwcap2 = 0;
|
|
82
87
|
#if defined(OPENSSL_STATIC_ARMCAP)
|
83
88
|
|
84
89
|
HIDDEN uint32_t OPENSSL_armcap_P =
|
85
|
-
#if defined(OPENSSL_STATIC_ARMCAP_NEON) ||
|
90
|
+
#if defined(OPENSSL_STATIC_ARMCAP_NEON) || \
|
91
|
+
(defined(__ARM_NEON__) || defined(__ARM_NEON))
|
86
92
|
ARMV7_NEON |
|
87
93
|
#endif
|
88
94
|
#if defined(OPENSSL_STATIC_ARMCAP_AES) || defined(__ARM_FEATURE_CRYPTO)
|
@@ -101,6 +107,10 @@ HIDDEN uint32_t OPENSSL_armcap_P =
|
|
101
107
|
|
102
108
|
#else
|
103
109
|
HIDDEN uint32_t OPENSSL_armcap_P = 0;
|
110
|
+
|
111
|
+
uint32_t *OPENSSL_get_armcap_pointer_for_test(void) {
|
112
|
+
return &OPENSSL_armcap_P;
|
113
|
+
}
|
104
114
|
#endif
|
105
115
|
|
106
116
|
#endif
|
@@ -164,31 +174,36 @@ int CRYPTO_has_asm(void) {
|
|
164
174
|
#endif
|
165
175
|
}
|
166
176
|
|
167
|
-
const char *SSLeay_version(int
|
168
|
-
|
177
|
+
const char *SSLeay_version(int which) { return OpenSSL_version(which); }
|
178
|
+
|
179
|
+
const char *OpenSSL_version(int which) {
|
180
|
+
switch (which) {
|
181
|
+
case OPENSSL_VERSION:
|
182
|
+
return "BoringSSL";
|
183
|
+
case OPENSSL_CFLAGS:
|
184
|
+
return "compiler: n/a";
|
185
|
+
case OPENSSL_BUILT_ON:
|
186
|
+
return "built on: n/a";
|
187
|
+
case OPENSSL_PLATFORM:
|
188
|
+
return "platform: n/a";
|
189
|
+
case OPENSSL_DIR:
|
190
|
+
return "OPENSSLDIR: n/a";
|
191
|
+
default:
|
192
|
+
return "not available";
|
193
|
+
}
|
169
194
|
}
|
170
195
|
|
171
|
-
|
172
|
-
return "BoringSSL";
|
173
|
-
}
|
196
|
+
unsigned long SSLeay(void) { return OPENSSL_VERSION_NUMBER; }
|
174
197
|
|
175
|
-
unsigned long
|
176
|
-
return OPENSSL_VERSION_NUMBER;
|
177
|
-
}
|
198
|
+
unsigned long OpenSSL_version_num(void) { return OPENSSL_VERSION_NUMBER; }
|
178
199
|
|
179
|
-
|
180
|
-
return OPENSSL_VERSION_NUMBER;
|
181
|
-
}
|
200
|
+
int CRYPTO_malloc_init(void) { return 1; }
|
182
201
|
|
183
|
-
int
|
184
|
-
return 1;
|
185
|
-
}
|
202
|
+
int OPENSSL_malloc_init(void) { return 1; }
|
186
203
|
|
187
204
|
void ENGINE_load_builtin_engines(void) {}
|
188
205
|
|
189
|
-
int ENGINE_register_all_complete(void) {
|
190
|
-
return 1;
|
191
|
-
}
|
206
|
+
int ENGINE_register_all_complete(void) { return 1; }
|
192
207
|
|
193
208
|
void OPENSSL_load_builtin_modules(void) {}
|
194
209
|
|
@@ -196,3 +211,5 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings) {
|
|
196
211
|
CRYPTO_library_init();
|
197
212
|
return 1;
|
198
213
|
}
|
214
|
+
|
215
|
+
void OPENSSL_cleanup(void) {}
|
@@ -481,7 +481,7 @@ int SPAKE2_process_msg(SPAKE2_CTX *ctx, uint8_t *out_key, size_t *out_key_len,
|
|
481
481
|
}
|
482
482
|
|
483
483
|
ge_p3 Qstar;
|
484
|
-
if (
|
484
|
+
if (!x25519_ge_frombytes_vartime(&Qstar, their_msg)) {
|
485
485
|
// Point received from peer was not on the curve.
|
486
486
|
return 0;
|
487
487
|
}
|
@@ -79,7 +79,7 @@
|
|
79
79
|
#define OPENSSL_DSA_MAX_MODULUS_BITS 10000
|
80
80
|
|
81
81
|
// Primality test according to FIPS PUB 186[-1], Appendix 2.1: 50 rounds of
|
82
|
-
// Rabin
|
82
|
+
// Miller-Rabin.
|
83
83
|
#define DSS_prime_checks 50
|
84
84
|
|
85
85
|
static int dsa_sign_setup(const DSA *dsa, BN_CTX *ctx_in, BIGNUM **out_kinv,
|
@@ -256,7 +256,7 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
256
256
|
// Find q.
|
257
257
|
for (;;) {
|
258
258
|
// step 1
|
259
|
-
if (!BN_GENCB_call(cb,
|
259
|
+
if (!BN_GENCB_call(cb, BN_GENCB_GENERATED, m++)) {
|
260
260
|
goto err;
|
261
261
|
}
|
262
262
|
|
@@ -319,7 +319,7 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
319
319
|
n = (bits - 1) / 160;
|
320
320
|
|
321
321
|
for (;;) {
|
322
|
-
if ((counter != 0) && !BN_GENCB_call(cb,
|
322
|
+
if ((counter != 0) && !BN_GENCB_call(cb, BN_GENCB_GENERATED, counter)) {
|
323
323
|
goto err;
|
324
324
|
}
|
325
325
|
|
@@ -541,22 +541,51 @@ void DSA_SIG_free(DSA_SIG *sig) {
|
|
541
541
|
OPENSSL_free(sig);
|
542
542
|
}
|
543
543
|
|
544
|
+
// mod_mul_consttime sets |r| to |a| * |b| modulo |mont->N|, treating |a| and
|
545
|
+
// |b| as secret. This function internally uses Montgomery reduction, but
|
546
|
+
// neither inputs nor outputs are in Montgomery form.
|
547
|
+
static int mod_mul_consttime(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
548
|
+
const BN_MONT_CTX *mont, BN_CTX *ctx) {
|
549
|
+
BN_CTX_start(ctx);
|
550
|
+
BIGNUM *tmp = BN_CTX_get(ctx);
|
551
|
+
// |BN_mod_mul_montgomery| removes a factor of R, so we cancel it with a
|
552
|
+
// single |BN_to_montgomery| which adds one factor of R.
|
553
|
+
int ok = tmp != NULL &&
|
554
|
+
BN_to_montgomery(tmp, a, mont, ctx) &&
|
555
|
+
BN_mod_mul_montgomery(r, tmp, b, mont, ctx);
|
556
|
+
BN_CTX_end(ctx);
|
557
|
+
return ok;
|
558
|
+
}
|
559
|
+
|
544
560
|
DSA_SIG *DSA_do_sign(const uint8_t *digest, size_t digest_len, const DSA *dsa) {
|
561
|
+
if (!dsa->p || !dsa->q || !dsa->g) {
|
562
|
+
OPENSSL_PUT_ERROR(DSA, DSA_R_MISSING_PARAMETERS);
|
563
|
+
return NULL;
|
564
|
+
}
|
565
|
+
|
566
|
+
// Reject invalid parameters. In particular, the algorithm will infinite loop
|
567
|
+
// if |g| is zero.
|
568
|
+
if (BN_is_zero(dsa->p) || BN_is_zero(dsa->q) || BN_is_zero(dsa->g)) {
|
569
|
+
OPENSSL_PUT_ERROR(DSA, DSA_R_INVALID_PARAMETERS);
|
570
|
+
return NULL;
|
571
|
+
}
|
572
|
+
|
573
|
+
// We only support DSA keys that are a multiple of 8 bits. (This is a weaker
|
574
|
+
// check than the one in |DSA_do_check_signature|, which only allows 160-,
|
575
|
+
// 224-, and 256-bit keys.
|
576
|
+
if (BN_num_bits(dsa->q) % 8 != 0) {
|
577
|
+
OPENSSL_PUT_ERROR(DSA, DSA_R_BAD_Q_VALUE);
|
578
|
+
return NULL;
|
579
|
+
}
|
580
|
+
|
545
581
|
BIGNUM *kinv = NULL, *r = NULL, *s = NULL;
|
546
582
|
BIGNUM m;
|
547
583
|
BIGNUM xr;
|
548
584
|
BN_CTX *ctx = NULL;
|
549
|
-
int reason = ERR_R_BN_LIB;
|
550
585
|
DSA_SIG *ret = NULL;
|
551
586
|
|
552
587
|
BN_init(&m);
|
553
588
|
BN_init(&xr);
|
554
|
-
|
555
|
-
if (!dsa->p || !dsa->q || !dsa->g) {
|
556
|
-
reason = DSA_R_MISSING_PARAMETERS;
|
557
|
-
goto err;
|
558
|
-
}
|
559
|
-
|
560
589
|
s = BN_new();
|
561
590
|
if (s == NULL) {
|
562
591
|
goto err;
|
@@ -572,9 +601,9 @@ redo:
|
|
572
601
|
}
|
573
602
|
|
574
603
|
if (digest_len > BN_num_bytes(dsa->q)) {
|
575
|
-
//
|
576
|
-
// BN_num_bits(dsa->q) leftmost bits of the digest, see
|
577
|
-
//
|
604
|
+
// If the digest length is greater than the size of |dsa->q| use the
|
605
|
+
// BN_num_bits(dsa->q) leftmost bits of the digest, see FIPS 186-3, 4.2.
|
606
|
+
// Note the above check that |dsa->q| is a multiple of 8 bits.
|
578
607
|
digest_len = BN_num_bytes(dsa->q);
|
579
608
|
}
|
580
609
|
|
@@ -582,19 +611,23 @@ redo:
|
|
582
611
|
goto err;
|
583
612
|
}
|
584
613
|
|
585
|
-
//
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
if (!BN_sub(s, s, dsa->q)) {
|
594
|
-
goto err;
|
595
|
-
}
|
614
|
+
// |m| is bounded by 2^(num_bits(q)), which is slightly looser than q. This
|
615
|
+
// violates |bn_mod_add_consttime| and |mod_mul_consttime|'s preconditions.
|
616
|
+
// (The underlying algorithms could accept looser bounds, but we reduce for
|
617
|
+
// simplicity.)
|
618
|
+
size_t q_width = bn_minimal_width(dsa->q);
|
619
|
+
if (!bn_resize_words(&m, q_width) ||
|
620
|
+
!bn_resize_words(&xr, q_width)) {
|
621
|
+
goto err;
|
596
622
|
}
|
597
|
-
|
623
|
+
bn_reduce_once_in_place(m.d, 0 /* no carry word */, dsa->q->d,
|
624
|
+
xr.d /* scratch space */, q_width);
|
625
|
+
|
626
|
+
// Compute s = inv(k) (m + xr) mod q. Note |dsa->method_mont_q| is
|
627
|
+
// initialized by |dsa_sign_setup|.
|
628
|
+
if (!mod_mul_consttime(&xr, dsa->priv_key, r, dsa->method_mont_q, ctx) ||
|
629
|
+
!bn_mod_add_consttime(s, &xr, &m, dsa->q, ctx) ||
|
630
|
+
!mod_mul_consttime(s, s, kinv, dsa->method_mont_q, ctx)) {
|
598
631
|
goto err;
|
599
632
|
}
|
600
633
|
|
@@ -612,7 +645,7 @@ redo:
|
|
612
645
|
|
613
646
|
err:
|
614
647
|
if (ret == NULL) {
|
615
|
-
OPENSSL_PUT_ERROR(DSA,
|
648
|
+
OPENSSL_PUT_ERROR(DSA, ERR_R_BN_LIB);
|
616
649
|
BN_free(r);
|
617
650
|
BN_free(s);
|
618
651
|
}
|
@@ -648,7 +681,7 @@ int DSA_do_check_signature(int *out_valid, const uint8_t *digest,
|
|
648
681
|
}
|
649
682
|
|
650
683
|
i = BN_num_bits(dsa->q);
|
651
|
-
//
|
684
|
+
// FIPS 186-3 allows only different sizes for q.
|
652
685
|
if (i != 160 && i != 224 && i != 256) {
|
653
686
|
OPENSSL_PUT_ERROR(DSA, DSA_R_BAD_Q_VALUE);
|
654
687
|
return 0;
|
@@ -832,29 +865,18 @@ int DSA_size(const DSA *dsa) {
|
|
832
865
|
return ret;
|
833
866
|
}
|
834
867
|
|
835
|
-
static int dsa_sign_setup(const DSA *dsa, BN_CTX *
|
868
|
+
static int dsa_sign_setup(const DSA *dsa, BN_CTX *ctx, BIGNUM **out_kinv,
|
836
869
|
BIGNUM **out_r) {
|
837
|
-
BN_CTX *ctx;
|
838
|
-
BIGNUM k, *kinv = NULL, *r = NULL;
|
839
|
-
int ret = 0;
|
840
|
-
|
841
870
|
if (!dsa->p || !dsa->q || !dsa->g) {
|
842
871
|
OPENSSL_PUT_ERROR(DSA, DSA_R_MISSING_PARAMETERS);
|
843
872
|
return 0;
|
844
873
|
}
|
845
874
|
|
875
|
+
int ret = 0;
|
876
|
+
BIGNUM k;
|
846
877
|
BN_init(&k);
|
847
|
-
|
848
|
-
|
849
|
-
if (ctx == NULL) {
|
850
|
-
ctx = BN_CTX_new();
|
851
|
-
if (ctx == NULL) {
|
852
|
-
goto err;
|
853
|
-
}
|
854
|
-
}
|
855
|
-
|
856
|
-
r = BN_new();
|
857
|
-
kinv = BN_new();
|
878
|
+
BIGNUM *r = BN_new();
|
879
|
+
BIGNUM *kinv = BN_new();
|
858
880
|
if (r == NULL || kinv == NULL ||
|
859
881
|
// Get random k
|
860
882
|
!BN_rand_range_ex(&k, 1, dsa->q) ||
|
@@ -867,32 +889,34 @@ static int dsa_sign_setup(const DSA *dsa, BN_CTX *ctx_in, BIGNUM **out_kinv,
|
|
867
889
|
// Compute r = (g^k mod p) mod q
|
868
890
|
!BN_mod_exp_mont_consttime(r, dsa->g, &k, dsa->p, ctx,
|
869
891
|
dsa->method_mont_p) ||
|
892
|
+
// Note |BN_mod| below is not constant-time and may leak information about
|
893
|
+
// |r|. |dsa->p| may be significantly larger than |dsa->q|, so this is not
|
894
|
+
// easily performed in constant-time with Montgomery reduction.
|
895
|
+
//
|
896
|
+
// However, |r| at this point is g^k (mod p). It is almost the value of
|
897
|
+
// |r| revealed in the signature anyway (g^k (mod p) (mod q)), going from
|
898
|
+
// it to |k| would require computing a discrete log.
|
870
899
|
!BN_mod(r, r, dsa->q, ctx) ||
|
871
900
|
// Compute part of 's = inv(k) (m + xr) mod q' using Fermat's Little
|
872
901
|
// Theorem.
|
873
902
|
!bn_mod_inverse_prime(kinv, &k, dsa->q, ctx, dsa->method_mont_q)) {
|
903
|
+
OPENSSL_PUT_ERROR(DSA, ERR_R_BN_LIB);
|
874
904
|
goto err;
|
875
905
|
}
|
876
906
|
|
877
907
|
BN_clear_free(*out_kinv);
|
878
908
|
*out_kinv = kinv;
|
879
909
|
kinv = NULL;
|
910
|
+
|
880
911
|
BN_clear_free(*out_r);
|
881
912
|
*out_r = r;
|
913
|
+
r = NULL;
|
914
|
+
|
882
915
|
ret = 1;
|
883
916
|
|
884
917
|
err:
|
885
|
-
if (!ret) {
|
886
|
-
OPENSSL_PUT_ERROR(DSA, ERR_R_BN_LIB);
|
887
|
-
if (r != NULL) {
|
888
|
-
BN_clear_free(r);
|
889
|
-
}
|
890
|
-
}
|
891
|
-
|
892
|
-
if (ctx_in == NULL) {
|
893
|
-
BN_CTX_free(ctx);
|
894
|
-
}
|
895
918
|
BN_clear_free(&k);
|
919
|
+
BN_clear_free(r);
|
896
920
|
BN_clear_free(kinv);
|
897
921
|
return ret;
|
898
922
|
}
|