grpc 1.56.2 → 1.57.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Makefile +29 -22
- data/include/grpc/event_engine/event_engine.h +22 -32
- data/include/grpc/impl/grpc_types.h +3 -0
- data/include/grpc/support/port_platform.h +29 -23
- data/src/core/ext/filters/client_channel/client_channel.cc +44 -8
- data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
- data/src/core/ext/filters/client_channel/http_proxy.cc +5 -0
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +21 -52
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +19 -7
- data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +25 -35
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +78 -132
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +2 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +3 -1
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.cc +38 -15
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client.h +3 -5
- data/src/core/ext/filters/client_channel/lb_policy/health_check_client_internal.h +22 -6
- data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric_internal.h +2 -0
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +97 -71
- data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -16
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +56 -11
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.h +25 -0
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -32
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +4 -6
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +20 -79
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +31 -19
- data/src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +7 -41
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +3 -67
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +8 -0
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +31 -74
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +7 -51
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +16 -87
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +16 -50
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +12 -74
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -4
- data/src/core/ext/filters/client_channel/resolver/dns/event_engine/event_engine_client_channel_resolver.cc +69 -59
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +7 -2
- data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +1 -0
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +25 -13
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +366 -311
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +17 -1
- data/src/core/ext/filters/client_channel/retry_filter.cc +39 -2498
- data/src/core/ext/filters/client_channel/retry_filter.h +91 -1
- data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.cc +2052 -0
- data/src/core/ext/filters/client_channel/retry_filter_legacy_call_data.h +442 -0
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +38 -58
- data/src/core/ext/filters/client_channel/subchannel.h +3 -3
- data/src/core/ext/filters/client_channel/subchannel_interface_internal.h +3 -0
- data/src/core/ext/filters/rbac/rbac_filter.cc +40 -111
- data/src/core/ext/filters/rbac/rbac_filter.h +12 -30
- data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +162 -86
- data/src/core/ext/filters/stateful_session/stateful_session_filter.h +0 -6
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +7 -4
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +131 -186
- data/src/core/ext/transport/chttp2/transport/decode_huff.cc +6569 -174
- data/src/core/ext/transport/chttp2/transport/decode_huff.h +2278 -441
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parse_result.h +4 -3
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +9 -8
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +4 -4
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +3 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +8 -4
- data/src/core/ext/transport/chttp2/transport/parsing.cc +15 -3
- data/src/core/ext/transport/chttp2/transport/writing.cc +2 -3
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -6
- data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +143 -0
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +2 -9
- data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +0 -39
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +13 -8
- data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +35 -6
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +17 -13
- data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +85 -20
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +26 -7
- data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +45 -3
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c +4 -3
- data/src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.h +21 -0
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c +30 -6
- data/src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.h +180 -0
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.c +558 -0
- data/src/core/ext/upb-generated/envoy/data/accesslog/v3/accesslog.upb.h +2710 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +30 -11
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +53 -24
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +30 -5
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +110 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +41 -15
- data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +150 -27
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c +1 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.c +47 -0
- data/src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/pick_first/v3/pick_first.upb.h +93 -0
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +88 -76
- data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +11 -12
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +0 -5
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +162 -160
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +129 -118
- data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +141 -135
- data/src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c +19 -12
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c +38 -30
- data/src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.c +402 -0
- data/src/core/ext/upbdefs-generated/envoy/data/accesslog/v3/accesslog.upbdefs.h +111 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +80 -74
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +63 -47
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +315 -293
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +5 -0
- data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +29 -29
- data/src/core/ext/xds/xds_bootstrap_grpc.cc +33 -30
- data/src/core/ext/xds/xds_bootstrap_grpc.h +5 -13
- data/src/core/ext/xds/xds_client_grpc.cc +11 -6
- data/src/core/ext/xds/xds_client_grpc.h +16 -2
- data/src/core/ext/xds/xds_client_stats.h +10 -0
- data/src/core/ext/xds/xds_cluster.cc +26 -16
- data/src/core/ext/xds/xds_endpoint.cc +4 -7
- data/src/core/ext/xds/xds_health_status.cc +0 -17
- data/src/core/ext/xds/xds_health_status.h +5 -25
- data/src/core/ext/xds/xds_lb_policy_registry.cc +39 -0
- data/src/core/ext/xds/xds_route_config.cc +4 -0
- data/src/core/ext/xds/xds_transport_grpc.cc +1 -3
- data/src/core/lib/address_utils/parse_address.cc +63 -1
- data/src/core/lib/address_utils/parse_address.h +8 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +46 -1
- data/src/core/lib/address_utils/sockaddr_utils.h +2 -2
- data/src/core/lib/channel/channel_args.cc +21 -10
- data/src/core/lib/channel/channel_args.h +3 -0
- data/src/core/lib/channel/connected_channel.cc +4 -1
- data/src/core/lib/channel/promise_based_filter.h +1 -0
- data/src/core/lib/debug/trace.cc +1 -4
- data/src/core/lib/event_engine/cf_engine/cf_engine.cc +2 -1
- data/src/core/lib/event_engine/cf_engine/cf_engine.h +1 -1
- data/src/core/lib/event_engine/event_engine.cc +0 -12
- data/src/core/lib/event_engine/forkable.cc +47 -42
- data/src/core/lib/event_engine/handle_containers.h +0 -4
- data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +4 -6
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +25 -11
- data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +3 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.cc +2 -1
- data/src/core/lib/event_engine/posix_engine/posix_engine.h +8 -12
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +37 -27
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +2 -0
- data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +4 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +42 -2
- data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +6 -0
- data/src/core/lib/event_engine/posix_engine/timer.h +10 -37
- data/src/core/lib/event_engine/tcp_socket_utils.cc +67 -7
- data/src/core/lib/event_engine/tcp_socket_utils.h +3 -0
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.cc +90 -37
- data/src/core/lib/event_engine/thread_pool/work_stealing_thread_pool.h +32 -12
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.cc +12 -21
- data/src/core/lib/event_engine/thready_event_engine/thready_event_engine.h +8 -12
- data/src/core/lib/event_engine/windows/windows_endpoint.cc +55 -54
- data/src/core/lib/event_engine/windows/windows_endpoint.h +15 -12
- data/src/core/lib/event_engine/windows/windows_engine.cc +2 -1
- data/src/core/lib/event_engine/windows/windows_engine.h +8 -12
- data/src/core/lib/experiments/config.cc +60 -22
- data/src/core/lib/experiments/config.h +20 -8
- data/src/core/lib/experiments/experiments.cc +278 -0
- data/src/core/lib/experiments/experiments.h +59 -1
- data/src/core/lib/gprpp/dual_ref_counted.h +9 -9
- data/src/core/lib/gprpp/fork.cc +8 -9
- data/src/core/lib/gprpp/fork.h +6 -5
- data/src/core/lib/gprpp/if_list.h +4530 -0
- data/src/core/lib/gprpp/orphanable.h +3 -3
- data/src/core/lib/gprpp/ref_counted.h +6 -6
- data/src/core/lib/gprpp/sorted_pack.h +3 -12
- data/src/core/lib/gprpp/status_helper.h +16 -15
- data/src/core/lib/gprpp/time.h +12 -0
- data/src/core/lib/gprpp/type_list.h +32 -0
- data/src/core/lib/http/httpcli.h +6 -9
- data/src/core/lib/iomgr/error.cc +32 -2
- data/src/core/lib/iomgr/error.h +9 -10
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -7
- data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
- data/src/core/lib/iomgr/exec_ctx.h +11 -0
- data/src/core/lib/iomgr/pollset.h +4 -5
- data/src/core/lib/iomgr/port.h +10 -0
- data/src/core/lib/iomgr/resolve_address.cc +13 -1
- data/src/core/lib/iomgr/resolve_address.h +17 -3
- data/src/core/lib/iomgr/sockaddr_posix.h +7 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +29 -0
- data/src/core/lib/iomgr/socket_utils_posix.cc +2 -0
- data/src/core/lib/iomgr/socket_utils_posix.h +6 -0
- data/src/core/lib/iomgr/tcp_client_posix.cc +4 -1
- data/src/core/lib/iomgr/tcp_posix.cc +21 -4
- data/src/core/lib/iomgr/tcp_server_posix.cc +3 -2
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -2
- data/src/core/lib/iomgr/tcp_windows.cc +1 -3
- data/src/core/lib/iomgr/vsock.cc +59 -0
- data/src/core/lib/iomgr/vsock.h +38 -0
- data/src/core/lib/iomgr/wakeup_fd_posix.h +3 -6
- data/src/core/lib/load_balancing/delegating_helper.h +115 -0
- data/src/core/lib/load_balancing/lb_policy.h +20 -0
- data/src/core/lib/load_balancing/subchannel_interface.h +6 -0
- data/src/core/lib/promise/party.h +1 -1
- data/src/core/lib/resolver/resolver_factory.h +3 -2
- data/src/core/lib/resolver/server_address.cc +9 -94
- data/src/core/lib/resolver/server_address.h +10 -64
- data/src/core/lib/resource_quota/memory_quota.h +1 -1
- data/src/core/lib/security/credentials/channel_creds_registry.h +51 -27
- data/src/core/lib/security/credentials/channel_creds_registry_init.cc +169 -9
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.h +3 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -1
- data/src/core/lib/security/credentials/external/external_account_credentials.h +6 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +30 -38
- data/src/core/lib/security/credentials/fake/fake_credentials.h +28 -0
- data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
- data/src/core/lib/security/credentials/tls/tls_credentials.h +3 -1
- data/src/core/lib/service_config/service_config_call_data.h +5 -0
- data/src/core/lib/slice/slice.h +16 -0
- data/src/core/lib/surface/call.cc +31 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/metadata_batch.cc +7 -7
- data/src/core/lib/transport/metadata_batch.h +86 -48
- data/src/core/lib/transport/parsed_metadata.h +34 -20
- data/src/core/lib/transport/simple_slice_based_metadata.h +9 -2
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +4 -6
- data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +1 -2
- data/src/core/tsi/ssl_transport_security.cc +28 -7
- data/src/ruby/bin/math_pb.rb +24 -18
- data/src/ruby/ext/grpc/extconf.rb +19 -18
- data/src/ruby/ext/grpc/rb_call.c +62 -39
- data/src/ruby/ext/grpc/rb_call_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_channel.c +126 -49
- data/src/ruby/ext/grpc/rb_channel.h +1 -0
- data/src/ruby/ext/grpc/rb_channel_args.c +16 -2
- data/src/ruby/ext/grpc/rb_channel_args.h +4 -0
- data/src/ruby/ext/grpc/rb_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +0 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +22 -6
- data/src/ruby/ext/grpc/rb_event_thread.h +1 -0
- data/src/ruby/ext/grpc/rb_grpc.c +192 -30
- data/src/ruby/ext/grpc/rb_grpc.h +8 -2
- data/src/ruby/ext/grpc/rb_server.c +62 -45
- data/src/ruby/ext/grpc/rb_server_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_channel_credentials.c +0 -1
- data/src/ruby/ext/grpc/rb_xds_server_credentials.c +0 -1
- data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_pb.rb +24 -13
- data/src/ruby/pb/src/proto/grpc/testing/empty_pb.rb +24 -3
- data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +25 -111
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +25 -2
- data/third_party/boringssl-with-bazel/err_data.c +552 -552
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +34 -1
- data/third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c +4 -1
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/connect.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/fd.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/file.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c +19 -1
- data/third_party/boringssl-with-bazel/src/crypto/chacha/internal.h +8 -1
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf.c +28 -185
- data/third_party/boringssl-with-bazel/src/crypto/conf/conf_def.h +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/conf/internal.h +8 -0
- data/third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c +3 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +49 -46
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_64_adx.c +18 -0
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519_tables.h +2809 -7417
- data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +27 -5
- data/third_party/boringssl-with-bazel/src/crypto/dsa/internal.h +20 -0
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c +110 -72
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c +4 -3
- data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +15 -14
- data/third_party/boringssl-with-bazel/src/crypto/err/err.c +13 -10
- data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +35 -12
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c +3 -7
- data/third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/evp/print.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/ex_data.c +34 -72
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/div.c +12 -5
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/gcd.c +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +12 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +17 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery_inv.c +51 -15
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/rsaz_exp.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/delocate.h +5 -6
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/dh/internal.h +2 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/builtin_curves.h +277 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +180 -404
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +24 -57
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +17 -13
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +33 -71
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +18 -17
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-nistz.c +15 -18
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +9 -11
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +24 -24
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +11 -27
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +4 -4
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +9 -3
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/hkdf/hkdf.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +40 -26
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +21 -7
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +38 -19
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +2 -29
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +55 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +33 -52
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +3 -8
- data/third_party/boringssl-with-bazel/src/crypto/internal.h +198 -79
- data/third_party/boringssl-with-bazel/src/crypto/kyber/kyber.c +5 -4
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +7 -8
- data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +19 -23
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c +3 -3
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +8 -5
- data/third_party/boringssl-with-bazel/src/crypto/pool/internal.h +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +7 -6
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c +6 -12
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/getentropy.c +48 -0
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/{fuchsia.c → ios.c} +8 -8
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_no_threads.c → rand_extra/trusty.c} +15 -19
- data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +41 -19
- data/third_party/boringssl-with-bazel/src/crypto/{refcount_c11.c → refcount.c} +11 -17
- data/third_party/boringssl-with-bazel/src/crypto/stack/stack.c +147 -72
- data/third_party/boringssl-with-bazel/src/crypto/thread_none.c +0 -8
- data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +6 -35
- data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +5 -26
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +14 -18
- data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +54 -143
- data/third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c +7 -13
- data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c +2 -4
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c +8 -12
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +19 -20
- data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +11 -15
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -5
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_name.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +7 -7
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c +2 -3
- data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +4 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +4 -119
- data/third_party/boringssl-with-bazel/src/include/openssl/asm_base.h +207 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +5 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -116
- data/third_party/boringssl-with-bazel/src/include/openssl/bn.h +0 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +6 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/conf.h +5 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +0 -21
- data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +21 -2
- data/third_party/boringssl-with-bazel/src/include/openssl/ec_key.h +19 -6
- data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +11 -7
- data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +13 -14
- data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +0 -61
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +127 -81
- data/third_party/boringssl-with-bazel/src/include/openssl/stack.h +224 -209
- data/third_party/boringssl-with-bazel/src/include/openssl/target.h +154 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/thread.h +1 -29
- data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +4 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +3 -2
- data/third_party/boringssl-with-bazel/src/ssl/extensions.cc +9 -65
- data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +20 -20
- data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +1 -1
- data/third_party/boringssl-with-bazel/src/ssl/internal.h +4 -11
- data/third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc +24 -18
- data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +37 -30
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +125 -26
- data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +2 -3
- data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64_adx.h +691 -0
- data/third_party/upb/upb/collections/map.c +3 -3
- metadata +27 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +0 -42
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.h +0 -64
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +0 -177
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -68
- data/third_party/boringssl-with-bazel/src/crypto/refcount_win.c +0 -89
@@ -53,12 +53,13 @@
|
|
53
53
|
#ifndef OPENSSL_HEADER_ARM_ARCH_H
|
54
54
|
#define OPENSSL_HEADER_ARM_ARCH_H
|
55
55
|
|
56
|
+
#include <openssl/target.h>
|
57
|
+
|
56
58
|
// arm_arch.h contains symbols used by ARM assembly, and the C code that calls
|
57
59
|
// it. It is included as a public header to simplify the build, but is not
|
58
60
|
// intended for external use.
|
59
61
|
|
60
|
-
#if defined(
|
61
|
-
defined(_M_ARM64)
|
62
|
+
#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
|
62
63
|
|
63
64
|
// ARMV7_NEON is true when a NEON unit is present in the current CPU.
|
64
65
|
#define ARMV7_NEON (1 << 0)
|
@@ -97,124 +98,8 @@
|
|
97
98
|
// will be included.
|
98
99
|
#define __ARM_MAX_ARCH__ 8
|
99
100
|
|
100
|
-
// Support macros for
|
101
|
-
// - Armv8.3-A Pointer Authentication and
|
102
|
-
// - Armv8.5-A Branch Target Identification
|
103
|
-
// features which require emitting a .note.gnu.property section with the
|
104
|
-
// appropriate architecture-dependent feature bits set.
|
105
|
-
//
|
106
|
-
// |AARCH64_SIGN_LINK_REGISTER| and |AARCH64_VALIDATE_LINK_REGISTER| expand to
|
107
|
-
// PACIxSP and AUTIxSP, respectively. |AARCH64_SIGN_LINK_REGISTER| should be
|
108
|
-
// used immediately before saving the LR register (x30) to the stack.
|
109
|
-
// |AARCH64_VALIDATE_LINK_REGISTER| should be used immediately after restoring
|
110
|
-
// it. Note |AARCH64_SIGN_LINK_REGISTER|'s modifications to LR must be undone
|
111
|
-
// with |AARCH64_VALIDATE_LINK_REGISTER| before RET. The SP register must also
|
112
|
-
// have the same value at the two points. For example:
|
113
|
-
//
|
114
|
-
// .global f
|
115
|
-
// f:
|
116
|
-
// AARCH64_SIGN_LINK_REGISTER
|
117
|
-
// stp x29, x30, [sp, #-96]!
|
118
|
-
// mov x29, sp
|
119
|
-
// ...
|
120
|
-
// ldp x29, x30, [sp], #96
|
121
|
-
// AARCH64_VALIDATE_LINK_REGISTER
|
122
|
-
// ret
|
123
|
-
//
|
124
|
-
// |AARCH64_VALID_CALL_TARGET| expands to BTI 'c'. Either it, or
|
125
|
-
// |AARCH64_SIGN_LINK_REGISTER|, must be used at every point that may be an
|
126
|
-
// indirect call target. In particular, all symbols exported from a file must
|
127
|
-
// begin with one of these macros. For example, a leaf function that does not
|
128
|
-
// save LR can instead use |AARCH64_VALID_CALL_TARGET|:
|
129
|
-
//
|
130
|
-
// .globl return_zero
|
131
|
-
// return_zero:
|
132
|
-
// AARCH64_VALID_CALL_TARGET
|
133
|
-
// mov x0, #0
|
134
|
-
// ret
|
135
|
-
//
|
136
|
-
// A non-leaf function which does not immediately save LR may need both macros
|
137
|
-
// because |AARCH64_SIGN_LINK_REGISTER| appears late. For example, the function
|
138
|
-
// may jump to an alternate implementation before setting up the stack:
|
139
|
-
//
|
140
|
-
// .globl with_early_jump
|
141
|
-
// with_early_jump:
|
142
|
-
// AARCH64_VALID_CALL_TARGET
|
143
|
-
// cmp x0, #128
|
144
|
-
// b.lt .Lwith_early_jump_128
|
145
|
-
// AARCH64_SIGN_LINK_REGISTER
|
146
|
-
// stp x29, x30, [sp, #-96]!
|
147
|
-
// mov x29, sp
|
148
|
-
// ...
|
149
|
-
// ldp x29, x30, [sp], #96
|
150
|
-
// AARCH64_VALIDATE_LINK_REGISTER
|
151
|
-
// ret
|
152
|
-
//
|
153
|
-
// .Lwith_early_jump_128:
|
154
|
-
// ...
|
155
|
-
// ret
|
156
|
-
//
|
157
|
-
// These annotations are only required with indirect calls. Private symbols that
|
158
|
-
// are only the target of direct calls do not require annotations. Also note
|
159
|
-
// that |AARCH64_VALID_CALL_TARGET| is only valid for indirect calls (BLR), not
|
160
|
-
// indirect jumps (BR). Indirect jumps in assembly are currently not supported
|
161
|
-
// and would require a macro for BTI 'j'.
|
162
|
-
//
|
163
|
-
// Although not necessary, it is safe to use these macros in 32-bit ARM
|
164
|
-
// assembly. This may be used to simplify dual 32-bit and 64-bit files.
|
165
|
-
//
|
166
|
-
// References:
|
167
|
-
// - "ELF for the Arm® 64-bit Architecture"
|
168
|
-
// https://github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst
|
169
|
-
// - "Providing protection for complex software"
|
170
|
-
// https://developer.arm.com/architectures/learn-the-architecture/providing-protection-for-complex-software
|
171
|
-
|
172
|
-
#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1
|
173
|
-
#define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has Branch Target Identification
|
174
|
-
#define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c'
|
175
|
-
#else
|
176
|
-
#define GNU_PROPERTY_AARCH64_BTI 0 // No Branch Target Identification
|
177
|
-
#define AARCH64_VALID_CALL_TARGET
|
178
|
-
#endif
|
179
|
-
|
180
|
-
#if defined(__ARM_FEATURE_PAC_DEFAULT) && \
|
181
|
-
(__ARM_FEATURE_PAC_DEFAULT & 1) == 1 // Signed with A-key
|
182
|
-
#define GNU_PROPERTY_AARCH64_POINTER_AUTH \
|
183
|
-
(1 << 1) // Has Pointer Authentication
|
184
|
-
#define AARCH64_SIGN_LINK_REGISTER hint #25 // PACIASP
|
185
|
-
#define AARCH64_VALIDATE_LINK_REGISTER hint #29 // AUTIASP
|
186
|
-
#elif defined(__ARM_FEATURE_PAC_DEFAULT) && \
|
187
|
-
(__ARM_FEATURE_PAC_DEFAULT & 2) == 2 // Signed with B-key
|
188
|
-
#define GNU_PROPERTY_AARCH64_POINTER_AUTH \
|
189
|
-
(1 << 1) // Has Pointer Authentication
|
190
|
-
#define AARCH64_SIGN_LINK_REGISTER hint #27 // PACIBSP
|
191
|
-
#define AARCH64_VALIDATE_LINK_REGISTER hint #31 // AUTIBSP
|
192
|
-
#else
|
193
|
-
#define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 // No Pointer Authentication
|
194
|
-
#if GNU_PROPERTY_AARCH64_BTI != 0
|
195
|
-
#define AARCH64_SIGN_LINK_REGISTER AARCH64_VALID_CALL_TARGET
|
196
|
-
#else
|
197
|
-
#define AARCH64_SIGN_LINK_REGISTER
|
198
|
-
#endif
|
199
|
-
#define AARCH64_VALIDATE_LINK_REGISTER
|
200
|
-
#endif
|
201
|
-
|
202
|
-
#if GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 || GNU_PROPERTY_AARCH64_BTI != 0
|
203
|
-
.pushsection .note.gnu.property, "a";
|
204
|
-
.balign 8;
|
205
|
-
.long 4;
|
206
|
-
.long 0x10;
|
207
|
-
.long 0x5;
|
208
|
-
.asciz "GNU";
|
209
|
-
.long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */
|
210
|
-
.long 4;
|
211
|
-
.long (GNU_PROPERTY_AARCH64_POINTER_AUTH | GNU_PROPERTY_AARCH64_BTI);
|
212
|
-
.long 0;
|
213
|
-
.popsection;
|
214
|
-
#endif
|
215
|
-
|
216
101
|
#endif // __ASSEMBLER__
|
217
102
|
|
218
|
-
#endif //
|
103
|
+
#endif // ARM || AARCH64
|
219
104
|
|
220
105
|
#endif // OPENSSL_HEADER_ARM_ARCH_H
|
@@ -0,0 +1,207 @@
|
|
1
|
+
/* Copyright (c) 2023, Google Inc.
|
2
|
+
*
|
3
|
+
* Permission to use, copy, modify, and/or distribute this software for any
|
4
|
+
* purpose with or without fee is hereby granted, provided that the above
|
5
|
+
* copyright notice and this permission notice appear in all copies.
|
6
|
+
*
|
7
|
+
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
8
|
+
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
9
|
+
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
10
|
+
* SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
11
|
+
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
12
|
+
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
13
|
+
* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
|
14
|
+
|
15
|
+
#ifndef OPENSSL_HEADER_ASM_BASE_H
|
16
|
+
#define OPENSSL_HEADER_ASM_BASE_H
|
17
|
+
|
18
|
+
#include <openssl/target.h>
|
19
|
+
|
20
|
+
|
21
|
+
// This header contains symbols and common sections used by assembly files. It
|
22
|
+
// is included as a public header to simplify the build, but is not intended for
|
23
|
+
// external use.
|
24
|
+
//
|
25
|
+
// Every assembly file must include this header. Some linker features require
|
26
|
+
// all object files to be tagged with some section metadata. This header file,
|
27
|
+
// when included in assembly, adds that metadata. It also makes defines like
|
28
|
+
// |OPENSSL_X86_64| available and includes the prefixing macros.
|
29
|
+
//
|
30
|
+
// Including this header in an assembly file imples:
|
31
|
+
//
|
32
|
+
// - The file does not require an executable stack.
|
33
|
+
//
|
34
|
+
// - The file, on aarch64, uses the macros defined below to be compatible with
|
35
|
+
// BTI and PAC.
|
36
|
+
//
|
37
|
+
// - The file, on x86_64, requires the program to be compatible with Intel IBT
|
38
|
+
// and SHSTK
|
39
|
+
|
40
|
+
#if defined(__ASSEMBLER__)
|
41
|
+
|
42
|
+
#if defined(BORINGSSL_PREFIX)
|
43
|
+
#include <boringssl_prefix_symbols_asm.h>
|
44
|
+
#endif
|
45
|
+
|
46
|
+
#if defined(__ELF__)
|
47
|
+
// Every ELF object file, even empty ones, should disable executable stacks. See
|
48
|
+
// https://www.airs.com/blog/archives/518.
|
49
|
+
.pushsection .note.GNU-stack, "", %progbits
|
50
|
+
.popsection
|
51
|
+
#endif
|
52
|
+
|
53
|
+
#if defined(__CET__) && defined(OPENSSL_X86_64)
|
54
|
+
// Clang and GCC define __CET__ and provide <cet.h> when they support Intel's
|
55
|
+
// Indirect Branch Tracking.
|
56
|
+
// https://lpc.events/event/7/contributions/729/attachments/496/903/CET-LPC-2020.pdf
|
57
|
+
//
|
58
|
+
// cet.h defines _CET_ENDBR which is used to mark function entry points for IBT.
|
59
|
+
// and adds the assembly marker. The value of _CET_ENDBR is made dependant on if
|
60
|
+
// '-fcf-protection' is passed to the compiler. _CET_ENDBR is only required when
|
61
|
+
// the function is the target of an indirect jump, but BoringSSL chooses to mark
|
62
|
+
// all assembly entry points because it is easier, and allows BoringSSL's ABI
|
63
|
+
// tester to call the assembly entry points via an indirect jump.
|
64
|
+
#include <cet.h>
|
65
|
+
#else
|
66
|
+
#define _CET_ENDBR
|
67
|
+
#endif
|
68
|
+
|
69
|
+
#if defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
|
70
|
+
|
71
|
+
// We require the ARM assembler provide |__ARM_ARCH| from Arm C Language
|
72
|
+
// Extensions (ACLE). This is supported in GCC 4.8+ and Clang 3.2+. MSVC does
|
73
|
+
// not implement ACLE, but we require Clang's assembler on Windows.
|
74
|
+
#if !defined(__ARM_ARCH)
|
75
|
+
#error "ARM assembler must define __ARM_ARCH"
|
76
|
+
#endif
|
77
|
+
|
78
|
+
// __ARM_ARCH__ is used by OpenSSL assembly to determine the minimum target ARM
|
79
|
+
// version.
|
80
|
+
//
|
81
|
+
// TODO(davidben): Switch the assembly to use |__ARM_ARCH| directly.
|
82
|
+
#define __ARM_ARCH__ __ARM_ARCH
|
83
|
+
|
84
|
+
// Even when building for 32-bit ARM, support for aarch64 crypto instructions
|
85
|
+
// will be included.
|
86
|
+
#define __ARM_MAX_ARCH__ 8
|
87
|
+
|
88
|
+
// Support macros for
|
89
|
+
// - Armv8.3-A Pointer Authentication and
|
90
|
+
// - Armv8.5-A Branch Target Identification
|
91
|
+
// features which require emitting a .note.gnu.property section with the
|
92
|
+
// appropriate architecture-dependent feature bits set.
|
93
|
+
//
|
94
|
+
// |AARCH64_SIGN_LINK_REGISTER| and |AARCH64_VALIDATE_LINK_REGISTER| expand to
|
95
|
+
// PACIxSP and AUTIxSP, respectively. |AARCH64_SIGN_LINK_REGISTER| should be
|
96
|
+
// used immediately before saving the LR register (x30) to the stack.
|
97
|
+
// |AARCH64_VALIDATE_LINK_REGISTER| should be used immediately after restoring
|
98
|
+
// it. Note |AARCH64_SIGN_LINK_REGISTER|'s modifications to LR must be undone
|
99
|
+
// with |AARCH64_VALIDATE_LINK_REGISTER| before RET. The SP register must also
|
100
|
+
// have the same value at the two points. For example:
|
101
|
+
//
|
102
|
+
// .global f
|
103
|
+
// f:
|
104
|
+
// AARCH64_SIGN_LINK_REGISTER
|
105
|
+
// stp x29, x30, [sp, #-96]!
|
106
|
+
// mov x29, sp
|
107
|
+
// ...
|
108
|
+
// ldp x29, x30, [sp], #96
|
109
|
+
// AARCH64_VALIDATE_LINK_REGISTER
|
110
|
+
// ret
|
111
|
+
//
|
112
|
+
// |AARCH64_VALID_CALL_TARGET| expands to BTI 'c'. Either it, or
|
113
|
+
// |AARCH64_SIGN_LINK_REGISTER|, must be used at every point that may be an
|
114
|
+
// indirect call target. In particular, all symbols exported from a file must
|
115
|
+
// begin with one of these macros. For example, a leaf function that does not
|
116
|
+
// save LR can instead use |AARCH64_VALID_CALL_TARGET|:
|
117
|
+
//
|
118
|
+
// .globl return_zero
|
119
|
+
// return_zero:
|
120
|
+
// AARCH64_VALID_CALL_TARGET
|
121
|
+
// mov x0, #0
|
122
|
+
// ret
|
123
|
+
//
|
124
|
+
// A non-leaf function which does not immediately save LR may need both macros
|
125
|
+
// because |AARCH64_SIGN_LINK_REGISTER| appears late. For example, the function
|
126
|
+
// may jump to an alternate implementation before setting up the stack:
|
127
|
+
//
|
128
|
+
// .globl with_early_jump
|
129
|
+
// with_early_jump:
|
130
|
+
// AARCH64_VALID_CALL_TARGET
|
131
|
+
// cmp x0, #128
|
132
|
+
// b.lt .Lwith_early_jump_128
|
133
|
+
// AARCH64_SIGN_LINK_REGISTER
|
134
|
+
// stp x29, x30, [sp, #-96]!
|
135
|
+
// mov x29, sp
|
136
|
+
// ...
|
137
|
+
// ldp x29, x30, [sp], #96
|
138
|
+
// AARCH64_VALIDATE_LINK_REGISTER
|
139
|
+
// ret
|
140
|
+
//
|
141
|
+
// .Lwith_early_jump_128:
|
142
|
+
// ...
|
143
|
+
// ret
|
144
|
+
//
|
145
|
+
// These annotations are only required with indirect calls. Private symbols that
|
146
|
+
// are only the target of direct calls do not require annotations. Also note
|
147
|
+
// that |AARCH64_VALID_CALL_TARGET| is only valid for indirect calls (BLR), not
|
148
|
+
// indirect jumps (BR). Indirect jumps in assembly are currently not supported
|
149
|
+
// and would require a macro for BTI 'j'.
|
150
|
+
//
|
151
|
+
// Although not necessary, it is safe to use these macros in 32-bit ARM
|
152
|
+
// assembly. This may be used to simplify dual 32-bit and 64-bit files.
|
153
|
+
//
|
154
|
+
// References:
|
155
|
+
// - "ELF for the Arm® 64-bit Architecture"
|
156
|
+
// https://github.com/ARM-software/abi-aa/blob/master/aaelf64/aaelf64.rst
|
157
|
+
// - "Providing protection for complex software"
|
158
|
+
// https://developer.arm.com/architectures/learn-the-architecture/providing-protection-for-complex-software
|
159
|
+
|
160
|
+
#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1
|
161
|
+
#define GNU_PROPERTY_AARCH64_BTI (1 << 0) // Has Branch Target Identification
|
162
|
+
#define AARCH64_VALID_CALL_TARGET hint #34 // BTI 'c'
|
163
|
+
#else
|
164
|
+
#define GNU_PROPERTY_AARCH64_BTI 0 // No Branch Target Identification
|
165
|
+
#define AARCH64_VALID_CALL_TARGET
|
166
|
+
#endif
|
167
|
+
|
168
|
+
#if defined(__ARM_FEATURE_PAC_DEFAULT) && \
|
169
|
+
(__ARM_FEATURE_PAC_DEFAULT & 1) == 1 // Signed with A-key
|
170
|
+
#define GNU_PROPERTY_AARCH64_POINTER_AUTH \
|
171
|
+
(1 << 1) // Has Pointer Authentication
|
172
|
+
#define AARCH64_SIGN_LINK_REGISTER hint #25 // PACIASP
|
173
|
+
#define AARCH64_VALIDATE_LINK_REGISTER hint #29 // AUTIASP
|
174
|
+
#elif defined(__ARM_FEATURE_PAC_DEFAULT) && \
|
175
|
+
(__ARM_FEATURE_PAC_DEFAULT & 2) == 2 // Signed with B-key
|
176
|
+
#define GNU_PROPERTY_AARCH64_POINTER_AUTH \
|
177
|
+
(1 << 1) // Has Pointer Authentication
|
178
|
+
#define AARCH64_SIGN_LINK_REGISTER hint #27 // PACIBSP
|
179
|
+
#define AARCH64_VALIDATE_LINK_REGISTER hint #31 // AUTIBSP
|
180
|
+
#else
|
181
|
+
#define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 // No Pointer Authentication
|
182
|
+
#if GNU_PROPERTY_AARCH64_BTI != 0
|
183
|
+
#define AARCH64_SIGN_LINK_REGISTER AARCH64_VALID_CALL_TARGET
|
184
|
+
#else
|
185
|
+
#define AARCH64_SIGN_LINK_REGISTER
|
186
|
+
#endif
|
187
|
+
#define AARCH64_VALIDATE_LINK_REGISTER
|
188
|
+
#endif
|
189
|
+
|
190
|
+
#if GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 || GNU_PROPERTY_AARCH64_BTI != 0
|
191
|
+
.pushsection .note.gnu.property, "a";
|
192
|
+
.balign 8;
|
193
|
+
.long 4;
|
194
|
+
.long 0x10;
|
195
|
+
.long 0x5;
|
196
|
+
.asciz "GNU";
|
197
|
+
.long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */
|
198
|
+
.long 4;
|
199
|
+
.long (GNU_PROPERTY_AARCH64_POINTER_AUTH | GNU_PROPERTY_AARCH64_BTI);
|
200
|
+
.long 0;
|
201
|
+
.popsection;
|
202
|
+
#endif
|
203
|
+
#endif // ARM || AARCH64
|
204
|
+
|
205
|
+
#endif // __ASSEMBLER__
|
206
|
+
|
207
|
+
#endif // OPENSSL_HEADER_ASM_BASE_H
|
@@ -1355,6 +1355,11 @@ OPENSSL_EXPORT ASN1_GENERALIZEDTIME *ASN1_TIME_to_generalizedtime(
|
|
1355
1355
|
// GeneralizedTime. If |str| is neither, it returns zero.
|
1356
1356
|
OPENSSL_EXPORT int ASN1_TIME_set_string(ASN1_TIME *s, const char *str);
|
1357
1357
|
|
1358
|
+
// ASN1_TIME_set_string_X509 behaves like |ASN1_TIME_set_string| except it
|
1359
|
+
// additionally converts GeneralizedTime to UTCTime if it is in the range where
|
1360
|
+
// UTCTime is used. See RFC 5280, section 4.1.2.5.
|
1361
|
+
OPENSSL_EXPORT int ASN1_TIME_set_string_X509(ASN1_TIME *s, const char *str);
|
1362
|
+
|
1358
1363
|
// ASN1_TIME_to_time_t converts |t| to a time_t value in |out|. On
|
1359
1364
|
// success, one is returned. On failure zero is returned. This function
|
1360
1365
|
// will fail if the time can not be represented in a time_t.
|
@@ -74,6 +74,7 @@
|
|
74
74
|
// opensslconf.h.
|
75
75
|
#include <openssl/is_boringssl.h>
|
76
76
|
#include <openssl/opensslconf.h>
|
77
|
+
#include <openssl/target.h> // IWYU pragma: export
|
77
78
|
|
78
79
|
#if defined(BORINGSSL_PREFIX)
|
79
80
|
#include <boringssl_prefix_symbols.h>
|
@@ -84,48 +85,7 @@ extern "C" {
|
|
84
85
|
#endif
|
85
86
|
|
86
87
|
|
87
|
-
#if defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64)
|
88
|
-
#define OPENSSL_64_BIT
|
89
|
-
#define OPENSSL_X86_64
|
90
|
-
#elif defined(__x86) || defined(__i386) || defined(__i386__) || defined(_M_IX86)
|
91
|
-
#define OPENSSL_32_BIT
|
92
|
-
#define OPENSSL_X86
|
93
|
-
#elif defined(__AARCH64EL__) || defined(_M_ARM64)
|
94
|
-
#define OPENSSL_64_BIT
|
95
|
-
#define OPENSSL_AARCH64
|
96
|
-
#elif defined(__ARMEL__) || defined(_M_ARM)
|
97
|
-
#define OPENSSL_32_BIT
|
98
|
-
#define OPENSSL_ARM
|
99
|
-
#elif defined(__MIPSEL__) && !defined(__LP64__)
|
100
|
-
#define OPENSSL_32_BIT
|
101
|
-
#define OPENSSL_MIPS
|
102
|
-
#elif defined(__MIPSEL__) && defined(__LP64__)
|
103
|
-
#define OPENSSL_64_BIT
|
104
|
-
#define OPENSSL_MIPS64
|
105
|
-
#elif defined(__riscv) && __SIZEOF_POINTER__ == 8
|
106
|
-
#define OPENSSL_64_BIT
|
107
|
-
#define OPENSSL_RISCV64
|
108
|
-
#elif defined(__riscv) && __SIZEOF_POINTER__ == 4
|
109
|
-
#define OPENSSL_32_BIT
|
110
|
-
#elif defined(__pnacl__)
|
111
|
-
#define OPENSSL_32_BIT
|
112
|
-
#define OPENSSL_PNACL
|
113
|
-
#elif defined(__wasm__)
|
114
|
-
#define OPENSSL_32_BIT
|
115
|
-
#elif defined(__asmjs__)
|
116
|
-
#define OPENSSL_32_BIT
|
117
|
-
#elif defined(__myriad2__)
|
118
|
-
#define OPENSSL_32_BIT
|
119
|
-
#else
|
120
|
-
// Note BoringSSL only supports standard 32-bit and 64-bit two's-complement,
|
121
|
-
// little-endian architectures. Functions will not produce the correct answer
|
122
|
-
// on other systems. Run the crypto_test binary, notably
|
123
|
-
// crypto/compiler_test.cc, before adding a new architecture.
|
124
|
-
#error "Unknown target CPU"
|
125
|
-
#endif
|
126
|
-
|
127
88
|
#if defined(__APPLE__)
|
128
|
-
#define OPENSSL_APPLE
|
129
89
|
// Note |TARGET_OS_MAC| is set for all Apple OS variants. |TARGET_OS_OSX|
|
130
90
|
// targets macOS specifically.
|
131
91
|
#if defined(TARGET_OS_OSX) && TARGET_OS_OSX
|
@@ -136,55 +96,6 @@ extern "C" {
|
|
136
96
|
#endif
|
137
97
|
#endif
|
138
98
|
|
139
|
-
#if defined(_WIN32)
|
140
|
-
#define OPENSSL_WINDOWS
|
141
|
-
#endif
|
142
|
-
|
143
|
-
// Trusty isn't Linux but currently defines __linux__. As a workaround, we
|
144
|
-
// exclude it here.
|
145
|
-
// TODO(b/169780122): Remove this workaround once Trusty no longer defines it.
|
146
|
-
#if defined(__linux__) && !defined(__TRUSTY__)
|
147
|
-
#define OPENSSL_LINUX
|
148
|
-
#endif
|
149
|
-
|
150
|
-
#if defined(__Fuchsia__)
|
151
|
-
#define OPENSSL_FUCHSIA
|
152
|
-
#endif
|
153
|
-
|
154
|
-
#if defined(__TRUSTY__)
|
155
|
-
#define OPENSSL_TRUSTY
|
156
|
-
#define OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED
|
157
|
-
#endif
|
158
|
-
|
159
|
-
#if defined(__ANDROID_API__)
|
160
|
-
#define OPENSSL_ANDROID
|
161
|
-
#endif
|
162
|
-
|
163
|
-
#if defined(__FreeBSD__)
|
164
|
-
#define OPENSSL_FREEBSD
|
165
|
-
#endif
|
166
|
-
|
167
|
-
#if defined(__OpenBSD__)
|
168
|
-
#define OPENSSL_OPENBSD
|
169
|
-
#endif
|
170
|
-
|
171
|
-
// BoringSSL requires platform's locking APIs to make internal global state
|
172
|
-
// thread-safe, including the PRNG. On some single-threaded embedded platforms,
|
173
|
-
// locking APIs may not exist, so this dependency may be disabled with the
|
174
|
-
// following build flag.
|
175
|
-
//
|
176
|
-
// IMPORTANT: Doing so means the consumer promises the library will never be
|
177
|
-
// used in any multi-threaded context. It causes BoringSSL to be globally
|
178
|
-
// thread-unsafe. Setting it inappropriately will subtly and unpredictably
|
179
|
-
// corrupt memory and leak secret keys.
|
180
|
-
//
|
181
|
-
// Do not set this flag on any platform where threads are possible. BoringSSL
|
182
|
-
// maintainers will not provide support for any consumers that do so. Changes
|
183
|
-
// which break such unsupported configurations will not be reverted.
|
184
|
-
#if !defined(OPENSSL_NO_THREADS_CORRUPT_MEMORY_AND_LEAK_SECRETS_IF_THREADED)
|
185
|
-
#define OPENSSL_THREADS
|
186
|
-
#endif
|
187
|
-
|
188
99
|
#define OPENSSL_IS_BORINGSSL
|
189
100
|
#define OPENSSL_VERSION_NUMBER 0x1010107f
|
190
101
|
#define SSLEAY_VERSION_NUMBER OPENSSL_VERSION_NUMBER
|
@@ -197,7 +108,7 @@ extern "C" {
|
|
197
108
|
// A consumer may use this symbol in the preprocessor to temporarily build
|
198
109
|
// against multiple revisions of BoringSSL at the same time. It is not
|
199
110
|
// recommended to do so for longer than is necessary.
|
200
|
-
#define BORINGSSL_API_VERSION
|
111
|
+
#define BORINGSSL_API_VERSION 24
|
201
112
|
|
202
113
|
#if defined(BORINGSSL_SHARED_LIBRARY)
|
203
114
|
|
@@ -311,31 +222,6 @@ extern "C" {
|
|
311
222
|
#define OPENSSL_INLINE static inline OPENSSL_UNUSED
|
312
223
|
#endif
|
313
224
|
|
314
|
-
#if defined(BORINGSSL_UNSAFE_FUZZER_MODE) && \
|
315
|
-
!defined(BORINGSSL_UNSAFE_DETERMINISTIC_MODE)
|
316
|
-
#define BORINGSSL_UNSAFE_DETERMINISTIC_MODE
|
317
|
-
#endif
|
318
|
-
|
319
|
-
#if defined(__has_feature)
|
320
|
-
#if __has_feature(address_sanitizer)
|
321
|
-
#define OPENSSL_ASAN
|
322
|
-
#endif
|
323
|
-
#if __has_feature(thread_sanitizer)
|
324
|
-
#define OPENSSL_TSAN
|
325
|
-
#endif
|
326
|
-
#if __has_feature(memory_sanitizer)
|
327
|
-
#define OPENSSL_MSAN
|
328
|
-
#define OPENSSL_ASM_INCOMPATIBLE
|
329
|
-
#endif
|
330
|
-
#endif
|
331
|
-
|
332
|
-
#if defined(OPENSSL_ASM_INCOMPATIBLE)
|
333
|
-
#undef OPENSSL_ASM_INCOMPATIBLE
|
334
|
-
#if !defined(OPENSSL_NO_ASM)
|
335
|
-
#define OPENSSL_NO_ASM
|
336
|
-
#endif
|
337
|
-
#endif // OPENSSL_ASM_INCOMPATIBLE
|
338
|
-
|
339
225
|
#if defined(__cplusplus)
|
340
226
|
// enums can be predeclared, but only in C++ and only if given an explicit type.
|
341
227
|
// C doesn't support setting an explicit type for enums thus a #define is used
|
@@ -160,14 +160,12 @@ extern "C" {
|
|
160
160
|
typedef uint64_t BN_ULONG;
|
161
161
|
#define BN_BITS2 64
|
162
162
|
#define BN_DEC_FMT1 "%" PRIu64
|
163
|
-
#define BN_DEC_FMT2 "%019" PRIu64
|
164
163
|
#define BN_HEX_FMT1 "%" PRIx64
|
165
164
|
#define BN_HEX_FMT2 "%016" PRIx64
|
166
165
|
#elif defined(OPENSSL_32_BIT)
|
167
166
|
typedef uint32_t BN_ULONG;
|
168
167
|
#define BN_BITS2 32
|
169
168
|
#define BN_DEC_FMT1 "%" PRIu32
|
170
|
-
#define BN_DEC_FMT2 "%09" PRIu32
|
171
169
|
#define BN_HEX_FMT1 "%" PRIx32
|
172
170
|
#define BN_HEX_FMT2 "%08" PRIx32
|
173
171
|
#else
|
@@ -29,6 +29,12 @@ extern "C" {
|
|
29
29
|
// CRYPTO_chacha_20 encrypts |in_len| bytes from |in| with the given key and
|
30
30
|
// nonce and writes the result to |out|. If |in| and |out| alias, they must be
|
31
31
|
// equal. The initial block counter is specified by |counter|.
|
32
|
+
//
|
33
|
+
// This function implements a 32-bit block counter as in RFC 8439. On overflow,
|
34
|
+
// the counter wraps. Reusing a key, nonce, and block counter combination is not
|
35
|
+
// secure, so wrapping is usually a bug in the caller. While it is possible to
|
36
|
+
// wrap without reuse with a large initial block counter, this is not
|
37
|
+
// recommended and may not be portable to other ChaCha20 implementations.
|
32
38
|
OPENSSL_EXPORT void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in,
|
33
39
|
size_t in_len, const uint8_t key[32],
|
34
40
|
const uint8_t nonce[12], uint32_t counter);
|
@@ -77,7 +77,10 @@ extern "C" {
|
|
77
77
|
// [section_name]
|
78
78
|
// key2=value2
|
79
79
|
//
|
80
|
-
// Config files are represented by a |CONF|.
|
80
|
+
// Config files are represented by a |CONF|. Use of this module is strongly
|
81
|
+
// discouraged. It is a remnant of the OpenSSL command-line tool. Parsing an
|
82
|
+
// untrusted input as a config file risks string injection and denial of service
|
83
|
+
// vulnerabilities.
|
81
84
|
|
82
85
|
struct conf_value_st {
|
83
86
|
char *section;
|
@@ -166,5 +169,6 @@ BSSL_NAMESPACE_END
|
|
166
169
|
#define CONF_R_UNABLE_TO_CREATE_NEW_SECTION 104
|
167
170
|
#define CONF_R_VARIABLE_HAS_NO_VALUE 105
|
168
171
|
#define CONF_R_VARIABLE_EXPANSION_TOO_LONG 106
|
172
|
+
#define CONF_R_VARIABLE_EXPANSION_NOT_SUPPORTED 107
|
169
173
|
|
170
174
|
#endif // OPENSSL_HEADER_THREAD_H
|
@@ -62,9 +62,7 @@
|
|
62
62
|
|
63
63
|
#include <openssl/base.h>
|
64
64
|
|
65
|
-
#include <openssl/engine.h>
|
66
65
|
#include <openssl/ex_data.h>
|
67
|
-
#include <openssl/thread.h>
|
68
66
|
|
69
67
|
#if defined(__cplusplus)
|
70
68
|
extern "C" {
|
@@ -398,25 +396,6 @@ OPENSSL_EXPORT DSA *DSA_generate_parameters(int bits, unsigned char *seed,
|
|
398
396
|
void *cb_arg);
|
399
397
|
|
400
398
|
|
401
|
-
struct dsa_st {
|
402
|
-
long version;
|
403
|
-
BIGNUM *p;
|
404
|
-
BIGNUM *q; // == 20
|
405
|
-
BIGNUM *g;
|
406
|
-
|
407
|
-
BIGNUM *pub_key; // y public key
|
408
|
-
BIGNUM *priv_key; // x private key
|
409
|
-
|
410
|
-
int flags;
|
411
|
-
// Normally used to cache montgomery values
|
412
|
-
CRYPTO_MUTEX method_mont_lock;
|
413
|
-
BN_MONT_CTX *method_mont_p;
|
414
|
-
BN_MONT_CTX *method_mont_q;
|
415
|
-
CRYPTO_refcount_t references;
|
416
|
-
CRYPTO_EX_DATA ex_data;
|
417
|
-
};
|
418
|
-
|
419
|
-
|
420
399
|
#if defined(__cplusplus)
|
421
400
|
} // extern C
|
422
401
|
|
@@ -101,8 +101,24 @@ typedef enum {
|
|
101
101
|
|
102
102
|
// Elliptic curve groups.
|
103
103
|
|
104
|
-
//
|
105
|
-
|
104
|
+
// EC_group_p224 returns an |EC_GROUP| for P-224, also known as secp224r1.
|
105
|
+
OPENSSL_EXPORT const EC_GROUP *EC_group_p224(void);
|
106
|
+
|
107
|
+
// EC_group_p256 returns an |EC_GROUP| for P-256, also known as secp256r1 or
|
108
|
+
// prime256v1.
|
109
|
+
OPENSSL_EXPORT const EC_GROUP *EC_group_p256(void);
|
110
|
+
|
111
|
+
// EC_group_p384 returns an |EC_GROUP| for P-384, also known as secp384r1.
|
112
|
+
OPENSSL_EXPORT const EC_GROUP *EC_group_p384(void);
|
113
|
+
|
114
|
+
// EC_group_p521 returns an |EC_GROUP| for P-521, also known as secp521r1.
|
115
|
+
OPENSSL_EXPORT const EC_GROUP *EC_group_p521(void);
|
116
|
+
|
117
|
+
// EC_GROUP_new_by_curve_name returns the |EC_GROUP| object for the elliptic
|
118
|
+
// curve specified by |nid|, or NULL on unsupported NID. For OpenSSL
|
119
|
+
// compatibility, this function returns a non-const pointer which may be passed
|
120
|
+
// to |EC_GROUP_free|. However, the resulting object is actually static and
|
121
|
+
// calling |EC_GROUP_free| is optional.
|
106
122
|
//
|
107
123
|
// The supported NIDs are:
|
108
124
|
// NID_secp224r1 (P-224),
|
@@ -110,6 +126,9 @@ typedef enum {
|
|
110
126
|
// NID_secp384r1 (P-384),
|
111
127
|
// NID_secp521r1 (P-521)
|
112
128
|
//
|
129
|
+
// Calling this function causes all four curves to be linked into the binary.
|
130
|
+
// Prefer calling |EC_group_*| to allow the static linker to drop unused curves.
|
131
|
+
//
|
113
132
|
// If in doubt, use |NID_X9_62_prime256v1|, or see the curve25519.h header for
|
114
133
|
// more modern primitives.
|
115
134
|
OPENSSL_EXPORT EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
|
@@ -259,8 +259,15 @@ OPENSSL_EXPORT int EC_KEY_marshal_private_key(CBB *cbb, const EC_KEY *key,
|
|
259
259
|
unsigned enc_flags);
|
260
260
|
|
261
261
|
// EC_KEY_parse_curve_name parses a DER-encoded OBJECT IDENTIFIER as a curve
|
262
|
-
// name from |cbs| and advances |cbs|. It returns
|
263
|
-
//
|
262
|
+
// name from |cbs| and advances |cbs|. It returns the decoded |EC_GROUP| or NULL
|
263
|
+
// on error.
|
264
|
+
//
|
265
|
+
// This function returns a non-const pointer which may be passed to
|
266
|
+
// |EC_GROUP_free|. However, the resulting object is actually static and calling
|
267
|
+
// |EC_GROUP_free| is optional.
|
268
|
+
//
|
269
|
+
// TODO(davidben): Make this return a const pointer, if it does not break too
|
270
|
+
// many callers.
|
264
271
|
OPENSSL_EXPORT EC_GROUP *EC_KEY_parse_curve_name(CBS *cbs);
|
265
272
|
|
266
273
|
// EC_KEY_marshal_curve_name marshals |group| as a DER-encoded OBJECT IDENTIFIER
|
@@ -269,10 +276,16 @@ OPENSSL_EXPORT EC_GROUP *EC_KEY_parse_curve_name(CBS *cbs);
|
|
269
276
|
OPENSSL_EXPORT int EC_KEY_marshal_curve_name(CBB *cbb, const EC_GROUP *group);
|
270
277
|
|
271
278
|
// EC_KEY_parse_parameters parses a DER-encoded ECParameters structure (RFC
|
272
|
-
// 5480) from |cbs| and advances |cbs|. It returns
|
273
|
-
//
|
274
|
-
//
|
275
|
-
//
|
279
|
+
// 5480) from |cbs| and advances |cbs|. It returns the resulting |EC_GROUP| or
|
280
|
+
// NULL on error. It supports the namedCurve and specifiedCurve options, but use
|
281
|
+
// of specifiedCurve is deprecated. Use |EC_KEY_parse_curve_name| instead.
|
282
|
+
//
|
283
|
+
// This function returns a non-const pointer which may be passed to
|
284
|
+
// |EC_GROUP_free|. However, the resulting object is actually static and calling
|
285
|
+
// |EC_GROUP_free| is optional.
|
286
|
+
//
|
287
|
+
// TODO(davidben): Make this return a const pointer, if it does not break too
|
288
|
+
// many callers.
|
276
289
|
OPENSSL_EXPORT EC_GROUP *EC_KEY_parse_parameters(CBS *cbs);
|
277
290
|
|
278
291
|
|