grpc 1.9.1 → 1.10.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +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
@@ -26,6 +26,7 @@
|
|
26
26
|
|
27
27
|
#include "internal.h"
|
28
28
|
#include "../internal.h"
|
29
|
+
#include "../fipsmodule/cipher/internal.h"
|
29
30
|
|
30
31
|
|
31
32
|
typedef struct {
|
@@ -39,8 +40,8 @@ static int ssl3_mac(AEAD_SSL3_CTX *ssl3_ctx, uint8_t *out, unsigned *out_len,
|
|
39
40
|
size_t md_size = EVP_MD_CTX_size(&ssl3_ctx->md_ctx);
|
40
41
|
size_t pad_len = (md_size == 20) ? 40 : 48;
|
41
42
|
|
42
|
-
|
43
|
-
|
43
|
+
// To allow for CBC mode which changes cipher length, |ad| doesn't include the
|
44
|
+
// length for legacy ciphers.
|
44
45
|
uint8_t ad_extra[2];
|
45
46
|
ad_extra[0] = (uint8_t)(in_len >> 8);
|
46
47
|
ad_extra[1] = (uint8_t)(in_len & 0xff);
|
@@ -122,28 +123,48 @@ static int aead_ssl3_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len,
|
|
122
123
|
return 1;
|
123
124
|
}
|
124
125
|
|
125
|
-
static
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
126
|
+
static size_t aead_ssl3_tag_len(const EVP_AEAD_CTX *ctx, const size_t in_len,
|
127
|
+
const size_t extra_in_len) {
|
128
|
+
assert(extra_in_len == 0);
|
129
|
+
const AEAD_SSL3_CTX *ssl3_ctx = (AEAD_SSL3_CTX*)ctx->aead_state;
|
130
|
+
|
131
|
+
const size_t digest_len = EVP_MD_CTX_size(&ssl3_ctx->md_ctx);
|
132
|
+
if (EVP_CIPHER_CTX_mode(&ssl3_ctx->cipher_ctx) != EVP_CIPH_CBC_MODE) {
|
133
|
+
// The NULL cipher.
|
134
|
+
return digest_len;
|
135
|
+
}
|
136
|
+
|
137
|
+
const size_t block_size = EVP_CIPHER_CTX_block_size(&ssl3_ctx->cipher_ctx);
|
138
|
+
// An overflow of |in_len + digest_len| doesn't affect the result mod
|
139
|
+
// |block_size|, provided that |block_size| is a smaller power of two.
|
140
|
+
assert(block_size != 0 && (block_size & (block_size - 1)) == 0);
|
141
|
+
const size_t pad_len = block_size - ((in_len + digest_len) % block_size);
|
142
|
+
return digest_len + pad_len;
|
143
|
+
}
|
144
|
+
|
145
|
+
static int aead_ssl3_seal_scatter(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
146
|
+
uint8_t *out_tag, size_t *out_tag_len,
|
147
|
+
const size_t max_out_tag_len,
|
148
|
+
const uint8_t *nonce, const size_t nonce_len,
|
149
|
+
const uint8_t *in, const size_t in_len,
|
150
|
+
const uint8_t *extra_in,
|
151
|
+
const size_t extra_in_len, const uint8_t *ad,
|
152
|
+
const size_t ad_len) {
|
130
153
|
AEAD_SSL3_CTX *ssl3_ctx = (AEAD_SSL3_CTX *)ctx->aead_state;
|
131
|
-
size_t total = 0;
|
132
154
|
|
133
155
|
if (!ssl3_ctx->cipher_ctx.encrypt) {
|
134
|
-
|
156
|
+
// Unlike a normal AEAD, an SSL3 AEAD may only be used in one direction.
|
135
157
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_OPERATION);
|
136
158
|
return 0;
|
137
159
|
}
|
138
160
|
|
139
|
-
if (in_len
|
140
|
-
|
141
|
-
/* EVP_CIPHER takes int as input. */
|
161
|
+
if (in_len > INT_MAX) {
|
162
|
+
// EVP_CIPHER takes int as input.
|
142
163
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
|
143
164
|
return 0;
|
144
165
|
}
|
145
166
|
|
146
|
-
if (
|
167
|
+
if (max_out_tag_len < aead_ssl3_tag_len(ctx, in_len, extra_in_len)) {
|
147
168
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
|
148
169
|
return 0;
|
149
170
|
}
|
@@ -158,52 +179,71 @@ static int aead_ssl3_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
158
179
|
return 0;
|
159
180
|
}
|
160
181
|
|
161
|
-
|
162
|
-
|
182
|
+
// Compute the MAC. This must be first in case the operation is being done
|
183
|
+
// in-place.
|
163
184
|
uint8_t mac[EVP_MAX_MD_SIZE];
|
164
185
|
unsigned mac_len;
|
165
186
|
if (!ssl3_mac(ssl3_ctx, mac, &mac_len, ad, ad_len, in, in_len)) {
|
166
187
|
return 0;
|
167
188
|
}
|
168
189
|
|
169
|
-
|
190
|
+
// Encrypt the input.
|
170
191
|
int len;
|
171
192
|
if (!EVP_EncryptUpdate(&ssl3_ctx->cipher_ctx, out, &len, in,
|
172
193
|
(int)in_len)) {
|
173
194
|
return 0;
|
174
195
|
}
|
175
|
-
total = len;
|
176
196
|
|
177
|
-
|
178
|
-
|
179
|
-
|
197
|
+
const size_t block_size = EVP_CIPHER_CTX_block_size(&ssl3_ctx->cipher_ctx);
|
198
|
+
|
199
|
+
// Feed the MAC into the cipher in two steps. First complete the final partial
|
200
|
+
// block from encrypting the input and split the result between |out| and
|
201
|
+
// |out_tag|. Then encrypt the remainder.
|
202
|
+
|
203
|
+
size_t early_mac_len = (block_size - (in_len % block_size)) % block_size;
|
204
|
+
if (early_mac_len != 0) {
|
205
|
+
assert(len + block_size - early_mac_len == in_len);
|
206
|
+
uint8_t buf[EVP_MAX_BLOCK_LENGTH];
|
207
|
+
int buf_len;
|
208
|
+
if (!EVP_EncryptUpdate(&ssl3_ctx->cipher_ctx, buf, &buf_len, mac,
|
209
|
+
(int)early_mac_len)) {
|
210
|
+
return 0;
|
211
|
+
}
|
212
|
+
assert(buf_len == (int)block_size);
|
213
|
+
OPENSSL_memcpy(out + len, buf, block_size - early_mac_len);
|
214
|
+
OPENSSL_memcpy(out_tag, buf + block_size - early_mac_len, early_mac_len);
|
215
|
+
}
|
216
|
+
size_t tag_len = early_mac_len;
|
217
|
+
|
218
|
+
if (!EVP_EncryptUpdate(&ssl3_ctx->cipher_ctx, out_tag + tag_len, &len,
|
219
|
+
mac + tag_len, mac_len - tag_len)) {
|
180
220
|
return 0;
|
181
221
|
}
|
182
|
-
|
222
|
+
tag_len += len;
|
183
223
|
|
184
|
-
unsigned block_size = EVP_CIPHER_CTX_block_size(&ssl3_ctx->cipher_ctx);
|
185
224
|
if (block_size > 1) {
|
186
225
|
assert(block_size <= 256);
|
187
226
|
assert(EVP_CIPHER_CTX_mode(&ssl3_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE);
|
188
227
|
|
189
|
-
|
228
|
+
// Compute padding and feed that into the cipher.
|
190
229
|
uint8_t padding[256];
|
191
|
-
|
230
|
+
size_t padding_len = block_size - ((in_len + mac_len) % block_size);
|
192
231
|
OPENSSL_memset(padding, 0, padding_len - 1);
|
193
232
|
padding[padding_len - 1] = padding_len - 1;
|
194
|
-
if (!EVP_EncryptUpdate(&ssl3_ctx->cipher_ctx,
|
233
|
+
if (!EVP_EncryptUpdate(&ssl3_ctx->cipher_ctx, out_tag + tag_len, &len, padding,
|
195
234
|
(int)padding_len)) {
|
196
235
|
return 0;
|
197
236
|
}
|
198
|
-
|
237
|
+
tag_len += len;
|
199
238
|
}
|
200
239
|
|
201
|
-
if (!EVP_EncryptFinal_ex(&ssl3_ctx->cipher_ctx,
|
240
|
+
if (!EVP_EncryptFinal_ex(&ssl3_ctx->cipher_ctx, out_tag + tag_len, &len)) {
|
202
241
|
return 0;
|
203
242
|
}
|
204
|
-
|
243
|
+
tag_len += len;
|
244
|
+
assert(tag_len == aead_ssl3_tag_len(ctx, in_len, extra_in_len));
|
205
245
|
|
206
|
-
*
|
246
|
+
*out_tag_len = tag_len;
|
207
247
|
return 1;
|
208
248
|
}
|
209
249
|
|
@@ -215,7 +255,7 @@ static int aead_ssl3_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
215
255
|
AEAD_SSL3_CTX *ssl3_ctx = (AEAD_SSL3_CTX *)ctx->aead_state;
|
216
256
|
|
217
257
|
if (ssl3_ctx->cipher_ctx.encrypt) {
|
218
|
-
|
258
|
+
// Unlike a normal AEAD, an SSL3 AEAD may only be used in one direction.
|
219
259
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_OPERATION);
|
220
260
|
return 0;
|
221
261
|
}
|
@@ -227,8 +267,8 @@ static int aead_ssl3_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
227
267
|
}
|
228
268
|
|
229
269
|
if (max_out_len < in_len) {
|
230
|
-
|
231
|
-
|
270
|
+
// This requires that the caller provide space for the MAC, even though it
|
271
|
+
// will always be removed on return.
|
232
272
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
|
233
273
|
return 0;
|
234
274
|
}
|
@@ -244,12 +284,12 @@ static int aead_ssl3_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
244
284
|
}
|
245
285
|
|
246
286
|
if (in_len > INT_MAX) {
|
247
|
-
|
287
|
+
// EVP_CIPHER takes int as input.
|
248
288
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
|
249
289
|
return 0;
|
250
290
|
}
|
251
291
|
|
252
|
-
|
292
|
+
// Decrypt to get the plaintext + MAC + padding.
|
253
293
|
size_t total = 0;
|
254
294
|
int len;
|
255
295
|
if (!EVP_DecryptUpdate(&ssl3_ctx->cipher_ctx, out, &len, in, (int)in_len)) {
|
@@ -262,9 +302,9 @@ static int aead_ssl3_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
262
302
|
total += len;
|
263
303
|
assert(total == in_len);
|
264
304
|
|
265
|
-
|
266
|
-
|
267
|
-
|
305
|
+
// Remove CBC padding and MAC. This would normally be timing-sensitive, but
|
306
|
+
// SSLv3 CBC ciphers are already broken. Support will be removed eventually.
|
307
|
+
// https://www.openssl.org/~bodo/ssl-poodle.pdf
|
268
308
|
size_t data_len;
|
269
309
|
if (EVP_CIPHER_CTX_mode(&ssl3_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE) {
|
270
310
|
unsigned padding_length = out[total - 1];
|
@@ -272,7 +312,7 @@ static int aead_ssl3_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
272
312
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
|
273
313
|
return 0;
|
274
314
|
}
|
275
|
-
|
315
|
+
// The padding must be minimal.
|
276
316
|
if (padding_length + 1 > EVP_CIPHER_CTX_block_size(&ssl3_ctx->cipher_ctx)) {
|
277
317
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
|
278
318
|
return 0;
|
@@ -282,7 +322,7 @@ static int aead_ssl3_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
282
322
|
data_len = total - mac_len;
|
283
323
|
}
|
284
324
|
|
285
|
-
|
325
|
+
// Compute the MAC and compare against the one in the record.
|
286
326
|
uint8_t mac[EVP_MAX_MD_SIZE];
|
287
327
|
if (!ssl3_mac(ssl3_ctx, mac, NULL, ad, ad_len, out, data_len)) {
|
288
328
|
return 0;
|
@@ -338,55 +378,71 @@ static int aead_null_sha1_ssl3_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
|
|
338
378
|
}
|
339
379
|
|
340
380
|
static const EVP_AEAD aead_aes_128_cbc_sha1_ssl3 = {
|
341
|
-
SHA_DIGEST_LENGTH + 16 + 16,
|
342
|
-
0,
|
343
|
-
16 + SHA_DIGEST_LENGTH,
|
344
|
-
SHA_DIGEST_LENGTH,
|
345
|
-
|
381
|
+
SHA_DIGEST_LENGTH + 16 + 16, // key len (SHA1 + AES128 + IV)
|
382
|
+
0, // nonce len
|
383
|
+
16 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
384
|
+
SHA_DIGEST_LENGTH, // max tag length
|
385
|
+
0, // seal_scatter_supports_extra_in
|
386
|
+
|
387
|
+
NULL, // init
|
346
388
|
aead_aes_128_cbc_sha1_ssl3_init,
|
347
389
|
aead_ssl3_cleanup,
|
348
|
-
aead_ssl3_seal,
|
349
390
|
aead_ssl3_open,
|
391
|
+
aead_ssl3_seal_scatter,
|
392
|
+
NULL, // open_gather
|
350
393
|
aead_ssl3_get_iv,
|
394
|
+
aead_ssl3_tag_len,
|
351
395
|
};
|
352
396
|
|
353
397
|
static const EVP_AEAD aead_aes_256_cbc_sha1_ssl3 = {
|
354
|
-
SHA_DIGEST_LENGTH + 32 + 16,
|
355
|
-
0,
|
356
|
-
16 + SHA_DIGEST_LENGTH,
|
357
|
-
SHA_DIGEST_LENGTH,
|
358
|
-
|
398
|
+
SHA_DIGEST_LENGTH + 32 + 16, // key len (SHA1 + AES256 + IV)
|
399
|
+
0, // nonce len
|
400
|
+
16 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
401
|
+
SHA_DIGEST_LENGTH, // max tag length
|
402
|
+
0, // seal_scatter_supports_extra_in
|
403
|
+
|
404
|
+
NULL, // init
|
359
405
|
aead_aes_256_cbc_sha1_ssl3_init,
|
360
406
|
aead_ssl3_cleanup,
|
361
|
-
aead_ssl3_seal,
|
362
407
|
aead_ssl3_open,
|
408
|
+
aead_ssl3_seal_scatter,
|
409
|
+
NULL, // open_gather
|
363
410
|
aead_ssl3_get_iv,
|
411
|
+
aead_ssl3_tag_len,
|
364
412
|
};
|
365
413
|
|
366
414
|
static const EVP_AEAD aead_des_ede3_cbc_sha1_ssl3 = {
|
367
|
-
SHA_DIGEST_LENGTH + 24 + 8,
|
368
|
-
0,
|
369
|
-
8 + SHA_DIGEST_LENGTH,
|
370
|
-
SHA_DIGEST_LENGTH,
|
371
|
-
|
415
|
+
SHA_DIGEST_LENGTH + 24 + 8, // key len (SHA1 + 3DES + IV)
|
416
|
+
0, // nonce len
|
417
|
+
8 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
418
|
+
SHA_DIGEST_LENGTH, // max tag length
|
419
|
+
0, // seal_scatter_supports_extra_in
|
420
|
+
|
421
|
+
NULL, // init
|
372
422
|
aead_des_ede3_cbc_sha1_ssl3_init,
|
373
423
|
aead_ssl3_cleanup,
|
374
|
-
aead_ssl3_seal,
|
375
424
|
aead_ssl3_open,
|
425
|
+
aead_ssl3_seal_scatter,
|
426
|
+
NULL, // open_gather
|
376
427
|
aead_ssl3_get_iv,
|
428
|
+
aead_ssl3_tag_len,
|
377
429
|
};
|
378
430
|
|
379
431
|
static const EVP_AEAD aead_null_sha1_ssl3 = {
|
380
|
-
SHA_DIGEST_LENGTH,
|
381
|
-
0,
|
382
|
-
SHA_DIGEST_LENGTH,
|
383
|
-
SHA_DIGEST_LENGTH,
|
384
|
-
|
432
|
+
SHA_DIGEST_LENGTH, // key len
|
433
|
+
0, // nonce len
|
434
|
+
SHA_DIGEST_LENGTH, // overhead (SHA1)
|
435
|
+
SHA_DIGEST_LENGTH, // max tag length
|
436
|
+
0, // seal_scatter_supports_extra_in
|
437
|
+
|
438
|
+
NULL, // init
|
385
439
|
aead_null_sha1_ssl3_init,
|
386
440
|
aead_ssl3_cleanup,
|
387
|
-
aead_ssl3_seal,
|
388
441
|
aead_ssl3_open,
|
389
|
-
|
442
|
+
aead_ssl3_seal_scatter,
|
443
|
+
NULL, // open_gather
|
444
|
+
NULL, // get_iv
|
445
|
+
aead_ssl3_tag_len,
|
390
446
|
};
|
391
447
|
|
392
448
|
const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_ssl3(void) {
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include <openssl/sha.h>
|
26
26
|
#include <openssl/type_check.h>
|
27
27
|
|
28
|
+
#include "../fipsmodule/cipher/internal.h"
|
28
29
|
#include "../internal.h"
|
29
30
|
#include "internal.h"
|
30
31
|
|
@@ -32,12 +33,12 @@
|
|
32
33
|
typedef struct {
|
33
34
|
EVP_CIPHER_CTX cipher_ctx;
|
34
35
|
HMAC_CTX hmac_ctx;
|
35
|
-
|
36
|
-
|
36
|
+
// mac_key is the portion of the key used for the MAC. It is retained
|
37
|
+
// separately for the constant-time CBC code.
|
37
38
|
uint8_t mac_key[EVP_MAX_MD_SIZE];
|
38
39
|
uint8_t mac_key_len;
|
39
|
-
|
40
|
-
|
40
|
+
// implicit_iv is one iff this is a pre-TLS-1.1 CBC cipher without an explicit
|
41
|
+
// IV.
|
41
42
|
char implicit_iv;
|
42
43
|
} AEAD_TLS_CTX;
|
43
44
|
|
@@ -47,7 +48,6 @@ static void aead_tls_cleanup(EVP_AEAD_CTX *ctx) {
|
|
47
48
|
AEAD_TLS_CTX *tls_ctx = (AEAD_TLS_CTX *)ctx->aead_state;
|
48
49
|
EVP_CIPHER_CTX_cleanup(&tls_ctx->cipher_ctx);
|
49
50
|
HMAC_CTX_cleanup(&tls_ctx->hmac_ctx);
|
50
|
-
OPENSSL_cleanse(&tls_ctx->mac_key, sizeof(tls_ctx->mac_key));
|
51
51
|
OPENSSL_free(tls_ctx);
|
52
52
|
ctx->aead_state = NULL;
|
53
53
|
}
|
@@ -98,28 +98,48 @@ static int aead_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key, size_t key_len,
|
|
98
98
|
return 1;
|
99
99
|
}
|
100
100
|
|
101
|
-
static
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
101
|
+
static size_t aead_tls_tag_len(const EVP_AEAD_CTX *ctx, const size_t in_len,
|
102
|
+
const size_t extra_in_len) {
|
103
|
+
assert(extra_in_len == 0);
|
104
|
+
AEAD_TLS_CTX *tls_ctx = (AEAD_TLS_CTX *)ctx->aead_state;
|
105
|
+
|
106
|
+
const size_t hmac_len = HMAC_size(&tls_ctx->hmac_ctx);
|
107
|
+
if (EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) != EVP_CIPH_CBC_MODE) {
|
108
|
+
// The NULL cipher.
|
109
|
+
return hmac_len;
|
110
|
+
}
|
111
|
+
|
112
|
+
const size_t block_size = EVP_CIPHER_CTX_block_size(&tls_ctx->cipher_ctx);
|
113
|
+
// An overflow of |in_len + hmac_len| doesn't affect the result mod
|
114
|
+
// |block_size|, provided that |block_size| is a smaller power of two.
|
115
|
+
assert(block_size != 0 && (block_size & (block_size - 1)) == 0);
|
116
|
+
const size_t pad_len = block_size - (in_len + hmac_len) % block_size;
|
117
|
+
return hmac_len + pad_len;
|
118
|
+
}
|
119
|
+
|
120
|
+
static int aead_tls_seal_scatter(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
121
|
+
uint8_t *out_tag, size_t *out_tag_len,
|
122
|
+
const size_t max_out_tag_len,
|
123
|
+
const uint8_t *nonce, const size_t nonce_len,
|
124
|
+
const uint8_t *in, const size_t in_len,
|
125
|
+
const uint8_t *extra_in,
|
126
|
+
const size_t extra_in_len, const uint8_t *ad,
|
127
|
+
const size_t ad_len) {
|
106
128
|
AEAD_TLS_CTX *tls_ctx = (AEAD_TLS_CTX *)ctx->aead_state;
|
107
|
-
size_t total = 0;
|
108
129
|
|
109
130
|
if (!tls_ctx->cipher_ctx.encrypt) {
|
110
|
-
|
131
|
+
// Unlike a normal AEAD, a TLS AEAD may only be used in one direction.
|
111
132
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_OPERATION);
|
112
133
|
return 0;
|
113
134
|
}
|
114
135
|
|
115
|
-
if (in_len
|
116
|
-
|
117
|
-
/* EVP_CIPHER takes int as input. */
|
136
|
+
if (in_len > INT_MAX) {
|
137
|
+
// EVP_CIPHER takes int as input.
|
118
138
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
|
119
139
|
return 0;
|
120
140
|
}
|
121
141
|
|
122
|
-
if (
|
142
|
+
if (max_out_tag_len < aead_tls_tag_len(ctx, in_len, extra_in_len)) {
|
123
143
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
|
124
144
|
return 0;
|
125
145
|
}
|
@@ -134,14 +154,14 @@ static int aead_tls_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
134
154
|
return 0;
|
135
155
|
}
|
136
156
|
|
137
|
-
|
138
|
-
|
157
|
+
// To allow for CBC mode which changes cipher length, |ad| doesn't include the
|
158
|
+
// length for legacy ciphers.
|
139
159
|
uint8_t ad_extra[2];
|
140
160
|
ad_extra[0] = (uint8_t)(in_len >> 8);
|
141
161
|
ad_extra[1] = (uint8_t)(in_len & 0xff);
|
142
162
|
|
143
|
-
|
144
|
-
|
163
|
+
// Compute the MAC. This must be first in case the operation is being done
|
164
|
+
// in-place.
|
145
165
|
uint8_t mac[EVP_MAX_MD_SIZE];
|
146
166
|
unsigned mac_len;
|
147
167
|
if (!HMAC_Init_ex(&tls_ctx->hmac_ctx, NULL, 0, NULL, NULL) ||
|
@@ -152,62 +172,80 @@ static int aead_tls_seal(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
152
172
|
return 0;
|
153
173
|
}
|
154
174
|
|
155
|
-
|
175
|
+
// Configure the explicit IV.
|
156
176
|
if (EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE &&
|
157
177
|
!tls_ctx->implicit_iv &&
|
158
178
|
!EVP_EncryptInit_ex(&tls_ctx->cipher_ctx, NULL, NULL, NULL, nonce)) {
|
159
179
|
return 0;
|
160
180
|
}
|
161
181
|
|
162
|
-
|
182
|
+
// Encrypt the input.
|
163
183
|
int len;
|
164
|
-
if (!EVP_EncryptUpdate(&tls_ctx->cipher_ctx, out, &len, in,
|
165
|
-
(int)in_len)) {
|
184
|
+
if (!EVP_EncryptUpdate(&tls_ctx->cipher_ctx, out, &len, in, (int)in_len)) {
|
166
185
|
return 0;
|
167
186
|
}
|
168
|
-
total = len;
|
169
187
|
|
170
|
-
|
171
|
-
|
172
|
-
|
188
|
+
unsigned block_size = EVP_CIPHER_CTX_block_size(&tls_ctx->cipher_ctx);
|
189
|
+
|
190
|
+
// Feed the MAC into the cipher in two steps. First complete the final partial
|
191
|
+
// block from encrypting the input and split the result between |out| and
|
192
|
+
// |out_tag|. Then feed the rest.
|
193
|
+
|
194
|
+
const size_t early_mac_len =
|
195
|
+
(block_size - (in_len % block_size) % block_size);
|
196
|
+
if (early_mac_len != 0) {
|
197
|
+
assert(len + block_size - early_mac_len == in_len);
|
198
|
+
uint8_t buf[EVP_MAX_BLOCK_LENGTH];
|
199
|
+
int buf_len;
|
200
|
+
if (!EVP_EncryptUpdate(&tls_ctx->cipher_ctx, buf, &buf_len, mac,
|
201
|
+
(int)early_mac_len)) {
|
202
|
+
return 0;
|
203
|
+
}
|
204
|
+
assert(buf_len == (int)block_size);
|
205
|
+
OPENSSL_memcpy(out + len, buf, block_size - early_mac_len);
|
206
|
+
OPENSSL_memcpy(out_tag, buf + block_size - early_mac_len, early_mac_len);
|
207
|
+
}
|
208
|
+
size_t tag_len = early_mac_len;
|
209
|
+
|
210
|
+
if (!EVP_EncryptUpdate(&tls_ctx->cipher_ctx, out_tag + tag_len, &len,
|
211
|
+
mac + tag_len, mac_len - tag_len)) {
|
173
212
|
return 0;
|
174
213
|
}
|
175
|
-
|
214
|
+
tag_len += len;
|
176
215
|
|
177
|
-
unsigned block_size = EVP_CIPHER_CTX_block_size(&tls_ctx->cipher_ctx);
|
178
216
|
if (block_size > 1) {
|
179
217
|
assert(block_size <= 256);
|
180
218
|
assert(EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE);
|
181
219
|
|
182
|
-
|
220
|
+
// Compute padding and feed that into the cipher.
|
183
221
|
uint8_t padding[256];
|
184
222
|
unsigned padding_len = block_size - ((in_len + mac_len) % block_size);
|
185
223
|
OPENSSL_memset(padding, padding_len - 1, padding_len);
|
186
|
-
if (!EVP_EncryptUpdate(&tls_ctx->cipher_ctx,
|
187
|
-
(int)padding_len)) {
|
224
|
+
if (!EVP_EncryptUpdate(&tls_ctx->cipher_ctx, out_tag + tag_len, &len,
|
225
|
+
padding, (int)padding_len)) {
|
188
226
|
return 0;
|
189
227
|
}
|
190
|
-
|
228
|
+
tag_len += len;
|
191
229
|
}
|
192
230
|
|
193
|
-
if (!EVP_EncryptFinal_ex(&tls_ctx->cipher_ctx,
|
231
|
+
if (!EVP_EncryptFinal_ex(&tls_ctx->cipher_ctx, out_tag + tag_len, &len)) {
|
194
232
|
return 0;
|
195
233
|
}
|
196
|
-
|
234
|
+
assert(len == 0); // Padding is explicit.
|
235
|
+
assert(tag_len == aead_tls_tag_len(ctx, in_len, extra_in_len));
|
197
236
|
|
198
|
-
*
|
237
|
+
*out_tag_len = tag_len;
|
199
238
|
return 1;
|
200
239
|
}
|
201
240
|
|
202
|
-
static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
203
|
-
size_t
|
204
|
-
const uint8_t *
|
205
|
-
const uint8_t *in, size_t in_len,
|
241
|
+
static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out, size_t *out_len,
|
242
|
+
size_t max_out_len, const uint8_t *nonce,
|
243
|
+
size_t nonce_len, const uint8_t *in, size_t in_len,
|
206
244
|
const uint8_t *ad, size_t ad_len) {
|
207
245
|
AEAD_TLS_CTX *tls_ctx = (AEAD_TLS_CTX *)ctx->aead_state;
|
208
246
|
|
209
247
|
if (tls_ctx->cipher_ctx.encrypt) {
|
210
|
-
|
248
|
+
// Unlike a normal AEAD, a TLS AEAD may only be used in one direction.
|
211
249
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_INVALID_OPERATION);
|
212
250
|
return 0;
|
213
251
|
}
|
@@ -218,8 +256,8 @@ static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
218
256
|
}
|
219
257
|
|
220
258
|
if (max_out_len < in_len) {
|
221
|
-
|
222
|
-
|
259
|
+
// This requires that the caller provide space for the MAC, even though it
|
260
|
+
// will always be removed on return.
|
223
261
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BUFFER_TOO_SMALL);
|
224
262
|
return 0;
|
225
263
|
}
|
@@ -235,19 +273,19 @@ static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
235
273
|
}
|
236
274
|
|
237
275
|
if (in_len > INT_MAX) {
|
238
|
-
|
276
|
+
// EVP_CIPHER takes int as input.
|
239
277
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_TOO_LARGE);
|
240
278
|
return 0;
|
241
279
|
}
|
242
280
|
|
243
|
-
|
281
|
+
// Configure the explicit IV.
|
244
282
|
if (EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE &&
|
245
283
|
!tls_ctx->implicit_iv &&
|
246
284
|
!EVP_DecryptInit_ex(&tls_ctx->cipher_ctx, NULL, NULL, NULL, nonce)) {
|
247
285
|
return 0;
|
248
286
|
}
|
249
287
|
|
250
|
-
|
288
|
+
// Decrypt to get the plaintext + MAC + padding.
|
251
289
|
size_t total = 0;
|
252
290
|
int len;
|
253
291
|
if (!EVP_DecryptUpdate(&tls_ctx->cipher_ctx, out, &len, in, (int)in_len)) {
|
@@ -260,40 +298,41 @@ static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
260
298
|
total += len;
|
261
299
|
assert(total == in_len);
|
262
300
|
|
263
|
-
|
264
|
-
|
265
|
-
|
301
|
+
// Remove CBC padding. Code from here on is timing-sensitive with respect to
|
302
|
+
// |padding_ok| and |data_plus_mac_len| for CBC ciphers.
|
303
|
+
size_t data_plus_mac_len;
|
304
|
+
crypto_word_t padding_ok;
|
266
305
|
if (EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) == EVP_CIPH_CBC_MODE) {
|
267
306
|
if (!EVP_tls_cbc_remove_padding(
|
268
307
|
&padding_ok, &data_plus_mac_len, out, total,
|
269
308
|
EVP_CIPHER_CTX_block_size(&tls_ctx->cipher_ctx),
|
270
|
-
|
271
|
-
|
309
|
+
HMAC_size(&tls_ctx->hmac_ctx))) {
|
310
|
+
// Publicly invalid. This can be rejected in non-constant time.
|
272
311
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
|
273
312
|
return 0;
|
274
313
|
}
|
275
314
|
} else {
|
276
|
-
padding_ok =
|
315
|
+
padding_ok = CONSTTIME_TRUE_W;
|
277
316
|
data_plus_mac_len = total;
|
278
|
-
|
279
|
-
|
317
|
+
// |data_plus_mac_len| = |total| = |in_len| at this point. |in_len| has
|
318
|
+
// already been checked against the MAC size at the top of the function.
|
280
319
|
assert(data_plus_mac_len >= HMAC_size(&tls_ctx->hmac_ctx));
|
281
320
|
}
|
282
|
-
|
321
|
+
size_t data_len = data_plus_mac_len - HMAC_size(&tls_ctx->hmac_ctx);
|
283
322
|
|
284
|
-
|
285
|
-
|
286
|
-
|
323
|
+
// At this point, if the padding is valid, the first |data_plus_mac_len| bytes
|
324
|
+
// after |out| are the plaintext and MAC. Otherwise, |data_plus_mac_len| is
|
325
|
+
// still large enough to extract a MAC, but it will be irrelevant.
|
287
326
|
|
288
|
-
|
289
|
-
|
327
|
+
// To allow for CBC mode which changes cipher length, |ad| doesn't include the
|
328
|
+
// length for legacy ciphers.
|
290
329
|
uint8_t ad_fixed[13];
|
291
330
|
OPENSSL_memcpy(ad_fixed, ad, 11);
|
292
331
|
ad_fixed[11] = (uint8_t)(data_len >> 8);
|
293
332
|
ad_fixed[12] = (uint8_t)(data_len & 0xff);
|
294
333
|
ad_len += 2;
|
295
334
|
|
296
|
-
|
335
|
+
// Compute the MAC and extract the one in the record.
|
297
336
|
uint8_t mac[EVP_MAX_MD_SIZE];
|
298
337
|
size_t mac_len;
|
299
338
|
uint8_t record_mac_tmp[EVP_MAX_MD_SIZE];
|
@@ -311,8 +350,8 @@ static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
311
350
|
record_mac = record_mac_tmp;
|
312
351
|
EVP_tls_cbc_copy_mac(record_mac, mac_len, out, data_plus_mac_len, total);
|
313
352
|
} else {
|
314
|
-
|
315
|
-
|
353
|
+
// We should support the constant-time path for all CBC-mode ciphers
|
354
|
+
// implemented.
|
316
355
|
assert(EVP_CIPHER_CTX_mode(&tls_ctx->cipher_ctx) != EVP_CIPH_CBC_MODE);
|
317
356
|
|
318
357
|
unsigned mac_len_u;
|
@@ -328,19 +367,19 @@ static int aead_tls_open(const EVP_AEAD_CTX *ctx, uint8_t *out,
|
|
328
367
|
record_mac = &out[data_len];
|
329
368
|
}
|
330
369
|
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
370
|
+
// Perform the MAC check and the padding check in constant-time. It should be
|
371
|
+
// safe to simply perform the padding check first, but it would not be under a
|
372
|
+
// different choice of MAC location on padding failure. See
|
373
|
+
// EVP_tls_cbc_remove_padding.
|
374
|
+
crypto_word_t good =
|
375
|
+
constant_time_eq_int(CRYPTO_memcmp(record_mac, mac, mac_len), 0);
|
337
376
|
good &= padding_ok;
|
338
377
|
if (!good) {
|
339
378
|
OPENSSL_PUT_ERROR(CIPHER, CIPHER_R_BAD_DECRYPT);
|
340
379
|
return 0;
|
341
380
|
}
|
342
381
|
|
343
|
-
|
382
|
+
// End of timing-sensitive code.
|
344
383
|
|
345
384
|
*out_len = data_len;
|
346
385
|
return 1;
|
@@ -434,133 +473,173 @@ static int aead_null_sha1_tls_init(EVP_AEAD_CTX *ctx, const uint8_t *key,
|
|
434
473
|
}
|
435
474
|
|
436
475
|
static const EVP_AEAD aead_aes_128_cbc_sha1_tls = {
|
437
|
-
SHA_DIGEST_LENGTH + 16,
|
438
|
-
16,
|
439
|
-
16 + SHA_DIGEST_LENGTH,
|
440
|
-
SHA_DIGEST_LENGTH,
|
441
|
-
|
476
|
+
SHA_DIGEST_LENGTH + 16, // key len (SHA1 + AES128)
|
477
|
+
16, // nonce len (IV)
|
478
|
+
16 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
479
|
+
SHA_DIGEST_LENGTH, // max tag length
|
480
|
+
0, // seal_scatter_supports_extra_in
|
481
|
+
|
482
|
+
NULL, // init
|
442
483
|
aead_aes_128_cbc_sha1_tls_init,
|
443
484
|
aead_tls_cleanup,
|
444
|
-
aead_tls_seal,
|
445
485
|
aead_tls_open,
|
446
|
-
|
486
|
+
aead_tls_seal_scatter,
|
487
|
+
NULL, // open_gather
|
488
|
+
NULL, // get_iv
|
489
|
+
aead_tls_tag_len,
|
447
490
|
};
|
448
491
|
|
449
492
|
static const EVP_AEAD aead_aes_128_cbc_sha1_tls_implicit_iv = {
|
450
|
-
SHA_DIGEST_LENGTH + 16 + 16,
|
451
|
-
0,
|
452
|
-
16 + SHA_DIGEST_LENGTH,
|
453
|
-
SHA_DIGEST_LENGTH,
|
454
|
-
|
493
|
+
SHA_DIGEST_LENGTH + 16 + 16, // key len (SHA1 + AES128 + IV)
|
494
|
+
0, // nonce len
|
495
|
+
16 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
496
|
+
SHA_DIGEST_LENGTH, // max tag length
|
497
|
+
0, // seal_scatter_supports_extra_in
|
498
|
+
|
499
|
+
NULL, // init
|
455
500
|
aead_aes_128_cbc_sha1_tls_implicit_iv_init,
|
456
501
|
aead_tls_cleanup,
|
457
|
-
aead_tls_seal,
|
458
502
|
aead_tls_open,
|
459
|
-
|
503
|
+
aead_tls_seal_scatter,
|
504
|
+
NULL, // open_gather
|
505
|
+
aead_tls_get_iv, // get_iv
|
506
|
+
aead_tls_tag_len,
|
460
507
|
};
|
461
508
|
|
462
509
|
static const EVP_AEAD aead_aes_128_cbc_sha256_tls = {
|
463
|
-
SHA256_DIGEST_LENGTH + 16,
|
464
|
-
16,
|
465
|
-
16 + SHA256_DIGEST_LENGTH,
|
466
|
-
SHA256_DIGEST_LENGTH,
|
467
|
-
|
510
|
+
SHA256_DIGEST_LENGTH + 16, // key len (SHA256 + AES128)
|
511
|
+
16, // nonce len (IV)
|
512
|
+
16 + SHA256_DIGEST_LENGTH, // overhead (padding + SHA256)
|
513
|
+
SHA256_DIGEST_LENGTH, // max tag length
|
514
|
+
0, // seal_scatter_supports_extra_in
|
515
|
+
|
516
|
+
NULL, // init
|
468
517
|
aead_aes_128_cbc_sha256_tls_init,
|
469
518
|
aead_tls_cleanup,
|
470
|
-
aead_tls_seal,
|
471
519
|
aead_tls_open,
|
472
|
-
|
520
|
+
aead_tls_seal_scatter,
|
521
|
+
NULL, // open_gather
|
522
|
+
NULL, // get_iv
|
523
|
+
aead_tls_tag_len,
|
473
524
|
};
|
474
525
|
|
475
526
|
static const EVP_AEAD aead_aes_256_cbc_sha1_tls = {
|
476
|
-
SHA_DIGEST_LENGTH + 32,
|
477
|
-
16,
|
478
|
-
16 + SHA_DIGEST_LENGTH,
|
479
|
-
SHA_DIGEST_LENGTH,
|
480
|
-
|
527
|
+
SHA_DIGEST_LENGTH + 32, // key len (SHA1 + AES256)
|
528
|
+
16, // nonce len (IV)
|
529
|
+
16 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
530
|
+
SHA_DIGEST_LENGTH, // max tag length
|
531
|
+
0, // seal_scatter_supports_extra_in
|
532
|
+
|
533
|
+
NULL, // init
|
481
534
|
aead_aes_256_cbc_sha1_tls_init,
|
482
535
|
aead_tls_cleanup,
|
483
|
-
aead_tls_seal,
|
484
536
|
aead_tls_open,
|
485
|
-
|
537
|
+
aead_tls_seal_scatter,
|
538
|
+
NULL, // open_gather
|
539
|
+
NULL, // get_iv
|
540
|
+
aead_tls_tag_len,
|
486
541
|
};
|
487
542
|
|
488
543
|
static const EVP_AEAD aead_aes_256_cbc_sha1_tls_implicit_iv = {
|
489
|
-
SHA_DIGEST_LENGTH + 32 + 16,
|
490
|
-
0,
|
491
|
-
16 + SHA_DIGEST_LENGTH,
|
492
|
-
SHA_DIGEST_LENGTH,
|
493
|
-
|
544
|
+
SHA_DIGEST_LENGTH + 32 + 16, // key len (SHA1 + AES256 + IV)
|
545
|
+
0, // nonce len
|
546
|
+
16 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
547
|
+
SHA_DIGEST_LENGTH, // max tag length
|
548
|
+
0, // seal_scatter_supports_extra_in
|
549
|
+
|
550
|
+
NULL, // init
|
494
551
|
aead_aes_256_cbc_sha1_tls_implicit_iv_init,
|
495
552
|
aead_tls_cleanup,
|
496
|
-
aead_tls_seal,
|
497
553
|
aead_tls_open,
|
498
|
-
|
554
|
+
aead_tls_seal_scatter,
|
555
|
+
NULL, // open_gather
|
556
|
+
aead_tls_get_iv, // get_iv
|
557
|
+
aead_tls_tag_len,
|
499
558
|
};
|
500
559
|
|
501
560
|
static const EVP_AEAD aead_aes_256_cbc_sha256_tls = {
|
502
|
-
SHA256_DIGEST_LENGTH + 32,
|
503
|
-
16,
|
504
|
-
16 + SHA256_DIGEST_LENGTH,
|
505
|
-
SHA256_DIGEST_LENGTH,
|
506
|
-
|
561
|
+
SHA256_DIGEST_LENGTH + 32, // key len (SHA256 + AES256)
|
562
|
+
16, // nonce len (IV)
|
563
|
+
16 + SHA256_DIGEST_LENGTH, // overhead (padding + SHA256)
|
564
|
+
SHA256_DIGEST_LENGTH, // max tag length
|
565
|
+
0, // seal_scatter_supports_extra_in
|
566
|
+
|
567
|
+
NULL, // init
|
507
568
|
aead_aes_256_cbc_sha256_tls_init,
|
508
569
|
aead_tls_cleanup,
|
509
|
-
aead_tls_seal,
|
510
570
|
aead_tls_open,
|
511
|
-
|
571
|
+
aead_tls_seal_scatter,
|
572
|
+
NULL, // open_gather
|
573
|
+
NULL, // get_iv
|
574
|
+
aead_tls_tag_len,
|
512
575
|
};
|
513
576
|
|
514
577
|
static const EVP_AEAD aead_aes_256_cbc_sha384_tls = {
|
515
|
-
SHA384_DIGEST_LENGTH + 32,
|
516
|
-
16,
|
517
|
-
16 + SHA384_DIGEST_LENGTH,
|
518
|
-
SHA384_DIGEST_LENGTH,
|
519
|
-
|
578
|
+
SHA384_DIGEST_LENGTH + 32, // key len (SHA384 + AES256)
|
579
|
+
16, // nonce len (IV)
|
580
|
+
16 + SHA384_DIGEST_LENGTH, // overhead (padding + SHA384)
|
581
|
+
SHA384_DIGEST_LENGTH, // max tag length
|
582
|
+
0, // seal_scatter_supports_extra_in
|
583
|
+
|
584
|
+
NULL, // init
|
520
585
|
aead_aes_256_cbc_sha384_tls_init,
|
521
586
|
aead_tls_cleanup,
|
522
|
-
aead_tls_seal,
|
523
587
|
aead_tls_open,
|
524
|
-
|
588
|
+
aead_tls_seal_scatter,
|
589
|
+
NULL, // open_gather
|
590
|
+
NULL, // get_iv
|
591
|
+
aead_tls_tag_len,
|
525
592
|
};
|
526
593
|
|
527
594
|
static const EVP_AEAD aead_des_ede3_cbc_sha1_tls = {
|
528
|
-
SHA_DIGEST_LENGTH + 24,
|
529
|
-
8,
|
530
|
-
8 + SHA_DIGEST_LENGTH,
|
531
|
-
SHA_DIGEST_LENGTH,
|
532
|
-
|
595
|
+
SHA_DIGEST_LENGTH + 24, // key len (SHA1 + 3DES)
|
596
|
+
8, // nonce len (IV)
|
597
|
+
8 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
598
|
+
SHA_DIGEST_LENGTH, // max tag length
|
599
|
+
0, // seal_scatter_supports_extra_in
|
600
|
+
|
601
|
+
NULL, // init
|
533
602
|
aead_des_ede3_cbc_sha1_tls_init,
|
534
603
|
aead_tls_cleanup,
|
535
|
-
aead_tls_seal,
|
536
604
|
aead_tls_open,
|
537
|
-
|
605
|
+
aead_tls_seal_scatter,
|
606
|
+
NULL, // open_gather
|
607
|
+
NULL, // get_iv
|
608
|
+
aead_tls_tag_len,
|
538
609
|
};
|
539
610
|
|
540
611
|
static const EVP_AEAD aead_des_ede3_cbc_sha1_tls_implicit_iv = {
|
541
|
-
SHA_DIGEST_LENGTH + 24 + 8,
|
542
|
-
0,
|
543
|
-
8 + SHA_DIGEST_LENGTH,
|
544
|
-
SHA_DIGEST_LENGTH,
|
545
|
-
|
612
|
+
SHA_DIGEST_LENGTH + 24 + 8, // key len (SHA1 + 3DES + IV)
|
613
|
+
0, // nonce len
|
614
|
+
8 + SHA_DIGEST_LENGTH, // overhead (padding + SHA1)
|
615
|
+
SHA_DIGEST_LENGTH, // max tag length
|
616
|
+
0, // seal_scatter_supports_extra_in
|
617
|
+
|
618
|
+
NULL, // init
|
546
619
|
aead_des_ede3_cbc_sha1_tls_implicit_iv_init,
|
547
620
|
aead_tls_cleanup,
|
548
|
-
aead_tls_seal,
|
549
621
|
aead_tls_open,
|
550
|
-
|
622
|
+
aead_tls_seal_scatter,
|
623
|
+
NULL, // open_gather
|
624
|
+
aead_tls_get_iv, // get_iv
|
625
|
+
aead_tls_tag_len,
|
551
626
|
};
|
552
627
|
|
553
628
|
static const EVP_AEAD aead_null_sha1_tls = {
|
554
|
-
SHA_DIGEST_LENGTH,
|
555
|
-
0,
|
556
|
-
SHA_DIGEST_LENGTH,
|
557
|
-
SHA_DIGEST_LENGTH,
|
558
|
-
|
629
|
+
SHA_DIGEST_LENGTH, // key len
|
630
|
+
0, // nonce len
|
631
|
+
SHA_DIGEST_LENGTH, // overhead (SHA1)
|
632
|
+
SHA_DIGEST_LENGTH, // max tag length
|
633
|
+
0, // seal_scatter_supports_extra_in
|
634
|
+
|
635
|
+
NULL, // init
|
559
636
|
aead_null_sha1_tls_init,
|
560
637
|
aead_tls_cleanup,
|
561
|
-
aead_tls_seal,
|
562
638
|
aead_tls_open,
|
563
|
-
|
639
|
+
aead_tls_seal_scatter,
|
640
|
+
NULL, // open_gather
|
641
|
+
NULL, // get_iv
|
642
|
+
aead_tls_tag_len,
|
564
643
|
};
|
565
644
|
|
566
645
|
const EVP_AEAD *EVP_aead_aes_128_cbc_sha1_tls(void) {
|