grpc 1.27.0 → 1.28.0.pre2
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 +707 -629
- data/include/grpc/impl/codegen/grpc_types.h +5 -0
- data/include/grpc/impl/codegen/port_platform.h +7 -0
- data/include/grpc/impl/codegen/sync.h +5 -3
- data/include/grpc/impl/codegen/sync_abseil.h +36 -0
- data/include/grpc/module.modulemap +3 -0
- data/include/grpc/support/sync_abseil.h +26 -0
- data/src/core/ext/filters/client_channel/client_channel.cc +47 -29
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +31 -47
- data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/http_proxy.cc +4 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +21 -28
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +18 -21
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +9 -13
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +46 -72
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +413 -422
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +43 -75
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +4 -2
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +228 -286
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +13 -14
- data/src/core/ext/filters/client_channel/resolving_lb_policy.h +5 -7
- data/src/core/ext/filters/client_channel/service_config.cc +91 -160
- data/src/core/ext/filters/client_channel/service_config.h +14 -21
- data/src/core/ext/filters/client_channel/xds/xds_api.cc +581 -251
- data/src/core/ext/filters/client_channel/xds/xds_api.h +189 -151
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +133 -350
- data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +18 -39
- data/src/core/ext/filters/client_channel/xds/xds_channel.h +3 -1
- data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +12 -9
- data/src/core/ext/filters/client_channel/xds/xds_client.cc +559 -242
- data/src/core/ext/filters/client_channel/xds/xds_client.h +54 -34
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +53 -128
- data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +105 -132
- data/src/core/ext/filters/message_size/message_size_filter.cc +32 -35
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +3 -6
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
- data/src/core/ext/transport/inproc/inproc_transport.cc +22 -42
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +30 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +54 -0
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +46 -21
- data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +116 -29
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +4 -362
- data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +14 -1337
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +390 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +1411 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +29 -8
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +60 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +5 -3
- data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +6 -2
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -5
- data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +154 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +19 -15
- data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +46 -32
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +26 -4
- data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +70 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +42 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +83 -25
- data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +43 -7
- data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +115 -0
- data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +7 -68
- data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +14 -201
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +91 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +240 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -71
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +3 -228
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +30 -0
- data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +104 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +383 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +144 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +527 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +42 -0
- data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +112 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +29 -0
- data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +62 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +199 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +17 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +33 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +793 -0
- data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +2936 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +58 -0
- data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +134 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +27 -0
- data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +53 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +227 -0
- data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +725 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +296 -0
- data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +1072 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +32 -0
- data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +65 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +108 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +52 -0
- data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +133 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +87 -0
- data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +258 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.c +11 -0
- data/src/core/ext/upb-generated/envoy/type/range.upb.h +27 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +28 -0
- data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +62 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +88 -0
- data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +249 -0
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +30 -27
- data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +64 -52
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +48 -0
- data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +104 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c +17 -0
- data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +30 -0
- data/src/core/ext/upb-generated/validate/validate.upb.c +38 -34
- data/src/core/ext/upb-generated/validate/validate.upb.h +129 -99
- data/src/core/lib/channel/channel_trace.cc +32 -41
- data/src/core/lib/channel/channel_trace.h +3 -3
- data/src/core/lib/channel/channelz.cc +158 -248
- data/src/core/lib/channel/channelz.h +12 -15
- data/src/core/lib/channel/channelz_registry.cc +47 -74
- data/src/core/lib/channel/channelz_registry.h +4 -4
- data/src/core/lib/gpr/sync_abseil.cc +114 -0
- data/src/core/lib/gpr/sync_posix.cc +8 -5
- data/src/core/lib/gpr/sync_windows.cc +4 -2
- data/src/core/lib/gprpp/host_port.cc +1 -1
- data/src/core/lib/gprpp/inlined_vector.h +1 -210
- data/src/core/lib/gprpp/memory.h +2 -6
- data/src/core/lib/gprpp/optional.h +0 -41
- data/src/core/lib/gprpp/string_view.h +5 -114
- data/src/core/lib/iomgr/buffer_list.cc +36 -35
- data/src/core/lib/iomgr/error.h +4 -4
- data/src/core/lib/iomgr/ev_epollex_linux.cc +12 -4
- data/src/core/lib/iomgr/load_file.cc +1 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +17 -17
- data/src/core/lib/iomgr/tcp_client_posix.h +6 -6
- data/src/core/lib/iomgr/tcp_posix.cc +2 -1
- data/src/core/lib/iomgr/work_serializer.cc +155 -0
- data/src/core/lib/iomgr/work_serializer.h +65 -0
- data/src/core/lib/json/json.h +209 -79
- data/src/core/lib/json/json_reader.cc +469 -455
- data/src/core/lib/json/json_writer.cc +173 -169
- data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +10 -8
- data/src/core/lib/security/credentials/jwt/json_token.cc +26 -56
- data/src/core/lib/security/credentials/jwt/json_token.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +8 -18
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +149 -159
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -34
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +2 -1
- data/src/core/lib/security/security_connector/local/local_security_connector.cc +5 -7
- data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +3 -15
- data/src/core/lib/security/security_connector/ssl_utils.cc +3 -1
- data/src/core/lib/security/security_connector/ssl_utils.h +0 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +24 -1
- data/src/core/lib/security/security_connector/tls/tls_security_connector.h +5 -1
- data/src/core/lib/security/transport/security_handshaker.cc +2 -2
- data/src/core/lib/security/util/json_util.cc +22 -15
- data/src/core/lib/security/util/json_util.h +2 -2
- data/src/core/lib/surface/version.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +1 -1
- data/src/core/tsi/grpc_shadow_boringssl.h +1333 -1319
- data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +1 -1
- data/src/core/tsi/ssl_transport_security.cc +2 -1
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/abseil-cpp/absl/base/attributes.h +1 -1
- data/third_party/abseil-cpp/absl/base/config.h +10 -4
- data/third_party/abseil-cpp/absl/base/internal/atomic_hook.h +30 -9
- data/third_party/abseil-cpp/absl/base/internal/errno_saver.h +43 -0
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +7 -5
- data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +2 -1
- data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +2 -2
- data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +2 -3
- data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +3 -3
- data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +37 -0
- data/third_party/abseil-cpp/absl/base/options.h +2 -10
- data/third_party/abseil-cpp/absl/strings/charconv.cc +0 -1
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +388 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +432 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +245 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +209 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +326 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +51 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +415 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +493 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +23 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.cc +72 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +104 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +334 -0
- data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +333 -0
- data/third_party/abseil-cpp/absl/strings/str_format.h +537 -0
- data/third_party/abseil-cpp/absl/strings/string_view.h +19 -11
- data/{src/boringssl → third_party/boringssl-with-bazel}/err_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bitstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_bool.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_d2i_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_dup.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_gentm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_i2d_fp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_mbstr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_object.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_octet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_strnid.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_time.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_type.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utctm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/a_utf8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_locl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn1_par.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/asn_pack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_enum.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/f_string.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_dec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_enc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_fre.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_new.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_typ.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/tasn_utl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/asn1/time_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/base64/base64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/bio_mem.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/connect.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/fd.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/file.c +5 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/hexdump.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/pair.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/printf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bio/socket_helper.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/bn_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bn_extra/convert.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/buf/buf.c +10 -69
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/asn1_compat.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/ber.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbb.c +41 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/cbs.c +60 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/bytestring/unicode.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/chacha.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/chacha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/cipher_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/derive_key.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesccm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesctrhmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_aesgcmsiv.c +8 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_chacha20poly1305.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_null.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/e_tls.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cipher_extra/tls_cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cmac/cmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/conf_def.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/conf/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-aarch64-linux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm-linux.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-arm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-intel.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/cpu-ppc64le.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/crypto.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/curve25519/spake25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/check.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/dh_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dh/params.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/digest_extra/digest_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/dsa/dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ec_extra/ec_derive.c +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdh_extra/ecdh_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ecdsa_extra/ecdsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/engine/engine.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/err.c +6 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/err/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/digestsign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/evp_ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_dsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ec_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_ed25519_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa.c +14 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/p_x25519_asn1.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/pbkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/scrypt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/evp/sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/ex_data.c +0 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes.c +108 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1282 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/internal.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/key_wrap.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/aes/mode_wrappers.c +0 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bcm.c +2 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/add.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/asm/x86_64-gcc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/bytes.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/cmp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/ctx.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/div_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/exponentiation.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/gcd_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/generic.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/jacobi.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/montgomery_inv.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/mul.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/prime.c +11 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/random.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/rsaz_exp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/shift.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/bn/sqrt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/aead.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/cipher.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_aes.c +3 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/e_des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/cipher/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/delocate.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/des.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/des/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/digests.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/digest/md32_common.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/ec_montgomery.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/felem.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/oct.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p224-64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64-table.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/p256-x86_64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/scalar.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/simple_mul.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/util.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ec/wnaf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdh/ecdh.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/ecdsa/ecdsa.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/fips_shared_support.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/hmac/hmac.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/is_fips.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md4/md4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/md5/md5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cbc.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/cfb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ctr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/gcm.c +45 -193
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +304 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/internal.h +8 -18
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/ofb.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/modes/polyval.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/ctrdrbg.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/rand.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rand/urandom.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/blinding.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/padding.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa.c +7 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/rsa/rsa_impl.c +60 -51
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/self_check/self_check.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1-altivec.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha256.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/sha/sha512.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/fipsmodule/tls/kdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hkdf/hkdf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/hrss.c +210 -311
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/hrss/internal.h +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/internal.h +21 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/lhash/lhash.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/mem.c +70 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj.c +16 -21
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_dat.h +27 -6
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/obj/obj_xref.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_all.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_info.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_lib.c +7 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_oth.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pk8.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_pkey.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pem/pem_xaux.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs7/pkcs7_x509.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/p5_pbev2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pkcs8/pkcs8_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_arm.c +21 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/poly1305/poly1305_vec.c +34 -17
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/pool/pool.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/deterministic.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/forkunsafe.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/fuchsia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/rand_extra.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rand_extra/windows.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rc4/rc4.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_c11.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/refcount_lock.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_asn1.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/rsa_extra/rsa_print.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/siphash/siphash.c +3 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/stack/stack.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_none.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_pthread.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/thread_win.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_digest.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_sign.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_strex.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/a_verify.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/algorithm.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/asn1_gen.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_dir.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/by_file.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/charmap.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/i2d_pr.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/rsa_pss.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/t_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/vpm_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_att.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_cmp.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_d2.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_def.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_ext.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_lu.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_obj.c +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_r2x.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_req.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_set.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_trs.c +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_txt.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_v3.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vfy.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509_vpm.c +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509cset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509rset.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x509spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_algor.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_all.c +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_attrib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_crl.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_exten.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_info.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_name.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_pubkey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_req.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_sig.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_spki.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_val.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509/x_x509a.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/ext_dat.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_cache.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_data.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_int.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_map.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_node.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/pcy_tree.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_akeya.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_alt.c +3 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_bitst.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_conf.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_cpols.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_crld.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_enum.c +2 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_extku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_genn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ia5.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_info.c +4 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_int.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_lib.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ncons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_ocsp.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pci.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcia.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pcons.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pku.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_pmaps.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_prn.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_purp.c +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_skey.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_sxnet.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/crypto/x509v3/v3_utl.c +11 -12
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aead.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/aes.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/arm_arch.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/asn1t.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/base64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bio.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/blowfish.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bn.h +32 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buf.h +9 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/buffer.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/bytestring.h +34 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cast.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/chacha.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cipher.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/conf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/cpu.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/crypto.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/curve25519.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/des.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dh.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/digest.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dsa.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/dtls1.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/e_os2.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec.h +11 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ec_key.h +4 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdh.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ecdsa.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/engine.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/err.h +11 -9
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/evp.h +20 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ex_data.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hkdf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hmac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/hrss.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/is_boringssl.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/lhash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/md5.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/mem.h +17 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/nid.h +9 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/obj_mac.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/objects.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslconf.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/opensslv.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ossl_typ.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pem.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs12.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs7.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pkcs8.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/poly1305.h +5 -7
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/pool.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rand.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rc4.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ripemd.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/rsa.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/safestack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/sha.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/siphash.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/span.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/srtp.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl.h +10 -20
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/ssl3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/stack.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/thread.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/tls1.h +0 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/type_check.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509_vfy.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/include/openssl/x509v3.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/bio_ssl.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_both.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_lib.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_pkt.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/d1_srtp.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_method.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/dtls_record.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handoff.cc +126 -29
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake.cc +5 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_client.cc +24 -13
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/handshake_server.cc +1 -5
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/internal.h +32 -26
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_both.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_lib.cc +2 -3
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/s3_pkt.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_aead_ctx.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_asn1.cc +1 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_buffer.cc +34 -15
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cert.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_cipher.cc +0 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_file.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_key_share.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_lib.cc +13 -14
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_privkey.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_session.cc +2 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_stat.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_transcript.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_versions.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/ssl_x509.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_enc.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/t1_lib.cc +11 -171
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_both.cc +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_client.cc +3 -4
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_enc.cc +5 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls13_server.cc +78 -101
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_method.cc +1 -1
- data/third_party/{boringssl → boringssl-with-bazel/src}/ssl/tls_record.cc +7 -2
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_32.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_64.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/curve25519_tables.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/internal.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256.c +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_32.h +0 -0
- data/third_party/{boringssl → boringssl-with-bazel/src}/third_party/fiat/p256_64.h +0 -0
- metadata +562 -491
- data/src/core/lib/iomgr/logical_thread.cc +0 -103
- data/src/core/lib/iomgr/logical_thread.h +0 -52
- data/src/core/lib/json/json.cc +0 -94
- data/third_party/boringssl/crypto/fipsmodule/aes/aes.c +0 -860
@@ -39,6 +39,8 @@ extern "C" {
|
|
39
39
|
#include <openssl/pem.h>
|
40
40
|
}
|
41
41
|
|
42
|
+
using grpc_core::Json;
|
43
|
+
|
42
44
|
/* --- Constants. --- */
|
43
45
|
|
44
46
|
/* 1 hour max. */
|
@@ -65,7 +67,7 @@ int grpc_auth_json_key_is_valid(const grpc_auth_json_key* json_key) {
|
|
65
67
|
strcmp(json_key->type, GRPC_AUTH_JSON_TYPE_INVALID);
|
66
68
|
}
|
67
69
|
|
68
|
-
grpc_auth_json_key grpc_auth_json_key_create_from_json(const
|
70
|
+
grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
|
69
71
|
grpc_auth_json_key result;
|
70
72
|
BIO* bio = nullptr;
|
71
73
|
const char* prop_value;
|
@@ -74,7 +76,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const grpc_json* json) {
|
|
74
76
|
|
75
77
|
memset(&result, 0, sizeof(grpc_auth_json_key));
|
76
78
|
result.type = GRPC_AUTH_JSON_TYPE_INVALID;
|
77
|
-
if (json ==
|
79
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
78
80
|
gpr_log(GPR_ERROR, "Invalid json.");
|
79
81
|
goto end;
|
80
82
|
}
|
@@ -122,12 +124,10 @@ end:
|
|
122
124
|
|
123
125
|
grpc_auth_json_key grpc_auth_json_key_create_from_string(
|
124
126
|
const char* json_string) {
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
gpr_free(scratchpad);
|
130
|
-
return result;
|
127
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
128
|
+
Json json = Json::Parse(json_string, &error);
|
129
|
+
GRPC_LOG_IF_ERROR("JSON key parsing", error);
|
130
|
+
return grpc_auth_json_key_create_from_json(std::move(json));
|
131
131
|
}
|
132
132
|
|
133
133
|
void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
|
@@ -153,72 +153,42 @@ void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key) {
|
|
153
153
|
|
154
154
|
/* --- jwt encoding and signature. --- */
|
155
155
|
|
156
|
-
static grpc_json* create_child(grpc_json* brother, grpc_json* parent,
|
157
|
-
const char* key, const char* value,
|
158
|
-
grpc_json_type type) {
|
159
|
-
grpc_json* child = grpc_json_create(type);
|
160
|
-
if (brother) brother->next = child;
|
161
|
-
if (!parent->child) parent->child = child;
|
162
|
-
child->parent = parent;
|
163
|
-
child->value = value;
|
164
|
-
child->key = key;
|
165
|
-
return child;
|
166
|
-
}
|
167
|
-
|
168
156
|
static char* encoded_jwt_header(const char* key_id, const char* algorithm) {
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
create_child(child, json, "kid", key_id, GRPC_JSON_STRING);
|
177
|
-
|
178
|
-
json_str = grpc_json_dump_to_string(json, 0);
|
179
|
-
result = grpc_base64_encode(json_str, strlen(json_str), 1, 0);
|
180
|
-
gpr_free(json_str);
|
181
|
-
grpc_json_destroy(json);
|
182
|
-
return result;
|
157
|
+
Json json = Json::Object{
|
158
|
+
{"alg", algorithm},
|
159
|
+
{"typ", GRPC_JWT_TYPE},
|
160
|
+
{"kid", key_id},
|
161
|
+
};
|
162
|
+
std::string json_str = json.Dump();
|
163
|
+
return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
|
183
164
|
}
|
184
165
|
|
185
166
|
static char* encoded_jwt_claim(const grpc_auth_json_key* json_key,
|
186
167
|
const char* audience,
|
187
168
|
gpr_timespec token_lifetime, const char* scope) {
|
188
|
-
grpc_json* json = grpc_json_create(GRPC_JSON_OBJECT);
|
189
|
-
grpc_json* child = nullptr;
|
190
|
-
char* json_str = nullptr;
|
191
|
-
char* result = nullptr;
|
192
169
|
gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
|
193
170
|
gpr_timespec expiration = gpr_time_add(now, token_lifetime);
|
194
|
-
char now_str[GPR_LTOA_MIN_BUFSIZE];
|
195
|
-
char expiration_str[GPR_LTOA_MIN_BUFSIZE];
|
196
171
|
if (gpr_time_cmp(token_lifetime, grpc_max_auth_token_lifetime()) > 0) {
|
197
172
|
gpr_log(GPR_INFO, "Cropping token lifetime to maximum allowed value.");
|
198
173
|
expiration = gpr_time_add(now, grpc_max_auth_token_lifetime());
|
199
174
|
}
|
200
|
-
int64_ttoa(now.tv_sec, now_str);
|
201
|
-
int64_ttoa(expiration.tv_sec, expiration_str);
|
202
175
|
|
203
|
-
|
204
|
-
|
176
|
+
Json::Object object = {
|
177
|
+
{"iss", json_key->client_email},
|
178
|
+
{"aud", audience},
|
179
|
+
{"iat", now.tv_sec},
|
180
|
+
{"exp", expiration.tv_sec},
|
181
|
+
};
|
205
182
|
if (scope != nullptr) {
|
206
|
-
|
183
|
+
object["scope"] = scope;
|
207
184
|
} else {
|
208
185
|
/* Unscoped JWTs need a sub field. */
|
209
|
-
|
210
|
-
GRPC_JSON_STRING);
|
186
|
+
object["sub"] = json_key->client_email;
|
211
187
|
}
|
212
188
|
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
json_str = grpc_json_dump_to_string(json, 0);
|
218
|
-
result = grpc_base64_encode(json_str, strlen(json_str), 1, 0);
|
219
|
-
gpr_free(json_str);
|
220
|
-
grpc_json_destroy(json);
|
221
|
-
return result;
|
189
|
+
Json json(object);
|
190
|
+
std::string json_str = json.Dump();
|
191
|
+
return grpc_base64_encode(json_str.c_str(), json_str.size(), 1, 0);
|
222
192
|
}
|
223
193
|
|
224
194
|
static char* dot_concat_and_free_strings(char* str1, char* str2) {
|
@@ -52,7 +52,8 @@ grpc_auth_json_key grpc_auth_json_key_create_from_string(
|
|
52
52
|
|
53
53
|
/* Creates a json_key object from parsed json. Returns an invalid object if a
|
54
54
|
parsing error has been encountered. */
|
55
|
-
grpc_auth_json_key grpc_auth_json_key_create_from_json(
|
55
|
+
grpc_auth_json_key grpc_auth_json_key_create_from_json(
|
56
|
+
const grpc_core::Json& json);
|
56
57
|
|
57
58
|
/* Destructs the object. */
|
58
59
|
void grpc_auth_json_key_destruct(grpc_auth_json_key* json_key);
|
@@ -32,6 +32,8 @@
|
|
32
32
|
#include <grpc/support/string_util.h>
|
33
33
|
#include <grpc/support/sync.h>
|
34
34
|
|
35
|
+
using grpc_core::Json;
|
36
|
+
|
35
37
|
void grpc_service_account_jwt_access_credentials::reset_cache() {
|
36
38
|
GRPC_MDELEM_UNREF(cached_.jwt_md);
|
37
39
|
cached_.jwt_md = GRPC_MDNULL;
|
@@ -136,26 +138,14 @@ grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
|
|
136
138
|
}
|
137
139
|
|
138
140
|
static char* redact_private_key(const char* json_key) {
|
139
|
-
|
140
|
-
|
141
|
-
if (
|
142
|
-
|
141
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
142
|
+
Json json = Json::Parse(json_key, &error);
|
143
|
+
if (error != GRPC_ERROR_NONE || json.type() != Json::Type::OBJECT) {
|
144
|
+
GRPC_ERROR_UNREF(error);
|
143
145
|
return gpr_strdup("<Json failed to parse.>");
|
144
146
|
}
|
145
|
-
|
146
|
-
|
147
|
-
while (current) {
|
148
|
-
if (current->type == GRPC_JSON_STRING &&
|
149
|
-
strcmp(current->key, "private_key") == 0) {
|
150
|
-
current->value = const_cast<char*>(redacted);
|
151
|
-
break;
|
152
|
-
}
|
153
|
-
current = current->next;
|
154
|
-
}
|
155
|
-
char* clean_json = grpc_json_dump_to_string(json, 2);
|
156
|
-
gpr_free(json_copy);
|
157
|
-
grpc_json_destroy(json);
|
158
|
-
return clean_json;
|
147
|
+
(*json.mutable_object())["private_key"] = "<redacted>";
|
148
|
+
return gpr_strdup(json.Dump(/*indent=*/2).c_str());
|
159
149
|
}
|
160
150
|
|
161
151
|
grpc_call_credentials* grpc_service_account_jwt_access_credentials_create(
|
@@ -37,12 +37,15 @@ extern "C" {
|
|
37
37
|
}
|
38
38
|
|
39
39
|
#include "src/core/lib/gpr/string.h"
|
40
|
+
#include "src/core/lib/gprpp/manual_constructor.h"
|
40
41
|
#include "src/core/lib/http/httpcli.h"
|
41
42
|
#include "src/core/lib/iomgr/polling_entity.h"
|
42
43
|
#include "src/core/lib/slice/b64.h"
|
43
44
|
#include "src/core/lib/slice/slice_internal.h"
|
44
45
|
#include "src/core/tsi/ssl_types.h"
|
45
46
|
|
47
|
+
using grpc_core::Json;
|
48
|
+
|
46
49
|
/* --- Utils. --- */
|
47
50
|
|
48
51
|
const char* grpc_jwt_verifier_status_to_string(
|
@@ -79,42 +82,41 @@ static const EVP_MD* evp_md_from_alg(const char* alg) {
|
|
79
82
|
}
|
80
83
|
}
|
81
84
|
|
82
|
-
static
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
*buffer = grpc_base64_decode_with_len(str, len, 1);
|
87
|
-
if (GRPC_SLICE_IS_EMPTY(*buffer)) {
|
85
|
+
static Json parse_json_part_from_jwt(const char* str, size_t len) {
|
86
|
+
grpc_slice slice = grpc_base64_decode_with_len(str, len, 1);
|
87
|
+
if (GRPC_SLICE_IS_EMPTY(slice)) {
|
88
88
|
gpr_log(GPR_ERROR, "Invalid base64.");
|
89
|
-
return
|
90
|
-
}
|
91
|
-
|
92
|
-
reinterpret_cast<char*>
|
93
|
-
GRPC_SLICE_LENGTH(
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
89
|
+
return Json(); // JSON null
|
90
|
+
}
|
91
|
+
grpc_core::StringView string(
|
92
|
+
reinterpret_cast<char*>(GRPC_SLICE_START_PTR(slice)),
|
93
|
+
GRPC_SLICE_LENGTH(slice));
|
94
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
95
|
+
Json json = Json::Parse(string, &error);
|
96
|
+
if (error != GRPC_ERROR_NONE) {
|
97
|
+
gpr_log(GPR_ERROR, "JSON parse error: %s", grpc_error_string(error));
|
98
|
+
GRPC_ERROR_UNREF(error);
|
99
|
+
json = Json(); // JSON null
|
100
|
+
}
|
101
|
+
grpc_slice_unref_internal(slice);
|
98
102
|
return json;
|
99
103
|
}
|
100
104
|
|
101
|
-
static const char* validate_string_field(const
|
102
|
-
|
103
|
-
|
104
|
-
gpr_log(GPR_ERROR, "Invalid %s field [%s]", key, json->value);
|
105
|
+
static const char* validate_string_field(const Json& json, const char* key) {
|
106
|
+
if (json.type() != Json::Type::STRING) {
|
107
|
+
gpr_log(GPR_ERROR, "Invalid %s field", key);
|
105
108
|
return nullptr;
|
106
109
|
}
|
107
|
-
return json
|
110
|
+
return json.string_value().c_str();
|
108
111
|
}
|
109
112
|
|
110
|
-
static gpr_timespec validate_time_field(const
|
111
|
-
const char* key) {
|
113
|
+
static gpr_timespec validate_time_field(const Json& json, const char* key) {
|
112
114
|
gpr_timespec result = gpr_time_0(GPR_CLOCK_REALTIME);
|
113
|
-
if (json
|
114
|
-
gpr_log(GPR_ERROR, "Invalid %s field
|
115
|
+
if (json.type() != Json::Type::NUMBER) {
|
116
|
+
gpr_log(GPR_ERROR, "Invalid %s field", key);
|
115
117
|
return result;
|
116
118
|
}
|
117
|
-
result.tv_sec = strtol(json
|
119
|
+
result.tv_sec = strtol(json.string_value().c_str(), nullptr, 10);
|
118
120
|
return result;
|
119
121
|
}
|
120
122
|
|
@@ -125,50 +127,55 @@ typedef struct {
|
|
125
127
|
const char* kid;
|
126
128
|
const char* typ;
|
127
129
|
/* TODO(jboeuf): Add others as needed (jku, jwk, x5u, x5c and so on...). */
|
128
|
-
|
130
|
+
grpc_core::ManualConstructor<Json> json;
|
129
131
|
} jose_header;
|
130
132
|
|
131
133
|
static void jose_header_destroy(jose_header* h) {
|
132
|
-
|
134
|
+
h->json.Destroy();
|
133
135
|
gpr_free(h);
|
134
136
|
}
|
135
137
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
grpc_json* cur;
|
138
|
+
static jose_header* jose_header_from_json(Json json) {
|
139
|
+
const char* alg_value;
|
140
|
+
Json::Object::const_iterator it;
|
140
141
|
jose_header* h = static_cast<jose_header*>(gpr_zalloc(sizeof(jose_header)));
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
/* We only support RSA-1.5 signatures for now.
|
145
|
-
Beware of this if we add HMAC support:
|
146
|
-
https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
|
147
|
-
*/
|
148
|
-
if (cur->type != GRPC_JSON_STRING || strncmp(cur->value, "RS", 2) ||
|
149
|
-
evp_md_from_alg(cur->value) == nullptr) {
|
150
|
-
gpr_log(GPR_ERROR, "Invalid alg field [%s]", cur->value);
|
151
|
-
goto error;
|
152
|
-
}
|
153
|
-
h->alg = cur->value;
|
154
|
-
} else if (strcmp(cur->key, "typ") == 0) {
|
155
|
-
h->typ = validate_string_field(cur, "typ");
|
156
|
-
if (h->typ == nullptr) goto error;
|
157
|
-
} else if (strcmp(cur->key, "kid") == 0) {
|
158
|
-
h->kid = validate_string_field(cur, "kid");
|
159
|
-
if (h->kid == nullptr) goto error;
|
160
|
-
}
|
142
|
+
if (json.type() != Json::Type::OBJECT) {
|
143
|
+
gpr_log(GPR_ERROR, "JSON value is not an object");
|
144
|
+
goto error;
|
161
145
|
}
|
162
|
-
|
146
|
+
// Check alg field.
|
147
|
+
it = json.object_value().find("alg");
|
148
|
+
if (it == json.object_value().end()) {
|
163
149
|
gpr_log(GPR_ERROR, "Missing alg field.");
|
164
150
|
goto error;
|
165
151
|
}
|
166
|
-
|
167
|
-
|
152
|
+
/* We only support RSA-1.5 signatures for now.
|
153
|
+
Beware of this if we add HMAC support:
|
154
|
+
https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/
|
155
|
+
*/
|
156
|
+
alg_value = it->second.string_value().c_str();
|
157
|
+
if (it->second.type() != Json::Type::STRING || strncmp(alg_value, "RS", 2) ||
|
158
|
+
evp_md_from_alg(alg_value) == nullptr) {
|
159
|
+
gpr_log(GPR_ERROR, "Invalid alg field");
|
160
|
+
goto error;
|
161
|
+
}
|
162
|
+
h->alg = alg_value;
|
163
|
+
// Check typ field.
|
164
|
+
it = json.object_value().find("typ");
|
165
|
+
if (it != json.object_value().end()) {
|
166
|
+
h->typ = validate_string_field(it->second, "typ");
|
167
|
+
if (h->typ == nullptr) goto error;
|
168
|
+
}
|
169
|
+
// Check kid field.
|
170
|
+
it = json.object_value().find("kid");
|
171
|
+
if (it != json.object_value().end()) {
|
172
|
+
h->kid = validate_string_field(it->second, "kid");
|
173
|
+
if (h->kid == nullptr) goto error;
|
174
|
+
}
|
175
|
+
h->json.Init(std::move(json));
|
168
176
|
return h;
|
169
177
|
|
170
178
|
error:
|
171
|
-
grpc_json_destroy(json);
|
172
179
|
jose_header_destroy(h);
|
173
180
|
return nullptr;
|
174
181
|
}
|
@@ -185,19 +192,17 @@ struct grpc_jwt_claims {
|
|
185
192
|
gpr_timespec exp;
|
186
193
|
gpr_timespec nbf;
|
187
194
|
|
188
|
-
|
189
|
-
grpc_slice buffer;
|
195
|
+
grpc_core::ManualConstructor<Json> json;
|
190
196
|
};
|
191
197
|
|
192
198
|
void grpc_jwt_claims_destroy(grpc_jwt_claims* claims) {
|
193
|
-
|
194
|
-
grpc_slice_unref_internal(claims->buffer);
|
199
|
+
claims->json.Destroy();
|
195
200
|
gpr_free(claims);
|
196
201
|
}
|
197
202
|
|
198
|
-
const
|
203
|
+
const Json* grpc_jwt_claims_json(const grpc_jwt_claims* claims) {
|
199
204
|
if (claims == nullptr) return nullptr;
|
200
|
-
return claims->json;
|
205
|
+
return claims->json.get();
|
201
206
|
}
|
202
207
|
|
203
208
|
const char* grpc_jwt_claims_subject(const grpc_jwt_claims* claims) {
|
@@ -235,45 +240,43 @@ gpr_timespec grpc_jwt_claims_not_before(const grpc_jwt_claims* claims) {
|
|
235
240
|
return claims->nbf;
|
236
241
|
}
|
237
242
|
|
238
|
-
|
239
|
-
grpc_jwt_claims* grpc_jwt_claims_from_json(grpc_json* json,
|
240
|
-
const grpc_slice& buffer) {
|
241
|
-
grpc_json* cur;
|
243
|
+
grpc_jwt_claims* grpc_jwt_claims_from_json(Json json) {
|
242
244
|
grpc_jwt_claims* claims =
|
243
|
-
static_cast<grpc_jwt_claims*>(
|
244
|
-
|
245
|
-
claims->json = json;
|
246
|
-
claims->buffer = buffer;
|
245
|
+
static_cast<grpc_jwt_claims*>(gpr_zalloc(sizeof(grpc_jwt_claims)));
|
246
|
+
claims->json.Init(std::move(json));
|
247
247
|
claims->iat = gpr_inf_past(GPR_CLOCK_REALTIME);
|
248
248
|
claims->nbf = gpr_inf_past(GPR_CLOCK_REALTIME);
|
249
249
|
claims->exp = gpr_inf_future(GPR_CLOCK_REALTIME);
|
250
250
|
|
251
251
|
/* Per the spec, all fields are optional. */
|
252
|
-
for (
|
253
|
-
if (
|
254
|
-
claims->sub = validate_string_field(
|
252
|
+
for (const auto& p : claims->json->object_value()) {
|
253
|
+
if (p.first == "sub") {
|
254
|
+
claims->sub = validate_string_field(p.second, "sub");
|
255
255
|
if (claims->sub == nullptr) goto error;
|
256
|
-
} else if (
|
257
|
-
claims->iss = validate_string_field(
|
256
|
+
} else if (p.first == "iss") {
|
257
|
+
claims->iss = validate_string_field(p.second, "iss");
|
258
258
|
if (claims->iss == nullptr) goto error;
|
259
|
-
} else if (
|
260
|
-
claims->aud = validate_string_field(
|
259
|
+
} else if (p.first == "aud") {
|
260
|
+
claims->aud = validate_string_field(p.second, "aud");
|
261
261
|
if (claims->aud == nullptr) goto error;
|
262
|
-
} else if (
|
263
|
-
claims->jti = validate_string_field(
|
262
|
+
} else if (p.first == "jti") {
|
263
|
+
claims->jti = validate_string_field(p.second, "jti");
|
264
264
|
if (claims->jti == nullptr) goto error;
|
265
|
-
} else if (
|
266
|
-
claims->iat = validate_time_field(
|
267
|
-
if (gpr_time_cmp(claims->iat, gpr_time_0(GPR_CLOCK_REALTIME)) == 0)
|
265
|
+
} else if (p.first == "iat") {
|
266
|
+
claims->iat = validate_time_field(p.second, "iat");
|
267
|
+
if (gpr_time_cmp(claims->iat, gpr_time_0(GPR_CLOCK_REALTIME)) == 0) {
|
268
268
|
goto error;
|
269
|
-
|
270
|
-
|
271
|
-
|
269
|
+
}
|
270
|
+
} else if (p.first == "exp") {
|
271
|
+
claims->exp = validate_time_field(p.second, "exp");
|
272
|
+
if (gpr_time_cmp(claims->exp, gpr_time_0(GPR_CLOCK_REALTIME)) == 0) {
|
272
273
|
goto error;
|
273
|
-
|
274
|
-
|
275
|
-
|
274
|
+
}
|
275
|
+
} else if (p.first == "nbf") {
|
276
|
+
claims->nbf = validate_time_field(p.second, "nbf");
|
277
|
+
if (gpr_time_cmp(claims->nbf, gpr_time_0(GPR_CLOCK_REALTIME)) == 0) {
|
276
278
|
goto error;
|
279
|
+
}
|
277
280
|
}
|
278
281
|
}
|
279
282
|
return claims;
|
@@ -405,33 +408,32 @@ struct grpc_jwt_verifier {
|
|
405
408
|
grpc_httpcli_context http_ctx;
|
406
409
|
};
|
407
410
|
|
408
|
-
static
|
409
|
-
grpc_json* json = nullptr;
|
410
|
-
|
411
|
+
static Json json_from_http(const grpc_httpcli_response* response) {
|
411
412
|
if (response == nullptr) {
|
412
413
|
gpr_log(GPR_ERROR, "HTTP response is NULL.");
|
413
|
-
return
|
414
|
+
return Json(); // JSON null
|
414
415
|
}
|
415
416
|
if (response->status != 200) {
|
416
417
|
gpr_log(GPR_ERROR, "Call to http server failed with error %d.",
|
417
418
|
response->status);
|
418
|
-
return
|
419
|
+
return Json(); // JSON null
|
419
420
|
}
|
420
|
-
|
421
|
-
json =
|
422
|
-
|
421
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
422
|
+
Json json = Json::Parse(
|
423
|
+
grpc_core::StringView(response->body, response->body_length), &error);
|
424
|
+
if (error != GRPC_ERROR_NONE) {
|
423
425
|
gpr_log(GPR_ERROR, "Invalid JSON found in response.");
|
426
|
+
return Json(); // JSON null
|
424
427
|
}
|
425
428
|
return json;
|
426
429
|
}
|
427
430
|
|
428
|
-
static const
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
if (strcmp(cur->key, name) == 0) return cur;
|
431
|
+
static const Json* find_property_by_name(const Json& json, const char* name) {
|
432
|
+
auto it = json.object_value().find(name);
|
433
|
+
if (it == json.object_value().end()) {
|
434
|
+
return nullptr;
|
433
435
|
}
|
434
|
-
return
|
436
|
+
return &it->second;
|
435
437
|
}
|
436
438
|
|
437
439
|
static EVP_PKEY* extract_pkey_from_x509(const char* x509_str) {
|
@@ -502,14 +504,15 @@ static int RSA_set0_key(RSA* r, BIGNUM* n, BIGNUM* e, BIGNUM* d) {
|
|
502
504
|
}
|
503
505
|
#endif // OPENSSL_VERSION_NUMBER < 0x10100000L
|
504
506
|
|
505
|
-
static EVP_PKEY* pkey_from_jwk(const
|
506
|
-
const grpc_json* key_prop;
|
507
|
+
static EVP_PKEY* pkey_from_jwk(const Json& json, const char* kty) {
|
507
508
|
RSA* rsa = nullptr;
|
508
509
|
EVP_PKEY* result = nullptr;
|
509
510
|
BIGNUM* tmp_n = nullptr;
|
510
511
|
BIGNUM* tmp_e = nullptr;
|
512
|
+
Json::Object::const_iterator it;
|
511
513
|
|
512
|
-
GPR_ASSERT(
|
514
|
+
GPR_ASSERT(json.type() == Json::Type::OBJECT);
|
515
|
+
GPR_ASSERT(kty != nullptr);
|
513
516
|
if (strcmp(kty, "RSA") != 0) {
|
514
517
|
gpr_log(GPR_ERROR, "Unsupported key type %s.", kty);
|
515
518
|
goto end;
|
@@ -519,19 +522,20 @@ static EVP_PKEY* pkey_from_jwk(const grpc_json* json, const char* kty) {
|
|
519
522
|
gpr_log(GPR_ERROR, "Could not create rsa key.");
|
520
523
|
goto end;
|
521
524
|
}
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
} else if (strcmp(key_prop->key, "e") == 0) {
|
527
|
-
tmp_e = bignum_from_base64(validate_string_field(key_prop, "e"));
|
528
|
-
if (tmp_e == nullptr) goto end;
|
529
|
-
}
|
525
|
+
it = json.object_value().find("n");
|
526
|
+
if (it == json.object_value().end()) {
|
527
|
+
gpr_log(GPR_ERROR, "Missing RSA public key field.");
|
528
|
+
goto end;
|
530
529
|
}
|
531
|
-
|
530
|
+
tmp_n = bignum_from_base64(validate_string_field(it->second, "n"));
|
531
|
+
if (tmp_n == nullptr) goto end;
|
532
|
+
it = json.object_value().find("e");
|
533
|
+
if (it == json.object_value().end()) {
|
532
534
|
gpr_log(GPR_ERROR, "Missing RSA public key field.");
|
533
535
|
goto end;
|
534
536
|
}
|
537
|
+
tmp_e = bignum_from_base64(validate_string_field(it->second, "e"));
|
538
|
+
if (tmp_e == nullptr) goto end;
|
535
539
|
if (!RSA_set0_key(rsa, tmp_n, tmp_e, nullptr)) {
|
536
540
|
gpr_log(GPR_ERROR, "Cannot set RSA key from inputs.");
|
537
541
|
goto end;
|
@@ -549,48 +553,41 @@ end:
|
|
549
553
|
return result;
|
550
554
|
}
|
551
555
|
|
552
|
-
static EVP_PKEY* find_verification_key(const
|
553
|
-
const char* header_alg,
|
556
|
+
static EVP_PKEY* find_verification_key(const Json& json, const char* header_alg,
|
554
557
|
const char* header_kid) {
|
555
|
-
const grpc_json* jkey;
|
556
|
-
const grpc_json* jwk_keys;
|
557
558
|
/* Try to parse the json as a JWK set:
|
558
559
|
https://tools.ietf.org/html/rfc7517#section-5. */
|
559
|
-
|
560
|
-
if (
|
560
|
+
const Json* jwt_keys = find_property_by_name(json, "keys");
|
561
|
+
if (jwt_keys == nullptr) {
|
561
562
|
/* Use the google proprietary format which is:
|
562
563
|
{ <kid1>: <x5091>, <kid2>: <x5092>, ... } */
|
563
|
-
const
|
564
|
+
const Json* cur = find_property_by_name(json, header_kid);
|
564
565
|
if (cur == nullptr) return nullptr;
|
565
|
-
return extract_pkey_from_x509(cur->
|
566
|
+
return extract_pkey_from_x509(cur->string_value().c_str());
|
566
567
|
}
|
567
|
-
|
568
|
-
if (jwk_keys->type != GRPC_JSON_ARRAY) {
|
568
|
+
if (jwt_keys->type() != Json::Type::ARRAY) {
|
569
569
|
gpr_log(GPR_ERROR,
|
570
570
|
"Unexpected value type of keys property in jwks key set.");
|
571
571
|
return nullptr;
|
572
572
|
}
|
573
573
|
/* Key format is specified in:
|
574
574
|
https://tools.ietf.org/html/rfc7518#section-6. */
|
575
|
-
for (
|
576
|
-
|
575
|
+
for (const Json& jkey : jwt_keys->array_value()) {
|
576
|
+
if (jkey.type() != Json::Type::OBJECT) continue;
|
577
577
|
const char* alg = nullptr;
|
578
|
+
auto it = jkey.object_value().find("alg");
|
579
|
+
if (it != jkey.object_value().end()) {
|
580
|
+
alg = validate_string_field(it->second, "alg");
|
581
|
+
}
|
578
582
|
const char* kid = nullptr;
|
583
|
+
it = jkey.object_value().find("kid");
|
584
|
+
if (it != jkey.object_value().end()) {
|
585
|
+
kid = validate_string_field(it->second, "kid");
|
586
|
+
}
|
579
587
|
const char* kty = nullptr;
|
580
|
-
|
581
|
-
if (
|
582
|
-
|
583
|
-
key_prop = key_prop->next) {
|
584
|
-
if (strcmp(key_prop->key, "alg") == 0 &&
|
585
|
-
key_prop->type == GRPC_JSON_STRING) {
|
586
|
-
alg = key_prop->value;
|
587
|
-
} else if (strcmp(key_prop->key, "kid") == 0 &&
|
588
|
-
key_prop->type == GRPC_JSON_STRING) {
|
589
|
-
kid = key_prop->value;
|
590
|
-
} else if (strcmp(key_prop->key, "kty") == 0 &&
|
591
|
-
key_prop->type == GRPC_JSON_STRING) {
|
592
|
-
kty = key_prop->value;
|
593
|
-
}
|
588
|
+
it = jkey.object_value().find("kty");
|
589
|
+
if (it != jkey.object_value().end()) {
|
590
|
+
kty = validate_string_field(it->second, "kty");
|
594
591
|
}
|
595
592
|
if (alg != nullptr && kid != nullptr && kty != nullptr &&
|
596
593
|
strcmp(kid, header_kid) == 0 && strcmp(alg, header_alg) == 0) {
|
@@ -638,12 +635,12 @@ end:
|
|
638
635
|
|
639
636
|
static void on_keys_retrieved(void* user_data, grpc_error* /*error*/) {
|
640
637
|
verifier_cb_ctx* ctx = static_cast<verifier_cb_ctx*>(user_data);
|
641
|
-
|
638
|
+
Json json = json_from_http(&ctx->responses[HTTP_RESPONSE_KEYS]);
|
642
639
|
EVP_PKEY* verification_key = nullptr;
|
643
640
|
grpc_jwt_verifier_status status = GRPC_JWT_VERIFIER_GENERIC_ERROR;
|
644
641
|
grpc_jwt_claims* claims = nullptr;
|
645
642
|
|
646
|
-
if (json ==
|
643
|
+
if (json.type() == Json::Type::JSON_NULL) {
|
647
644
|
status = GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR;
|
648
645
|
goto end;
|
649
646
|
}
|
@@ -670,29 +667,28 @@ static void on_keys_retrieved(void* user_data, grpc_error* /*error*/) {
|
|
670
667
|
}
|
671
668
|
|
672
669
|
end:
|
673
|
-
grpc_json_destroy(json);
|
674
670
|
EVP_PKEY_free(verification_key);
|
675
671
|
ctx->user_cb(ctx->user_data, status, claims);
|
676
672
|
verifier_cb_ctx_destroy(ctx);
|
677
673
|
}
|
678
674
|
|
679
675
|
static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) {
|
680
|
-
const grpc_json* cur;
|
681
676
|
verifier_cb_ctx* ctx = static_cast<verifier_cb_ctx*>(user_data);
|
682
677
|
const grpc_http_response* response = &ctx->responses[HTTP_RESPONSE_OPENID];
|
683
|
-
|
678
|
+
Json json = json_from_http(response);
|
684
679
|
grpc_httpcli_request req;
|
685
680
|
const char* jwks_uri;
|
686
681
|
grpc_resource_quota* resource_quota = nullptr;
|
682
|
+
const Json* cur;
|
687
683
|
|
688
684
|
/* TODO(jboeuf): Cache the jwks_uri in order to avoid this hop next time. */
|
689
|
-
if (json ==
|
685
|
+
if (json.type() == Json::Type::JSON_NULL) goto error;
|
690
686
|
cur = find_property_by_name(json, "jwks_uri");
|
691
687
|
if (cur == nullptr) {
|
692
688
|
gpr_log(GPR_ERROR, "Could not find jwks_uri in openid config.");
|
693
689
|
goto error;
|
694
690
|
}
|
695
|
-
jwks_uri = validate_string_field(cur, "jwks_uri");
|
691
|
+
jwks_uri = validate_string_field(*cur, "jwks_uri");
|
696
692
|
if (jwks_uri == nullptr) goto error;
|
697
693
|
if (strstr(jwks_uri, "https://") != jwks_uri) {
|
698
694
|
gpr_log(GPR_ERROR, "Invalid non https jwks_uri: %s.", jwks_uri);
|
@@ -718,12 +714,10 @@ static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) {
|
|
718
714
|
GRPC_CLOSURE_CREATE(on_keys_retrieved, ctx, grpc_schedule_on_exec_ctx),
|
719
715
|
&ctx->responses[HTTP_RESPONSE_KEYS]);
|
720
716
|
grpc_resource_quota_unref_internal(resource_quota);
|
721
|
-
grpc_json_destroy(json);
|
722
717
|
gpr_free(req.host);
|
723
718
|
return;
|
724
719
|
|
725
720
|
error:
|
726
|
-
grpc_json_destroy(json);
|
727
721
|
ctx->user_cb(ctx->user_data, GRPC_JWT_VERIFIER_KEY_RETRIEVAL_ERROR, nullptr);
|
728
722
|
verifier_cb_ctx_destroy(ctx);
|
729
723
|
}
|
@@ -860,32 +854,28 @@ void grpc_jwt_verifier_verify(grpc_jwt_verifier* verifier,
|
|
860
854
|
grpc_jwt_verification_done_cb cb,
|
861
855
|
void* user_data) {
|
862
856
|
const char* dot = nullptr;
|
863
|
-
grpc_json* json;
|
864
857
|
jose_header* header = nullptr;
|
865
858
|
grpc_jwt_claims* claims = nullptr;
|
866
|
-
grpc_slice header_buffer;
|
867
|
-
grpc_slice claims_buffer;
|
868
859
|
grpc_slice signature;
|
869
860
|
size_t signed_jwt_len;
|
870
861
|
const char* cur = jwt;
|
862
|
+
Json json;
|
871
863
|
|
872
864
|
GPR_ASSERT(verifier != nullptr && jwt != nullptr && audience != nullptr &&
|
873
865
|
cb != nullptr);
|
874
866
|
dot = strchr(cur, '.');
|
875
867
|
if (dot == nullptr) goto error;
|
876
|
-
json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur)
|
877
|
-
|
878
|
-
|
879
|
-
header = jose_header_from_json(json, header_buffer);
|
868
|
+
json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur));
|
869
|
+
if (json.type() == Json::Type::JSON_NULL) goto error;
|
870
|
+
header = jose_header_from_json(std::move(json));
|
880
871
|
if (header == nullptr) goto error;
|
881
872
|
|
882
873
|
cur = dot + 1;
|
883
874
|
dot = strchr(cur, '.');
|
884
875
|
if (dot == nullptr) goto error;
|
885
|
-
json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur)
|
886
|
-
|
887
|
-
|
888
|
-
claims = grpc_jwt_claims_from_json(json, claims_buffer);
|
876
|
+
json = parse_json_part_from_jwt(cur, static_cast<size_t>(dot - cur));
|
877
|
+
if (json.type() == Json::Type::JSON_NULL) goto error;
|
878
|
+
claims = grpc_jwt_claims_from_json(std::move(json));
|
889
879
|
if (claims == nullptr) goto error;
|
890
880
|
|
891
881
|
signed_jwt_len = static_cast<size_t>(dot - jwt);
|