grpc 1.9.1 → 1.10.0.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2654 -953
- data/etc/roots.pem +282 -683
- data/include/grpc/compression.h +9 -26
- data/include/grpc/grpc.h +10 -24
- data/include/grpc/grpc_security.h +7 -1
- data/include/grpc/impl/codegen/compression_types.h +5 -62
- data/include/grpc/impl/codegen/grpc_types.h +10 -6
- data/include/grpc/module.modulemap +1 -10
- data/include/grpc/support/alloc.h +3 -2
- data/include/grpc/support/log.h +1 -2
- data/{src/core/lib/gpr/thd_internal.h → include/grpc/support/thd_id.h} +23 -9
- data/src/boringssl/err_data.c +550 -496
- data/src/core/ext/census/grpc_context.cc +2 -1
- data/src/core/ext/filters/client_channel/backup_poller.cc +5 -4
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -7
- data/src/core/ext/filters/client_channel/client_channel.cc +162 -172
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +4 -2
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +18 -14
- data/src/core/ext/filters/client_channel/http_proxy.cc +3 -1
- data/src/core/ext/filters/client_channel/lb_policy.cc +21 -105
- data/src/core/ext/filters/client_channel/lb_policy.h +166 -170
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +41 -36
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +1452 -1459
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +7 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +27 -27
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +279 -304
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +358 -330
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +30 -41
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +7 -14
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +8 -21
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +23 -27
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +58 -33
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +25 -12
- data/src/core/ext/filters/client_channel/parse_address.cc +10 -8
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -2
- data/src/core/ext/filters/client_channel/resolver.cc +6 -52
- data/src/core/ext/filters/client_channel/resolver.h +98 -55
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +266 -237
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +31 -27
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +244 -207
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +161 -148
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +47 -31
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +126 -126
- data/src/core/ext/filters/client_channel/resolver_factory.h +33 -32
- data/src/core/ext/filters/client_channel/resolver_registry.cc +110 -90
- data/src/core/ext/filters/client_channel/resolver_registry.h +49 -36
- data/src/core/ext/filters/client_channel/retry_throttle.cc +29 -22
- data/src/core/ext/filters/client_channel/subchannel.cc +173 -173
- data/src/core/ext/filters/client_channel/subchannel.h +38 -45
- data/src/core/ext/filters/client_channel/subchannel_index.cc +44 -40
- data/src/core/ext/filters/client_channel/uri_parser.cc +3 -3
- data/src/core/ext/filters/deadline/deadline_filter.cc +27 -18
- data/src/core/ext/filters/http/client/http_client_filter.cc +26 -23
- data/src/core/ext/filters/http/http_filters_plugin.cc +3 -2
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +78 -110
- data/src/core/ext/filters/http/server/http_server_filter.cc +29 -26
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +9 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +2 -1
- data/src/core/ext/filters/max_age/max_age_filter.cc +14 -14
- data/src/core/ext/filters/message_size/message_size_filter.cc +20 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -4
- data/src/core/ext/filters/workarounds/workaround_utils.cc +4 -4
- data/src/core/ext/transport/chttp2/alpn/alpn.cc +2 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +10 -10
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +4 -4
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +11 -12
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +16 -13
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +36 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +3 -0
- data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +17 -14
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +139 -145
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +16 -14
- data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +35 -33
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +27 -25
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +12 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +16 -15
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +11 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +23 -22
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +35 -35
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +10 -7
- data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
- data/src/core/ext/transport/chttp2/transport/internal.h +1 -1
- data/src/core/ext/transport/chttp2/transport/parsing.cc +35 -39
- data/src/core/ext/transport/chttp2/transport/stream_map.cc +8 -7
- data/src/core/ext/transport/chttp2/transport/varint.cc +5 -5
- data/src/core/ext/transport/chttp2/transport/writing.cc +18 -18
- data/src/core/ext/transport/inproc/inproc_transport.cc +43 -23
- data/src/core/lib/{gpr → avl}/avl.cc +61 -57
- data/{include/grpc/support → src/core/lib/avl}/avl.h +25 -35
- data/src/core/lib/backoff/backoff.cc +6 -5
- data/src/core/lib/channel/channel_args.cc +23 -109
- data/src/core/lib/channel/channel_args.h +5 -31
- data/src/core/lib/channel/channel_stack.cc +11 -8
- data/src/core/lib/channel/channel_stack_builder.cc +10 -7
- data/src/core/lib/channel/connected_channel.cc +18 -17
- data/src/core/lib/channel/handshaker.cc +8 -8
- data/src/core/lib/channel/handshaker_registry.cc +3 -2
- data/src/core/lib/compression/algorithm_metadata.h +13 -6
- data/src/core/lib/compression/compression.cc +72 -183
- data/src/core/lib/compression/compression_internal.cc +274 -0
- data/src/core/lib/compression/compression_internal.h +86 -0
- data/src/core/lib/compression/message_compress.cc +15 -15
- data/src/core/lib/compression/message_compress.h +4 -3
- data/src/core/lib/compression/stream_compression_gzip.cc +8 -8
- data/src/core/lib/compression/stream_compression_identity.cc +1 -1
- data/src/core/lib/debug/stats.cc +10 -8
- data/src/core/lib/debug/stats_data.cc +2 -1
- data/src/core/lib/debug/trace.cc +3 -3
- data/src/core/lib/gpr/alloc.cc +7 -11
- data/src/core/lib/gpr/arena.cc +34 -12
- data/src/core/lib/gpr/atm.cc +2 -1
- data/src/core/lib/gpr/cpu_linux.cc +3 -3
- data/src/core/lib/gpr/cpu_posix.cc +2 -1
- data/src/core/lib/gpr/env.h +1 -1
- data/src/core/lib/gpr/env_linux.cc +1 -1
- data/src/core/lib/gpr/env_windows.cc +4 -4
- data/src/core/lib/gpr/fork.cc +16 -2
- data/src/core/lib/gpr/host_port.cc +5 -4
- data/{include/grpc/support → src/core/lib/gpr}/host_port.h +5 -13
- data/src/core/lib/gpr/log.cc +5 -4
- data/src/core/lib/gpr/log_linux.cc +1 -1
- data/src/core/lib/gpr/mpscq.cc +1 -0
- data/src/core/lib/gpr/murmur_hash.cc +4 -4
- data/src/core/lib/gpr/string.cc +19 -16
- data/src/core/lib/gpr/string_posix.cc +3 -3
- data/src/core/lib/gpr/sync_posix.cc +5 -9
- data/src/core/lib/gpr/thd.cc +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/thd.h +20 -28
- data/src/core/lib/gpr/thd_posix.cc +6 -4
- data/src/core/lib/gpr/thd_windows.cc +3 -1
- data/src/core/lib/gpr/time.cc +6 -4
- data/src/core/lib/gpr/time_posix.cc +2 -2
- data/{include/grpc/support → src/core/lib/gpr}/tls.h +6 -6
- data/{include/grpc/support → src/core/lib/gpr}/tls_gcc.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/tls_msvc.h +3 -3
- data/src/core/lib/gpr/tls_pthread.cc +1 -1
- data/{include/grpc/support → src/core/lib/gpr}/tls_pthread.h +3 -3
- data/{include/grpc/support → src/core/lib/gpr}/useful.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/abstract.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic.h +5 -5
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_atm.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/atomic_with_std.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/debug_location.h +3 -3
- data/src/core/lib/{gpr++ → gprpp}/inlined_vector.h +44 -22
- data/src/core/lib/{gpr++ → gprpp}/manual_constructor.h +2 -2
- data/src/core/lib/{gpr++ → gprpp}/memory.h +14 -5
- data/src/core/lib/{gpr++ → gprpp}/orphanable.h +39 -14
- data/src/core/lib/{gpr++ → gprpp}/ref_counted.h +42 -10
- data/src/core/lib/{gpr++ → gprpp}/ref_counted_ptr.h +18 -8
- data/src/core/lib/http/format_request.cc +3 -3
- data/src/core/lib/http/httpcli.cc +6 -7
- data/src/core/lib/http/httpcli_security_connector.cc +10 -10
- data/src/core/lib/http/parser.cc +16 -12
- data/src/core/lib/iomgr/call_combiner.cc +12 -13
- data/src/core/lib/iomgr/closure.h +4 -6
- data/src/core/lib/iomgr/combiner.cc +10 -21
- data/src/core/lib/iomgr/error.cc +50 -55
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +41 -52
- data/src/core/lib/iomgr/ev_epollex_linux.cc +80 -28
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +23 -30
- data/src/core/lib/iomgr/ev_poll_posix.cc +52 -46
- data/src/core/lib/iomgr/ev_posix.cc +47 -6
- data/src/core/lib/iomgr/exec_ctx.cc +10 -10
- data/src/core/lib/iomgr/exec_ctx.h +1 -1
- data/src/core/lib/iomgr/executor.cc +16 -13
- data/src/core/lib/iomgr/fork_posix.cc +1 -3
- data/src/core/lib/iomgr/gethostname_host_name_max.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +1 -2
- data/src/core/lib/iomgr/iomgr.cc +2 -2
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -0
- data/src/core/lib/iomgr/iomgr_uv.h +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +5 -4
- data/src/core/lib/iomgr/load_file.cc +3 -3
- data/src/core/lib/iomgr/pollset_windows.cc +1 -1
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -9
- data/src/core/lib/iomgr/resolve_address_uv.cc +2 -2
- data/src/core/lib/iomgr/resolve_address_windows.cc +3 -2
- data/src/core/lib/iomgr/resource_quota.cc +36 -34
- data/src/core/lib/iomgr/sockaddr_utils.cc +39 -23
- data/src/core/lib/iomgr/socket_factory_posix.cc +5 -5
- data/src/core/lib/iomgr/socket_mutator.cc +7 -7
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -4
- data/src/core/lib/iomgr/socket_utils_linux.cc +3 -2
- data/src/core/lib/iomgr/tcp_client_posix.cc +7 -6
- data/src/core/lib/iomgr/tcp_client_windows.cc +0 -1
- data/src/core/lib/iomgr/tcp_posix.cc +47 -55
- data/src/core/lib/iomgr/tcp_server_posix.cc +12 -10
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -5
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -3
- data/src/core/lib/iomgr/tcp_windows.cc +1 -1
- data/src/core/lib/iomgr/timer_generic.cc +16 -14
- data/src/core/lib/iomgr/timer_heap.cc +8 -7
- data/src/core/lib/iomgr/timer_manager.cc +4 -3
- data/src/core/lib/iomgr/udp_server.cc +24 -16
- data/src/core/lib/iomgr/unix_sockets_posix.cc +15 -10
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +6 -5
- data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +1 -2
- data/src/core/lib/json/json.cc +1 -1
- data/src/core/lib/json/json_reader.cc +8 -6
- data/src/core/lib/json/json_string.cc +19 -18
- data/src/core/lib/json/json_writer.cc +10 -8
- data/src/core/lib/profiling/basic_timers.cc +1 -1
- data/src/core/lib/profiling/timers.h +3 -20
- data/src/core/lib/security/context/security_context.cc +16 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +17 -14
- data/src/core/lib/security/credentials/credentials.cc +9 -8
- data/src/core/lib/security/credentials/credentials.h +1 -1
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +12 -13
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +7 -4
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +5 -3
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -3
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -7
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +21 -18
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +23 -18
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +11 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +22 -21
- data/src/core/lib/security/{transport → security_connector}/security_connector.cc +46 -43
- data/src/core/lib/security/{transport → security_connector}/security_connector.h +3 -3
- data/src/core/lib/security/transport/client_auth_filter.cc +32 -34
- data/src/core/lib/security/transport/lb_targets_info.cc +7 -5
- data/src/core/lib/security/transport/secure_endpoint.cc +21 -21
- data/src/core/lib/security/transport/security_handshaker.cc +19 -18
- data/src/core/lib/security/transport/security_handshaker.h +1 -1
- data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
- data/src/core/lib/slice/b64.cc +19 -16
- data/src/core/lib/slice/percent_encoding.cc +5 -5
- data/src/core/lib/slice/slice.cc +35 -33
- data/src/core/lib/slice/slice_buffer.cc +16 -14
- data/src/core/lib/slice/slice_hash_table.cc +3 -2
- data/src/core/lib/slice/slice_intern.cc +21 -25
- data/src/core/lib/slice/slice_string_helpers.cc +45 -9
- data/src/core/lib/slice/slice_string_helpers.h +6 -0
- data/src/core/lib/surface/byte_buffer.cc +2 -2
- data/src/core/lib/surface/byte_buffer_reader.cc +6 -3
- data/src/core/lib/surface/call.cc +171 -260
- data/src/core/lib/surface/call_test_only.h +1 -13
- data/src/core/lib/surface/channel.cc +20 -43
- data/src/core/lib/surface/channel_init.cc +7 -7
- data/src/core/lib/surface/channel_ping.cc +2 -2
- data/src/core/lib/surface/completion_queue.cc +69 -75
- data/src/core/lib/surface/init.cc +4 -5
- data/src/core/lib/surface/init_secure.cc +1 -1
- data/src/core/lib/surface/lame_client.cc +1 -1
- data/src/core/lib/surface/server.cc +64 -59
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +6 -5
- data/src/core/lib/transport/byte_stream.cc +23 -14
- data/src/core/lib/transport/byte_stream.h +1 -1
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/error_utils.cc +10 -7
- data/src/core/lib/transport/metadata.cc +27 -26
- data/src/core/lib/transport/metadata.h +1 -1
- data/src/core/lib/transport/pid_controller.cc +2 -1
- data/src/core/lib/transport/service_config.cc +5 -5
- data/src/core/lib/transport/static_metadata.cc +225 -222
- data/src/core/lib/transport/static_metadata.h +77 -76
- data/src/core/lib/transport/timeout_encoding.cc +3 -2
- data/src/core/lib/transport/transport.cc +6 -5
- data/src/core/lib/transport/transport_op_string.cc +0 -1
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
- data/src/core/tsi/alts_transport_security.cc +61 -0
- data/src/core/tsi/{gts_transport_security.h → alts_transport_security.h} +16 -8
- data/src/core/tsi/fake_transport_security.cc +59 -43
- data/src/core/tsi/ssl_transport_security.cc +122 -107
- data/src/core/tsi/transport_security.cc +3 -3
- data/src/core/tsi/transport_security_adapter.cc +16 -10
- data/src/ruby/bin/apis/pubsub_demo.rb +1 -1
- data/src/ruby/ext/grpc/rb_channel.c +3 -4
- data/src/ruby/ext/grpc/rb_compression_options.c +13 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -76
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +8 -120
- data/src/ruby/ext/grpc/rb_server.c +52 -28
- data/src/ruby/lib/grpc/generic/rpc_server.rb +7 -4
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/test/client.rb +1 -1
- data/src/ruby/pb/test/server.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +4 -2
- data/src/ruby/spec/generic/active_call_spec.rb +2 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +32 -8
- data/src/ruby/spec/server_spec.rb +26 -7
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +7 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +15 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +1 -1
- data/third_party/boringssl/crypto/asn1/a_print.c +0 -28
- data/third_party/boringssl/crypto/asn1/a_strnid.c +3 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +17 -9
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -1
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +5 -49
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +1 -1
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +9 -9
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +0 -6
- data/third_party/boringssl/crypto/asn1/time_support.c +5 -5
- data/third_party/boringssl/crypto/base64/base64.c +65 -43
- data/third_party/boringssl/crypto/bio/bio.c +134 -110
- data/third_party/boringssl/crypto/bio/bio_mem.c +9 -9
- data/third_party/boringssl/crypto/bio/connect.c +17 -17
- data/third_party/boringssl/crypto/bio/fd.c +2 -1
- data/third_party/boringssl/crypto/bio/file.c +14 -14
- data/third_party/boringssl/crypto/bio/hexdump.c +15 -16
- data/third_party/boringssl/crypto/bio/internal.h +14 -14
- data/third_party/boringssl/crypto/bio/pair.c +45 -45
- data/third_party/boringssl/crypto/bio/printf.c +6 -10
- data/third_party/boringssl/crypto/{bn → bn_extra}/bn_asn1.c +9 -9
- data/third_party/boringssl/crypto/{bn → bn_extra}/convert.c +18 -223
- data/third_party/boringssl/crypto/buf/buf.c +20 -44
- data/third_party/boringssl/crypto/bytestring/ber.c +35 -35
- data/third_party/boringssl/crypto/bytestring/cbb.c +24 -24
- data/third_party/boringssl/crypto/bytestring/cbs.c +33 -37
- data/third_party/boringssl/crypto/bytestring/internal.h +38 -38
- data/third_party/boringssl/crypto/chacha/chacha.c +7 -7
- data/third_party/boringssl/crypto/{asn1/t_bitst.c → cipher_extra/cipher_extra.c} +49 -38
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/derive_key.c +0 -2
- data/third_party/boringssl/crypto/cipher_extra/e_aesctrhmac.c +281 -0
- data/third_party/boringssl/crypto/cipher_extra/e_aesgcmsiv.c +867 -0
- data/third_party/boringssl/crypto/cipher_extra/e_chacha20poly1305.c +326 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_null.c +0 -1
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc2.c +22 -10
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_rc4.c +0 -0
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_ssl3.c +120 -64
- data/third_party/boringssl/crypto/{cipher → cipher_extra}/e_tls.c +220 -141
- data/third_party/boringssl/crypto/{asn1/x_bignum.c → cipher_extra/internal.h} +61 -86
- data/third_party/boringssl/crypto/cipher_extra/tls_cbc.c +482 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +20 -20
- data/third_party/boringssl/crypto/conf/conf.c +32 -20
- data/third_party/boringssl/crypto/conf/internal.h +3 -3
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +5 -5
- data/third_party/boringssl/crypto/cpu-arm-linux.c +44 -41
- data/third_party/boringssl/crypto/cpu-intel.c +68 -43
- data/third_party/boringssl/crypto/cpu-ppc64le.c +5 -7
- data/third_party/boringssl/crypto/crypto.c +54 -32
- data/third_party/boringssl/crypto/curve25519/curve25519.c +269 -269
- data/third_party/boringssl/crypto/curve25519/internal.h +28 -8
- data/third_party/boringssl/crypto/curve25519/spake25519.c +180 -106
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +9 -9
- data/third_party/boringssl/crypto/dh/check.c +33 -34
- data/third_party/boringssl/crypto/dh/dh.c +72 -36
- data/third_party/boringssl/crypto/dh/dh_asn1.c +1 -1
- data/third_party/boringssl/crypto/dh/params.c +1 -161
- data/third_party/boringssl/crypto/digest_extra/digest_extra.c +240 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +127 -87
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +1 -1
- data/third_party/boringssl/crypto/{ec → ec_extra}/ec_asn1.c +83 -70
- data/third_party/boringssl/crypto/ecdh/ecdh.c +1 -1
- data/third_party/boringssl/crypto/{ecdsa → ecdsa_extra}/ecdsa_asn1.c +86 -31
- data/third_party/boringssl/crypto/engine/engine.c +6 -6
- data/third_party/boringssl/crypto/err/err.c +197 -106
- data/third_party/boringssl/crypto/err/internal.h +58 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +86 -14
- data/third_party/boringssl/crypto/evp/evp.c +6 -11
- data/third_party/boringssl/crypto/evp/evp_asn1.c +17 -17
- data/third_party/boringssl/crypto/evp/evp_ctx.c +15 -11
- data/third_party/boringssl/crypto/evp/internal.h +66 -51
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +11 -11
- data/third_party/boringssl/crypto/evp/p_ec.c +10 -8
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +11 -12
- data/third_party/boringssl/crypto/evp/p_ed25519.c +71 -0
- data/third_party/boringssl/crypto/evp/p_ed25519_asn1.c +190 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +50 -95
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +28 -18
- data/third_party/boringssl/crypto/evp/pbkdf.c +49 -56
- data/third_party/boringssl/crypto/evp/print.c +5 -36
- data/third_party/boringssl/crypto/evp/scrypt.c +209 -0
- data/third_party/boringssl/crypto/ex_data.c +15 -45
- data/third_party/boringssl/crypto/fipsmodule/aes/internal.h +100 -0
- data/third_party/boringssl/crypto/fipsmodule/bcm.c +679 -0
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/internal.h +40 -27
- data/third_party/boringssl/crypto/{bn → fipsmodule/bn}/rsaz_exp.h +0 -0
- data/third_party/boringssl/crypto/{cipher → fipsmodule/cipher}/internal.h +34 -67
- data/third_party/boringssl/crypto/fipsmodule/delocate.h +88 -0
- data/third_party/boringssl/crypto/{des → fipsmodule/des}/internal.h +18 -4
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/internal.h +18 -18
- data/third_party/boringssl/crypto/{digest → fipsmodule/digest}/md32_common.h +58 -64
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/internal.h +58 -52
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64-table.h +11 -11
- data/third_party/boringssl/crypto/{ec → fipsmodule/ec}/p256-x86_64.h +32 -32
- data/third_party/boringssl/crypto/{rand/internal.h → fipsmodule/is_fips.c} +10 -15
- data/third_party/boringssl/crypto/{modes → fipsmodule/modes}/internal.h +112 -119
- data/third_party/boringssl/crypto/fipsmodule/rand/internal.h +92 -0
- data/third_party/boringssl/crypto/{rsa → fipsmodule/rsa}/internal.h +36 -49
- data/third_party/boringssl/crypto/hkdf/hkdf.c +6 -6
- data/third_party/boringssl/crypto/internal.h +301 -233
- data/third_party/boringssl/crypto/lhash/lhash.c +26 -45
- data/third_party/boringssl/crypto/mem.c +76 -33
- data/third_party/boringssl/crypto/obj/obj.c +44 -28
- data/third_party/boringssl/crypto/obj/obj_dat.h +102 -34
- data/third_party/boringssl/crypto/obj/obj_xref.c +6 -6
- data/third_party/boringssl/crypto/pem/pem_info.c +3 -5
- data/third_party/boringssl/crypto/pem/pem_lib.c +1 -6
- data/third_party/boringssl/crypto/pem/pem_pk8.c +1 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +1 -1
- data/third_party/boringssl/crypto/pem/pem_xaux.c +0 -2
- data/third_party/boringssl/crypto/pkcs7/internal.h +49 -0
- data/third_party/boringssl/crypto/pkcs7/pkcs7.c +166 -0
- data/third_party/boringssl/crypto/{x509/pkcs7.c → pkcs7/pkcs7_x509.c} +27 -147
- data/third_party/boringssl/crypto/pkcs8/internal.h +34 -16
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +120 -39
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +144 -857
- data/third_party/boringssl/crypto/pkcs8/pkcs8_x509.c +789 -0
- data/third_party/boringssl/crypto/poly1305/internal.h +4 -3
- data/third_party/boringssl/crypto/poly1305/poly1305.c +14 -14
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +11 -11
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +41 -41
- data/third_party/boringssl/crypto/pool/internal.h +2 -2
- data/third_party/boringssl/crypto/pool/pool.c +15 -15
- data/third_party/boringssl/crypto/{rand → rand_extra}/deterministic.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/forkunsafe.c +46 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/fuchsia.c +7 -7
- data/third_party/boringssl/crypto/rand_extra/rand_extra.c +70 -0
- data/third_party/boringssl/crypto/{rand → rand_extra}/windows.c +5 -5
- data/third_party/boringssl/crypto/refcount_c11.c +2 -2
- data/third_party/boringssl/crypto/refcount_lock.c +1 -1
- data/third_party/boringssl/crypto/{rsa → rsa_extra}/rsa_asn1.c +12 -120
- data/third_party/boringssl/crypto/stack/stack.c +13 -13
- data/third_party/boringssl/crypto/thread_none.c +1 -1
- data/third_party/boringssl/crypto/thread_pthread.c +1 -1
- data/third_party/boringssl/crypto/thread_win.c +40 -40
- data/third_party/boringssl/crypto/x509/a_sign.c +5 -12
- data/third_party/boringssl/crypto/x509/a_verify.c +6 -18
- data/third_party/boringssl/crypto/x509/algorithm.c +22 -6
- data/third_party/boringssl/crypto/x509/asn1_gen.c +30 -7
- data/third_party/boringssl/crypto/x509/by_dir.c +2 -2
- data/third_party/boringssl/crypto/x509/by_file.c +2 -2
- data/third_party/boringssl/crypto/x509/rsa_pss.c +5 -5
- data/third_party/boringssl/crypto/x509/t_x509.c +2 -1
- data/third_party/boringssl/crypto/x509/x509_def.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +35 -4
- data/third_party/boringssl/crypto/x509/x509_set.c +10 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +20 -17
- data/third_party/boringssl/crypto/x509/x_name.c +13 -16
- data/third_party/boringssl/crypto/x509/x_x509.c +3 -3
- data/third_party/boringssl/crypto/x509/x_x509a.c +0 -7
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +8 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +0 -9
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +1 -1
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +25 -15
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +21 -11
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +9 -3
- data/third_party/boringssl/crypto/x509v3/v3_info.c +22 -14
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +27 -11
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +0 -33
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +4 -4
- data/third_party/boringssl/include/openssl/aead.h +280 -191
- data/third_party/boringssl/include/openssl/aes.h +50 -50
- data/third_party/boringssl/include/openssl/arm_arch.h +12 -12
- data/third_party/boringssl/include/openssl/asn1.h +14 -77
- data/third_party/boringssl/include/openssl/asn1t.h +11 -15
- data/third_party/boringssl/include/openssl/base.h +78 -51
- data/third_party/boringssl/include/openssl/base64.h +68 -68
- data/third_party/boringssl/include/openssl/bio.h +472 -406
- data/third_party/boringssl/include/openssl/blowfish.h +1 -1
- data/third_party/boringssl/include/openssl/bn.h +454 -435
- data/third_party/boringssl/include/openssl/buf.h +27 -27
- data/third_party/boringssl/include/openssl/bytestring.h +282 -267
- data/third_party/boringssl/include/openssl/cast.h +2 -2
- data/third_party/boringssl/include/openssl/chacha.h +5 -5
- data/third_party/boringssl/include/openssl/cipher.h +209 -200
- data/third_party/boringssl/include/openssl/cmac.h +27 -27
- data/third_party/boringssl/include/openssl/conf.h +49 -46
- data/third_party/boringssl/include/openssl/cpu.h +60 -45
- data/third_party/boringssl/include/openssl/crypto.h +59 -35
- data/third_party/boringssl/include/openssl/curve25519.h +97 -92
- data/third_party/boringssl/include/openssl/des.h +25 -25
- data/third_party/boringssl/include/openssl/dh.h +98 -97
- data/third_party/boringssl/include/openssl/digest.h +143 -114
- data/third_party/boringssl/include/openssl/dsa.h +217 -202
- data/third_party/boringssl/include/openssl/ec.h +132 -131
- data/third_party/boringssl/include/openssl/ec_key.h +132 -128
- data/third_party/boringssl/include/openssl/ecdh.h +9 -9
- data/third_party/boringssl/include/openssl/ecdsa.h +66 -66
- data/third_party/boringssl/include/openssl/engine.h +38 -38
- data/third_party/boringssl/include/openssl/err.h +189 -219
- data/third_party/boringssl/include/openssl/evp.h +473 -397
- data/third_party/boringssl/include/openssl/ex_data.h +46 -56
- data/third_party/boringssl/include/openssl/hkdf.h +17 -17
- data/third_party/boringssl/include/openssl/hmac.h +55 -43
- data/third_party/boringssl/include/openssl/is_boringssl.h +16 -0
- data/third_party/boringssl/include/openssl/lhash.h +67 -67
- data/third_party/boringssl/include/openssl/lhash_macros.h +4 -4
- data/third_party/boringssl/include/openssl/md4.h +14 -14
- data/third_party/boringssl/include/openssl/md5.h +14 -14
- data/third_party/boringssl/include/openssl/mem.h +39 -33
- data/third_party/boringssl/include/openssl/nid.h +43 -0
- data/third_party/boringssl/include/openssl/obj.h +93 -87
- data/third_party/boringssl/include/openssl/opensslconf.h +8 -1
- data/third_party/boringssl/include/openssl/pem.h +2 -122
- data/third_party/boringssl/include/openssl/pkcs7.h +68 -2
- data/third_party/boringssl/include/openssl/pkcs8.h +81 -66
- data/third_party/boringssl/include/openssl/poly1305.h +11 -11
- data/third_party/boringssl/include/openssl/pool.h +29 -25
- data/third_party/boringssl/include/openssl/rand.h +48 -45
- data/third_party/boringssl/include/openssl/rc4.h +9 -9
- data/third_party/boringssl/include/openssl/ripemd.h +13 -13
- data/third_party/boringssl/include/openssl/rsa.h +371 -340
- data/third_party/boringssl/include/openssl/sha.h +71 -71
- data/third_party/boringssl/include/openssl/span.h +191 -0
- data/third_party/boringssl/include/openssl/ssl.h +2639 -2519
- data/third_party/boringssl/include/openssl/ssl3.h +39 -122
- data/third_party/boringssl/include/openssl/stack.h +355 -164
- data/third_party/boringssl/include/openssl/thread.h +43 -43
- data/third_party/boringssl/include/openssl/tls1.h +60 -63
- data/third_party/boringssl/include/openssl/type_check.h +10 -14
- data/third_party/boringssl/include/openssl/x509.h +41 -116
- data/third_party/boringssl/include/openssl/x509_vfy.h +17 -25
- data/third_party/boringssl/include/openssl/x509v3.h +27 -21
- data/third_party/boringssl/ssl/{bio_ssl.c → bio_ssl.cc} +9 -5
- data/third_party/boringssl/ssl/{custom_extensions.c → custom_extensions.cc} +19 -12
- data/third_party/boringssl/ssl/{d1_both.c → d1_both.cc} +224 -193
- data/third_party/boringssl/ssl/{d1_lib.c → d1_lib.cc} +86 -79
- data/third_party/boringssl/ssl/{d1_pkt.c → d1_pkt.cc} +55 -87
- data/third_party/boringssl/ssl/{d1_srtp.c → d1_srtp.cc} +12 -16
- data/third_party/boringssl/ssl/{dtls_method.c → dtls_method.cc} +33 -50
- data/third_party/boringssl/ssl/{dtls_record.c → dtls_record.cc} +76 -64
- data/third_party/boringssl/ssl/handshake.cc +547 -0
- data/third_party/boringssl/ssl/handshake_client.cc +1828 -0
- data/third_party/boringssl/ssl/handshake_server.cc +1672 -0
- data/third_party/boringssl/ssl/internal.h +2027 -1280
- data/third_party/boringssl/ssl/s3_both.cc +603 -0
- data/third_party/boringssl/ssl/{s3_lib.c → s3_lib.cc} +22 -10
- data/third_party/boringssl/ssl/{s3_pkt.c → s3_pkt.cc} +171 -75
- data/third_party/boringssl/ssl/ssl_aead_ctx.cc +415 -0
- data/third_party/boringssl/ssl/{ssl_asn1.c → ssl_asn1.cc} +257 -261
- data/third_party/boringssl/ssl/{ssl_buffer.c → ssl_buffer.cc} +81 -97
- data/third_party/boringssl/ssl/{ssl_cert.c → ssl_cert.cc} +304 -414
- data/third_party/boringssl/ssl/{ssl_cipher.c → ssl_cipher.cc} +427 -505
- data/third_party/boringssl/ssl/{ssl_file.c → ssl_file.cc} +24 -16
- data/third_party/boringssl/ssl/ssl_key_share.cc +245 -0
- data/third_party/boringssl/ssl/{ssl_lib.c → ssl_lib.cc} +665 -828
- data/third_party/boringssl/ssl/ssl_privkey.cc +518 -0
- data/third_party/boringssl/ssl/{ssl_session.c → ssl_session.cc} +596 -471
- data/third_party/boringssl/ssl/{ssl_stat.c → ssl_stat.cc} +5 -224
- data/third_party/boringssl/ssl/{ssl_transcript.c → ssl_transcript.cc} +117 -140
- data/third_party/boringssl/ssl/ssl_versions.cc +439 -0
- data/third_party/boringssl/ssl/{ssl_x509.c → ssl_x509.cc} +751 -267
- data/third_party/boringssl/ssl/{t1_enc.c → t1_enc.cc} +120 -161
- data/third_party/boringssl/ssl/{t1_lib.c → t1_lib.cc} +859 -966
- data/third_party/boringssl/ssl/{tls13_both.c → tls13_both.cc} +202 -284
- data/third_party/boringssl/ssl/tls13_client.cc +842 -0
- data/third_party/boringssl/ssl/{tls13_enc.c → tls13_enc.cc} +108 -90
- data/third_party/boringssl/ssl/tls13_server.cc +967 -0
- data/third_party/boringssl/ssl/{tls_method.c → tls_method.cc} +94 -73
- data/third_party/boringssl/ssl/tls_record.cc +675 -0
- metadata +117 -168
- data/include/grpc/support/cmdline.h +0 -88
- data/include/grpc/support/subprocess.h +0 -44
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -29
- data/src/core/ext/filters/client_channel/resolver_factory.cc +0 -40
- data/src/core/lib/gpr/cmdline.cc +0 -330
- data/src/core/lib/gpr/subprocess_posix.cc +0 -99
- data/src/core/lib/gpr/subprocess_windows.cc +0 -126
- data/src/core/lib/surface/alarm.cc +0 -137
- data/src/core/lib/surface/alarm_internal.h +0 -40
- data/src/core/tsi/gts_transport_security.cc +0 -40
- data/third_party/boringssl/crypto/aes/aes.c +0 -1142
- data/third_party/boringssl/crypto/aes/internal.h +0 -87
- data/third_party/boringssl/crypto/aes/key_wrap.c +0 -138
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +0 -112
- data/third_party/boringssl/crypto/asn1/x_long.c +0 -200
- data/third_party/boringssl/crypto/bn/add.c +0 -377
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -532
- data/third_party/boringssl/crypto/bn/bn.c +0 -365
- data/third_party/boringssl/crypto/bn/cmp.c +0 -239
- data/third_party/boringssl/crypto/bn/ctx.c +0 -313
- data/third_party/boringssl/crypto/bn/div.c +0 -728
- data/third_party/boringssl/crypto/bn/exponentiation.c +0 -1240
- data/third_party/boringssl/crypto/bn/gcd.c +0 -635
- data/third_party/boringssl/crypto/bn/generic.c +0 -707
- data/third_party/boringssl/crypto/bn/kronecker.c +0 -176
- data/third_party/boringssl/crypto/bn/montgomery.c +0 -409
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +0 -207
- data/third_party/boringssl/crypto/bn/mul.c +0 -871
- data/third_party/boringssl/crypto/bn/prime.c +0 -861
- data/third_party/boringssl/crypto/bn/random.c +0 -343
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +0 -254
- data/third_party/boringssl/crypto/bn/shift.c +0 -307
- data/third_party/boringssl/crypto/bn/sqrt.c +0 -506
- data/third_party/boringssl/crypto/cipher/aead.c +0 -156
- data/third_party/boringssl/crypto/cipher/cipher.c +0 -657
- data/third_party/boringssl/crypto/cipher/e_aes.c +0 -1771
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +0 -276
- data/third_party/boringssl/crypto/cipher/e_des.c +0 -205
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +0 -482
- data/third_party/boringssl/crypto/des/des.c +0 -771
- data/third_party/boringssl/crypto/digest/digest.c +0 -251
- data/third_party/boringssl/crypto/digest/digests.c +0 -358
- data/third_party/boringssl/crypto/ec/ec.c +0 -847
- data/third_party/boringssl/crypto/ec/ec_key.c +0 -479
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +0 -303
- data/third_party/boringssl/crypto/ec/oct.c +0 -416
- data/third_party/boringssl/crypto/ec/p224-64.c +0 -1143
- data/third_party/boringssl/crypto/ec/p256-64.c +0 -1701
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +0 -561
- data/third_party/boringssl/crypto/ec/simple.c +0 -1118
- data/third_party/boringssl/crypto/ec/util-64.c +0 -109
- data/third_party/boringssl/crypto/ec/wnaf.c +0 -458
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +0 -479
- data/third_party/boringssl/crypto/hmac/hmac.c +0 -215
- data/third_party/boringssl/crypto/md4/md4.c +0 -236
- data/third_party/boringssl/crypto/md5/md5.c +0 -285
- data/third_party/boringssl/crypto/modes/cbc.c +0 -212
- data/third_party/boringssl/crypto/modes/cfb.c +0 -230
- data/third_party/boringssl/crypto/modes/ctr.c +0 -219
- data/third_party/boringssl/crypto/modes/gcm.c +0 -1071
- data/third_party/boringssl/crypto/modes/ofb.c +0 -95
- data/third_party/boringssl/crypto/modes/polyval.c +0 -94
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +0 -85
- data/third_party/boringssl/crypto/rand/rand.c +0 -244
- data/third_party/boringssl/crypto/rand/urandom.c +0 -335
- data/third_party/boringssl/crypto/rsa/blinding.c +0 -265
- data/third_party/boringssl/crypto/rsa/padding.c +0 -708
- data/third_party/boringssl/crypto/rsa/rsa.c +0 -830
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +0 -1100
- data/third_party/boringssl/crypto/sha/sha1-altivec.c +0 -346
- data/third_party/boringssl/crypto/sha/sha1.c +0 -355
- data/third_party/boringssl/crypto/sha/sha256.c +0 -329
- data/third_party/boringssl/crypto/sha/sha512.c +0 -609
- data/third_party/boringssl/crypto/x509/x509type.c +0 -126
- data/third_party/boringssl/include/openssl/stack_macros.h +0 -3987
- data/third_party/boringssl/ssl/handshake_client.c +0 -1883
- data/third_party/boringssl/ssl/handshake_server.c +0 -1950
- data/third_party/boringssl/ssl/s3_both.c +0 -895
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +0 -335
- data/third_party/boringssl/ssl/ssl_ecdh.c +0 -465
- data/third_party/boringssl/ssl/ssl_privkey.c +0 -683
- data/third_party/boringssl/ssl/ssl_privkey_cc.cc +0 -76
- data/third_party/boringssl/ssl/tls13_client.c +0 -712
- data/third_party/boringssl/ssl/tls13_server.c +0 -680
- data/third_party/boringssl/ssl/tls_record.c +0 -556
@@ -75,287 +75,287 @@ extern "C" {
|
|
75
75
|
#endif
|
76
76
|
|
77
77
|
|
78
|
-
|
78
|
+
// Low-level operations on elliptic curves.
|
79
79
|
|
80
80
|
|
81
|
-
|
82
|
-
|
81
|
+
// point_conversion_form_t enumerates forms, as defined in X9.62 (ECDSA), for
|
82
|
+
// the encoding of a elliptic curve point (x,y)
|
83
83
|
typedef enum {
|
84
|
-
|
85
|
-
|
86
|
-
|
84
|
+
// POINT_CONVERSION_COMPRESSED indicates that the point is encoded as z||x,
|
85
|
+
// where the octet z specifies which solution of the quadratic equation y
|
86
|
+
// is.
|
87
87
|
POINT_CONVERSION_COMPRESSED = 2,
|
88
88
|
|
89
|
-
|
90
|
-
|
89
|
+
// POINT_CONVERSION_UNCOMPRESSED indicates that the point is encoded as
|
90
|
+
// z||x||y, where z is the octet 0x04.
|
91
91
|
POINT_CONVERSION_UNCOMPRESSED = 4,
|
92
92
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
93
|
+
// POINT_CONVERSION_HYBRID indicates that the point is encoded as z||x||y,
|
94
|
+
// where z specifies which solution of the quadratic equation y is. This is
|
95
|
+
// not supported by the code and has never been observed in use.
|
96
|
+
//
|
97
|
+
// TODO(agl): remove once node.js no longer references this.
|
98
98
|
POINT_CONVERSION_HYBRID = 6,
|
99
99
|
} point_conversion_form_t;
|
100
100
|
|
101
101
|
|
102
|
-
|
102
|
+
// Elliptic curve groups.
|
103
103
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
104
|
+
// EC_GROUP_new_by_curve_name returns a fresh EC_GROUP object for the elliptic
|
105
|
+
// curve specified by |nid|, or NULL on error.
|
106
|
+
//
|
107
|
+
// The supported NIDs are:
|
108
|
+
// NID_secp224r1,
|
109
|
+
// NID_X9_62_prime256v1,
|
110
|
+
// NID_secp384r1,
|
111
|
+
// NID_secp521r1
|
112
112
|
OPENSSL_EXPORT EC_GROUP *EC_GROUP_new_by_curve_name(int nid);
|
113
113
|
|
114
|
-
|
114
|
+
// EC_GROUP_free frees |group| and the data that it points to.
|
115
115
|
OPENSSL_EXPORT void EC_GROUP_free(EC_GROUP *group);
|
116
116
|
|
117
|
-
|
118
|
-
|
117
|
+
// EC_GROUP_dup returns a fresh |EC_GROUP| which is equal to |a| or NULL on
|
118
|
+
// error.
|
119
119
|
OPENSSL_EXPORT EC_GROUP *EC_GROUP_dup(const EC_GROUP *a);
|
120
120
|
|
121
|
-
|
122
|
-
|
121
|
+
// EC_GROUP_cmp returns zero if |a| and |b| are the same group and non-zero
|
122
|
+
// otherwise.
|
123
123
|
OPENSSL_EXPORT int EC_GROUP_cmp(const EC_GROUP *a, const EC_GROUP *b,
|
124
124
|
BN_CTX *ignored);
|
125
125
|
|
126
|
-
|
127
|
-
|
126
|
+
// EC_GROUP_get0_generator returns a pointer to the internal |EC_POINT| object
|
127
|
+
// in |group| that specifies the generator for the group.
|
128
128
|
OPENSSL_EXPORT const EC_POINT *EC_GROUP_get0_generator(const EC_GROUP *group);
|
129
129
|
|
130
|
-
|
131
|
-
|
130
|
+
// EC_GROUP_get0_order returns a pointer to the internal |BIGNUM| object in
|
131
|
+
// |group| that specifies the order of the group.
|
132
132
|
OPENSSL_EXPORT const BIGNUM *EC_GROUP_get0_order(const EC_GROUP *group);
|
133
133
|
|
134
|
-
|
135
|
-
|
134
|
+
// EC_GROUP_get_cofactor sets |*cofactor| to the cofactor of |group| using
|
135
|
+
// |ctx|, if it's not NULL. It returns one on success and zero otherwise.
|
136
136
|
OPENSSL_EXPORT int EC_GROUP_get_cofactor(const EC_GROUP *group,
|
137
137
|
BIGNUM *cofactor, BN_CTX *ctx);
|
138
138
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
139
|
+
// EC_GROUP_get_curve_GFp gets various parameters about a group. It sets
|
140
|
+
// |*out_p| to the order of the coordinate field and |*out_a| and |*out_b| to
|
141
|
+
// the parameters of the curve when expressed as y² = x³ + ax + b. Any of the
|
142
|
+
// output parameters can be NULL. It returns one on success and zero on
|
143
|
+
// error.
|
144
144
|
OPENSSL_EXPORT int EC_GROUP_get_curve_GFp(const EC_GROUP *group, BIGNUM *out_p,
|
145
145
|
BIGNUM *out_a, BIGNUM *out_b,
|
146
146
|
BN_CTX *ctx);
|
147
147
|
|
148
|
-
|
148
|
+
// EC_GROUP_get_curve_name returns a NID that identifies |group|.
|
149
149
|
OPENSSL_EXPORT int EC_GROUP_get_curve_name(const EC_GROUP *group);
|
150
150
|
|
151
|
-
|
152
|
-
|
151
|
+
// EC_GROUP_get_degree returns the number of bits needed to represent an
|
152
|
+
// element of the field underlying |group|.
|
153
153
|
OPENSSL_EXPORT unsigned EC_GROUP_get_degree(const EC_GROUP *group);
|
154
154
|
|
155
155
|
|
156
|
-
|
156
|
+
// Points on elliptic curves.
|
157
157
|
|
158
|
-
|
159
|
-
|
158
|
+
// EC_POINT_new returns a fresh |EC_POINT| object in the given group, or NULL
|
159
|
+
// on error.
|
160
160
|
OPENSSL_EXPORT EC_POINT *EC_POINT_new(const EC_GROUP *group);
|
161
161
|
|
162
|
-
|
162
|
+
// EC_POINT_free frees |point| and the data that it points to.
|
163
163
|
OPENSSL_EXPORT void EC_POINT_free(EC_POINT *point);
|
164
164
|
|
165
|
-
|
166
|
-
|
165
|
+
// EC_POINT_clear_free clears the data that |point| points to, frees it and
|
166
|
+
// then frees |point| itself.
|
167
167
|
OPENSSL_EXPORT void EC_POINT_clear_free(EC_POINT *point);
|
168
168
|
|
169
|
-
|
170
|
-
|
169
|
+
// EC_POINT_copy sets |*dest| equal to |*src|. It returns one on success and
|
170
|
+
// zero otherwise.
|
171
171
|
OPENSSL_EXPORT int EC_POINT_copy(EC_POINT *dest, const EC_POINT *src);
|
172
172
|
|
173
|
-
|
174
|
-
|
173
|
+
// EC_POINT_dup returns a fresh |EC_POINT| that contains the same values as
|
174
|
+
// |src|, or NULL on error.
|
175
175
|
OPENSSL_EXPORT EC_POINT *EC_POINT_dup(const EC_POINT *src,
|
176
176
|
const EC_GROUP *group);
|
177
177
|
|
178
|
-
|
179
|
-
|
178
|
+
// EC_POINT_set_to_infinity sets |point| to be the "point at infinity" for the
|
179
|
+
// given group.
|
180
180
|
OPENSSL_EXPORT int EC_POINT_set_to_infinity(const EC_GROUP *group,
|
181
181
|
EC_POINT *point);
|
182
182
|
|
183
|
-
|
184
|
-
|
183
|
+
// EC_POINT_is_at_infinity returns one iff |point| is the point at infinity and
|
184
|
+
// zero otherwise.
|
185
185
|
OPENSSL_EXPORT int EC_POINT_is_at_infinity(const EC_GROUP *group,
|
186
186
|
const EC_POINT *point);
|
187
187
|
|
188
|
-
|
189
|
-
|
190
|
-
|
188
|
+
// EC_POINT_is_on_curve returns one if |point| is an element of |group| and
|
189
|
+
// and zero otherwise or when an error occurs. This is different from OpenSSL,
|
190
|
+
// which returns -1 on error. If |ctx| is non-NULL, it may be used.
|
191
191
|
OPENSSL_EXPORT int EC_POINT_is_on_curve(const EC_GROUP *group,
|
192
192
|
const EC_POINT *point, BN_CTX *ctx);
|
193
193
|
|
194
|
-
|
195
|
-
|
194
|
+
// EC_POINT_cmp returns zero if |a| is equal to |b|, greater than zero if
|
195
|
+
// not equal and -1 on error. If |ctx| is not NULL, it may be used.
|
196
196
|
OPENSSL_EXPORT int EC_POINT_cmp(const EC_GROUP *group, const EC_POINT *a,
|
197
197
|
const EC_POINT *b, BN_CTX *ctx);
|
198
198
|
|
199
|
-
|
200
|
-
|
199
|
+
// EC_POINT_make_affine converts |point| to affine form, internally. It returns
|
200
|
+
// one on success and zero otherwise. If |ctx| is not NULL, it may be used.
|
201
201
|
OPENSSL_EXPORT int EC_POINT_make_affine(const EC_GROUP *group, EC_POINT *point,
|
202
202
|
BN_CTX *ctx);
|
203
203
|
|
204
|
-
|
205
|
-
|
206
|
-
|
204
|
+
// EC_POINTs_make_affine converts |num| points from |points| to affine form,
|
205
|
+
// internally. It returns one on success and zero otherwise. If |ctx| is not
|
206
|
+
// NULL, it may be used.
|
207
207
|
OPENSSL_EXPORT int EC_POINTs_make_affine(const EC_GROUP *group, size_t num,
|
208
208
|
EC_POINT *points[], BN_CTX *ctx);
|
209
209
|
|
210
210
|
|
211
|
-
|
211
|
+
// Point conversion.
|
212
212
|
|
213
|
-
|
214
|
-
|
215
|
-
|
213
|
+
// EC_POINT_get_affine_coordinates_GFp sets |x| and |y| to the affine value of
|
214
|
+
// |point| using |ctx|, if it's not NULL. It returns one on success and zero
|
215
|
+
// otherwise.
|
216
216
|
OPENSSL_EXPORT int EC_POINT_get_affine_coordinates_GFp(const EC_GROUP *group,
|
217
217
|
const EC_POINT *point,
|
218
218
|
BIGNUM *x, BIGNUM *y,
|
219
219
|
BN_CTX *ctx);
|
220
220
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
221
|
+
// EC_POINT_set_affine_coordinates_GFp sets the value of |point| to be
|
222
|
+
// (|x|, |y|). The |ctx| argument may be used if not NULL. It returns one
|
223
|
+
// on success or zero on error. Note that, unlike with OpenSSL, it's
|
224
|
+
// considered an error if the point is not on the curve.
|
225
225
|
OPENSSL_EXPORT int EC_POINT_set_affine_coordinates_GFp(const EC_GROUP *group,
|
226
226
|
EC_POINT *point,
|
227
227
|
const BIGNUM *x,
|
228
228
|
const BIGNUM *y,
|
229
229
|
BN_CTX *ctx);
|
230
230
|
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
231
|
+
// EC_POINT_point2oct serialises |point| into the X9.62 form given by |form|
|
232
|
+
// into, at most, |len| bytes at |buf|. It returns the number of bytes written
|
233
|
+
// or zero on error if |buf| is non-NULL, else the number of bytes needed. The
|
234
|
+
// |ctx| argument may be used if not NULL.
|
235
235
|
OPENSSL_EXPORT size_t EC_POINT_point2oct(const EC_GROUP *group,
|
236
236
|
const EC_POINT *point,
|
237
237
|
point_conversion_form_t form,
|
238
238
|
uint8_t *buf, size_t len, BN_CTX *ctx);
|
239
239
|
|
240
|
-
|
241
|
-
|
240
|
+
// EC_POINT_point2cbb behaves like |EC_POINT_point2oct| but appends the
|
241
|
+
// serialised point to |cbb|. It returns one on success and zero on error.
|
242
242
|
OPENSSL_EXPORT int EC_POINT_point2cbb(CBB *out, const EC_GROUP *group,
|
243
243
|
const EC_POINT *point,
|
244
244
|
point_conversion_form_t form,
|
245
245
|
BN_CTX *ctx);
|
246
246
|
|
247
|
-
|
248
|
-
|
249
|
-
|
247
|
+
// EC_POINT_oct2point sets |point| from |len| bytes of X9.62 format
|
248
|
+
// serialisation in |buf|. It returns one on success and zero otherwise. The
|
249
|
+
// |ctx| argument may be used if not NULL.
|
250
250
|
OPENSSL_EXPORT int EC_POINT_oct2point(const EC_GROUP *group, EC_POINT *point,
|
251
251
|
const uint8_t *buf, size_t len,
|
252
252
|
BN_CTX *ctx);
|
253
253
|
|
254
|
-
|
255
|
-
|
256
|
-
|
254
|
+
// EC_POINT_set_compressed_coordinates_GFp sets |point| to equal the point with
|
255
|
+
// the given |x| coordinate and the y coordinate specified by |y_bit| (see
|
256
|
+
// X9.62). It returns one on success and zero otherwise.
|
257
257
|
OPENSSL_EXPORT int EC_POINT_set_compressed_coordinates_GFp(
|
258
258
|
const EC_GROUP *group, EC_POINT *point, const BIGNUM *x, int y_bit,
|
259
259
|
BN_CTX *ctx);
|
260
260
|
|
261
261
|
|
262
|
-
|
262
|
+
// Group operations.
|
263
263
|
|
264
|
-
|
265
|
-
|
264
|
+
// EC_POINT_add sets |r| equal to |a| plus |b|. It returns one on success and
|
265
|
+
// zero otherwise. If |ctx| is not NULL, it may be used.
|
266
266
|
OPENSSL_EXPORT int EC_POINT_add(const EC_GROUP *group, EC_POINT *r,
|
267
267
|
const EC_POINT *a, const EC_POINT *b,
|
268
268
|
BN_CTX *ctx);
|
269
269
|
|
270
|
-
|
271
|
-
|
270
|
+
// EC_POINT_dbl sets |r| equal to |a| plus |a|. It returns one on success and
|
271
|
+
// zero otherwise. If |ctx| is not NULL, it may be used.
|
272
272
|
OPENSSL_EXPORT int EC_POINT_dbl(const EC_GROUP *group, EC_POINT *r,
|
273
273
|
const EC_POINT *a, BN_CTX *ctx);
|
274
274
|
|
275
|
-
|
276
|
-
|
275
|
+
// EC_POINT_invert sets |a| equal to minus |a|. It returns one on success and
|
276
|
+
// zero otherwise. If |ctx| is not NULL, it may be used.
|
277
277
|
OPENSSL_EXPORT int EC_POINT_invert(const EC_GROUP *group, EC_POINT *a,
|
278
278
|
BN_CTX *ctx);
|
279
279
|
|
280
|
-
|
281
|
-
|
280
|
+
// EC_POINT_mul sets r = generator*n + q*m. It returns one on success and zero
|
281
|
+
// otherwise. If |ctx| is not NULL, it may be used.
|
282
282
|
OPENSSL_EXPORT int EC_POINT_mul(const EC_GROUP *group, EC_POINT *r,
|
283
283
|
const BIGNUM *n, const EC_POINT *q,
|
284
284
|
const BIGNUM *m, BN_CTX *ctx);
|
285
285
|
|
286
286
|
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
287
|
+
// Deprecated functions.
|
288
|
+
|
289
|
+
// EC_GROUP_new_curve_GFp creates a new, arbitrary elliptic curve group based
|
290
|
+
// on the equation y² = x³ + a·x + b. It returns the new group or NULL on
|
291
|
+
// error.
|
292
|
+
//
|
293
|
+
// This new group has no generator. It is an error to use a generator-less group
|
294
|
+
// with any functions except for |EC_GROUP_free|, |EC_POINT_new|,
|
295
|
+
// |EC_POINT_set_affine_coordinates_GFp|, and |EC_GROUP_set_generator|.
|
296
|
+
//
|
297
|
+
// |EC_GROUP|s returned by this function will always compare as unequal via
|
298
|
+
// |EC_GROUP_cmp| (even to themselves). |EC_GROUP_get_curve_name| will always
|
299
|
+
// return |NID_undef|.
|
300
|
+
//
|
301
|
+
// Avoid using arbitrary curves and use |EC_GROUP_new_by_curve_name| instead.
|
302
302
|
OPENSSL_EXPORT EC_GROUP *EC_GROUP_new_curve_GFp(const BIGNUM *p,
|
303
303
|
const BIGNUM *a,
|
304
304
|
const BIGNUM *b, BN_CTX *ctx);
|
305
305
|
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
306
|
+
// EC_GROUP_set_generator sets the generator for |group| to |generator|, which
|
307
|
+
// must have the given order and cofactor. It may only be used with |EC_GROUP|
|
308
|
+
// objects returned by |EC_GROUP_new_curve_GFp| and may only be used once on
|
309
|
+
// each group.
|
310
310
|
OPENSSL_EXPORT int EC_GROUP_set_generator(EC_GROUP *group,
|
311
311
|
const EC_POINT *generator,
|
312
312
|
const BIGNUM *order,
|
313
313
|
const BIGNUM *cofactor);
|
314
314
|
|
315
|
-
|
316
|
-
|
317
|
-
|
315
|
+
// EC_GROUP_get_order sets |*order| to the order of |group|, if it's not
|
316
|
+
// NULL. It returns one on success and zero otherwise. |ctx| is ignored. Use
|
317
|
+
// |EC_GROUP_get0_order| instead.
|
318
318
|
OPENSSL_EXPORT int EC_GROUP_get_order(const EC_GROUP *group, BIGNUM *order,
|
319
319
|
BN_CTX *ctx);
|
320
320
|
|
321
|
-
|
321
|
+
// EC_GROUP_set_asn1_flag does nothing.
|
322
322
|
OPENSSL_EXPORT void EC_GROUP_set_asn1_flag(EC_GROUP *group, int flag);
|
323
323
|
|
324
324
|
#define OPENSSL_EC_NAMED_CURVE 0
|
325
325
|
|
326
326
|
typedef struct ec_method_st EC_METHOD;
|
327
327
|
|
328
|
-
|
328
|
+
// EC_GROUP_method_of returns NULL.
|
329
329
|
OPENSSL_EXPORT const EC_METHOD *EC_GROUP_method_of(const EC_GROUP *group);
|
330
330
|
|
331
|
-
|
331
|
+
// EC_METHOD_get_field_type returns NID_X9_62_prime_field.
|
332
332
|
OPENSSL_EXPORT int EC_METHOD_get_field_type(const EC_METHOD *meth);
|
333
333
|
|
334
|
-
|
335
|
-
|
334
|
+
// EC_GROUP_set_point_conversion_form aborts the process if |form| is not
|
335
|
+
// |POINT_CONVERSION_UNCOMPRESSED| and otherwise does nothing.
|
336
336
|
OPENSSL_EXPORT void EC_GROUP_set_point_conversion_form(
|
337
337
|
EC_GROUP *group, point_conversion_form_t form);
|
338
338
|
|
339
|
-
|
339
|
+
// EC_builtin_curve describes a supported elliptic curve.
|
340
340
|
typedef struct {
|
341
341
|
int nid;
|
342
342
|
const char *comment;
|
343
343
|
} EC_builtin_curve;
|
344
344
|
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
345
|
+
// EC_get_builtin_curves writes at most |max_num_curves| elements to
|
346
|
+
// |out_curves| and returns the total number that it would have written, had
|
347
|
+
// |max_num_curves| been large enough.
|
348
|
+
//
|
349
|
+
// The |EC_builtin_curve| items describe the supported elliptic curves.
|
350
350
|
OPENSSL_EXPORT size_t EC_get_builtin_curves(EC_builtin_curve *out_curves,
|
351
351
|
size_t max_num_curves);
|
352
352
|
|
353
|
-
|
353
|
+
// Old code expects to get EC_KEY from ec.h.
|
354
354
|
#include <openssl/ec_key.h>
|
355
355
|
|
356
356
|
|
357
357
|
#if defined(__cplusplus)
|
358
|
-
}
|
358
|
+
} // extern C
|
359
359
|
|
360
360
|
extern "C++" {
|
361
361
|
|
@@ -366,7 +366,7 @@ BORINGSSL_MAKE_DELETER(EC_GROUP, EC_GROUP_free)
|
|
366
366
|
|
367
367
|
} // namespace bssl
|
368
368
|
|
369
|
-
}
|
369
|
+
} // extern C++
|
370
370
|
|
371
371
|
#endif
|
372
372
|
|
@@ -402,5 +402,6 @@ BORINGSSL_MAKE_DELETER(EC_GROUP, EC_GROUP_free)
|
|
402
402
|
#define EC_R_ENCODE_ERROR 129
|
403
403
|
#define EC_R_GROUP_MISMATCH 130
|
404
404
|
#define EC_R_INVALID_COFACTOR 131
|
405
|
+
#define EC_R_PUBLIC_KEY_VALIDATION_FAILED 132
|
405
406
|
|
406
|
-
#endif
|
407
|
+
#endif // OPENSSL_HEADER_EC_H
|
@@ -79,157 +79,165 @@ extern "C" {
|
|
79
79
|
#endif
|
80
80
|
|
81
81
|
|
82
|
-
|
83
|
-
|
82
|
+
// ec_key.h contains functions that handle elliptic-curve points that are
|
83
|
+
// public/private keys.
|
84
84
|
|
85
85
|
|
86
|
-
|
86
|
+
// EC key objects.
|
87
87
|
|
88
|
-
|
88
|
+
// EC_KEY_new returns a fresh |EC_KEY| object or NULL on error.
|
89
89
|
OPENSSL_EXPORT EC_KEY *EC_KEY_new(void);
|
90
90
|
|
91
|
-
|
92
|
-
|
91
|
+
// EC_KEY_new_method acts the same as |EC_KEY_new|, but takes an explicit
|
92
|
+
// |ENGINE|.
|
93
93
|
OPENSSL_EXPORT EC_KEY *EC_KEY_new_method(const ENGINE *engine);
|
94
94
|
|
95
|
-
|
96
|
-
|
95
|
+
// EC_KEY_new_by_curve_name returns a fresh EC_KEY for group specified by |nid|
|
96
|
+
// or NULL on error.
|
97
97
|
OPENSSL_EXPORT EC_KEY *EC_KEY_new_by_curve_name(int nid);
|
98
98
|
|
99
|
-
|
99
|
+
// EC_KEY_free frees all the data owned by |key| and |key| itself.
|
100
100
|
OPENSSL_EXPORT void EC_KEY_free(EC_KEY *key);
|
101
101
|
|
102
|
-
|
102
|
+
// EC_KEY_copy sets |dst| equal to |src| and returns |dst| or NULL on error.
|
103
103
|
OPENSSL_EXPORT EC_KEY *EC_KEY_copy(EC_KEY *dst, const EC_KEY *src);
|
104
104
|
|
105
|
-
|
105
|
+
// EC_KEY_dup returns a fresh copy of |src| or NULL on error.
|
106
106
|
OPENSSL_EXPORT EC_KEY *EC_KEY_dup(const EC_KEY *src);
|
107
107
|
|
108
|
-
|
108
|
+
// EC_KEY_up_ref increases the reference count of |key| and returns one.
|
109
109
|
OPENSSL_EXPORT int EC_KEY_up_ref(EC_KEY *key);
|
110
110
|
|
111
|
-
|
112
|
-
|
111
|
+
// EC_KEY_is_opaque returns one if |key| is opaque and doesn't expose its key
|
112
|
+
// material. Otherwise it return zero.
|
113
113
|
OPENSSL_EXPORT int EC_KEY_is_opaque(const EC_KEY *key);
|
114
114
|
|
115
|
-
|
115
|
+
// EC_KEY_get0_group returns a pointer to the |EC_GROUP| object inside |key|.
|
116
116
|
OPENSSL_EXPORT const EC_GROUP *EC_KEY_get0_group(const EC_KEY *key);
|
117
117
|
|
118
|
-
|
119
|
-
|
118
|
+
// EC_KEY_set_group sets the |EC_GROUP| object that |key| will use to |group|.
|
119
|
+
// It returns one on success and zero otherwise.
|
120
120
|
OPENSSL_EXPORT int EC_KEY_set_group(EC_KEY *key, const EC_GROUP *group);
|
121
121
|
|
122
|
-
|
122
|
+
// EC_KEY_get0_private_key returns a pointer to the private key inside |key|.
|
123
123
|
OPENSSL_EXPORT const BIGNUM *EC_KEY_get0_private_key(const EC_KEY *key);
|
124
124
|
|
125
|
-
|
126
|
-
|
125
|
+
// EC_KEY_set_private_key sets the private key of |key| to |priv|. It returns
|
126
|
+
// one on success and zero otherwise.
|
127
127
|
OPENSSL_EXPORT int EC_KEY_set_private_key(EC_KEY *key, const BIGNUM *prv);
|
128
128
|
|
129
|
-
|
130
|
-
|
129
|
+
// EC_KEY_get0_public_key returns a pointer to the public key point inside
|
130
|
+
// |key|.
|
131
131
|
OPENSSL_EXPORT const EC_POINT *EC_KEY_get0_public_key(const EC_KEY *key);
|
132
132
|
|
133
|
-
|
134
|
-
|
133
|
+
// EC_KEY_set_public_key sets the public key of |key| to |pub|, by copying it.
|
134
|
+
// It returns one on success and zero otherwise.
|
135
135
|
OPENSSL_EXPORT int EC_KEY_set_public_key(EC_KEY *key, const EC_POINT *pub);
|
136
136
|
|
137
137
|
#define EC_PKEY_NO_PARAMETERS 0x001
|
138
138
|
#define EC_PKEY_NO_PUBKEY 0x002
|
139
139
|
|
140
|
-
|
141
|
-
|
140
|
+
// EC_KEY_get_enc_flags returns the encoding flags for |key|, which is a
|
141
|
+
// bitwise-OR of |EC_PKEY_*| values.
|
142
142
|
OPENSSL_EXPORT unsigned EC_KEY_get_enc_flags(const EC_KEY *key);
|
143
143
|
|
144
|
-
|
145
|
-
|
144
|
+
// EC_KEY_set_enc_flags sets the encoding flags for |key|, which is a
|
145
|
+
// bitwise-OR of |EC_PKEY_*| values.
|
146
146
|
OPENSSL_EXPORT void EC_KEY_set_enc_flags(EC_KEY *key, unsigned flags);
|
147
147
|
|
148
|
-
|
149
|
-
|
148
|
+
// EC_KEY_get_conv_form returns the conversation form that will be used by
|
149
|
+
// |key|.
|
150
150
|
OPENSSL_EXPORT point_conversion_form_t EC_KEY_get_conv_form(const EC_KEY *key);
|
151
151
|
|
152
|
-
|
152
|
+
// EC_KEY_set_conv_form sets the conversion form to be used by |key|.
|
153
153
|
OPENSSL_EXPORT void EC_KEY_set_conv_form(EC_KEY *key,
|
154
154
|
point_conversion_form_t cform);
|
155
155
|
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
156
|
+
// EC_KEY_check_key performs several checks on |key| (possibly including an
|
157
|
+
// expensive check that the public key is in the primary subgroup). It returns
|
158
|
+
// one if all checks pass and zero otherwise. If it returns zero then detail
|
159
|
+
// about the problem can be found on the error stack.
|
160
160
|
OPENSSL_EXPORT int EC_KEY_check_key(const EC_KEY *key);
|
161
161
|
|
162
|
-
|
163
|
-
|
162
|
+
// EC_KEY_check_fips performs a signing pairwise consistency test (FIPS 140-2
|
163
|
+
// 4.9.2). It returns one if it passes and zero otherwise.
|
164
|
+
OPENSSL_EXPORT int EC_KEY_check_fips(const EC_KEY *key);
|
165
|
+
|
166
|
+
// EC_KEY_set_public_key_affine_coordinates sets the public key in |key| to
|
167
|
+
// (|x|, |y|). It returns one on success and zero otherwise.
|
164
168
|
OPENSSL_EXPORT int EC_KEY_set_public_key_affine_coordinates(EC_KEY *key,
|
165
169
|
BIGNUM *x,
|
166
170
|
BIGNUM *y);
|
167
171
|
|
168
172
|
|
169
|
-
|
173
|
+
// Key generation.
|
170
174
|
|
171
|
-
|
172
|
-
|
173
|
-
|
175
|
+
// EC_KEY_generate_key generates a random, private key, calculates the
|
176
|
+
// corresponding public key and stores both in |key|. It returns one on success
|
177
|
+
// or zero otherwise.
|
174
178
|
OPENSSL_EXPORT int EC_KEY_generate_key(EC_KEY *key);
|
175
179
|
|
180
|
+
// EC_KEY_generate_key_fips behaves like |EC_KEY_generate_key| but performs
|
181
|
+
// additional checks for FIPS compliance.
|
182
|
+
OPENSSL_EXPORT int EC_KEY_generate_key_fips(EC_KEY *key);
|
183
|
+
|
176
184
|
|
177
|
-
|
185
|
+
// Serialisation.
|
178
186
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
187
|
+
// EC_KEY_parse_private_key parses a DER-encoded ECPrivateKey structure (RFC
|
188
|
+
// 5915) from |cbs| and advances |cbs|. It returns a newly-allocated |EC_KEY| or
|
189
|
+
// NULL on error. If |group| is non-null, the parameters field of the
|
190
|
+
// ECPrivateKey may be omitted (but must match |group| if present). Otherwise,
|
191
|
+
// the parameters field is required.
|
184
192
|
OPENSSL_EXPORT EC_KEY *EC_KEY_parse_private_key(CBS *cbs,
|
185
193
|
const EC_GROUP *group);
|
186
194
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
195
|
+
// EC_KEY_marshal_private_key marshals |key| as a DER-encoded ECPrivateKey
|
196
|
+
// structure (RFC 5915) and appends the result to |cbb|. It returns one on
|
197
|
+
// success and zero on failure. |enc_flags| is a combination of |EC_PKEY_*|
|
198
|
+
// values and controls whether corresponding fields are omitted.
|
191
199
|
OPENSSL_EXPORT int EC_KEY_marshal_private_key(CBB *cbb, const EC_KEY *key,
|
192
200
|
unsigned enc_flags);
|
193
201
|
|
194
|
-
|
195
|
-
|
196
|
-
|
202
|
+
// EC_KEY_parse_curve_name parses a DER-encoded OBJECT IDENTIFIER as a curve
|
203
|
+
// name from |cbs| and advances |cbs|. It returns a newly-allocated |EC_GROUP|
|
204
|
+
// or NULL on error.
|
197
205
|
OPENSSL_EXPORT EC_GROUP *EC_KEY_parse_curve_name(CBS *cbs);
|
198
206
|
|
199
|
-
|
200
|
-
|
201
|
-
|
207
|
+
// EC_KEY_marshal_curve_name marshals |group| as a DER-encoded OBJECT IDENTIFIER
|
208
|
+
// and appends the result to |cbb|. It returns one on success and zero on
|
209
|
+
// failure.
|
202
210
|
OPENSSL_EXPORT int EC_KEY_marshal_curve_name(CBB *cbb, const EC_GROUP *group);
|
203
211
|
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
212
|
+
// EC_KEY_parse_parameters parses a DER-encoded ECParameters structure (RFC
|
213
|
+
// 5480) from |cbs| and advances |cbs|. It returns a newly-allocated |EC_GROUP|
|
214
|
+
// or NULL on error. It supports the namedCurve and specifiedCurve options, but
|
215
|
+
// use of specifiedCurve is deprecated. Use |EC_KEY_parse_curve_name|
|
216
|
+
// instead.
|
209
217
|
OPENSSL_EXPORT EC_GROUP *EC_KEY_parse_parameters(CBS *cbs);
|
210
218
|
|
211
219
|
|
212
|
-
|
213
|
-
|
214
|
-
|
220
|
+
// ex_data functions.
|
221
|
+
//
|
222
|
+
// These functions are wrappers. See |ex_data.h| for details.
|
215
223
|
|
216
224
|
OPENSSL_EXPORT int EC_KEY_get_ex_new_index(long argl, void *argp,
|
217
225
|
CRYPTO_EX_unused *unused,
|
218
|
-
CRYPTO_EX_dup *
|
226
|
+
CRYPTO_EX_dup *dup_unused,
|
219
227
|
CRYPTO_EX_free *free_func);
|
220
228
|
OPENSSL_EXPORT int EC_KEY_set_ex_data(EC_KEY *r, int idx, void *arg);
|
221
229
|
OPENSSL_EXPORT void *EC_KEY_get_ex_data(const EC_KEY *r, int idx);
|
222
230
|
|
223
231
|
|
224
|
-
|
232
|
+
// ECDSA method.
|
225
233
|
|
226
|
-
|
227
|
-
|
228
|
-
|
234
|
+
// ECDSA_FLAG_OPAQUE specifies that this ECDSA_METHOD does not expose its key
|
235
|
+
// material. This may be set if, for instance, it is wrapping some other crypto
|
236
|
+
// API, like a platform key store.
|
229
237
|
#define ECDSA_FLAG_OPAQUE 1
|
230
238
|
|
231
|
-
|
232
|
-
|
239
|
+
// ecdsa_method_st is a structure of function pointers for implementing ECDSA.
|
240
|
+
// See engine.h.
|
233
241
|
struct ecdsa_method_st {
|
234
242
|
struct openssl_method_common_st common;
|
235
243
|
|
@@ -238,89 +246,85 @@ struct ecdsa_method_st {
|
|
238
246
|
int (*init)(EC_KEY *key);
|
239
247
|
int (*finish)(EC_KEY *key);
|
240
248
|
|
241
|
-
|
242
|
-
|
243
|
-
|
249
|
+
// group_order_size returns the number of bytes needed to represent the order
|
250
|
+
// of the group. This is used to calculate the maximum size of an ECDSA
|
251
|
+
// signature in |ECDSA_size|.
|
244
252
|
size_t (*group_order_size)(const EC_KEY *key);
|
245
253
|
|
246
|
-
|
254
|
+
// sign matches the arguments and behaviour of |ECDSA_sign|.
|
247
255
|
int (*sign)(const uint8_t *digest, size_t digest_len, uint8_t *sig,
|
248
256
|
unsigned int *sig_len, EC_KEY *eckey);
|
249
257
|
|
250
|
-
/* Ignored. Set this to NULL. */
|
251
|
-
int (*verify)(const uint8_t *digest, size_t digest_len, const uint8_t *sig,
|
252
|
-
size_t sig_len, EC_KEY *eckey);
|
253
|
-
|
254
258
|
int flags;
|
255
259
|
};
|
256
260
|
|
257
261
|
|
258
|
-
|
262
|
+
// Deprecated functions.
|
259
263
|
|
260
|
-
|
264
|
+
// EC_KEY_set_asn1_flag does nothing.
|
261
265
|
OPENSSL_EXPORT void EC_KEY_set_asn1_flag(EC_KEY *key, int flag);
|
262
266
|
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
267
|
+
// d2i_ECPrivateKey parses an ASN.1, DER-encoded, private key from |len| bytes
|
268
|
+
// at |*inp|. If |out_key| is not NULL then, on exit, a pointer to the result
|
269
|
+
// is in |*out_key|. Note that, even if |*out_key| is already non-NULL on entry,
|
270
|
+
// it * will not be written to. Rather, a fresh |EC_KEY| is allocated and the
|
271
|
+
// previous * one is freed. On successful exit, |*inp| is advanced past the DER
|
272
|
+
// structure. It returns the result or NULL on error.
|
273
|
+
//
|
274
|
+
// On input, if |*out_key| is non-NULL and has a group configured, the
|
275
|
+
// parameters field may be omitted but must match that group if present.
|
276
|
+
//
|
277
|
+
// Use |EC_KEY_parse_private_key| instead.
|
274
278
|
OPENSSL_EXPORT EC_KEY *d2i_ECPrivateKey(EC_KEY **out_key, const uint8_t **inp,
|
275
279
|
long len);
|
276
280
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
281
|
+
// i2d_ECPrivateKey marshals an EC private key from |key| to an ASN.1, DER
|
282
|
+
// structure. If |outp| is not NULL then the result is written to |*outp| and
|
283
|
+
// |*outp| is advanced just past the output. It returns the number of bytes in
|
284
|
+
// the result, whether written or not, or a negative value on error.
|
285
|
+
//
|
286
|
+
// Use |EC_KEY_marshal_private_key| instead.
|
283
287
|
OPENSSL_EXPORT int i2d_ECPrivateKey(const EC_KEY *key, uint8_t **outp);
|
284
288
|
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
289
|
+
// d2i_ECParameters parses an ASN.1, DER-encoded, set of EC parameters from
|
290
|
+
// |len| bytes at |*inp|. If |out_key| is not NULL then, on exit, a pointer to
|
291
|
+
// the result is in |*out_key|. Note that, even if |*out_key| is already
|
292
|
+
// non-NULL on entry, it will not be written to. Rather, a fresh |EC_KEY| is
|
293
|
+
// allocated and the previous one is freed. On successful exit, |*inp| is
|
294
|
+
// advanced past the DER structure. It returns the result or NULL on error.
|
295
|
+
//
|
296
|
+
// Use |EC_KEY_parse_parameters| or |EC_KEY_parse_curve_name| instead.
|
293
297
|
OPENSSL_EXPORT EC_KEY *d2i_ECParameters(EC_KEY **out_key, const uint8_t **inp,
|
294
298
|
long len);
|
295
299
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
300
|
+
// i2d_ECParameters marshals EC parameters from |key| to an ASN.1, DER
|
301
|
+
// structure. If |outp| is not NULL then the result is written to |*outp| and
|
302
|
+
// |*outp| is advanced just past the output. It returns the number of bytes in
|
303
|
+
// the result, whether written or not, or a negative value on error.
|
304
|
+
//
|
305
|
+
// Use |EC_KEY_marshal_curve_name| instead.
|
302
306
|
OPENSSL_EXPORT int i2d_ECParameters(const EC_KEY *key, uint8_t **outp);
|
303
307
|
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
308
|
+
// o2i_ECPublicKey parses an EC point from |len| bytes at |*inp| into
|
309
|
+
// |*out_key|. Note that this differs from the d2i format in that |*out_key|
|
310
|
+
// must be non-NULL with a group set. On successful exit, |*inp| is advanced by
|
311
|
+
// |len| bytes. It returns |*out_key| or NULL on error.
|
312
|
+
//
|
313
|
+
// Use |EC_POINT_oct2point| instead.
|
310
314
|
OPENSSL_EXPORT EC_KEY *o2i_ECPublicKey(EC_KEY **out_key, const uint8_t **inp,
|
311
315
|
long len);
|
312
316
|
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
317
|
+
// i2o_ECPublicKey marshals an EC point from |key|. If |outp| is not NULL then
|
318
|
+
// the result is written to |*outp| and |*outp| is advanced just past the
|
319
|
+
// output. It returns the number of bytes in the result, whether written or
|
320
|
+
// not, or a negative value on error.
|
321
|
+
//
|
322
|
+
// Use |EC_POINT_point2cbb| instead.
|
319
323
|
OPENSSL_EXPORT int i2o_ECPublicKey(const EC_KEY *key, unsigned char **outp);
|
320
324
|
|
321
325
|
|
322
326
|
#if defined(__cplusplus)
|
323
|
-
}
|
327
|
+
} // extern C
|
324
328
|
|
325
329
|
extern "C++" {
|
326
330
|
|
@@ -330,8 +334,8 @@ BORINGSSL_MAKE_DELETER(EC_KEY, EC_KEY_free)
|
|
330
334
|
|
331
335
|
} // namespace bssl
|
332
336
|
|
333
|
-
}
|
337
|
+
} // extern C++
|
334
338
|
|
335
339
|
#endif
|
336
340
|
|
337
|
-
#endif
|
341
|
+
#endif // OPENSSL_HEADER_EC_KEY_H
|