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
@@ -121,32 +121,39 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
|
|
121
121
|
int i;
|
122
122
|
switch (gen->type) {
|
123
123
|
case GEN_OTHERNAME:
|
124
|
-
X509V3_add_value("othername", "<unsupported>", &ret)
|
124
|
+
if (!X509V3_add_value("othername", "<unsupported>", &ret))
|
125
|
+
return NULL;
|
125
126
|
break;
|
126
127
|
|
127
128
|
case GEN_X400:
|
128
|
-
X509V3_add_value("X400Name", "<unsupported>", &ret)
|
129
|
+
if (!X509V3_add_value("X400Name", "<unsupported>", &ret))
|
130
|
+
return NULL;
|
129
131
|
break;
|
130
132
|
|
131
133
|
case GEN_EDIPARTY:
|
132
|
-
X509V3_add_value("EdiPartyName", "<unsupported>", &ret)
|
134
|
+
if (!X509V3_add_value("EdiPartyName", "<unsupported>", &ret))
|
135
|
+
return NULL;
|
133
136
|
break;
|
134
137
|
|
135
138
|
case GEN_EMAIL:
|
136
|
-
X509V3_add_value_uchar("email", gen->d.ia5->data, &ret)
|
139
|
+
if (!X509V3_add_value_uchar("email", gen->d.ia5->data, &ret))
|
140
|
+
return NULL;
|
137
141
|
break;
|
138
142
|
|
139
143
|
case GEN_DNS:
|
140
|
-
X509V3_add_value_uchar("DNS", gen->d.ia5->data, &ret)
|
144
|
+
if (!X509V3_add_value_uchar("DNS", gen->d.ia5->data, &ret))
|
145
|
+
return NULL;
|
141
146
|
break;
|
142
147
|
|
143
148
|
case GEN_URI:
|
144
|
-
X509V3_add_value_uchar("URI", gen->d.ia5->data, &ret)
|
149
|
+
if (!X509V3_add_value_uchar("URI", gen->d.ia5->data, &ret))
|
150
|
+
return NULL;
|
145
151
|
break;
|
146
152
|
|
147
153
|
case GEN_DIRNAME:
|
148
|
-
X509_NAME_oneline(gen->d.dirn, oline, 256)
|
149
|
-
|
154
|
+
if (X509_NAME_oneline(gen->d.dirn, oline, 256) == NULL
|
155
|
+
|| !X509V3_add_value("DirName", oline, &ret))
|
156
|
+
return NULL;
|
150
157
|
break;
|
151
158
|
|
152
159
|
case GEN_IPADD:
|
@@ -164,15 +171,18 @@ STACK_OF(CONF_VALUE) *i2v_GENERAL_NAME(X509V3_EXT_METHOD *method,
|
|
164
171
|
strcat(oline, ":");
|
165
172
|
}
|
166
173
|
} else {
|
167
|
-
X509V3_add_value("IP Address", "<invalid>", &ret)
|
174
|
+
if (!X509V3_add_value("IP Address", "<invalid>", &ret))
|
175
|
+
return NULL;
|
168
176
|
break;
|
169
177
|
}
|
170
|
-
X509V3_add_value("IP Address", oline, &ret)
|
178
|
+
if (!X509V3_add_value("IP Address", oline, &ret))
|
179
|
+
return NULL;
|
171
180
|
break;
|
172
181
|
|
173
182
|
case GEN_RID:
|
174
183
|
i2t_ASN1_OBJECT(oline, 256, gen->d.rid);
|
175
|
-
X509V3_add_value("Registered ID", oline, &ret)
|
184
|
+
if (!X509V3_add_value("Registered ID", oline, &ret))
|
185
|
+
return NULL;
|
176
186
|
break;
|
177
187
|
}
|
178
188
|
return ret;
|
@@ -468,9 +468,15 @@ static void print_notice(BIO *out, USERNOTICE *notice, int indent)
|
|
468
468
|
num = sk_ASN1_INTEGER_value(ref->noticenos, i);
|
469
469
|
if (i)
|
470
470
|
BIO_puts(out, ", ");
|
471
|
-
|
472
|
-
|
473
|
-
|
471
|
+
if (num == NULL)
|
472
|
+
BIO_puts(out, "(null)");
|
473
|
+
else {
|
474
|
+
tmp = i2s_ASN1_INTEGER(NULL, num);
|
475
|
+
if (tmp == NULL)
|
476
|
+
return;
|
477
|
+
BIO_puts(out, tmp);
|
478
|
+
OPENSSL_free(tmp);
|
479
|
+
}
|
474
480
|
}
|
475
481
|
BIO_puts(out, "\n");
|
476
482
|
}
|
@@ -112,29 +112,31 @@ ASN1_ITEM_TEMPLATE_END(AUTHORITY_INFO_ACCESS)
|
|
112
112
|
|
113
113
|
IMPLEMENT_ASN1_FUNCTIONS(AUTHORITY_INFO_ACCESS)
|
114
114
|
|
115
|
-
static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(
|
116
|
-
|
117
|
-
|
118
|
-
*ret)
|
115
|
+
static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(
|
116
|
+
X509V3_EXT_METHOD *method, AUTHORITY_INFO_ACCESS *ainfo,
|
117
|
+
STACK_OF(CONF_VALUE) *ret)
|
119
118
|
{
|
120
119
|
ACCESS_DESCRIPTION *desc;
|
121
120
|
size_t i;
|
122
121
|
int nlen;
|
123
122
|
char objtmp[80], *ntmp;
|
124
123
|
CONF_VALUE *vtmp;
|
124
|
+
STACK_OF(CONF_VALUE) *tret = ret;
|
125
|
+
|
125
126
|
for (i = 0; i < sk_ACCESS_DESCRIPTION_num(ainfo); i++) {
|
127
|
+
STACK_OF(CONF_VALUE) *tmp;
|
128
|
+
|
126
129
|
desc = sk_ACCESS_DESCRIPTION_value(ainfo, i);
|
127
|
-
|
128
|
-
if (
|
129
|
-
|
130
|
-
|
130
|
+
tmp = i2v_GENERAL_NAME(method, desc->location, tret);
|
131
|
+
if (tmp == NULL)
|
132
|
+
goto err;
|
133
|
+
tret = tmp;
|
134
|
+
vtmp = sk_CONF_VALUE_value(tret, i);
|
131
135
|
i2t_ASN1_OBJECT(objtmp, sizeof objtmp, desc->method);
|
132
136
|
nlen = strlen(objtmp) + strlen(vtmp->name) + 5;
|
133
137
|
ntmp = OPENSSL_malloc(nlen);
|
134
|
-
if (
|
135
|
-
|
136
|
-
return NULL;
|
137
|
-
}
|
138
|
+
if (ntmp == NULL)
|
139
|
+
goto err;
|
138
140
|
BUF_strlcpy(ntmp, objtmp, nlen);
|
139
141
|
BUF_strlcat(ntmp, " - ", nlen);
|
140
142
|
BUF_strlcat(ntmp, vtmp->name, nlen);
|
@@ -142,9 +144,15 @@ static STACK_OF(CONF_VALUE) *i2v_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD
|
|
142
144
|
vtmp->name = ntmp;
|
143
145
|
|
144
146
|
}
|
145
|
-
if (
|
147
|
+
if (ret == NULL && tret == NULL)
|
146
148
|
return sk_CONF_VALUE_new_null();
|
147
|
-
|
149
|
+
|
150
|
+
return tret;
|
151
|
+
err:
|
152
|
+
OPENSSL_PUT_ERROR(X509V3, ERR_R_MALLOC_FAILURE);
|
153
|
+
if (ret == NULL && tret != NULL)
|
154
|
+
sk_CONF_VALUE_pop_free(tret, X509V3_conf_free);
|
155
|
+
return NULL;
|
148
156
|
}
|
149
157
|
|
150
158
|
static AUTHORITY_INFO_ACCESS *v2i_AUTHORITY_INFO_ACCESS(X509V3_EXT_METHOD
|
@@ -214,17 +214,18 @@ static int print_nc_ipadd(BIO *bp, ASN1_OCTET_STRING *ip)
|
|
214
214
|
return 1;
|
215
215
|
}
|
216
216
|
|
217
|
-
|
218
|
-
* Check a certificate conforms to a specified set of constraints.
|
219
|
-
* values:
|
220
|
-
*
|
221
|
-
*
|
222
|
-
*
|
223
|
-
*
|
224
|
-
*
|
225
|
-
*
|
226
|
-
*
|
227
|
-
*
|
217
|
+
/*-
|
218
|
+
* Check a certificate conforms to a specified set of constraints.
|
219
|
+
* Return values:
|
220
|
+
* X509_V_OK: All constraints obeyed.
|
221
|
+
* X509_V_ERR_PERMITTED_VIOLATION: Permitted subtree violation.
|
222
|
+
* X509_V_ERR_EXCLUDED_VIOLATION: Excluded subtree violation.
|
223
|
+
* X509_V_ERR_SUBTREE_MINMAX: Min or max values present and matching type.
|
224
|
+
* X509_V_ERR_UNSPECIFIED: Unspecified error.
|
225
|
+
* X509_V_ERR_UNSUPPORTED_CONSTRAINT_TYPE: Unsupported constraint type.
|
226
|
+
* X509_V_ERR_UNSUPPORTED_CONSTRAINT_SYNTAX: Bad or unsupported constraint
|
227
|
+
* syntax.
|
228
|
+
* X509_V_ERR_UNSUPPORTED_NAME_SYNTAX: Bad or unsupported syntax of name.
|
228
229
|
*/
|
229
230
|
|
230
231
|
int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc)
|
@@ -235,6 +236,21 @@ int NAME_CONSTRAINTS_check(X509 *x, NAME_CONSTRAINTS *nc)
|
|
235
236
|
|
236
237
|
nm = X509_get_subject_name(x);
|
237
238
|
|
239
|
+
/* Guard against certificates with an excessive number of names or
|
240
|
+
* constraints causing a computationally expensive name constraints
|
241
|
+
* check. */
|
242
|
+
size_t name_count =
|
243
|
+
X509_NAME_entry_count(nm) + sk_GENERAL_NAME_num(x->altname);
|
244
|
+
size_t constraint_count = sk_GENERAL_SUBTREE_num(nc->permittedSubtrees) +
|
245
|
+
sk_GENERAL_SUBTREE_num(nc->excludedSubtrees);
|
246
|
+
size_t check_count = constraint_count * name_count;
|
247
|
+
if (name_count < (size_t)X509_NAME_entry_count(nm) ||
|
248
|
+
constraint_count < sk_GENERAL_SUBTREE_num(nc->permittedSubtrees) ||
|
249
|
+
(constraint_count && check_count / constraint_count != name_count) ||
|
250
|
+
check_count > 1 << 20) {
|
251
|
+
return X509_V_ERR_UNSPECIFIED;
|
252
|
+
}
|
253
|
+
|
238
254
|
if (X509_NAME_entry_count(nm) > 0) {
|
239
255
|
GENERAL_NAME gntmp;
|
240
256
|
gntmp.type = GEN_DIRNAME;
|
@@ -35,7 +35,6 @@
|
|
35
35
|
* SUCH DAMAGE.
|
36
36
|
*/
|
37
37
|
|
38
|
-
#include <stdio.h>
|
39
38
|
#include <string.h>
|
40
39
|
|
41
40
|
#include <openssl/conf.h>
|
@@ -153,38 +152,6 @@ static int process_pci_value(CONF_VALUE *val,
|
|
153
152
|
goto err;
|
154
153
|
}
|
155
154
|
OPENSSL_free(tmp_data2);
|
156
|
-
} else if (strncmp(val->value, "file:", 5) == 0) {
|
157
|
-
unsigned char buf[2048];
|
158
|
-
int n;
|
159
|
-
BIO *b = BIO_new_file(val->value + 5, "r");
|
160
|
-
if (!b) {
|
161
|
-
OPENSSL_PUT_ERROR(X509V3, ERR_R_BIO_LIB);
|
162
|
-
X509V3_conf_err(val);
|
163
|
-
goto err;
|
164
|
-
}
|
165
|
-
while ((n = BIO_read(b, buf, sizeof(buf))) > 0
|
166
|
-
|| (n == 0 && BIO_should_retry(b))) {
|
167
|
-
if (!n)
|
168
|
-
continue;
|
169
|
-
|
170
|
-
tmp_data = OPENSSL_realloc((*policy)->data,
|
171
|
-
(*policy)->length + n + 1);
|
172
|
-
|
173
|
-
if (!tmp_data)
|
174
|
-
break;
|
175
|
-
|
176
|
-
(*policy)->data = tmp_data;
|
177
|
-
OPENSSL_memcpy(&(*policy)->data[(*policy)->length], buf, n);
|
178
|
-
(*policy)->length += n;
|
179
|
-
(*policy)->data[(*policy)->length] = '\0';
|
180
|
-
}
|
181
|
-
BIO_free_all(b);
|
182
|
-
|
183
|
-
if (n < 0) {
|
184
|
-
OPENSSL_PUT_ERROR(X509V3, ERR_R_BIO_LIB);
|
185
|
-
X509V3_conf_err(val);
|
186
|
-
goto err;
|
187
|
-
}
|
188
155
|
} else if (strncmp(val->value, "text:", 5) == 0) {
|
189
156
|
val_len = strlen(val->value + 5);
|
190
157
|
tmp_data = OPENSSL_realloc((*policy)->data,
|
@@ -454,15 +454,13 @@ unsigned char *string_to_hex(const char *str, long *len)
|
|
454
454
|
OPENSSL_free(hexbuf);
|
455
455
|
return NULL;
|
456
456
|
}
|
457
|
-
if (isupper(ch))
|
458
|
-
ch = tolower(ch);
|
459
|
-
if (isupper(cl))
|
460
|
-
cl = tolower(cl);
|
461
457
|
|
462
458
|
if ((ch >= '0') && (ch <= '9'))
|
463
459
|
ch -= '0';
|
464
460
|
else if ((ch >= 'a') && (ch <= 'f'))
|
465
461
|
ch -= 'a' - 10;
|
462
|
+
else if ((ch >= 'A') && (ch <= 'F'))
|
463
|
+
ch -= 'A' - 10;
|
466
464
|
else
|
467
465
|
goto badhex;
|
468
466
|
|
@@ -470,6 +468,8 @@ unsigned char *string_to_hex(const char *str, long *len)
|
|
470
468
|
cl -= '0';
|
471
469
|
else if ((cl >= 'a') && (cl <= 'f'))
|
472
470
|
cl -= 'a' - 10;
|
471
|
+
else if ((cl >= 'A') && (cl <= 'F'))
|
472
|
+
cl -= 'A' - 10;
|
473
473
|
else
|
474
474
|
goto badhex;
|
475
475
|
|
@@ -22,242 +22,312 @@ extern "C" {
|
|
22
22
|
#endif
|
23
23
|
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
25
|
+
// Authenticated Encryption with Additional Data.
|
26
|
+
//
|
27
|
+
// AEAD couples confidentiality and integrity in a single primitive. AEAD
|
28
|
+
// algorithms take a key and then can seal and open individual messages. Each
|
29
|
+
// message has a unique, per-message nonce and, optionally, additional data
|
30
|
+
// which is authenticated but not included in the ciphertext.
|
31
|
+
//
|
32
|
+
// The |EVP_AEAD_CTX_init| function initialises an |EVP_AEAD_CTX| structure and
|
33
|
+
// performs any precomputation needed to use |aead| with |key|. The length of
|
34
|
+
// the key, |key_len|, is given in bytes.
|
35
|
+
//
|
36
|
+
// The |tag_len| argument contains the length of the tags, in bytes, and allows
|
37
|
+
// for the processing of truncated authenticators. A zero value indicates that
|
38
|
+
// the default tag length should be used and this is defined as
|
39
|
+
// |EVP_AEAD_DEFAULT_TAG_LENGTH| in order to make the code clear. Using
|
40
|
+
// truncated tags increases an attacker's chance of creating a valid forgery.
|
41
|
+
// Be aware that the attacker's chance may increase more than exponentially as
|
42
|
+
// would naively be expected.
|
43
|
+
//
|
44
|
+
// When no longer needed, the initialised |EVP_AEAD_CTX| structure must be
|
45
|
+
// passed to |EVP_AEAD_CTX_cleanup|, which will deallocate any memory used.
|
46
|
+
//
|
47
|
+
// With an |EVP_AEAD_CTX| in hand, one can seal and open messages. These
|
48
|
+
// operations are intended to meet the standard notions of privacy and
|
49
|
+
// authenticity for authenticated encryption. For formal definitions see
|
50
|
+
// Bellare and Namprempre, "Authenticated encryption: relations among notions
|
51
|
+
// and analysis of the generic composition paradigm," Lecture Notes in Computer
|
52
|
+
// Science B<1976> (2000), 531–545,
|
53
|
+
// http://www-cse.ucsd.edu/~mihir/papers/oem.html.
|
54
|
+
//
|
55
|
+
// When sealing messages, a nonce must be given. The length of the nonce is
|
56
|
+
// fixed by the AEAD in use and is returned by |EVP_AEAD_nonce_length|. *The
|
57
|
+
// nonce must be unique for all messages with the same key*. This is critically
|
58
|
+
// important - nonce reuse may completely undermine the security of the AEAD.
|
59
|
+
// Nonces may be predictable and public, so long as they are unique. Uniqueness
|
60
|
+
// may be achieved with a simple counter or, if large enough, may be generated
|
61
|
+
// randomly. The nonce must be passed into the "open" operation by the receiver
|
62
|
+
// so must either be implicit (e.g. a counter), or must be transmitted along
|
63
|
+
// with the sealed message.
|
64
|
+
//
|
65
|
+
// The "seal" and "open" operations are atomic - an entire message must be
|
66
|
+
// encrypted or decrypted in a single call. Large messages may have to be split
|
67
|
+
// up in order to accommodate this. When doing so, be mindful of the need not to
|
68
|
+
// repeat nonces and the possibility that an attacker could duplicate, reorder
|
69
|
+
// or drop message chunks. For example, using a single key for a given (large)
|
70
|
+
// message and sealing chunks with nonces counting from zero would be secure as
|
71
|
+
// long as the number of chunks was securely transmitted. (Otherwise an
|
72
|
+
// attacker could truncate the message by dropping chunks from the end.)
|
73
|
+
//
|
74
|
+
// The number of chunks could be transmitted by prefixing it to the plaintext,
|
75
|
+
// for example. This also assumes that no other message would ever use the same
|
76
|
+
// key otherwise the rule that nonces must be unique for a given key would be
|
77
|
+
// violated.
|
78
|
+
//
|
79
|
+
// The "seal" and "open" operations also permit additional data to be
|
80
|
+
// authenticated via the |ad| parameter. This data is not included in the
|
81
|
+
// ciphertext and must be identical for both the "seal" and "open" call. This
|
82
|
+
// permits implicit context to be authenticated but may be empty if not needed.
|
83
|
+
//
|
84
|
+
// The "seal" and "open" operations may work in-place if the |out| and |in|
|
85
|
+
// arguments are equal. Otherwise, if |out| and |in| alias, input data may be
|
86
|
+
// overwritten before it is read. This situation will cause an error.
|
87
|
+
//
|
88
|
+
// The "seal" and "open" operations return one on success and zero on error.
|
89
|
+
|
90
|
+
|
91
|
+
// AEAD algorithms.
|
92
|
+
|
93
|
+
// EVP_aead_aes_128_gcm is AES-128 in Galois Counter Mode.
|
94
94
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm(void);
|
95
95
|
|
96
|
-
|
96
|
+
// EVP_aead_aes_256_gcm is AES-256 in Galois Counter Mode.
|
97
97
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm(void);
|
98
98
|
|
99
|
-
|
100
|
-
|
99
|
+
// EVP_aead_chacha20_poly1305 is the AEAD built from ChaCha20 and
|
100
|
+
// Poly1305 as described in RFC 7539.
|
101
101
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_chacha20_poly1305(void);
|
102
102
|
|
103
|
-
|
104
|
-
|
105
|
-
|
103
|
+
// EVP_aead_aes_128_ctr_hmac_sha256 is AES-128 in CTR mode with HMAC-SHA256 for
|
104
|
+
// authentication. The nonce is 12 bytes; the bottom 32-bits are used as the
|
105
|
+
// block counter, thus the maximum plaintext size is 64GB.
|
106
106
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_ctr_hmac_sha256(void);
|
107
107
|
|
108
|
-
|
109
|
-
|
108
|
+
// EVP_aead_aes_256_ctr_hmac_sha256 is AES-256 in CTR mode with HMAC-SHA256 for
|
109
|
+
// authentication. See |EVP_aead_aes_128_ctr_hmac_sha256| for details.
|
110
110
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_ctr_hmac_sha256(void);
|
111
111
|
|
112
|
-
|
113
|
-
|
112
|
+
// EVP_aead_aes_128_gcm_siv is AES-128 in GCM-SIV mode. See
|
113
|
+
// https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02
|
114
114
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm_siv(void);
|
115
115
|
|
116
|
-
|
117
|
-
|
116
|
+
// EVP_aead_aes_256_gcm_siv is AES-256 in GCM-SIV mode. See
|
117
|
+
// https://tools.ietf.org/html/draft-irtf-cfrg-gcmsiv-02
|
118
118
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm_siv(void);
|
119
119
|
|
120
|
-
|
121
|
-
|
120
|
+
// EVP_has_aes_hardware returns one if we enable hardware support for fast and
|
121
|
+
// constant-time AES-GCM.
|
122
122
|
OPENSSL_EXPORT int EVP_has_aes_hardware(void);
|
123
123
|
|
124
124
|
|
125
|
-
|
125
|
+
// Utility functions.
|
126
126
|
|
127
|
-
|
128
|
-
|
127
|
+
// EVP_AEAD_key_length returns the length, in bytes, of the keys used by
|
128
|
+
// |aead|.
|
129
129
|
OPENSSL_EXPORT size_t EVP_AEAD_key_length(const EVP_AEAD *aead);
|
130
130
|
|
131
|
-
|
132
|
-
|
131
|
+
// EVP_AEAD_nonce_length returns the length, in bytes, of the per-message nonce
|
132
|
+
// for |aead|.
|
133
133
|
OPENSSL_EXPORT size_t EVP_AEAD_nonce_length(const EVP_AEAD *aead);
|
134
134
|
|
135
|
-
|
136
|
-
|
135
|
+
// EVP_AEAD_max_overhead returns the maximum number of additional bytes added
|
136
|
+
// by the act of sealing data with |aead|.
|
137
137
|
OPENSSL_EXPORT size_t EVP_AEAD_max_overhead(const EVP_AEAD *aead);
|
138
138
|
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
// EVP_AEAD_max_tag_len returns the maximum tag length when using |aead|. This
|
140
|
+
// is the largest value that can be passed as |tag_len| to
|
141
|
+
// |EVP_AEAD_CTX_init|.
|
142
142
|
OPENSSL_EXPORT size_t EVP_AEAD_max_tag_len(const EVP_AEAD *aead);
|
143
143
|
|
144
144
|
|
145
|
-
|
145
|
+
// AEAD operations.
|
146
146
|
|
147
|
-
|
148
|
-
|
147
|
+
// An EVP_AEAD_CTX represents an AEAD algorithm configured with a specific key
|
148
|
+
// and message-independent IV.
|
149
149
|
typedef struct evp_aead_ctx_st {
|
150
150
|
const EVP_AEAD *aead;
|
151
|
-
|
152
|
-
|
151
|
+
// aead_state is an opaque pointer to whatever state the AEAD needs to
|
152
|
+
// maintain.
|
153
153
|
void *aead_state;
|
154
|
+
// tag_len may contain the actual length of the authentication tag if it is
|
155
|
+
// known at initialization time.
|
156
|
+
uint8_t tag_len;
|
154
157
|
} EVP_AEAD_CTX;
|
155
158
|
|
156
|
-
|
157
|
-
|
159
|
+
// EVP_AEAD_MAX_KEY_LENGTH contains the maximum key length used by
|
160
|
+
// any AEAD defined in this header.
|
158
161
|
#define EVP_AEAD_MAX_KEY_LENGTH 80
|
159
162
|
|
160
|
-
|
161
|
-
|
163
|
+
// EVP_AEAD_MAX_NONCE_LENGTH contains the maximum nonce length used by
|
164
|
+
// any AEAD defined in this header.
|
162
165
|
#define EVP_AEAD_MAX_NONCE_LENGTH 16
|
163
166
|
|
164
|
-
|
165
|
-
|
167
|
+
// EVP_AEAD_MAX_OVERHEAD contains the maximum overhead used by any AEAD
|
168
|
+
// defined in this header.
|
166
169
|
#define EVP_AEAD_MAX_OVERHEAD 64
|
167
170
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
+
// EVP_AEAD_DEFAULT_TAG_LENGTH is a magic value that can be passed to
|
172
|
+
// EVP_AEAD_CTX_init to indicate that the default tag length for an AEAD should
|
173
|
+
// be used.
|
171
174
|
#define EVP_AEAD_DEFAULT_TAG_LENGTH 0
|
172
175
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
176
|
+
// EVP_AEAD_CTX_zero sets an uninitialized |ctx| to the zero state. It must be
|
177
|
+
// initialized with |EVP_AEAD_CTX_init| before use. It is safe, but not
|
178
|
+
// necessary, to call |EVP_AEAD_CTX_cleanup| in this state. This may be used for
|
179
|
+
// more uniform cleanup of |EVP_AEAD_CTX|.
|
177
180
|
OPENSSL_EXPORT void EVP_AEAD_CTX_zero(EVP_AEAD_CTX *ctx);
|
178
181
|
|
179
|
-
|
180
|
-
|
181
|
-
*
|
182
|
-
*
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
182
|
+
// EVP_AEAD_CTX_new allocates an |EVP_AEAD_CTX|, calls |EVP_AEAD_CTX_init| and
|
183
|
+
// returns the |EVP_AEAD_CTX|, or NULL on error.
|
184
|
+
OPENSSL_EXPORT EVP_AEAD_CTX *EVP_AEAD_CTX_new(const EVP_AEAD *aead,
|
185
|
+
const uint8_t *key,
|
186
|
+
size_t key_len, size_t tag_len);
|
187
|
+
|
188
|
+
// EVP_AEAD_CTX_free calls |EVP_AEAD_CTX_cleanup| and |OPENSSL_free| on
|
189
|
+
// |ctx|.
|
190
|
+
OPENSSL_EXPORT void EVP_AEAD_CTX_free(EVP_AEAD_CTX *ctx);
|
191
|
+
|
192
|
+
// EVP_AEAD_CTX_init initializes |ctx| for the given AEAD algorithm. The |impl|
|
193
|
+
// argument is ignored and should be NULL. Authentication tags may be truncated
|
194
|
+
// by passing a size as |tag_len|. A |tag_len| of zero indicates the default
|
195
|
+
// tag length and this is defined as EVP_AEAD_DEFAULT_TAG_LENGTH for
|
196
|
+
// readability.
|
197
|
+
//
|
198
|
+
// Returns 1 on success. Otherwise returns 0 and pushes to the error stack. In
|
199
|
+
// the error case, you do not need to call |EVP_AEAD_CTX_cleanup|, but it's
|
200
|
+
// harmless to do so.
|
188
201
|
OPENSSL_EXPORT int EVP_AEAD_CTX_init(EVP_AEAD_CTX *ctx, const EVP_AEAD *aead,
|
189
202
|
const uint8_t *key, size_t key_len,
|
190
203
|
size_t tag_len, ENGINE *impl);
|
191
204
|
|
192
|
-
|
193
|
-
|
194
|
-
|
205
|
+
// EVP_AEAD_CTX_cleanup frees any data allocated by |ctx|. It is a no-op to
|
206
|
+
// call |EVP_AEAD_CTX_cleanup| on a |EVP_AEAD_CTX| that has been |memset| to
|
207
|
+
// all zeros.
|
195
208
|
OPENSSL_EXPORT void EVP_AEAD_CTX_cleanup(EVP_AEAD_CTX *ctx);
|
196
209
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
210
|
+
// EVP_AEAD_CTX_seal encrypts and authenticates |in_len| bytes from |in| and
|
211
|
+
// authenticates |ad_len| bytes from |ad| and writes the result to |out|. It
|
212
|
+
// returns one on success and zero otherwise.
|
213
|
+
//
|
214
|
+
// This function may be called concurrently with itself or any other seal/open
|
215
|
+
// function on the same |EVP_AEAD_CTX|.
|
216
|
+
//
|
217
|
+
// At most |max_out_len| bytes are written to |out| and, in order to ensure
|
218
|
+
// success, |max_out_len| should be |in_len| plus the result of
|
219
|
+
// |EVP_AEAD_max_overhead|. On successful return, |*out_len| is set to the
|
220
|
+
// actual number of bytes written.
|
221
|
+
//
|
222
|
+
// The length of |nonce|, |nonce_len|, must be equal to the result of
|
223
|
+
// |EVP_AEAD_nonce_length| for this AEAD.
|
224
|
+
//
|
225
|
+
// |EVP_AEAD_CTX_seal| never results in a partial output. If |max_out_len| is
|
226
|
+
// insufficient, zero will be returned. If any error occurs, |out| will be
|
227
|
+
// filled with zero bytes and |*out_len| set to zero.
|
228
|
+
//
|
229
|
+
// If |in| and |out| alias then |out| must be == |in|.
|
217
230
|
OPENSSL_EXPORT int EVP_AEAD_CTX_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
218
231
|
size_t *out_len, size_t max_out_len,
|
219
232
|
const uint8_t *nonce, size_t nonce_len,
|
220
233
|
const uint8_t *in, size_t in_len,
|
221
234
|
const uint8_t *ad, size_t ad_len);
|
222
235
|
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
236
|
+
// EVP_AEAD_CTX_open authenticates |in_len| bytes from |in| and |ad_len| bytes
|
237
|
+
// from |ad| and decrypts at most |in_len| bytes into |out|. It returns one on
|
238
|
+
// success and zero otherwise.
|
239
|
+
//
|
240
|
+
// This function may be called concurrently with itself or any other seal/open
|
241
|
+
// function on the same |EVP_AEAD_CTX|.
|
242
|
+
//
|
243
|
+
// At most |in_len| bytes are written to |out|. In order to ensure success,
|
244
|
+
// |max_out_len| should be at least |in_len|. On successful return, |*out_len|
|
245
|
+
// is set to the the actual number of bytes written.
|
246
|
+
//
|
247
|
+
// The length of |nonce|, |nonce_len|, must be equal to the result of
|
248
|
+
// |EVP_AEAD_nonce_length| for this AEAD.
|
249
|
+
//
|
250
|
+
// |EVP_AEAD_CTX_open| never results in a partial output. If |max_out_len| is
|
251
|
+
// insufficient, zero will be returned. If any error occurs, |out| will be
|
252
|
+
// filled with zero bytes and |*out_len| set to zero.
|
253
|
+
//
|
254
|
+
// If |in| and |out| alias then |out| must be == |in|.
|
242
255
|
OPENSSL_EXPORT int EVP_AEAD_CTX_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
243
256
|
size_t *out_len, size_t max_out_len,
|
244
257
|
const uint8_t *nonce, size_t nonce_len,
|
245
258
|
const uint8_t *in, size_t in_len,
|
246
259
|
const uint8_t *ad, size_t ad_len);
|
247
260
|
|
248
|
-
|
249
|
-
|
261
|
+
// EVP_AEAD_CTX_seal_scatter encrypts and authenticates |in_len| bytes from |in|
|
262
|
+
// and authenticates |ad_len| bytes from |ad|. It writes |in_len| bytes of
|
263
|
+
// ciphertext to |out| and the authentication tag to |out_tag|. It returns one
|
264
|
+
// on success and zero otherwise.
|
265
|
+
//
|
266
|
+
// This function may be called concurrently with itself or any other seal/open
|
267
|
+
// function on the same |EVP_AEAD_CTX|.
|
268
|
+
//
|
269
|
+
// Exactly |in_len| bytes are written to |out|, and up to
|
270
|
+
// |EVP_AEAD_max_overhead+extra_in_len| bytes to |out_tag|. On successful
|
271
|
+
// return, |*out_tag_len| is set to the actual number of bytes written to
|
272
|
+
// |out_tag|.
|
273
|
+
//
|
274
|
+
// |extra_in| may point to an additional plaintext input buffer if the cipher
|
275
|
+
// supports it. If present, |extra_in_len| additional bytes of plaintext are
|
276
|
+
// encrypted and authenticated, and the ciphertext is written (before the tag)
|
277
|
+
// to |out_tag|. |max_out_tag_len| must be sized to allow for the additional
|
278
|
+
// |extra_in_len| bytes.
|
279
|
+
//
|
280
|
+
// The length of |nonce|, |nonce_len|, must be equal to the result of
|
281
|
+
// |EVP_AEAD_nonce_length| for this AEAD.
|
282
|
+
//
|
283
|
+
// |EVP_AEAD_CTX_seal_scatter| never results in a partial output. If
|
284
|
+
// |max_out_tag_len| is insufficient, zero will be returned. If any error
|
285
|
+
// occurs, |out| and |out_tag| will be filled with zero bytes and |*out_tag_len|
|
286
|
+
// set to zero.
|
287
|
+
//
|
288
|
+
// If |in| and |out| alias then |out| must be == |in|. |out_tag| may not alias
|
289
|
+
// any other argument.
|
290
|
+
OPENSSL_EXPORT int EVP_AEAD_CTX_seal_scatter(
|
291
|
+
const EVP_AEAD_CTX *ctx, uint8_t *out,
|
292
|
+
uint8_t *out_tag, size_t *out_tag_len, size_t max_out_tag_len,
|
293
|
+
const uint8_t *nonce, size_t nonce_len,
|
294
|
+
const uint8_t *in, size_t in_len,
|
295
|
+
const uint8_t *extra_in, size_t extra_in_len,
|
296
|
+
const uint8_t *ad, size_t ad_len);
|
297
|
+
|
298
|
+
// EVP_AEAD_CTX_open_gather decrypts and authenticates |in_len| bytes from |in|
|
299
|
+
// and authenticates |ad_len| bytes from |ad| using |in_tag_len| bytes of
|
300
|
+
// authentication tag from |in_tag|. If successful, it writes |in_len| bytes of
|
301
|
+
// plaintext to |out|. It returns one on success and zero otherwise.
|
302
|
+
//
|
303
|
+
// This function may be called concurrently with itself or any other seal/open
|
304
|
+
// function on the same |EVP_AEAD_CTX|.
|
305
|
+
//
|
306
|
+
// The length of |nonce|, |nonce_len|, must be equal to the result of
|
307
|
+
// |EVP_AEAD_nonce_length| for this AEAD.
|
308
|
+
//
|
309
|
+
// |EVP_AEAD_CTX_open_gather| never results in a partial output. If any error
|
310
|
+
// occurs, |out| will be filled with zero bytes.
|
311
|
+
//
|
312
|
+
// If |in| and |out| alias then |out| must be == |in|.
|
313
|
+
OPENSSL_EXPORT int EVP_AEAD_CTX_open_gather(
|
314
|
+
const EVP_AEAD_CTX *ctx, uint8_t *out, const uint8_t *nonce,
|
315
|
+
size_t nonce_len, const uint8_t *in, size_t in_len, const uint8_t *in_tag,
|
316
|
+
size_t in_tag_len, const uint8_t *ad, size_t ad_len);
|
317
|
+
|
318
|
+
// EVP_AEAD_CTX_aead returns the underlying AEAD for |ctx|, or NULL if one has
|
319
|
+
// not been set.
|
250
320
|
OPENSSL_EXPORT const EVP_AEAD *EVP_AEAD_CTX_aead(const EVP_AEAD_CTX *ctx);
|
251
321
|
|
252
322
|
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
323
|
+
// TLS-specific AEAD algorithms.
|
324
|
+
//
|
325
|
+
// These AEAD primitives do not meet the definition of generic AEADs. They are
|
326
|
+
// all specific to TLS and should not be used outside of that context. They must
|
327
|
+
// be initialized with |EVP_AEAD_CTX_init_with_direction|, are stateful, and may
|
328
|
+
// not be used concurrently. Any nonces are used as IVs, so they must be
|
329
|
+
// unpredictable. They only accept an |ad| parameter of length 11 (the standard
|
330
|
+
// TLS one with length omitted).
|
261
331
|
|
262
332
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls(void);
|
263
333
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls_implicit_iv(void);
|
@@ -273,14 +343,22 @@ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_tls_implicit_iv(void);
|
|
273
343
|
|
274
344
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_tls(void);
|
275
345
|
|
346
|
+
// EVP_aead_aes_128_gcm_tls12 is AES-128 in Galois Counter Mode using the TLS
|
347
|
+
// 1.2 nonce construction.
|
348
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_gcm_tls12(void);
|
349
|
+
|
350
|
+
// EVP_aead_aes_256_gcm_tls12 is AES-256 in Galois Counter Mode using the TLS
|
351
|
+
// 1.2 nonce construction.
|
352
|
+
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_gcm_tls12(void);
|
276
353
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
354
|
+
|
355
|
+
// SSLv3-specific AEAD algorithms.
|
356
|
+
//
|
357
|
+
// These AEAD primitives do not meet the definition of generic AEADs. They are
|
358
|
+
// all specific to SSLv3 and should not be used outside of that context. They
|
359
|
+
// must be initialized with |EVP_AEAD_CTX_init_with_direction|, are stateful,
|
360
|
+
// and may not be used concurrently. They only accept an |ad| parameter of
|
361
|
+
// length 9 (the standard TLS one with length and version omitted).
|
284
362
|
|
285
363
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_ssl3(void);
|
286
364
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_aes_256_cbc_sha1_ssl3(void);
|
@@ -288,32 +366,41 @@ OPENSSL_EXPORT const EVP_AEAD *EVP_aead_des_ede3_cbc_sha1_ssl3(void);
|
|
288
366
|
OPENSSL_EXPORT const EVP_AEAD *EVP_aead_null_sha1_ssl3(void);
|
289
367
|
|
290
368
|
|
291
|
-
|
369
|
+
// Obscure functions.
|
292
370
|
|
293
|
-
|
371
|
+
// evp_aead_direction_t denotes the direction of an AEAD operation.
|
294
372
|
enum evp_aead_direction_t {
|
295
373
|
evp_aead_open,
|
296
374
|
evp_aead_seal,
|
297
375
|
};
|
298
376
|
|
299
|
-
|
300
|
-
|
301
|
-
|
377
|
+
// EVP_AEAD_CTX_init_with_direction calls |EVP_AEAD_CTX_init| for normal
|
378
|
+
// AEADs. For TLS-specific and SSL3-specific AEADs, it initializes |ctx| for a
|
379
|
+
// given direction.
|
302
380
|
OPENSSL_EXPORT int EVP_AEAD_CTX_init_with_direction(
|
303
381
|
EVP_AEAD_CTX *ctx, const EVP_AEAD *aead, const uint8_t *key, size_t key_len,
|
304
382
|
size_t tag_len, enum evp_aead_direction_t dir);
|
305
383
|
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
384
|
+
// EVP_AEAD_CTX_get_iv sets |*out_len| to the length of the IV for |ctx| and
|
385
|
+
// sets |*out_iv| to point to that many bytes of the current IV. This is only
|
386
|
+
// meaningful for AEADs with implicit IVs (i.e. CBC mode in SSLv3 and TLS 1.0).
|
387
|
+
//
|
388
|
+
// It returns one on success or zero on error.
|
311
389
|
OPENSSL_EXPORT int EVP_AEAD_CTX_get_iv(const EVP_AEAD_CTX *ctx,
|
312
390
|
const uint8_t **out_iv, size_t *out_len);
|
313
391
|
|
392
|
+
// EVP_AEAD_CTX_tag_len computes the exact byte length of the tag written by
|
393
|
+
// |EVP_AEAD_CTX_seal_scatter| and writes it to |*out_tag_len|. It returns one
|
394
|
+
// on success or zero on error. |in_len| and |extra_in_len| must equal the
|
395
|
+
// arguments of the same names passed to |EVP_AEAD_CTX_seal_scatter|.
|
396
|
+
OPENSSL_EXPORT int EVP_AEAD_CTX_tag_len(const EVP_AEAD_CTX *ctx,
|
397
|
+
size_t *out_tag_len,
|
398
|
+
const size_t in_len,
|
399
|
+
const size_t extra_in_len);
|
400
|
+
|
314
401
|
|
315
402
|
#if defined(__cplusplus)
|
316
|
-
}
|
403
|
+
} // extern C
|
317
404
|
|
318
405
|
#if !defined(BORINGSSL_NO_CXX)
|
319
406
|
extern "C++" {
|
@@ -324,6 +411,8 @@ using ScopedEVP_AEAD_CTX =
|
|
324
411
|
internal::StackAllocated<EVP_AEAD_CTX, void, EVP_AEAD_CTX_zero,
|
325
412
|
EVP_AEAD_CTX_cleanup>;
|
326
413
|
|
414
|
+
BORINGSSL_MAKE_DELETER(EVP_AEAD_CTX, EVP_AEAD_CTX_free)
|
415
|
+
|
327
416
|
} // namespace bssl
|
328
417
|
|
329
418
|
} // extern C++
|
@@ -331,4 +420,4 @@ using ScopedEVP_AEAD_CTX =
|
|
331
420
|
|
332
421
|
#endif
|
333
422
|
|
334
|
-
#endif
|
423
|
+
#endif // OPENSSL_HEADER_AEAD_H
|