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
@@ -0,0 +1,240 @@
|
|
1
|
+
/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
|
2
|
+
* All rights reserved.
|
3
|
+
*
|
4
|
+
* This package is an SSL implementation written
|
5
|
+
* by Eric Young (eay@cryptsoft.com).
|
6
|
+
* The implementation was written so as to conform with Netscapes SSL.
|
7
|
+
*
|
8
|
+
* This library is free for commercial and non-commercial use as long as
|
9
|
+
* the following conditions are aheared to. The following conditions
|
10
|
+
* apply to all code found in this distribution, be it the RC4, RSA,
|
11
|
+
* lhash, DES, etc., code; not just the SSL code. The SSL documentation
|
12
|
+
* included with this distribution is covered by the same copyright terms
|
13
|
+
* except that the holder is Tim Hudson (tjh@cryptsoft.com).
|
14
|
+
*
|
15
|
+
* Copyright remains Eric Young's, and as such any Copyright notices in
|
16
|
+
* the code are not to be removed.
|
17
|
+
* If this package is used in a product, Eric Young should be given attribution
|
18
|
+
* as the author of the parts of the library used.
|
19
|
+
* This can be in the form of a textual message at program startup or
|
20
|
+
* in documentation (online or textual) provided with the package.
|
21
|
+
*
|
22
|
+
* Redistribution and use in source and binary forms, with or without
|
23
|
+
* modification, are permitted provided that the following conditions
|
24
|
+
* are met:
|
25
|
+
* 1. Redistributions of source code must retain the copyright
|
26
|
+
* notice, this list of conditions and the following disclaimer.
|
27
|
+
* 2. Redistributions in binary form must reproduce the above copyright
|
28
|
+
* notice, this list of conditions and the following disclaimer in the
|
29
|
+
* documentation and/or other materials provided with the distribution.
|
30
|
+
* 3. All advertising materials mentioning features or use of this software
|
31
|
+
* must display the following acknowledgement:
|
32
|
+
* "This product includes cryptographic software written by
|
33
|
+
* Eric Young (eay@cryptsoft.com)"
|
34
|
+
* The word 'cryptographic' can be left out if the rouines from the library
|
35
|
+
* being used are not cryptographic related :-).
|
36
|
+
* 4. If you include any Windows specific code (or a derivative thereof) from
|
37
|
+
* the apps directory (application code) you must include an acknowledgement:
|
38
|
+
* "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
|
39
|
+
*
|
40
|
+
* THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
|
41
|
+
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
42
|
+
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
43
|
+
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
44
|
+
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
45
|
+
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
46
|
+
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
47
|
+
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
48
|
+
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
49
|
+
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
50
|
+
* SUCH DAMAGE.
|
51
|
+
*
|
52
|
+
* The licence and distribution terms for any publically available version or
|
53
|
+
* derivative of this code cannot be changed. i.e. this code cannot simply be
|
54
|
+
* copied and put under another distribution licence
|
55
|
+
* [including the GNU Public Licence.] */
|
56
|
+
|
57
|
+
#include <openssl/digest.h>
|
58
|
+
|
59
|
+
#include <string.h>
|
60
|
+
|
61
|
+
#include <openssl/asn1.h>
|
62
|
+
#include <openssl/bytestring.h>
|
63
|
+
#include <openssl/nid.h>
|
64
|
+
|
65
|
+
#include "../internal.h"
|
66
|
+
|
67
|
+
|
68
|
+
struct nid_to_digest {
|
69
|
+
int nid;
|
70
|
+
const EVP_MD* (*md_func)(void);
|
71
|
+
const char *short_name;
|
72
|
+
const char *long_name;
|
73
|
+
};
|
74
|
+
|
75
|
+
static const struct nid_to_digest nid_to_digest_mapping[] = {
|
76
|
+
{NID_md4, EVP_md4, SN_md4, LN_md4},
|
77
|
+
{NID_md5, EVP_md5, SN_md5, LN_md5},
|
78
|
+
{NID_sha1, EVP_sha1, SN_sha1, LN_sha1},
|
79
|
+
{NID_sha224, EVP_sha224, SN_sha224, LN_sha224},
|
80
|
+
{NID_sha256, EVP_sha256, SN_sha256, LN_sha256},
|
81
|
+
{NID_sha384, EVP_sha384, SN_sha384, LN_sha384},
|
82
|
+
{NID_sha512, EVP_sha512, SN_sha512, LN_sha512},
|
83
|
+
{NID_md5_sha1, EVP_md5_sha1, SN_md5_sha1, LN_md5_sha1},
|
84
|
+
// As a remnant of signing |EVP_MD|s, OpenSSL returned the corresponding
|
85
|
+
// hash function when given a signature OID. To avoid unintended lax parsing
|
86
|
+
// of hash OIDs, this is no longer supported for lookup by OID or NID.
|
87
|
+
// Node.js, however, exposes |EVP_get_digestbyname|'s full behavior to
|
88
|
+
// consumers so we retain it there.
|
89
|
+
{NID_undef, EVP_sha1, SN_dsaWithSHA, LN_dsaWithSHA},
|
90
|
+
{NID_undef, EVP_sha1, SN_dsaWithSHA1, LN_dsaWithSHA1},
|
91
|
+
{NID_undef, EVP_sha1, SN_ecdsa_with_SHA1, NULL},
|
92
|
+
{NID_undef, EVP_md5, SN_md5WithRSAEncryption, LN_md5WithRSAEncryption},
|
93
|
+
{NID_undef, EVP_sha1, SN_sha1WithRSAEncryption, LN_sha1WithRSAEncryption},
|
94
|
+
{NID_undef, EVP_sha224, SN_sha224WithRSAEncryption,
|
95
|
+
LN_sha224WithRSAEncryption},
|
96
|
+
{NID_undef, EVP_sha256, SN_sha256WithRSAEncryption,
|
97
|
+
LN_sha256WithRSAEncryption},
|
98
|
+
{NID_undef, EVP_sha384, SN_sha384WithRSAEncryption,
|
99
|
+
LN_sha384WithRSAEncryption},
|
100
|
+
{NID_undef, EVP_sha512, SN_sha512WithRSAEncryption,
|
101
|
+
LN_sha512WithRSAEncryption},
|
102
|
+
};
|
103
|
+
|
104
|
+
const EVP_MD* EVP_get_digestbynid(int nid) {
|
105
|
+
if (nid == NID_undef) {
|
106
|
+
// Skip the |NID_undef| entries in |nid_to_digest_mapping|.
|
107
|
+
return NULL;
|
108
|
+
}
|
109
|
+
|
110
|
+
for (unsigned i = 0; i < OPENSSL_ARRAY_SIZE(nid_to_digest_mapping); i++) {
|
111
|
+
if (nid_to_digest_mapping[i].nid == nid) {
|
112
|
+
return nid_to_digest_mapping[i].md_func();
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
return NULL;
|
117
|
+
}
|
118
|
+
|
119
|
+
static const struct {
|
120
|
+
uint8_t oid[9];
|
121
|
+
uint8_t oid_len;
|
122
|
+
int nid;
|
123
|
+
} kMDOIDs[] = {
|
124
|
+
// 1.2.840.113549.2.4
|
125
|
+
{ {0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x04}, 8, NID_md4 },
|
126
|
+
// 1.2.840.113549.2.5
|
127
|
+
{ {0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x02, 0x05}, 8, NID_md5 },
|
128
|
+
// 1.3.14.3.2.26
|
129
|
+
{ {0x2b, 0x0e, 0x03, 0x02, 0x1a}, 5, NID_sha1 },
|
130
|
+
// 2.16.840.1.101.3.4.2.1
|
131
|
+
{ {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x01}, 9, NID_sha256 },
|
132
|
+
// 2.16.840.1.101.3.4.2.2
|
133
|
+
{ {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x02}, 9, NID_sha384 },
|
134
|
+
// 2.16.840.1.101.3.4.2.3
|
135
|
+
{ {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x03}, 9, NID_sha512 },
|
136
|
+
// 2.16.840.1.101.3.4.2.4
|
137
|
+
{ {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x02, 0x04}, 9, NID_sha224 },
|
138
|
+
};
|
139
|
+
|
140
|
+
static const EVP_MD *cbs_to_md(const CBS *cbs) {
|
141
|
+
for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kMDOIDs); i++) {
|
142
|
+
if (CBS_len(cbs) == kMDOIDs[i].oid_len &&
|
143
|
+
OPENSSL_memcmp(CBS_data(cbs), kMDOIDs[i].oid, kMDOIDs[i].oid_len) ==
|
144
|
+
0) {
|
145
|
+
return EVP_get_digestbynid(kMDOIDs[i].nid);
|
146
|
+
}
|
147
|
+
}
|
148
|
+
|
149
|
+
return NULL;
|
150
|
+
}
|
151
|
+
|
152
|
+
const EVP_MD *EVP_get_digestbyobj(const ASN1_OBJECT *obj) {
|
153
|
+
// Handle objects with no corresponding OID.
|
154
|
+
if (obj->nid != NID_undef) {
|
155
|
+
return EVP_get_digestbynid(obj->nid);
|
156
|
+
}
|
157
|
+
|
158
|
+
CBS cbs;
|
159
|
+
CBS_init(&cbs, obj->data, obj->length);
|
160
|
+
return cbs_to_md(&cbs);
|
161
|
+
}
|
162
|
+
|
163
|
+
const EVP_MD *EVP_parse_digest_algorithm(CBS *cbs) {
|
164
|
+
CBS algorithm, oid;
|
165
|
+
if (!CBS_get_asn1(cbs, &algorithm, CBS_ASN1_SEQUENCE) ||
|
166
|
+
!CBS_get_asn1(&algorithm, &oid, CBS_ASN1_OBJECT)) {
|
167
|
+
OPENSSL_PUT_ERROR(DIGEST, DIGEST_R_DECODE_ERROR);
|
168
|
+
return NULL;
|
169
|
+
}
|
170
|
+
|
171
|
+
const EVP_MD *ret = cbs_to_md(&oid);
|
172
|
+
if (ret == NULL) {
|
173
|
+
OPENSSL_PUT_ERROR(DIGEST, DIGEST_R_UNKNOWN_HASH);
|
174
|
+
return NULL;
|
175
|
+
}
|
176
|
+
|
177
|
+
// The parameters, if present, must be NULL. Historically, whether the NULL
|
178
|
+
// was included or omitted was not well-specified. When parsing an
|
179
|
+
// AlgorithmIdentifier, we allow both. (Note this code is not used when
|
180
|
+
// verifying RSASSA-PKCS1-v1_5 signatures.)
|
181
|
+
if (CBS_len(&algorithm) > 0) {
|
182
|
+
CBS param;
|
183
|
+
if (!CBS_get_asn1(&algorithm, ¶m, CBS_ASN1_NULL) ||
|
184
|
+
CBS_len(¶m) != 0 ||
|
185
|
+
CBS_len(&algorithm) != 0) {
|
186
|
+
OPENSSL_PUT_ERROR(DIGEST, DIGEST_R_DECODE_ERROR);
|
187
|
+
return NULL;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
|
191
|
+
return ret;
|
192
|
+
}
|
193
|
+
|
194
|
+
int EVP_marshal_digest_algorithm(CBB *cbb, const EVP_MD *md) {
|
195
|
+
CBB algorithm, oid, null;
|
196
|
+
if (!CBB_add_asn1(cbb, &algorithm, CBS_ASN1_SEQUENCE) ||
|
197
|
+
!CBB_add_asn1(&algorithm, &oid, CBS_ASN1_OBJECT)) {
|
198
|
+
OPENSSL_PUT_ERROR(DIGEST, ERR_R_MALLOC_FAILURE);
|
199
|
+
return 0;
|
200
|
+
}
|
201
|
+
|
202
|
+
int found = 0;
|
203
|
+
int nid = EVP_MD_type(md);
|
204
|
+
for (size_t i = 0; i < OPENSSL_ARRAY_SIZE(kMDOIDs); i++) {
|
205
|
+
if (nid == kMDOIDs[i].nid) {
|
206
|
+
if (!CBB_add_bytes(&oid, kMDOIDs[i].oid, kMDOIDs[i].oid_len)) {
|
207
|
+
OPENSSL_PUT_ERROR(DIGEST, ERR_R_MALLOC_FAILURE);
|
208
|
+
return 0;
|
209
|
+
}
|
210
|
+
found = 1;
|
211
|
+
break;
|
212
|
+
}
|
213
|
+
}
|
214
|
+
|
215
|
+
if (!found) {
|
216
|
+
OPENSSL_PUT_ERROR(DIGEST, DIGEST_R_UNKNOWN_HASH);
|
217
|
+
return 0;
|
218
|
+
}
|
219
|
+
|
220
|
+
if (!CBB_add_asn1(&algorithm, &null, CBS_ASN1_NULL) ||
|
221
|
+
!CBB_flush(cbb)) {
|
222
|
+
OPENSSL_PUT_ERROR(DIGEST, ERR_R_MALLOC_FAILURE);
|
223
|
+
return 0;
|
224
|
+
}
|
225
|
+
|
226
|
+
return 1;
|
227
|
+
}
|
228
|
+
|
229
|
+
const EVP_MD *EVP_get_digestbyname(const char *name) {
|
230
|
+
for (unsigned i = 0; i < OPENSSL_ARRAY_SIZE(nid_to_digest_mapping); i++) {
|
231
|
+
const char *short_name = nid_to_digest_mapping[i].short_name;
|
232
|
+
const char *long_name = nid_to_digest_mapping[i].long_name;
|
233
|
+
if ((short_name && strcmp(short_name, name) == 0) ||
|
234
|
+
(long_name && strcmp(long_name, name) == 0)) {
|
235
|
+
return nid_to_digest_mapping[i].md_func();
|
236
|
+
}
|
237
|
+
}
|
238
|
+
|
239
|
+
return NULL;
|
240
|
+
}
|
@@ -72,14 +72,14 @@
|
|
72
72
|
#include <openssl/sha.h>
|
73
73
|
#include <openssl/thread.h>
|
74
74
|
|
75
|
-
#include "../bn/internal.h"
|
75
|
+
#include "../fipsmodule/bn/internal.h"
|
76
76
|
#include "../internal.h"
|
77
77
|
|
78
78
|
|
79
79
|
#define OPENSSL_DSA_MAX_MODULUS_BITS 10000
|
80
80
|
|
81
|
-
|
82
|
-
|
81
|
+
// Primality test according to FIPS PUB 186[-1], Appendix 2.1: 50 rounds of
|
82
|
+
// Rabin-Miller
|
83
83
|
#define DSS_prime_checks 50
|
84
84
|
|
85
85
|
static CRYPTO_EX_DATA_CLASS g_ex_data_class = CRYPTO_EX_DATA_CLASS_INIT;
|
@@ -153,6 +153,46 @@ void DSA_get0_pqg(const DSA *dsa, const BIGNUM **out_p, const BIGNUM **out_q,
|
|
153
153
|
}
|
154
154
|
}
|
155
155
|
|
156
|
+
int DSA_set0_key(DSA *dsa, BIGNUM *pub_key, BIGNUM *priv_key) {
|
157
|
+
if (dsa->pub_key == NULL && pub_key == NULL) {
|
158
|
+
return 0;
|
159
|
+
}
|
160
|
+
|
161
|
+
if (pub_key != NULL) {
|
162
|
+
BN_free(dsa->pub_key);
|
163
|
+
dsa->pub_key = pub_key;
|
164
|
+
}
|
165
|
+
if (priv_key != NULL) {
|
166
|
+
BN_free(dsa->priv_key);
|
167
|
+
dsa->priv_key = priv_key;
|
168
|
+
}
|
169
|
+
|
170
|
+
return 1;
|
171
|
+
}
|
172
|
+
|
173
|
+
int DSA_set0_pqg(DSA *dsa, BIGNUM *p, BIGNUM *q, BIGNUM *g) {
|
174
|
+
if ((dsa->p == NULL && p == NULL) ||
|
175
|
+
(dsa->q == NULL && q == NULL) ||
|
176
|
+
(dsa->g == NULL && g == NULL)) {
|
177
|
+
return 0;
|
178
|
+
}
|
179
|
+
|
180
|
+
if (p != NULL) {
|
181
|
+
BN_free(dsa->p);
|
182
|
+
dsa->p = p;
|
183
|
+
}
|
184
|
+
if (q != NULL) {
|
185
|
+
BN_free(dsa->q);
|
186
|
+
dsa->q = q;
|
187
|
+
}
|
188
|
+
if (g != NULL) {
|
189
|
+
BN_free(dsa->g);
|
190
|
+
dsa->g = g;
|
191
|
+
}
|
192
|
+
|
193
|
+
return 1;
|
194
|
+
}
|
195
|
+
|
156
196
|
int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
157
197
|
size_t seed_len, int *out_counter,
|
158
198
|
unsigned long *out_h, BN_GENCB *cb) {
|
@@ -186,7 +226,7 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
186
226
|
return 0;
|
187
227
|
}
|
188
228
|
if (seed_len > (size_t)qsize) {
|
189
|
-
|
229
|
+
// Only consume as much seed as is expected.
|
190
230
|
seed_len = qsize;
|
191
231
|
}
|
192
232
|
OPENSSL_memcpy(seed, seed_in, seed_len);
|
@@ -217,9 +257,9 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
217
257
|
}
|
218
258
|
|
219
259
|
for (;;) {
|
220
|
-
|
260
|
+
// Find q.
|
221
261
|
for (;;) {
|
222
|
-
|
262
|
+
// step 1
|
223
263
|
if (!BN_GENCB_call(cb, 0, m++)) {
|
224
264
|
goto err;
|
225
265
|
}
|
@@ -230,12 +270,12 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
230
270
|
goto err;
|
231
271
|
}
|
232
272
|
} else {
|
233
|
-
|
273
|
+
// If we come back through, use random seed next time.
|
234
274
|
seed_in = NULL;
|
235
275
|
}
|
236
276
|
OPENSSL_memcpy(buf, seed, qsize);
|
237
277
|
OPENSSL_memcpy(buf2, seed, qsize);
|
238
|
-
|
278
|
+
// precompute "SEED + 1" for step 7:
|
239
279
|
for (i = qsize - 1; i < qsize; i--) {
|
240
280
|
buf[i]++;
|
241
281
|
if (buf[i] != 0) {
|
@@ -243,7 +283,7 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
243
283
|
}
|
244
284
|
}
|
245
285
|
|
246
|
-
|
286
|
+
// step 2
|
247
287
|
if (!EVP_Digest(seed, qsize, md, NULL, evpmd, NULL) ||
|
248
288
|
!EVP_Digest(buf, qsize, buf2, NULL, evpmd, NULL)) {
|
249
289
|
goto err;
|
@@ -252,14 +292,14 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
252
292
|
md[i] ^= buf2[i];
|
253
293
|
}
|
254
294
|
|
255
|
-
|
295
|
+
// step 3
|
256
296
|
md[0] |= 0x80;
|
257
297
|
md[qsize - 1] |= 0x01;
|
258
298
|
if (!BN_bin2bn(md, qsize, q)) {
|
259
299
|
goto err;
|
260
300
|
}
|
261
301
|
|
262
|
-
|
302
|
+
// step 4
|
263
303
|
r = BN_is_prime_fasttest_ex(q, DSS_prime_checks, ctx, use_random_seed, cb);
|
264
304
|
if (r > 0) {
|
265
305
|
break;
|
@@ -268,17 +308,17 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
268
308
|
goto err;
|
269
309
|
}
|
270
310
|
|
271
|
-
|
272
|
-
|
311
|
+
// do a callback call
|
312
|
+
// step 5
|
273
313
|
}
|
274
314
|
|
275
315
|
if (!BN_GENCB_call(cb, 2, 0) || !BN_GENCB_call(cb, 3, 0)) {
|
276
316
|
goto err;
|
277
317
|
}
|
278
318
|
|
279
|
-
|
319
|
+
// step 6
|
280
320
|
counter = 0;
|
281
|
-
|
321
|
+
// "offset = 2"
|
282
322
|
|
283
323
|
n = (bits - 1) / 160;
|
284
324
|
|
@@ -287,11 +327,11 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
287
327
|
goto err;
|
288
328
|
}
|
289
329
|
|
290
|
-
|
330
|
+
// step 7
|
291
331
|
BN_zero(W);
|
292
|
-
|
332
|
+
// now 'buf' contains "SEED + offset - 1"
|
293
333
|
for (k = 0; k <= n; k++) {
|
294
|
-
|
334
|
+
// obtain "SEED + offset + k" by incrementing:
|
295
335
|
for (i = qsize - 1; i < qsize; i--) {
|
296
336
|
buf[i]++;
|
297
337
|
if (buf[i] != 0) {
|
@@ -303,7 +343,7 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
303
343
|
goto err;
|
304
344
|
}
|
305
345
|
|
306
|
-
|
346
|
+
// step 8
|
307
347
|
if (!BN_bin2bn(md, qsize, r0) ||
|
308
348
|
!BN_lshift(r0, r0, (qsize << 3) * k) ||
|
309
349
|
!BN_add(W, W, r0)) {
|
@@ -311,14 +351,14 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
311
351
|
}
|
312
352
|
}
|
313
353
|
|
314
|
-
|
354
|
+
// more of step 8
|
315
355
|
if (!BN_mask_bits(W, bits - 1) ||
|
316
356
|
!BN_copy(X, W) ||
|
317
357
|
!BN_add(X, X, test)) {
|
318
358
|
goto err;
|
319
359
|
}
|
320
360
|
|
321
|
-
|
361
|
+
// step 9
|
322
362
|
if (!BN_lshift1(r0, q) ||
|
323
363
|
!BN_mod(c, X, r0, ctx) ||
|
324
364
|
!BN_sub(r0, c, BN_value_one()) ||
|
@@ -326,23 +366,23 @@ int DSA_generate_parameters_ex(DSA *dsa, unsigned bits, const uint8_t *seed_in,
|
|
326
366
|
goto err;
|
327
367
|
}
|
328
368
|
|
329
|
-
|
369
|
+
// step 10
|
330
370
|
if (BN_cmp(p, test) >= 0) {
|
331
|
-
|
371
|
+
// step 11
|
332
372
|
r = BN_is_prime_fasttest_ex(p, DSS_prime_checks, ctx, 1, cb);
|
333
373
|
if (r > 0) {
|
334
|
-
goto end;
|
374
|
+
goto end; // found it
|
335
375
|
}
|
336
376
|
if (r != 0) {
|
337
377
|
goto err;
|
338
378
|
}
|
339
379
|
}
|
340
380
|
|
341
|
-
|
381
|
+
// step 13
|
342
382
|
counter++;
|
343
|
-
|
383
|
+
// "offset = offset + n + 1"
|
344
384
|
|
345
|
-
|
385
|
+
// step 14
|
346
386
|
if (counter >= 4096) {
|
347
387
|
break;
|
348
388
|
}
|
@@ -353,8 +393,8 @@ end:
|
|
353
393
|
goto err;
|
354
394
|
}
|
355
395
|
|
356
|
-
|
357
|
-
|
396
|
+
// We now need to generate g
|
397
|
+
// Set r0=(p-1)/q
|
358
398
|
if (!BN_sub(test, p, BN_value_one()) ||
|
359
399
|
!BN_div(r0, NULL, test, q, ctx)) {
|
360
400
|
goto err;
|
@@ -366,7 +406,7 @@ end:
|
|
366
406
|
}
|
367
407
|
|
368
408
|
for (;;) {
|
369
|
-
|
409
|
+
// g=test^r0%p
|
370
410
|
if (!BN_mod_exp_mont(g, test, r0, p, ctx, mont)) {
|
371
411
|
goto err;
|
372
412
|
}
|
@@ -544,9 +584,9 @@ redo:
|
|
544
584
|
}
|
545
585
|
|
546
586
|
if (digest_len > BN_num_bytes(dsa->q)) {
|
547
|
-
|
548
|
-
|
549
|
-
|
587
|
+
// if the digest length is greater than the size of q use the
|
588
|
+
// BN_num_bits(dsa->q) leftmost bits of the digest, see
|
589
|
+
// fips 186-3, 4.2
|
550
590
|
digest_len = BN_num_bytes(dsa->q);
|
551
591
|
}
|
552
592
|
|
@@ -554,12 +594,12 @@ redo:
|
|
554
594
|
goto err;
|
555
595
|
}
|
556
596
|
|
557
|
-
|
597
|
+
// Compute s = inv(k) (m + xr) mod q
|
558
598
|
if (!BN_mod_mul(&xr, dsa->priv_key, r, dsa->q, ctx)) {
|
559
|
-
goto err;
|
599
|
+
goto err; // s = xr
|
560
600
|
}
|
561
601
|
if (!BN_add(s, &xr, &m)) {
|
562
|
-
goto err;
|
602
|
+
goto err; // s = m + xr
|
563
603
|
}
|
564
604
|
if (BN_cmp(s, dsa->q) > 0) {
|
565
605
|
if (!BN_sub(s, s, dsa->q)) {
|
@@ -570,8 +610,8 @@ redo:
|
|
570
610
|
goto err;
|
571
611
|
}
|
572
612
|
|
573
|
-
|
574
|
-
|
613
|
+
// Redo if r or s is zero as required by FIPS 186-3: this is
|
614
|
+
// very unlikely.
|
575
615
|
if (BN_is_zero(r) || BN_is_zero(s)) {
|
576
616
|
if (noredo) {
|
577
617
|
reason = DSA_R_NEED_NEW_SETUP_VALUES;
|
@@ -624,7 +664,7 @@ int DSA_do_check_signature(int *out_valid, const uint8_t *digest,
|
|
624
664
|
}
|
625
665
|
|
626
666
|
i = BN_num_bits(dsa->q);
|
627
|
-
|
667
|
+
// fips 186-3 allows only different sizes for q
|
628
668
|
if (i != 160 && i != 224 && i != 256) {
|
629
669
|
OPENSSL_PUT_ERROR(DSA, DSA_R_BAD_Q_VALUE);
|
630
670
|
return 0;
|
@@ -655,17 +695,17 @@ int DSA_do_check_signature(int *out_valid, const uint8_t *digest,
|
|
655
695
|
goto err;
|
656
696
|
}
|
657
697
|
|
658
|
-
|
659
|
-
|
698
|
+
// Calculate W = inv(S) mod Q
|
699
|
+
// save W in u2
|
660
700
|
if (BN_mod_inverse(&u2, sig->s, dsa->q, ctx) == NULL) {
|
661
701
|
goto err;
|
662
702
|
}
|
663
703
|
|
664
|
-
|
704
|
+
// save M in u1
|
665
705
|
if (digest_len > (i >> 3)) {
|
666
|
-
|
667
|
-
|
668
|
-
|
706
|
+
// if the digest length is greater than the size of q use the
|
707
|
+
// BN_num_bits(dsa->q) leftmost bits of the digest, see
|
708
|
+
// fips 186-3, 4.2
|
669
709
|
digest_len = (i >> 3);
|
670
710
|
}
|
671
711
|
|
@@ -673,12 +713,12 @@ int DSA_do_check_signature(int *out_valid, const uint8_t *digest,
|
|
673
713
|
goto err;
|
674
714
|
}
|
675
715
|
|
676
|
-
|
716
|
+
// u1 = M * w mod q
|
677
717
|
if (!BN_mod_mul(&u1, &u1, &u2, dsa->q, ctx)) {
|
678
718
|
goto err;
|
679
719
|
}
|
680
720
|
|
681
|
-
|
721
|
+
// u2 = r * w mod q
|
682
722
|
if (!BN_mod_mul(&u2, sig->r, &u2, dsa->q, ctx)) {
|
683
723
|
goto err;
|
684
724
|
}
|
@@ -694,14 +734,14 @@ int DSA_do_check_signature(int *out_valid, const uint8_t *digest,
|
|
694
734
|
goto err;
|
695
735
|
}
|
696
736
|
|
697
|
-
|
698
|
-
|
737
|
+
// BN_copy(&u1,&t1);
|
738
|
+
// let u1 = u1 mod q
|
699
739
|
if (!BN_mod(&u1, &t1, dsa->q, ctx)) {
|
700
740
|
goto err;
|
701
741
|
}
|
702
742
|
|
703
|
-
|
704
|
-
|
743
|
+
// V is now in u1. If the signature is correct, it will be
|
744
|
+
// equal to R.
|
705
745
|
*out_valid = BN_ucmp(&u1, sig->r) == 0;
|
706
746
|
ret = 1;
|
707
747
|
|
@@ -758,7 +798,7 @@ int DSA_check_signature(int *out_valid, const uint8_t *digest,
|
|
758
798
|
goto err;
|
759
799
|
}
|
760
800
|
|
761
|
-
|
801
|
+
// Ensure that the signature uses DER and doesn't have trailing garbage.
|
762
802
|
int der_len = i2d_DSA_SIG(s, &der);
|
763
803
|
if (der_len < 0 || (size_t)der_len != sig_len ||
|
764
804
|
OPENSSL_memcmp(sig, der, sig_len)) {
|
@@ -773,8 +813,8 @@ err:
|
|
773
813
|
return ret;
|
774
814
|
}
|
775
815
|
|
776
|
-
|
777
|
-
|
816
|
+
// der_len_len returns the number of bytes needed to represent a length of |len|
|
817
|
+
// in DER.
|
778
818
|
static size_t der_len_len(size_t len) {
|
779
819
|
if (len < 0x80) {
|
780
820
|
return 1;
|
@@ -789,18 +829,18 @@ static size_t der_len_len(size_t len) {
|
|
789
829
|
|
790
830
|
int DSA_size(const DSA *dsa) {
|
791
831
|
size_t order_len = BN_num_bytes(dsa->q);
|
792
|
-
|
793
|
-
|
832
|
+
// Compute the maximum length of an |order_len| byte integer. Defensively
|
833
|
+
// assume that the leading 0x00 is included.
|
794
834
|
size_t integer_len = 1 /* tag */ + der_len_len(order_len + 1) + 1 + order_len;
|
795
835
|
if (integer_len < order_len) {
|
796
836
|
return 0;
|
797
837
|
}
|
798
|
-
|
838
|
+
// A DSA signature is two INTEGERs.
|
799
839
|
size_t value_len = 2 * integer_len;
|
800
840
|
if (value_len < integer_len) {
|
801
841
|
return 0;
|
802
842
|
}
|
803
|
-
|
843
|
+
// Add the header.
|
804
844
|
size_t ret = 1 /* tag */ + der_len_len(value_len) + value_len;
|
805
845
|
if (ret < value_len) {
|
806
846
|
return 0;
|
@@ -835,7 +875,7 @@ int DSA_sign_setup(const DSA *dsa, BN_CTX *ctx_in, BIGNUM **out_kinv,
|
|
835
875
|
goto err;
|
836
876
|
}
|
837
877
|
|
838
|
-
|
878
|
+
// Get random k
|
839
879
|
if (!BN_rand_range_ex(&k, 1, dsa->q)) {
|
840
880
|
goto err;
|
841
881
|
}
|
@@ -849,16 +889,16 @@ int DSA_sign_setup(const DSA *dsa, BN_CTX *ctx_in, BIGNUM **out_kinv,
|
|
849
889
|
goto err;
|
850
890
|
}
|
851
891
|
|
852
|
-
|
892
|
+
// Compute r = (g^k mod p) mod q
|
853
893
|
if (!BN_copy(&kq, &k)) {
|
854
894
|
goto err;
|
855
895
|
}
|
856
896
|
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
897
|
+
// We do not want timing information to leak the length of k,
|
898
|
+
// so we compute g^k using an equivalent exponent of fixed length.
|
899
|
+
//
|
900
|
+
// (This is a kludge that we need because the BN_mod_exp_mont()
|
901
|
+
// does not let us specify the desired timing behaviour.)
|
862
902
|
|
863
903
|
if (!BN_add(&kq, &kq, dsa->q)) {
|
864
904
|
goto err;
|
@@ -875,8 +915,8 @@ int DSA_sign_setup(const DSA *dsa, BN_CTX *ctx_in, BIGNUM **out_kinv,
|
|
875
915
|
goto err;
|
876
916
|
}
|
877
917
|
|
878
|
-
|
879
|
-
|
918
|
+
// Compute part of 's = inv(k) (m + xr) mod q' using Fermat's Little
|
919
|
+
// Theorem.
|
880
920
|
kinv = BN_new();
|
881
921
|
if (kinv == NULL ||
|
882
922
|
!bn_mod_inverse_prime(kinv, &k, dsa->q, ctx, dsa->method_mont_q)) {
|
@@ -908,44 +948,44 @@ err:
|
|
908
948
|
}
|
909
949
|
|
910
950
|
int DSA_get_ex_new_index(long argl, void *argp, CRYPTO_EX_unused *unused,
|
911
|
-
CRYPTO_EX_dup *
|
951
|
+
CRYPTO_EX_dup *dup_unused, CRYPTO_EX_free *free_func) {
|
912
952
|
int index;
|
913
|
-
if (!CRYPTO_get_ex_new_index(&g_ex_data_class, &index, argl, argp,
|
953
|
+
if (!CRYPTO_get_ex_new_index(&g_ex_data_class, &index, argl, argp,
|
914
954
|
free_func)) {
|
915
955
|
return -1;
|
916
956
|
}
|
917
957
|
return index;
|
918
958
|
}
|
919
959
|
|
920
|
-
int DSA_set_ex_data(DSA *
|
921
|
-
return CRYPTO_set_ex_data(&
|
960
|
+
int DSA_set_ex_data(DSA *dsa, int idx, void *arg) {
|
961
|
+
return CRYPTO_set_ex_data(&dsa->ex_data, idx, arg);
|
922
962
|
}
|
923
963
|
|
924
|
-
void *DSA_get_ex_data(const DSA *
|
925
|
-
return CRYPTO_get_ex_data(&
|
964
|
+
void *DSA_get_ex_data(const DSA *dsa, int idx) {
|
965
|
+
return CRYPTO_get_ex_data(&dsa->ex_data, idx);
|
926
966
|
}
|
927
967
|
|
928
|
-
DH *DSA_dup_DH(const DSA *
|
929
|
-
|
930
|
-
|
931
|
-
if (r == NULL) {
|
932
|
-
goto err;
|
968
|
+
DH *DSA_dup_DH(const DSA *dsa) {
|
969
|
+
if (dsa == NULL) {
|
970
|
+
return NULL;
|
933
971
|
}
|
934
|
-
|
972
|
+
|
973
|
+
DH *ret = DH_new();
|
935
974
|
if (ret == NULL) {
|
936
975
|
goto err;
|
937
976
|
}
|
938
|
-
if (
|
939
|
-
ret->priv_length = BN_num_bits(
|
940
|
-
if ((ret->q = BN_dup(
|
977
|
+
if (dsa->q != NULL) {
|
978
|
+
ret->priv_length = BN_num_bits(dsa->q);
|
979
|
+
if ((ret->q = BN_dup(dsa->q)) == NULL) {
|
941
980
|
goto err;
|
942
981
|
}
|
943
982
|
}
|
944
|
-
if ((
|
945
|
-
(
|
946
|
-
(
|
947
|
-
(
|
948
|
-
|
983
|
+
if ((dsa->p != NULL && (ret->p = BN_dup(dsa->p)) == NULL) ||
|
984
|
+
(dsa->g != NULL && (ret->g = BN_dup(dsa->g)) == NULL) ||
|
985
|
+
(dsa->pub_key != NULL && (ret->pub_key = BN_dup(dsa->pub_key)) == NULL) ||
|
986
|
+
(dsa->priv_key != NULL &&
|
987
|
+
(ret->priv_key = BN_dup(dsa->priv_key)) == NULL)) {
|
988
|
+
goto err;
|
949
989
|
}
|
950
990
|
|
951
991
|
return ret;
|