grpc 1.55.3 → 1.56.0.pre3
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 +100 -70
- data/include/grpc/event_engine/event_engine.h +4 -3
- data/include/grpc/grpc_audit_logging.h +96 -0
- data/include/grpc/module.modulemap +2 -0
- data/include/grpc/support/json.h +218 -0
- data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +5 -0
- data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +4 -4
- data/src/core/ext/filters/client_channel/client_channel.cc +82 -98
- data/src/core/ext/filters/client_channel/client_channel.h +4 -0
- data/src/core/ext/filters/client_channel/client_channel_channelz.cc +19 -18
- data/src/core/ext/filters/client_channel/client_channel_internal.h +16 -21
- data/src/core/ext/filters/client_channel/config_selector.h +9 -24
- data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +3 -0
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +5 -4
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +455 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +54 -0
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +186 -0
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +2 -7
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +52 -20
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +23 -2
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -6
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +16 -7
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +18 -1
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +12 -9
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +6 -4
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +36 -13
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc +76 -6
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +32 -39
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +4 -10
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +52 -47
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +1 -9
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +14 -16
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -43
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +7 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -19
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +35 -33
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +29 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/service_config_helper.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +28 -27
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +163 -46
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +16 -1
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +10 -40
- data/src/core/ext/filters/client_channel/subchannel.cc +10 -196
- data/src/core/ext/filters/client_channel/subchannel.h +3 -43
- data/src/core/ext/filters/http/message_compress/compression_filter.cc +5 -5
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +100 -6
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -8
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -3
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +16 -1
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +46 -95
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +543 -567
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +9 -150
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +32 -46
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +5 -18
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -15
- data/src/core/ext/transport/chttp2/transport/parsing.cc +12 -12
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +11 -2
- data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +15 -0
- data/src/core/ext/xds/certificate_provider_store.cc +4 -9
- data/src/core/ext/xds/certificate_provider_store.h +1 -1
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +30 -42
- data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +14 -9
- data/src/core/ext/xds/xds_api.cc +9 -6
- data/src/core/ext/xds/xds_api.h +3 -2
- data/src/core/ext/xds/xds_audit_logger_registry.cc +122 -0
- data/src/core/ext/xds/xds_audit_logger_registry.h +68 -0
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +21 -9
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -0
- data/src/core/ext/xds/xds_client.cc +5 -4
- data/src/core/ext/xds/xds_client_stats.h +1 -1
- data/src/core/ext/xds/xds_cluster.cc +20 -19
- data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +11 -8
- data/src/core/ext/xds/xds_common_types.cc +3 -1
- data/src/core/ext/xds/xds_http_fault_filter.cc +16 -13
- data/src/core/ext/xds/xds_http_fault_filter.h +2 -1
- data/src/core/ext/xds/xds_http_filters.h +4 -2
- data/src/core/ext/xds/xds_http_rbac_filter.cc +154 -67
- data/src/core/ext/xds/xds_http_rbac_filter.h +2 -1
- data/src/core/ext/xds/xds_http_stateful_session_filter.cc +15 -11
- data/src/core/ext/xds/xds_http_stateful_session_filter.h +2 -1
- data/src/core/ext/xds/xds_lb_policy_registry.cc +22 -16
- data/src/core/ext/xds/xds_listener.cc +1 -0
- data/src/core/ext/xds/xds_route_config.cc +40 -3
- data/src/core/ext/xds/xds_routing.cc +2 -2
- data/src/core/ext/xds/xds_transport_grpc.cc +3 -1
- data/src/core/lib/avl/avl.h +5 -0
- data/src/core/lib/backoff/random_early_detection.h +0 -5
- data/src/core/lib/channel/channel_args.cc +80 -22
- data/src/core/lib/channel/channel_args.h +34 -1
- data/src/core/lib/channel/channel_trace.cc +16 -12
- data/src/core/lib/channel/channelz.cc +159 -132
- data/src/core/lib/channel/channelz.h +42 -35
- data/src/core/lib/channel/channelz_registry.cc +23 -20
- data/src/core/lib/channel/connected_channel.cc +17 -6
- data/src/core/lib/channel/promise_based_filter.cc +0 -4
- data/src/core/lib/channel/promise_based_filter.h +2 -0
- data/src/core/lib/compression/compression_internal.cc +2 -5
- data/src/core/lib/config/config_vars.cc +20 -18
- data/src/core/lib/config/config_vars.h +4 -4
- data/src/core/lib/config/load_config.cc +13 -0
- data/src/core/lib/config/load_config.h +6 -0
- data/src/core/lib/debug/event_log.h +1 -1
- data/src/core/lib/debug/stats_data.h +1 -1
- data/src/core/lib/debug/trace.cc +24 -55
- data/src/core/lib/debug/trace.h +3 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +211 -0
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +86 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +354 -0
- data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +146 -0
- data/src/core/lib/event_engine/cf_engine/cftype_unique_ref.h +79 -0
- data/src/core/lib/event_engine/default_event_engine.cc +13 -1
- data/src/core/lib/event_engine/default_event_engine_factory.cc +14 -2
- data/src/core/lib/event_engine/poller.h +2 -2
- data/src/core/lib/event_engine/posix.h +4 -0
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +1 -1
- data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +7 -18
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +9 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +3 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +1 -2
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +4 -33
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +7 -11
- data/src/core/lib/event_engine/posix_engine/timer_manager.h +1 -1
- data/src/core/lib/event_engine/shim.cc +7 -1
- data/src/core/lib/event_engine/{thread_pool.cc → thread_pool/original_thread_pool.cc} +28 -25
- data/src/core/lib/event_engine/{thread_pool.h → thread_pool/original_thread_pool.h} +11 -15
- data/src/core/lib/event_engine/thread_pool/thread_pool.h +50 -0
- data/src/core/lib/event_engine/{executor/executor.h → thread_pool/thread_pool_factory.cc} +17 -15
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +489 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +249 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +166 -0
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +108 -0
- data/src/core/lib/event_engine/windows/iocp.cc +4 -3
- data/src/core/lib/event_engine/windows/iocp.h +3 -3
- data/src/core/lib/event_engine/windows/win_socket.cc +6 -6
- data/src/core/lib/event_engine/windows/win_socket.h +4 -4
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +11 -10
- data/src/core/lib/event_engine/windows/windows_endpoint.h +3 -2
- data/src/core/lib/event_engine/windows/windows_engine.cc +19 -17
- data/src/core/lib/event_engine/windows/windows_engine.h +6 -6
- data/src/core/lib/event_engine/windows/windows_listener.cc +3 -3
- data/src/core/lib/event_engine/windows/windows_listener.h +3 -2
- data/src/core/lib/event_engine/work_queue/basic_work_queue.cc +63 -0
- data/src/core/lib/event_engine/work_queue/basic_work_queue.h +71 -0
- data/src/core/lib/event_engine/work_queue/work_queue.h +62 -0
- data/src/core/lib/experiments/config.cc +38 -7
- data/src/core/lib/experiments/config.h +16 -0
- data/src/core/lib/experiments/experiments.cc +67 -20
- data/src/core/lib/experiments/experiments.h +27 -21
- data/src/core/lib/gpr/log_internal.h +55 -0
- data/src/core/lib/gprpp/crash.cc +10 -0
- data/src/core/lib/gprpp/crash.h +3 -0
- data/src/core/lib/gprpp/per_cpu.cc +33 -0
- data/src/core/lib/gprpp/per_cpu.h +29 -6
- data/src/core/lib/gprpp/time.cc +1 -0
- data/src/core/lib/iomgr/cfstream_handle.cc +1 -1
- data/src/core/lib/iomgr/endpoint_cfstream.cc +10 -8
- data/src/core/lib/iomgr/ev_apple.cc +12 -12
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +10 -3
- data/src/core/lib/iomgr/event_engine_shims/endpoint.cc +15 -1
- data/src/core/lib/iomgr/iocp_windows.cc +24 -3
- data/src/core/lib/iomgr/iocp_windows.h +11 -0
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -2
- data/src/core/lib/iomgr/socket_windows.cc +61 -7
- data/src/core/lib/iomgr/socket_windows.h +9 -2
- data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -3
- data/src/core/lib/iomgr/tcp_server_posix.cc +156 -140
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -13
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +0 -21
- data/src/core/lib/iomgr/tcp_server_windows.cc +1 -1
- data/src/core/lib/json/json.h +2 -166
- data/src/core/lib/json/json_object_loader.cc +8 -9
- data/src/core/lib/json/json_object_loader.h +25 -18
- data/src/core/lib/json/json_reader.cc +13 -6
- data/src/core/lib/json/json_util.cc +6 -11
- data/src/core/lib/json/json_writer.cc +7 -8
- data/src/core/lib/load_balancing/lb_policy.h +13 -0
- data/src/core/lib/load_balancing/lb_policy_registry.cc +2 -1
- data/src/core/lib/matchers/matchers.cc +3 -4
- data/src/core/lib/matchers/matchers.h +2 -1
- data/src/core/lib/promise/activity.cc +5 -0
- data/src/core/lib/promise/activity.h +10 -0
- data/src/core/lib/promise/detail/promise_factory.h +1 -1
- data/src/core/lib/promise/party.cc +31 -13
- data/src/core/lib/promise/party.h +11 -2
- data/src/core/lib/promise/pipe.h +9 -2
- data/src/core/lib/promise/prioritized_race.h +95 -0
- data/src/core/lib/promise/sleep.cc +2 -1
- data/src/core/lib/resolver/server_address.cc +0 -8
- data/src/core/lib/resolver/server_address.h +0 -6
- data/src/core/lib/resource_quota/memory_quota.cc +7 -7
- data/src/core/lib/resource_quota/memory_quota.h +1 -2
- data/src/core/lib/security/authorization/audit_logging.cc +98 -0
- data/src/core/lib/security/authorization/audit_logging.h +73 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +47 -2
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +18 -1
- data/src/core/lib/security/authorization/rbac_policy.cc +36 -4
- data/src/core/lib/security/authorization/rbac_policy.h +19 -2
- data/src/core/lib/security/authorization/stdout_logger.cc +75 -0
- data/src/core/lib/security/authorization/stdout_logger.h +61 -0
- data/src/core/lib/security/certificate_provider/certificate_provider_factory.h +8 -4
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.cc +8 -18
- data/src/core/lib/security/certificate_provider/certificate_provider_registry.h +14 -8
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +19 -12
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +4 -2
- data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +1 -0
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.cc +15 -14
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +4 -2
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +1 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +1 -0
- data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -5
- data/src/core/lib/security/util/json_util.cc +1 -0
- data/src/core/lib/service_config/service_config_call_data.h +49 -20
- data/src/core/lib/service_config/service_config_impl.cc +2 -1
- data/src/core/lib/surface/call.cc +38 -23
- data/src/core/lib/surface/completion_queue.cc +6 -2
- data/src/core/lib/surface/validate_metadata.cc +22 -37
- data/src/core/lib/surface/validate_metadata.h +3 -13
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/batch_builder.cc +15 -12
- data/src/core/lib/transport/batch_builder.h +39 -35
- data/src/core/plugin_registry/grpc_plugin_registry.cc +0 -2
- data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -0
- data/src/ruby/ext/grpc/extconf.rb +8 -9
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c +9 -8
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c +10 -6
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +7 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +5 -9
- data/third_party/boringssl-with-bazel/src/crypto/bio/pair.c +4 -2
- data/third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c +31 -22
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +29 -26
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +189 -13
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_openbsd.c +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_arm_openbsd.c +31 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +6 -4
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +795 -795
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +4 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +18 -6
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +15 -7
- data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/dh.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +74 -74
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +11 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +12 -12
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +14 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +10 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +23 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +13 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/{hkdf → fipsmodule/hkdf}/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +2 -10
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +1 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +115 -133
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm_nohw.c +12 -14
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +57 -47
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +1 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/polyval.c +27 -28
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +11 -23
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +21 -16
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/padding.c +5 -288
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +143 -83
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +95 -183
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +71 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/tls/kdf.c +33 -0
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +162 -6
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +18 -11
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +6 -13
- data/third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c +18 -14
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_lock.c → refcount_no_threads.c} +3 -13
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +89 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/internal.h +77 -0
- data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_crypt.c +568 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +62 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +218 -44
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +35 -0
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +588 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c +27 -18
- data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/name_print.c +17 -39
- data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c +39 -48
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +0 -140
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +72 -23
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -14
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c +33 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c +3 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +14 -46
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +14 -26
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +17 -10
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +5 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +6 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +32 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +0 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/blake2.h +1 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +3 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +28 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +2 -11
- data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +0 -3
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +91 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/span.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +149 -20
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +774 -615
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +42 -10
- data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +11 -6
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +2 -4
- data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +24 -16
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +65 -18
- data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +37 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +187 -193
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +13 -129
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +85 -10
- data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +17 -4
- data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +27 -19
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +5 -21
- data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +5 -2
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_msvc.h +1281 -0
- data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64_msvc.h +2002 -0
- data/third_party/cares/cares/include/ares.h +23 -1
- data/third_party/cares/cares/{src/lib → include}/ares_nameser.h +9 -7
- data/third_party/cares/cares/include/ares_rules.h +2 -2
- data/third_party/cares/cares/include/ares_version.h +3 -3
- data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +266 -0
- data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +240 -0
- data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +49 -80
- data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +37 -43
- data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +12 -4
- data/third_party/cares/cares/src/lib/ares_data.c +16 -0
- data/third_party/cares/cares/src/lib/ares_data.h +7 -0
- data/third_party/cares/cares/src/lib/ares_destroy.c +8 -0
- data/third_party/cares/cares/src/lib/ares_expand_name.c +17 -6
- data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +1 -0
- data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +156 -78
- data/third_party/cares/cares/src/lib/ares_gethostbyname.c +130 -326
- data/third_party/cares/cares/src/lib/ares_init.c +97 -485
- data/third_party/cares/cares/src/lib/ares_library_init.c +2 -89
- data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +23 -142
- data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +22 -142
- data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +184 -0
- data/third_party/cares/cares/src/lib/ares_private.h +30 -16
- data/third_party/cares/cares/src/lib/ares_process.c +55 -16
- data/third_party/cares/cares/src/lib/ares_query.c +1 -35
- data/third_party/cares/cares/src/lib/ares_rand.c +279 -0
- data/third_party/cares/cares/src/lib/ares_send.c +5 -7
- data/third_party/cares/cares/src/lib/ares_strdup.c +12 -19
- data/third_party/cares/cares/src/lib/ares_strsplit.c +44 -128
- data/third_party/cares/cares/src/lib/ares_strsplit.h +9 -10
- data/third_party/cares/cares/src/lib/inet_net_pton.c +78 -116
- data/third_party/cares/cares/src/tools/ares_getopt.h +53 -0
- metadata +50 -16
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +0 -175
- data/src/core/ext/filters/client_channel/health/health_check_client.h +0 -43
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.cc +0 -176
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +0 -325
- data/third_party/cares/cares/src/lib/ares_library_init.h +0 -43
@@ -30,9 +30,9 @@
|
|
30
30
|
#include "internal.h"
|
31
31
|
|
32
32
|
|
33
|
-
typedef int (*hash_t_func_t)(const EC_GROUP *group,
|
33
|
+
typedef int (*hash_t_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
|
34
34
|
const uint8_t t[TRUST_TOKEN_NONCE_SIZE]);
|
35
|
-
typedef int (*hash_s_func_t)(const EC_GROUP *group,
|
35
|
+
typedef int (*hash_s_func_t)(const EC_GROUP *group, EC_JACOBIAN *out,
|
36
36
|
const EC_AFFINE *t,
|
37
37
|
const uint8_t s[TRUST_TOKEN_NONCE_SIZE]);
|
38
38
|
typedef int (*hash_c_func_t)(const EC_GROUP *group, EC_SCALAR *out,
|
@@ -44,7 +44,7 @@ typedef struct {
|
|
44
44
|
const EC_GROUP *group;
|
45
45
|
EC_PRECOMP g_precomp;
|
46
46
|
EC_PRECOMP h_precomp;
|
47
|
-
|
47
|
+
EC_JACOBIAN h;
|
48
48
|
// hash_t implements the H_t operation in PMBTokens. It returns one on success
|
49
49
|
// and zero on error.
|
50
50
|
hash_t_func_t hash_t;
|
@@ -173,11 +173,11 @@ static int cbs_get_prefixed_point(CBS *cbs, const EC_GROUP *group,
|
|
173
173
|
return 1;
|
174
174
|
}
|
175
175
|
|
176
|
-
static int mul_public_3(const EC_GROUP *group,
|
177
|
-
const
|
178
|
-
const
|
179
|
-
const
|
180
|
-
|
176
|
+
static int mul_public_3(const EC_GROUP *group, EC_JACOBIAN *out,
|
177
|
+
const EC_JACOBIAN *p0, const EC_SCALAR *scalar0,
|
178
|
+
const EC_JACOBIAN *p1, const EC_SCALAR *scalar1,
|
179
|
+
const EC_JACOBIAN *p2, const EC_SCALAR *scalar2) {
|
180
|
+
EC_JACOBIAN points[3] = {*p0, *p1, *p2};
|
181
181
|
EC_SCALAR scalars[3] = {*scalar0, *scalar1, *scalar2};
|
182
182
|
return ec_point_mul_scalar_public_batch(group, out, /*g_scalar=*/NULL, points,
|
183
183
|
scalars, 3);
|
@@ -189,7 +189,7 @@ static int pmbtoken_compute_keys(const PMBTOKEN_METHOD *method,
|
|
189
189
|
const EC_SCALAR *x1, const EC_SCALAR *y1,
|
190
190
|
const EC_SCALAR *xs, const EC_SCALAR *ys) {
|
191
191
|
const EC_GROUP *group = method->group;
|
192
|
-
|
192
|
+
EC_JACOBIAN pub[3];
|
193
193
|
if (!ec_point_mul_scalar_precomp(group, &pub[0], &method->g_precomp,
|
194
194
|
x0, &method->h_precomp, y0, NULL, NULL) ||
|
195
195
|
!ec_point_mul_scalar_precomp(group, &pub[1], &method->g_precomp,
|
@@ -303,7 +303,7 @@ static int pmbtoken_issuer_key_from_bytes(const PMBTOKEN_METHOD *method,
|
|
303
303
|
}
|
304
304
|
|
305
305
|
// Recompute the public key.
|
306
|
-
|
306
|
+
EC_JACOBIAN pub[3];
|
307
307
|
EC_AFFINE pub_affine[3];
|
308
308
|
if (!ec_point_mul_scalar_precomp(group, &pub[0], &method->g_precomp, &key->x0,
|
309
309
|
&method->h_precomp, &key->y0, NULL, NULL) ||
|
@@ -367,7 +367,7 @@ static STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_blind(
|
|
367
367
|
ec_scalar_from_montgomery(group, &pretoken->r, &pretoken->r);
|
368
368
|
ec_scalar_from_montgomery(group, &rinv, &rinv);
|
369
369
|
|
370
|
-
|
370
|
+
EC_JACOBIAN T, Tp;
|
371
371
|
if (!method->hash_t(group, &T, pretoken->t) ||
|
372
372
|
!ec_point_mul_scalar(group, &Tp, &T, &rinv) ||
|
373
373
|
!ec_jacobian_to_affine(group, &pretoken->Tp, &Tp)) {
|
@@ -516,8 +516,8 @@ err:
|
|
516
516
|
|
517
517
|
static int dleq_generate(const PMBTOKEN_METHOD *method, CBB *cbb,
|
518
518
|
const TRUST_TOKEN_ISSUER_KEY *priv,
|
519
|
-
const
|
520
|
-
const
|
519
|
+
const EC_JACOBIAN *T, const EC_JACOBIAN *S,
|
520
|
+
const EC_JACOBIAN *W, const EC_JACOBIAN *Ws,
|
521
521
|
uint8_t private_metadata) {
|
522
522
|
const EC_GROUP *group = method->group;
|
523
523
|
|
@@ -537,7 +537,7 @@ static int dleq_generate(const PMBTOKEN_METHOD *method, CBB *cbb,
|
|
537
537
|
idx_Ko1,
|
538
538
|
num_idx,
|
539
539
|
};
|
540
|
-
|
540
|
+
EC_JACOBIAN jacobians[num_idx];
|
541
541
|
|
542
542
|
// Setup the DLEQ proof.
|
543
543
|
EC_SCALAR ks0, ks1;
|
@@ -675,11 +675,11 @@ static int dleq_generate(const PMBTOKEN_METHOD *method, CBB *cbb,
|
|
675
675
|
}
|
676
676
|
|
677
677
|
static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
|
678
|
-
const TRUST_TOKEN_CLIENT_KEY *pub, const
|
679
|
-
const
|
680
|
-
const
|
678
|
+
const TRUST_TOKEN_CLIENT_KEY *pub, const EC_JACOBIAN *T,
|
679
|
+
const EC_JACOBIAN *S, const EC_JACOBIAN *W,
|
680
|
+
const EC_JACOBIAN *Ws) {
|
681
681
|
const EC_GROUP *group = method->group;
|
682
|
-
const
|
682
|
+
const EC_JACOBIAN *g = &group->generator->raw;
|
683
683
|
|
684
684
|
// We verify a DLEQ proof for the validity token and a DLEQOR2 proof for the
|
685
685
|
// private metadata token. To allow amortizing Jacobian-to-affine conversions,
|
@@ -699,7 +699,7 @@ static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
|
|
699
699
|
idx_K11,
|
700
700
|
num_idx,
|
701
701
|
};
|
702
|
-
|
702
|
+
EC_JACOBIAN jacobians[num_idx];
|
703
703
|
|
704
704
|
// Decode the DLEQ proof.
|
705
705
|
EC_SCALAR cs, us, vs;
|
@@ -711,7 +711,7 @@ static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
|
|
711
711
|
}
|
712
712
|
|
713
713
|
// Ks = us*(G;T) + vs*(H;S) - cs*(pubs;Ws)
|
714
|
-
|
714
|
+
EC_JACOBIAN pubs;
|
715
715
|
ec_affine_to_jacobian(group, &pubs, &pub->pubs);
|
716
716
|
EC_SCALAR minus_cs;
|
717
717
|
ec_scalar_neg(group, &minus_cs, &cs);
|
@@ -734,7 +734,7 @@ static int dleq_verify(const PMBTOKEN_METHOD *method, CBS *cbs,
|
|
734
734
|
return 0;
|
735
735
|
}
|
736
736
|
|
737
|
-
|
737
|
+
EC_JACOBIAN pub0, pub1;
|
738
738
|
ec_affine_to_jacobian(group, &pub0, &pub->pub0);
|
739
739
|
ec_affine_to_jacobian(group, &pub1, &pub->pub1);
|
740
740
|
EC_SCALAR minus_c0, minus_c1;
|
@@ -803,17 +803,17 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
|
|
803
803
|
return 0;
|
804
804
|
}
|
805
805
|
|
806
|
-
if (num_to_issue > ((size_t)-1) / sizeof(
|
806
|
+
if (num_to_issue > ((size_t)-1) / sizeof(EC_JACOBIAN) ||
|
807
807
|
num_to_issue > ((size_t)-1) / sizeof(EC_SCALAR)) {
|
808
808
|
OPENSSL_PUT_ERROR(TRUST_TOKEN, ERR_R_OVERFLOW);
|
809
809
|
return 0;
|
810
810
|
}
|
811
811
|
|
812
812
|
int ret = 0;
|
813
|
-
|
814
|
-
|
815
|
-
|
816
|
-
|
813
|
+
EC_JACOBIAN *Tps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
|
814
|
+
EC_JACOBIAN *Sps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
|
815
|
+
EC_JACOBIAN *Wps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
|
816
|
+
EC_JACOBIAN *Wsps = OPENSSL_malloc(num_to_issue * sizeof(EC_JACOBIAN));
|
817
817
|
EC_SCALAR *es = OPENSSL_malloc(num_to_issue * sizeof(EC_SCALAR));
|
818
818
|
CBB batch_cbb;
|
819
819
|
CBB_zero(&batch_cbb);
|
@@ -831,7 +831,7 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
|
|
831
831
|
|
832
832
|
for (size_t i = 0; i < num_to_issue; i++) {
|
833
833
|
EC_AFFINE Tp_affine;
|
834
|
-
|
834
|
+
EC_JACOBIAN Tp;
|
835
835
|
if (!cbs_get_prefixed_point(cbs, group, &Tp_affine, method->prefix_point)) {
|
836
836
|
OPENSSL_PUT_ERROR(TRUST_TOKEN, TRUST_TOKEN_R_DECODE_FAILURE);
|
837
837
|
goto err;
|
@@ -846,7 +846,7 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
|
|
846
846
|
uint8_t s[TRUST_TOKEN_NONCE_SIZE];
|
847
847
|
RAND_bytes(s, TRUST_TOKEN_NONCE_SIZE);
|
848
848
|
// The |jacobians| and |affines| contain Sp, Wp, and Wsp.
|
849
|
-
|
849
|
+
EC_JACOBIAN jacobians[3];
|
850
850
|
EC_AFFINE affines[3];
|
851
851
|
if (!method->hash_s(group, &jacobians[0], &Tp_affine, s) ||
|
852
852
|
!ec_point_mul_scalar_batch(group, &jacobians[1], &Tp, &xb,
|
@@ -887,7 +887,7 @@ static int pmbtoken_sign(const PMBTOKEN_METHOD *method,
|
|
887
887
|
}
|
888
888
|
}
|
889
889
|
|
890
|
-
|
890
|
+
EC_JACOBIAN Tp_batch, Sp_batch, Wp_batch, Wsp_batch;
|
891
891
|
if (!ec_point_mul_scalar_public_batch(group, &Tp_batch,
|
892
892
|
/*g_scalar=*/NULL, Tps, es,
|
893
893
|
num_to_issue) ||
|
@@ -944,7 +944,7 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
|
|
944
944
|
return NULL;
|
945
945
|
}
|
946
946
|
|
947
|
-
if (count > ((size_t)-1) / sizeof(
|
947
|
+
if (count > ((size_t)-1) / sizeof(EC_JACOBIAN) ||
|
948
948
|
count > ((size_t)-1) / sizeof(EC_SCALAR)) {
|
949
949
|
OPENSSL_PUT_ERROR(TRUST_TOKEN, ERR_R_OVERFLOW);
|
950
950
|
return NULL;
|
@@ -952,10 +952,10 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
|
|
952
952
|
|
953
953
|
int ok = 0;
|
954
954
|
STACK_OF(TRUST_TOKEN) *ret = sk_TRUST_TOKEN_new_null();
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
955
|
+
EC_JACOBIAN *Tps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
|
956
|
+
EC_JACOBIAN *Sps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
|
957
|
+
EC_JACOBIAN *Wps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
|
958
|
+
EC_JACOBIAN *Wsps = OPENSSL_malloc(count * sizeof(EC_JACOBIAN));
|
959
959
|
EC_SCALAR *es = OPENSSL_malloc(count * sizeof(EC_SCALAR));
|
960
960
|
CBB batch_cbb;
|
961
961
|
CBB_zero(&batch_cbb);
|
@@ -1003,7 +1003,7 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
|
|
1003
1003
|
}
|
1004
1004
|
|
1005
1005
|
// Unblind the token.
|
1006
|
-
|
1006
|
+
EC_JACOBIAN jacobians[3];
|
1007
1007
|
EC_AFFINE affines[3];
|
1008
1008
|
if (!ec_point_mul_scalar(group, &jacobians[0], &Sps[i], &pretoken->r) ||
|
1009
1009
|
!ec_point_mul_scalar(group, &jacobians[1], &Wps[i], &pretoken->r) ||
|
@@ -1050,7 +1050,7 @@ static STACK_OF(TRUST_TOKEN) *pmbtoken_unblind(
|
|
1050
1050
|
}
|
1051
1051
|
}
|
1052
1052
|
|
1053
|
-
|
1053
|
+
EC_JACOBIAN Tp_batch, Sp_batch, Wp_batch, Wsp_batch;
|
1054
1054
|
if (!ec_point_mul_scalar_public_batch(group, &Tp_batch,
|
1055
1055
|
/*g_scalar=*/NULL, Tps, es, count) ||
|
1056
1056
|
!ec_point_mul_scalar_public_batch(group, &Sp_batch,
|
@@ -1116,14 +1116,14 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
|
|
1116
1116
|
OPENSSL_memcpy(out_nonce, CBS_data(&salt), CBS_len(&salt));
|
1117
1117
|
}
|
1118
1118
|
|
1119
|
-
|
1119
|
+
EC_JACOBIAN T;
|
1120
1120
|
if (!method->hash_t(group, &T, out_nonce)) {
|
1121
1121
|
return 0;
|
1122
1122
|
}
|
1123
1123
|
|
1124
1124
|
// We perform three multiplications with S and T. This is enough that it is
|
1125
1125
|
// worth using |ec_point_mul_scalar_precomp|.
|
1126
|
-
|
1126
|
+
EC_JACOBIAN S_jacobian;
|
1127
1127
|
EC_PRECOMP S_precomp, T_precomp;
|
1128
1128
|
ec_affine_to_jacobian(group, &S_jacobian, &S);
|
1129
1129
|
if (!ec_init_precomp(group, &S_precomp, &S_jacobian) ||
|
@@ -1131,7 +1131,7 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
|
|
1131
1131
|
return 0;
|
1132
1132
|
}
|
1133
1133
|
|
1134
|
-
|
1134
|
+
EC_JACOBIAN Ws_calculated;
|
1135
1135
|
// Check the validity of the token.
|
1136
1136
|
if (!ec_point_mul_scalar_precomp(group, &Ws_calculated, &T_precomp, &key->xs,
|
1137
1137
|
&S_precomp, &key->ys, NULL, NULL) ||
|
@@ -1140,7 +1140,7 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
|
|
1140
1140
|
return 0;
|
1141
1141
|
}
|
1142
1142
|
|
1143
|
-
|
1143
|
+
EC_JACOBIAN W0, W1;
|
1144
1144
|
if (!ec_point_mul_scalar_precomp(group, &W0, &T_precomp, &key->x0, &S_precomp,
|
1145
1145
|
&key->y0, NULL, NULL) ||
|
1146
1146
|
!ec_point_mul_scalar_precomp(group, &W1, &T_precomp, &key->x1, &S_precomp,
|
@@ -1164,14 +1164,14 @@ static int pmbtoken_read(const PMBTOKEN_METHOD *method,
|
|
1164
1164
|
|
1165
1165
|
// PMBTokens experiment v1.
|
1166
1166
|
|
1167
|
-
static int pmbtoken_exp1_hash_t(const EC_GROUP *group,
|
1167
|
+
static int pmbtoken_exp1_hash_t(const EC_GROUP *group, EC_JACOBIAN *out,
|
1168
1168
|
const uint8_t t[TRUST_TOKEN_NONCE_SIZE]) {
|
1169
1169
|
const uint8_t kHashTLabel[] = "PMBTokens Experiment V1 HashT";
|
1170
1170
|
return ec_hash_to_curve_p384_xmd_sha512_sswu_draft07(
|
1171
1171
|
group, out, kHashTLabel, sizeof(kHashTLabel), t, TRUST_TOKEN_NONCE_SIZE);
|
1172
1172
|
}
|
1173
1173
|
|
1174
|
-
static int pmbtoken_exp1_hash_s(const EC_GROUP *group,
|
1174
|
+
static int pmbtoken_exp1_hash_s(const EC_GROUP *group, EC_JACOBIAN *out,
|
1175
1175
|
const EC_AFFINE *t,
|
1176
1176
|
const uint8_t s[TRUST_TOKEN_NONCE_SIZE]) {
|
1177
1177
|
const uint8_t kHashSLabel[] = "PMBTokens Experiment V1 HashS";
|
@@ -1337,14 +1337,14 @@ int pmbtoken_exp1_get_h_for_testing(uint8_t out[97]) {
|
|
1337
1337
|
|
1338
1338
|
// PMBTokens experiment v2.
|
1339
1339
|
|
1340
|
-
static int pmbtoken_exp2_hash_t(const EC_GROUP *group,
|
1340
|
+
static int pmbtoken_exp2_hash_t(const EC_GROUP *group, EC_JACOBIAN *out,
|
1341
1341
|
const uint8_t t[TRUST_TOKEN_NONCE_SIZE]) {
|
1342
1342
|
const uint8_t kHashTLabel[] = "PMBTokens Experiment V2 HashT";
|
1343
1343
|
return ec_hash_to_curve_p384_xmd_sha512_sswu_draft07(
|
1344
1344
|
group, out, kHashTLabel, sizeof(kHashTLabel), t, TRUST_TOKEN_NONCE_SIZE);
|
1345
1345
|
}
|
1346
1346
|
|
1347
|
-
static int pmbtoken_exp2_hash_s(const EC_GROUP *group,
|
1347
|
+
static int pmbtoken_exp2_hash_s(const EC_GROUP *group, EC_JACOBIAN *out,
|
1348
1348
|
const EC_AFFINE *t,
|
1349
1349
|
const uint8_t s[TRUST_TOKEN_NONCE_SIZE]) {
|
1350
1350
|
const uint8_t kHashSLabel[] = "PMBTokens Experiment V2 HashS";
|
@@ -1508,3 +1508,177 @@ int pmbtoken_exp2_get_h_for_testing(uint8_t out[97]) {
|
|
1508
1508
|
ec_point_to_bytes(pmbtoken_exp2_method.group, &h,
|
1509
1509
|
POINT_CONVERSION_UNCOMPRESSED, out, 97) == 97;
|
1510
1510
|
}
|
1511
|
+
|
1512
|
+
// PMBTokens PST v1.
|
1513
|
+
|
1514
|
+
static int pmbtoken_pst1_hash_t(const EC_GROUP *group, EC_JACOBIAN *out,
|
1515
|
+
const uint8_t t[TRUST_TOKEN_NONCE_SIZE]) {
|
1516
|
+
const uint8_t kHashTLabel[] = "PMBTokens PST V1 HashT";
|
1517
|
+
return ec_hash_to_curve_p384_xmd_sha384_sswu(
|
1518
|
+
group, out, kHashTLabel, sizeof(kHashTLabel), t, TRUST_TOKEN_NONCE_SIZE);
|
1519
|
+
}
|
1520
|
+
|
1521
|
+
static int pmbtoken_pst1_hash_s(const EC_GROUP *group, EC_JACOBIAN *out,
|
1522
|
+
const EC_AFFINE *t,
|
1523
|
+
const uint8_t s[TRUST_TOKEN_NONCE_SIZE]) {
|
1524
|
+
const uint8_t kHashSLabel[] = "PMBTokens PST V1 HashS";
|
1525
|
+
int ret = 0;
|
1526
|
+
CBB cbb;
|
1527
|
+
uint8_t *buf = NULL;
|
1528
|
+
size_t len;
|
1529
|
+
if (!CBB_init(&cbb, 0) ||
|
1530
|
+
!point_to_cbb(&cbb, group, t) ||
|
1531
|
+
!CBB_add_bytes(&cbb, s, TRUST_TOKEN_NONCE_SIZE) ||
|
1532
|
+
!CBB_finish(&cbb, &buf, &len) ||
|
1533
|
+
!ec_hash_to_curve_p384_xmd_sha384_sswu(
|
1534
|
+
group, out, kHashSLabel, sizeof(kHashSLabel), buf, len)) {
|
1535
|
+
goto err;
|
1536
|
+
}
|
1537
|
+
|
1538
|
+
ret = 1;
|
1539
|
+
|
1540
|
+
err:
|
1541
|
+
OPENSSL_free(buf);
|
1542
|
+
CBB_cleanup(&cbb);
|
1543
|
+
return ret;
|
1544
|
+
}
|
1545
|
+
|
1546
|
+
static int pmbtoken_pst1_hash_c(const EC_GROUP *group, EC_SCALAR *out,
|
1547
|
+
uint8_t *buf, size_t len) {
|
1548
|
+
const uint8_t kHashCLabel[] = "PMBTokens PST V1 HashC";
|
1549
|
+
return ec_hash_to_scalar_p384_xmd_sha384(
|
1550
|
+
group, out, kHashCLabel, sizeof(kHashCLabel), buf, len);
|
1551
|
+
}
|
1552
|
+
|
1553
|
+
static int pmbtoken_pst1_hash_to_scalar(const EC_GROUP *group, EC_SCALAR *out,
|
1554
|
+
uint8_t *buf, size_t len) {
|
1555
|
+
const uint8_t kHashLabel[] = "PMBTokens PST V1 HashToScalar";
|
1556
|
+
return ec_hash_to_scalar_p384_xmd_sha384(
|
1557
|
+
group, out, kHashLabel, sizeof(kHashLabel), buf, len);
|
1558
|
+
}
|
1559
|
+
|
1560
|
+
static int pmbtoken_pst1_ok = 0;
|
1561
|
+
static PMBTOKEN_METHOD pmbtoken_pst1_method;
|
1562
|
+
static CRYPTO_once_t pmbtoken_pst1_method_once = CRYPTO_ONCE_INIT;
|
1563
|
+
|
1564
|
+
static void pmbtoken_pst1_init_method_impl(void) {
|
1565
|
+
// This is the output of |ec_hash_to_scalar_p384_xmd_sha384| with DST
|
1566
|
+
// "PMBTokens PST V1 HashH" and message "generator".
|
1567
|
+
static const uint8_t kH[] = {
|
1568
|
+
0x04, 0x4c, 0xfa, 0xd4, 0x33, 0x6d, 0x8c, 0x4e, 0x18, 0xce, 0x1a,
|
1569
|
+
0x82, 0x7b, 0x53, 0x8c, 0xf8, 0x63, 0x18, 0xe5, 0xa3, 0x96, 0x0d,
|
1570
|
+
0x05, 0xde, 0xf4, 0x83, 0xa7, 0xd8, 0xde, 0x9c, 0x50, 0x81, 0x38,
|
1571
|
+
0xc9, 0x38, 0x25, 0xa3, 0x70, 0x97, 0xc1, 0x1c, 0x33, 0x2e, 0x83,
|
1572
|
+
0x68, 0x64, 0x9c, 0x53, 0x73, 0xc3, 0x03, 0xc1, 0xa9, 0xd8, 0x92,
|
1573
|
+
0xa2, 0x32, 0xf4, 0x22, 0x40, 0x07, 0x2d, 0x9b, 0x6f, 0xab, 0xff,
|
1574
|
+
0x2a, 0x92, 0x03, 0xb1, 0x73, 0x09, 0x1a, 0x6a, 0x4a, 0xc2, 0x4c,
|
1575
|
+
0xac, 0x13, 0x59, 0xf4, 0x28, 0x0e, 0x78, 0x69, 0xa5, 0xdf, 0x0d,
|
1576
|
+
0x74, 0xeb, 0x14, 0xca, 0x8a, 0x32, 0xbb, 0xd3, 0x91
|
1577
|
+
};
|
1578
|
+
|
1579
|
+
pmbtoken_pst1_ok = pmbtoken_init_method(
|
1580
|
+
&pmbtoken_pst1_method, NID_secp384r1, kH, sizeof(kH),
|
1581
|
+
pmbtoken_pst1_hash_t, pmbtoken_pst1_hash_s, pmbtoken_pst1_hash_c,
|
1582
|
+
pmbtoken_pst1_hash_to_scalar, 0);
|
1583
|
+
}
|
1584
|
+
|
1585
|
+
static int pmbtoken_pst1_init_method(void) {
|
1586
|
+
CRYPTO_once(&pmbtoken_pst1_method_once, pmbtoken_pst1_init_method_impl);
|
1587
|
+
if (!pmbtoken_pst1_ok) {
|
1588
|
+
OPENSSL_PUT_ERROR(TRUST_TOKEN, ERR_R_INTERNAL_ERROR);
|
1589
|
+
return 0;
|
1590
|
+
}
|
1591
|
+
return 1;
|
1592
|
+
}
|
1593
|
+
|
1594
|
+
int pmbtoken_pst1_generate_key(CBB *out_private, CBB *out_public) {
|
1595
|
+
if (!pmbtoken_pst1_init_method()) {
|
1596
|
+
return 0;
|
1597
|
+
}
|
1598
|
+
|
1599
|
+
return pmbtoken_generate_key(&pmbtoken_pst1_method, out_private, out_public);
|
1600
|
+
}
|
1601
|
+
|
1602
|
+
|
1603
|
+
int pmbtoken_pst1_derive_key_from_secret(CBB *out_private, CBB *out_public,
|
1604
|
+
const uint8_t *secret,
|
1605
|
+
size_t secret_len) {
|
1606
|
+
if (!pmbtoken_pst1_init_method()) {
|
1607
|
+
return 0;
|
1608
|
+
}
|
1609
|
+
|
1610
|
+
return pmbtoken_derive_key_from_secret(&pmbtoken_pst1_method, out_private,
|
1611
|
+
out_public, secret, secret_len);
|
1612
|
+
}
|
1613
|
+
|
1614
|
+
int pmbtoken_pst1_client_key_from_bytes(TRUST_TOKEN_CLIENT_KEY *key,
|
1615
|
+
const uint8_t *in, size_t len) {
|
1616
|
+
if (!pmbtoken_pst1_init_method()) {
|
1617
|
+
return 0;
|
1618
|
+
}
|
1619
|
+
return pmbtoken_client_key_from_bytes(&pmbtoken_pst1_method, key, in, len);
|
1620
|
+
}
|
1621
|
+
|
1622
|
+
int pmbtoken_pst1_issuer_key_from_bytes(TRUST_TOKEN_ISSUER_KEY *key,
|
1623
|
+
const uint8_t *in, size_t len) {
|
1624
|
+
if (!pmbtoken_pst1_init_method()) {
|
1625
|
+
return 0;
|
1626
|
+
}
|
1627
|
+
return pmbtoken_issuer_key_from_bytes(&pmbtoken_pst1_method, key, in, len);
|
1628
|
+
}
|
1629
|
+
|
1630
|
+
STACK_OF(TRUST_TOKEN_PRETOKEN) *pmbtoken_pst1_blind(CBB *cbb, size_t count,
|
1631
|
+
int include_message,
|
1632
|
+
const uint8_t *msg,
|
1633
|
+
size_t msg_len) {
|
1634
|
+
if (!pmbtoken_pst1_init_method()) {
|
1635
|
+
return NULL;
|
1636
|
+
}
|
1637
|
+
return pmbtoken_blind(&pmbtoken_pst1_method, cbb, count, include_message, msg,
|
1638
|
+
msg_len);
|
1639
|
+
}
|
1640
|
+
|
1641
|
+
int pmbtoken_pst1_sign(const TRUST_TOKEN_ISSUER_KEY *key, CBB *cbb, CBS *cbs,
|
1642
|
+
size_t num_requested, size_t num_to_issue,
|
1643
|
+
uint8_t private_metadata) {
|
1644
|
+
if (!pmbtoken_pst1_init_method()) {
|
1645
|
+
return 0;
|
1646
|
+
}
|
1647
|
+
return pmbtoken_sign(&pmbtoken_pst1_method, key, cbb, cbs, num_requested,
|
1648
|
+
num_to_issue, private_metadata);
|
1649
|
+
}
|
1650
|
+
|
1651
|
+
STACK_OF(TRUST_TOKEN) *pmbtoken_pst1_unblind(
|
1652
|
+
const TRUST_TOKEN_CLIENT_KEY *key,
|
1653
|
+
const STACK_OF(TRUST_TOKEN_PRETOKEN) *pretokens, CBS *cbs, size_t count,
|
1654
|
+
uint32_t key_id) {
|
1655
|
+
if (!pmbtoken_pst1_init_method()) {
|
1656
|
+
return NULL;
|
1657
|
+
}
|
1658
|
+
return pmbtoken_unblind(&pmbtoken_pst1_method, key, pretokens, cbs, count,
|
1659
|
+
key_id);
|
1660
|
+
}
|
1661
|
+
|
1662
|
+
int pmbtoken_pst1_read(const TRUST_TOKEN_ISSUER_KEY *key,
|
1663
|
+
uint8_t out_nonce[TRUST_TOKEN_NONCE_SIZE],
|
1664
|
+
uint8_t *out_private_metadata, const uint8_t *token,
|
1665
|
+
size_t token_len, int include_message,
|
1666
|
+
const uint8_t *msg, size_t msg_len) {
|
1667
|
+
if (!pmbtoken_pst1_init_method()) {
|
1668
|
+
return 0;
|
1669
|
+
}
|
1670
|
+
return pmbtoken_read(&pmbtoken_pst1_method, key, out_nonce,
|
1671
|
+
out_private_metadata, token, token_len, include_message,
|
1672
|
+
msg, msg_len);
|
1673
|
+
}
|
1674
|
+
|
1675
|
+
int pmbtoken_pst1_get_h_for_testing(uint8_t out[97]) {
|
1676
|
+
if (!pmbtoken_pst1_init_method()) {
|
1677
|
+
return 0;
|
1678
|
+
}
|
1679
|
+
EC_AFFINE h;
|
1680
|
+
return ec_jacobian_to_affine(pmbtoken_pst1_method.group, &h,
|
1681
|
+
&pmbtoken_pst1_method.h) &&
|
1682
|
+
ec_point_to_bytes(pmbtoken_pst1_method.group, &h,
|
1683
|
+
POINT_CONVERSION_UNCOMPRESSED, out, 97) == 97;
|
1684
|
+
}
|
@@ -78,6 +78,41 @@ const TRUST_TOKEN_METHOD *TRUST_TOKEN_experiment_v2_pmb(void) {
|
|
78
78
|
return &kMethod;
|
79
79
|
}
|
80
80
|
|
81
|
+
const TRUST_TOKEN_METHOD *TRUST_TOKEN_pst_v1_voprf(void) {
|
82
|
+
static const TRUST_TOKEN_METHOD kMethod = {
|
83
|
+
voprf_pst1_generate_key,
|
84
|
+
voprf_pst1_derive_key_from_secret,
|
85
|
+
voprf_pst1_client_key_from_bytes,
|
86
|
+
voprf_pst1_issuer_key_from_bytes,
|
87
|
+
voprf_pst1_blind,
|
88
|
+
voprf_pst1_sign,
|
89
|
+
voprf_pst1_unblind,
|
90
|
+
voprf_pst1_read,
|
91
|
+
0, /* has_private_metadata */
|
92
|
+
6, /* max_keys */
|
93
|
+
0, /* has_srr */
|
94
|
+
};
|
95
|
+
return &kMethod;
|
96
|
+
}
|
97
|
+
|
98
|
+
const TRUST_TOKEN_METHOD *TRUST_TOKEN_pst_v1_pmb(void) {
|
99
|
+
static const TRUST_TOKEN_METHOD kMethod = {
|
100
|
+
pmbtoken_pst1_generate_key,
|
101
|
+
pmbtoken_pst1_derive_key_from_secret,
|
102
|
+
pmbtoken_pst1_client_key_from_bytes,
|
103
|
+
pmbtoken_pst1_issuer_key_from_bytes,
|
104
|
+
pmbtoken_pst1_blind,
|
105
|
+
pmbtoken_pst1_sign,
|
106
|
+
pmbtoken_pst1_unblind,
|
107
|
+
pmbtoken_pst1_read,
|
108
|
+
1, /* has_private_metadata */
|
109
|
+
3, /* max_keys */
|
110
|
+
0, /* has_srr */
|
111
|
+
};
|
112
|
+
return &kMethod;
|
113
|
+
}
|
114
|
+
|
115
|
+
|
81
116
|
void TRUST_TOKEN_PRETOKEN_free(TRUST_TOKEN_PRETOKEN *pretoken) {
|
82
117
|
OPENSSL_free(pretoken);
|
83
118
|
}
|