grpc 1.0.1 → 1.1.2
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 +3696 -867
- data/etc/roots.pem +39 -111
- data/include/grpc/byte_buffer.h +64 -1
- data/include/grpc/census.h +40 -96
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +42 -7
- data/include/grpc/grpc_posix.h +8 -5
- data/include/grpc/impl/codegen/atm.h +3 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
- data/include/grpc/impl/codegen/compression_types.h +1 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
- data/include/grpc/impl/codegen/gpr_slice.h +84 -0
- data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
- data/include/grpc/impl/codegen/grpc_types.h +91 -9
- data/include/grpc/impl/codegen/port_platform.h +25 -92
- data/include/grpc/impl/codegen/slice.h +54 -97
- data/include/grpc/impl/codegen/sync.h +0 -253
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice.h +132 -0
- data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
- data/include/grpc/support/alloc.h +40 -1
- data/include/grpc/support/log.h +80 -1
- data/include/grpc/support/log_windows.h +2 -0
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +252 -0
- data/include/grpc/support/time.h +67 -1
- data/src/boringssl/err_data.c +639 -627
- data/src/core/ext/census/base_resources.c +71 -0
- data/src/core/ext/census/base_resources.h +39 -0
- data/src/core/ext/census/gen/census.pb.c +26 -29
- data/src/core/ext/census/gen/census.pb.h +68 -67
- data/src/core/ext/census/gen/trace_context.pb.c +81 -0
- data/src/core/ext/census/gen/trace_context.pb.h +99 -0
- data/src/core/ext/census/grpc_filter.c +22 -16
- data/src/core/ext/census/grpc_plugin.c +2 -1
- data/src/core/ext/census/initialize.c +16 -4
- data/src/core/ext/census/mlog.h +1 -1
- data/src/core/ext/census/placeholders.c +0 -45
- data/src/core/ext/census/resource.c +312 -0
- data/src/core/ext/census/resource.h +63 -0
- data/src/core/ext/census/trace_context.c +86 -0
- data/src/core/ext/census/trace_context.h +68 -0
- data/src/core/ext/census/tracing.c +8 -2
- data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
- data/src/core/ext/client_channel/client_channel.c +1218 -0
- data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
- data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
- data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
- data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
- data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
- data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
- data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
- data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
- data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
- data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
- data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
- data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
- data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
- data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
- data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
- data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
- data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
- data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
- data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
- data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
- data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
- data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
- data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
- data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
- data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
- data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
- data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
- data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
- data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
- data/src/core/ext/load_reporting/load_reporting.c +7 -56
- data/src/core/ext/load_reporting/load_reporting.h +41 -28
- data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
- data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
- data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
- data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
- data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
- data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
- data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
- data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
- data/src/core/lib/channel/channel_args.c +70 -13
- data/src/core/lib/channel/channel_args.h +28 -2
- data/src/core/lib/channel/channel_stack.c +77 -28
- data/src/core/lib/channel/channel_stack.h +61 -23
- data/src/core/lib/channel/channel_stack_builder.c +33 -25
- data/src/core/lib/channel/channel_stack_builder.h +17 -8
- data/src/core/lib/channel/compress_filter.c +52 -36
- data/src/core/lib/channel/connected_channel.c +20 -12
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +13 -1
- data/src/core/lib/channel/deadline_filter.c +344 -0
- data/src/core/lib/channel/deadline_filter.h +99 -0
- data/src/core/lib/channel/handshaker.c +240 -0
- data/src/core/lib/channel/handshaker.h +164 -0
- data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
- data/src/core/lib/channel/handshaker_factory.h +66 -0
- data/src/core/lib/channel/handshaker_registry.c +113 -0
- data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
- data/src/core/lib/channel/http_client_filter.c +248 -46
- data/src/core/lib/channel/http_client_filter.h +3 -0
- data/src/core/lib/channel/http_server_filter.c +136 -24
- data/src/core/lib/channel/message_size_filter.c +261 -0
- data/src/core/lib/channel/message_size_filter.h +39 -0
- data/src/core/lib/compression/message_compress.c +43 -37
- data/src/core/lib/compression/message_compress.h +7 -5
- data/src/core/lib/http/format_request.c +26 -11
- data/src/core/lib/http/format_request.h +7 -5
- data/src/core/lib/http/httpcli.c +45 -27
- data/src/core/lib/http/httpcli.h +4 -4
- data/src/core/lib/http/httpcli_security_connector.c +56 -46
- data/src/core/lib/http/parser.c +17 -14
- data/src/core/lib/http/parser.h +4 -2
- data/src/core/lib/iomgr/closure.c +49 -7
- data/src/core/lib/iomgr/closure.h +56 -14
- data/src/core/lib/iomgr/combiner.c +422 -0
- data/src/core/lib/iomgr/combiner.h +64 -0
- data/src/core/lib/iomgr/endpoint.c +8 -2
- data/src/core/lib/iomgr/endpoint.h +17 -7
- data/src/core/lib/iomgr/endpoint_pair.h +3 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
- data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
- data/src/core/lib/iomgr/error.c +72 -6
- data/src/core/lib/iomgr/error.h +30 -3
- data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
- data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
- data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
- data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
- data/src/core/lib/iomgr/ev_posix.c +26 -5
- data/src/core/lib/iomgr/ev_posix.h +12 -1
- data/src/core/lib/iomgr/exec_ctx.c +27 -94
- data/src/core/lib/iomgr/exec_ctx.h +19 -22
- data/src/core/lib/iomgr/executor.c +29 -8
- data/src/core/lib/iomgr/executor.h +2 -4
- data/src/core/lib/iomgr/iocp_windows.c +3 -4
- data/src/core/lib/iomgr/iomgr.c +14 -10
- data/src/core/lib/iomgr/iomgr.h +6 -2
- data/src/core/lib/iomgr/iomgr_posix.c +2 -2
- data/src/core/lib/iomgr/iomgr_uv.c +49 -0
- data/src/core/lib/iomgr/iomgr_windows.c +2 -2
- data/src/core/lib/iomgr/load_file.c +3 -3
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/network_status_tracker.c +1 -1
- data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
- data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
- data/src/core/lib/iomgr/pollset_uv.c +142 -0
- data/src/core/lib/iomgr/pollset_uv.h +42 -0
- data/src/core/lib/iomgr/pollset_windows.c +5 -6
- data/src/core/lib/iomgr/port.h +129 -0
- data/src/core/lib/iomgr/resolve_address.h +2 -1
- data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
- data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
- data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
- data/src/core/lib/iomgr/resource_quota.c +832 -0
- data/src/core/lib/iomgr/resource_quota.h +159 -0
- data/src/core/lib/iomgr/sockaddr.h +10 -2
- data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
- data/src/core/lib/iomgr/socket_mutator.c +98 -0
- data/src/core/lib/iomgr/socket_mutator.h +80 -0
- data/src/core/lib/iomgr/socket_utils.h +42 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
- data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
- data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
- data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
- data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
- data/src/core/lib/iomgr/socket_windows.c +14 -6
- data/src/core/lib/iomgr/socket_windows.h +1 -0
- data/src/core/lib/iomgr/tcp_client.h +8 -2
- data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
- data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
- data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
- data/src/core/lib/iomgr/tcp_posix.c +135 -56
- data/src/core/lib/iomgr/tcp_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server.h +14 -6
- data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
- data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
- data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
- data/src/core/lib/iomgr/tcp_uv.c +367 -0
- data/src/core/lib/iomgr/tcp_uv.h +59 -0
- data/src/core/lib/iomgr/tcp_windows.c +65 -48
- data/src/core/lib/iomgr/tcp_windows.h +3 -1
- data/src/core/lib/iomgr/timer.h +21 -21
- data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
- data/src/core/lib/iomgr/timer_generic.h +49 -0
- data/src/core/lib/iomgr/timer_heap.c +6 -0
- data/src/core/lib/iomgr/timer_uv.c +99 -0
- data/src/core/lib/iomgr/timer_uv.h +47 -0
- data/src/core/lib/iomgr/udp_server.c +116 -98
- data/src/core/lib/iomgr/udp_server.h +5 -3
- data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
- data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
- data/src/core/lib/iomgr/workqueue.h +12 -20
- data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
- data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
- data/src/core/lib/iomgr/workqueue_windows.c +9 -8
- data/src/core/lib/json/json.c +3 -3
- data/src/core/lib/json/json.h +11 -11
- data/src/core/lib/json/json_reader.c +9 -5
- data/src/core/lib/profiling/basic_timers.c +10 -1
- data/src/core/lib/profiling/timers.h +2 -0
- data/src/core/lib/security/context/security_context.c +13 -3
- data/src/core/lib/security/context/security_context.h +20 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.c +48 -19
- data/src/core/lib/security/credentials/credentials.h +36 -19
- data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
- data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
- data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
- data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
- data/src/core/lib/security/transport/client_auth_filter.c +33 -27
- data/src/core/lib/security/transport/secure_endpoint.c +93 -68
- data/src/core/lib/security/transport/secure_endpoint.h +2 -2
- data/src/core/lib/security/transport/security_connector.c +133 -168
- data/src/core/lib/security/transport/security_connector.h +31 -46
- data/src/core/lib/security/transport/security_handshaker.c +501 -0
- data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
- data/src/core/lib/security/transport/server_auth_filter.c +50 -38
- data/src/core/lib/security/util/b64.c +11 -8
- data/src/core/lib/security/util/b64.h +5 -4
- data/src/core/lib/slice/percent_encoding.c +182 -0
- data/src/core/lib/slice/percent_encoding.h +78 -0
- data/src/core/lib/{support → slice}/slice.c +81 -50
- data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
- data/src/core/lib/slice/slice_internal.h +49 -0
- data/src/core/lib/slice/slice_string_helpers.c +90 -0
- data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
- data/src/core/lib/support/backoff.c +24 -13
- data/src/core/lib/support/backoff.h +5 -2
- data/src/core/lib/support/env.h +0 -2
- data/src/core/lib/support/log.c +5 -4
- data/src/core/lib/support/log_linux.c +0 -1
- data/src/core/lib/support/log_posix.c +1 -1
- data/src/core/lib/support/mpscq.c +83 -0
- data/src/core/lib/support/mpscq.h +65 -0
- data/src/core/lib/support/string.c +58 -49
- data/src/core/lib/support/string.h +11 -8
- data/src/core/lib/support/subprocess_posix.c +5 -2
- data/src/core/lib/support/thd.c +1 -1
- data/src/core/lib/support/time.c +43 -79
- data/src/core/lib/support/time_posix.c +1 -1
- data/src/core/lib/support/tmpfile.h +0 -2
- data/src/core/lib/surface/alarm.c +4 -1
- data/src/core/lib/surface/byte_buffer.c +17 -11
- data/src/core/lib/surface/byte_buffer_reader.c +23 -15
- data/src/core/lib/surface/call.c +294 -276
- data/src/core/lib/surface/call.h +24 -9
- data/src/core/lib/surface/call_log_batch.c +5 -3
- data/src/core/lib/surface/channel.c +127 -111
- data/src/core/lib/surface/channel.h +14 -5
- data/src/core/lib/surface/channel_init.c +1 -1
- data/src/core/lib/surface/channel_init.h +10 -1
- data/src/core/lib/surface/channel_ping.c +7 -6
- data/src/core/lib/surface/completion_queue.c +154 -18
- data/src/core/lib/surface/completion_queue.h +5 -0
- data/src/core/lib/surface/init.c +40 -6
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.c +5 -2
- data/src/core/lib/surface/lame_client.c +28 -18
- data/src/core/lib/surface/server.c +134 -87
- data/src/core/lib/surface/server.h +8 -0
- data/src/core/lib/surface/validate_metadata.c +1 -1
- data/src/core/lib/surface/version.c +3 -1
- data/src/core/lib/transport/byte_stream.c +7 -4
- data/src/core/lib/transport/byte_stream.h +6 -10
- data/src/core/lib/transport/connectivity_state.c +21 -12
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/mdstr_hash_table.c +118 -0
- data/src/core/lib/transport/mdstr_hash_table.h +77 -0
- data/src/core/lib/transport/metadata.c +83 -60
- data/src/core/lib/transport/metadata.h +41 -23
- data/src/core/lib/transport/metadata_batch.c +17 -11
- data/src/core/lib/transport/metadata_batch.h +20 -6
- data/src/core/lib/transport/pid_controller.c +57 -0
- data/src/core/lib/transport/pid_controller.h +64 -0
- data/src/core/lib/transport/service_config.c +251 -0
- data/src/core/lib/transport/service_config.h +71 -0
- data/src/core/lib/transport/static_metadata.c +18 -16
- data/src/core/lib/transport/static_metadata.h +113 -107
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
- data/src/core/lib/transport/transport.c +84 -23
- data/src/core/lib/transport/transport.h +53 -8
- data/src/core/lib/transport/transport_impl.h +3 -0
- data/src/core/lib/transport/transport_op_string.c +92 -20
- data/src/core/lib/tsi/ssl_transport_security.c +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
- data/src/ruby/ext/grpc/extconf.rb +0 -1
- data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
- data/src/ruby/ext/grpc/rb_call.c +15 -5
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
- data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
- data/src/ruby/ext/grpc/rb_grpc.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
- data/src/ruby/ext/grpc/rb_server.c +18 -12
- data/src/ruby/lib/grpc/errors.rb +154 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
- data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
- data/src/ruby/lib/grpc/generic/service.rb +3 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
- data/src/ruby/pb/test/client.rb +307 -7
- data/src/ruby/pb/test/server.rb +26 -1
- data/src/ruby/spec/compression_options_spec.rb +164 -0
- data/src/ruby/spec/error_sanity_spec.rb +64 -0
- data/src/ruby/spec/generic/active_call_spec.rb +290 -12
- data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
- data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
- data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
- data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
- data/src/ruby/spec/spec_helper.rb +2 -0
- data/third_party/boringssl/crypto/aes/aes.c +12 -12
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
- data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
- data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
- data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
- data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
- data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
- data/third_party/boringssl/crypto/base64/base64.c +249 -285
- data/third_party/boringssl/crypto/bio/bio.c +13 -23
- data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
- data/third_party/boringssl/crypto/bio/connect.c +12 -3
- data/third_party/boringssl/crypto/bio/fd.c +22 -15
- data/third_party/boringssl/crypto/bio/file.c +2 -38
- data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
- data/third_party/boringssl/crypto/bio/internal.h +3 -0
- data/third_party/boringssl/crypto/bio/pair.c +1 -1
- data/third_party/boringssl/crypto/bio/socket.c +10 -2
- data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
- data/third_party/boringssl/crypto/bn/bn.c +38 -0
- data/third_party/boringssl/crypto/bn/cmp.c +25 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -76
- data/third_party/boringssl/crypto/bn/div.c +136 -70
- data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
- data/third_party/boringssl/crypto/bn/gcd.c +213 -296
- data/third_party/boringssl/crypto/bn/generic.c +0 -80
- data/third_party/boringssl/crypto/bn/internal.h +15 -3
- data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
- data/third_party/boringssl/crypto/bn/mul.c +2 -1
- data/third_party/boringssl/crypto/bn/prime.c +24 -8
- data/third_party/boringssl/crypto/bn/random.c +47 -33
- data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
- data/third_party/boringssl/crypto/buf/buf.c +25 -21
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
- data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
- data/third_party/boringssl/crypto/cipher/aead.c +11 -22
- data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
- data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
- data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
- data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
- data/third_party/boringssl/crypto/cipher/internal.h +8 -10
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
- data/third_party/boringssl/crypto/conf/conf.c +2 -1
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
- data/third_party/boringssl/crypto/cpu-arm.c +0 -161
- data/third_party/boringssl/crypto/cpu-intel.c +5 -3
- data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
- data/third_party/boringssl/crypto/crypto.c +29 -7
- data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
- data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
- data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
- data/third_party/boringssl/crypto/dh/check.c +22 -6
- data/third_party/boringssl/crypto/dh/dh.c +45 -21
- data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
- data/third_party/boringssl/crypto/dh/params.c +30 -78
- data/third_party/boringssl/crypto/digest/digest.c +3 -3
- data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
- data/third_party/boringssl/crypto/ec/ec.c +84 -140
- data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
- data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
- data/third_party/boringssl/crypto/ec/internal.h +12 -36
- data/third_party/boringssl/crypto/ec/oct.c +11 -11
- data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
- data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
- data/third_party/boringssl/crypto/ec/simple.c +81 -201
- data/third_party/boringssl/crypto/ec/util-64.c +0 -74
- data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
- data/third_party/boringssl/crypto/engine/engine.c +1 -1
- data/third_party/boringssl/crypto/err/err.c +3 -3
- data/third_party/boringssl/crypto/evp/evp.c +14 -59
- data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
- data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
- data/third_party/boringssl/crypto/evp/internal.h +4 -46
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
- data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
- data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
- data/third_party/boringssl/crypto/evp/print.c +520 -0
- data/third_party/boringssl/crypto/ex_data.c +4 -6
- data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
- data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
- data/third_party/boringssl/crypto/internal.h +57 -77
- data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
- data/third_party/boringssl/crypto/md4/md4.c +9 -0
- data/third_party/boringssl/crypto/mem.c +19 -19
- data/third_party/boringssl/crypto/modes/cfb.c +5 -6
- data/third_party/boringssl/crypto/modes/ctr.c +10 -18
- data/third_party/boringssl/crypto/modes/gcm.c +100 -66
- data/third_party/boringssl/crypto/modes/internal.h +15 -27
- data/third_party/boringssl/crypto/modes/ofb.c +9 -22
- data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
- data/third_party/boringssl/crypto/newhope/internal.h +71 -0
- data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
- data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
- data/third_party/boringssl/crypto/newhope/poly.c +183 -0
- data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
- data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
- data/third_party/boringssl/crypto/obj/obj.c +111 -135
- data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
- data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
- data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
- data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
- data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
- data/third_party/boringssl/crypto/rand/rand.c +4 -1
- data/third_party/boringssl/crypto/rand/urandom.c +5 -7
- data/third_party/boringssl/crypto/rand/windows.c +5 -8
- data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
- data/third_party/boringssl/crypto/rsa/internal.h +5 -13
- data/third_party/boringssl/crypto/rsa/padding.c +64 -63
- data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
- data/third_party/boringssl/crypto/sha/sha256.c +2 -2
- data/third_party/boringssl/crypto/sha/sha512.c +7 -7
- data/third_party/boringssl/crypto/stack/stack.c +13 -22
- data/third_party/boringssl/crypto/thread.c +21 -12
- data/third_party/boringssl/crypto/thread_none.c +6 -2
- data/third_party/boringssl/crypto/thread_pthread.c +16 -7
- data/third_party/boringssl/crypto/thread_win.c +38 -85
- data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
- data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
- data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
- data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
- data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
- data/third_party/boringssl/crypto/x509/internal.h +66 -0
- data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
- data/third_party/boringssl/crypto/x509/x509.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
- data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
- data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
- data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
- data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
- data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl/crypto/x509/x_name.c +14 -17
- data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
- data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
- data/third_party/boringssl/include/openssl/aead.h +72 -73
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
- data/third_party/boringssl/include/openssl/asn1.h +103 -235
- data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
- data/third_party/boringssl/include/openssl/asn1t.h +1 -11
- data/third_party/boringssl/include/openssl/base.h +145 -3
- data/third_party/boringssl/include/openssl/base64.h +20 -17
- data/third_party/boringssl/include/openssl/bio.h +59 -34
- data/third_party/boringssl/include/openssl/bn.h +118 -51
- data/third_party/boringssl/include/openssl/buf.h +15 -0
- data/third_party/boringssl/include/openssl/bytestring.h +52 -4
- data/third_party/boringssl/include/openssl/chacha.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +18 -1
- data/third_party/boringssl/include/openssl/cmac.h +11 -0
- data/third_party/boringssl/include/openssl/conf.h +13 -2
- data/third_party/boringssl/include/openssl/cpu.h +20 -23
- data/third_party/boringssl/include/openssl/crypto.h +22 -1
- data/third_party/boringssl/include/openssl/curve25519.h +96 -4
- data/third_party/boringssl/include/openssl/dh.h +71 -16
- data/third_party/boringssl/include/openssl/digest.h +38 -11
- data/third_party/boringssl/include/openssl/dsa.h +40 -4
- data/third_party/boringssl/include/openssl/ec.h +44 -18
- data/third_party/boringssl/include/openssl/ec_key.h +27 -6
- data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
- data/third_party/boringssl/include/openssl/engine.h +11 -0
- data/third_party/boringssl/include/openssl/evp.h +52 -88
- data/third_party/boringssl/include/openssl/hkdf.h +24 -4
- data/third_party/boringssl/include/openssl/hmac.h +20 -6
- data/third_party/boringssl/include/openssl/md4.h +4 -0
- data/third_party/boringssl/include/openssl/mem.h +19 -0
- data/third_party/boringssl/include/openssl/newhope.h +158 -0
- data/third_party/boringssl/include/openssl/nid.h +4166 -0
- data/third_party/boringssl/include/openssl/obj.h +31 -3
- data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
- data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
- data/third_party/boringssl/include/openssl/pem.h +5 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
- data/third_party/boringssl/include/openssl/rand.h +6 -0
- data/third_party/boringssl/include/openssl/rc4.h +6 -0
- data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
- data/third_party/boringssl/include/openssl/rsa.h +127 -65
- data/third_party/boringssl/include/openssl/sha.h +14 -10
- data/third_party/boringssl/include/openssl/ssl.h +561 -275
- data/third_party/boringssl/include/openssl/ssl3.h +18 -25
- data/third_party/boringssl/include/openssl/stack.h +2 -4
- data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
- data/third_party/boringssl/include/openssl/thread.h +31 -13
- data/third_party/boringssl/include/openssl/time_support.h +1 -0
- data/third_party/boringssl/include/openssl/tls1.h +37 -33
- data/third_party/boringssl/include/openssl/x509.h +69 -26
- data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
- data/third_party/boringssl/include/openssl/x509v3.h +23 -2
- data/third_party/boringssl/ssl/custom_extensions.c +3 -5
- data/third_party/boringssl/ssl/d1_both.c +463 -499
- data/third_party/boringssl/ssl/d1_lib.c +38 -109
- data/third_party/boringssl/ssl/d1_pkt.c +173 -334
- data/third_party/boringssl/ssl/d1_srtp.c +20 -18
- data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
- data/third_party/boringssl/ssl/dtls_record.c +27 -26
- data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
- data/third_party/boringssl/ssl/handshake_server.c +1932 -0
- data/third_party/boringssl/ssl/internal.h +712 -439
- data/third_party/boringssl/ssl/s3_both.c +445 -257
- data/third_party/boringssl/ssl/s3_enc.c +53 -36
- data/third_party/boringssl/ssl/s3_lib.c +23 -268
- data/third_party/boringssl/ssl/s3_pkt.c +168 -364
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
- data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
- data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
- data/third_party/boringssl/ssl/ssl_cert.c +324 -49
- data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
- data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
- data/third_party/boringssl/ssl/ssl_file.c +21 -68
- data/third_party/boringssl/ssl/ssl_lib.c +881 -510
- data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
- data/third_party/boringssl/ssl/ssl_session.c +324 -103
- data/third_party/boringssl/ssl/ssl_stat.c +6 -88
- data/third_party/boringssl/ssl/t1_enc.c +23 -39
- data/third_party/boringssl/ssl/t1_lib.c +1120 -622
- data/third_party/boringssl/ssl/tls13_both.c +440 -0
- data/third_party/boringssl/ssl/tls13_client.c +682 -0
- data/third_party/boringssl/ssl/tls13_enc.c +391 -0
- data/third_party/boringssl/ssl/tls13_server.c +672 -0
- data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
- data/third_party/boringssl/ssl/tls_record.c +159 -77
- data/third_party/nanopb/pb.h +60 -28
- data/third_party/nanopb/pb_decode.c +120 -92
- data/third_party/nanopb/pb_decode.h +3 -3
- data/third_party/nanopb/pb_encode.c +73 -67
- data/third_party/nanopb/pb_encode.h +4 -4
- metadata +155 -89
- data/include/grpc/impl/codegen/byte_buffer.h +0 -122
- data/include/grpc/impl/codegen/log.h +0 -118
- data/include/grpc/impl/codegen/time.h +0 -130
- data/src/core/ext/client_config/client_channel.c +0 -593
- data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
- data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
- data/src/core/lib/iomgr/workqueue_posix.c +0 -151
- data/src/core/lib/security/transport/handshake.c +0 -368
- data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
- data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
- data/third_party/boringssl/crypto/directory.h +0 -66
- data/third_party/boringssl/crypto/directory_posix.c +0 -108
- data/third_party/boringssl/crypto/directory_win.c +0 -144
- data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
- data/third_party/boringssl/include/openssl/pqueue.h +0 -146
- data/third_party/boringssl/ssl/d1_clnt.c +0 -561
- data/third_party/boringssl/ssl/d1_srvr.c +0 -476
- data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
- data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
- data/third_party/boringssl/ssl/test/async_bio.h +0 -45
- data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
- data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -221,6 +221,10 @@ OPENSSL_EXPORT int BN_one(BIGNUM *bn);
|
|
221
221
|
* allocation failure. */
|
222
222
|
OPENSSL_EXPORT int BN_set_word(BIGNUM *bn, BN_ULONG value);
|
223
223
|
|
224
|
+
/* BN_set_u64 sets |bn| to |value|. It returns one on success or zero on
|
225
|
+
* allocation failure. */
|
226
|
+
OPENSSL_EXPORT int BN_set_u64(BIGNUM *bn, uint64_t value);
|
227
|
+
|
224
228
|
/* BN_set_negative sets the sign of |bn|. */
|
225
229
|
OPENSSL_EXPORT void BN_set_negative(BIGNUM *bn, int sign);
|
226
230
|
|
@@ -323,11 +327,11 @@ OPENSSL_EXPORT int BN_marshal_asn1(CBB *cbb, const BIGNUM *bn);
|
|
323
327
|
* what you want before turning to these. */
|
324
328
|
|
325
329
|
/* bn_correct_top decrements |bn->top| until |bn->d[top-1]| is non-zero or
|
326
|
-
* until |top| is zero. */
|
330
|
+
* until |top| is zero. If |bn| is zero, |bn->neg| is set to zero. */
|
327
331
|
OPENSSL_EXPORT void bn_correct_top(BIGNUM *bn);
|
328
332
|
|
329
333
|
/* bn_wexpand ensures that |bn| has at least |words| works of space without
|
330
|
-
* altering its value. It returns
|
334
|
+
* altering its value. It returns |bn| on success or NULL on allocation
|
331
335
|
* failure. */
|
332
336
|
OPENSSL_EXPORT BIGNUM *bn_wexpand(BIGNUM *bn, size_t words);
|
333
337
|
|
@@ -383,12 +387,12 @@ OPENSSL_EXPORT int BN_uadd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
|
383
387
|
/* BN_add_word adds |w| to |a|. It returns one on success and zero otherwise. */
|
384
388
|
OPENSSL_EXPORT int BN_add_word(BIGNUM *a, BN_ULONG w);
|
385
389
|
|
386
|
-
/* BN_sub sets |r| = |a| - |b|, where |r|
|
387
|
-
*
|
390
|
+
/* BN_sub sets |r| = |a| - |b|, where |r| may be the same pointer as either |a|
|
391
|
+
* or |b|. It returns one on success and zero on allocation failure. */
|
388
392
|
OPENSSL_EXPORT int BN_sub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
389
393
|
|
390
394
|
/* BN_usub sets |r| = |a| - |b|, where |a| and |b| are non-negative integers,
|
391
|
-
* |b| < |a| and |r|
|
395
|
+
* |b| < |a| and |r| may be the same pointer as either |a| or |b|. It returns
|
392
396
|
* one on success and zero on allocation failure. */
|
393
397
|
OPENSSL_EXPORT int BN_usub(BIGNUM *r, const BIGNUM *a, const BIGNUM *b);
|
394
398
|
|
@@ -436,11 +440,20 @@ OPENSSL_EXPORT int BN_sqrt(BIGNUM *out_sqrt, const BIGNUM *in, BN_CTX *ctx);
|
|
436
440
|
* less than, equal to or greater than |b|, respectively. */
|
437
441
|
OPENSSL_EXPORT int BN_cmp(const BIGNUM *a, const BIGNUM *b);
|
438
442
|
|
443
|
+
/* BN_cmp_word is like |BN_cmp| except it takes its second argument as a
|
444
|
+
* |BN_ULONG| instead of a |BIGNUM|. */
|
445
|
+
OPENSSL_EXPORT int BN_cmp_word(const BIGNUM *a, BN_ULONG b);
|
446
|
+
|
439
447
|
/* BN_ucmp returns a value less than, equal to or greater than zero if the
|
440
448
|
* absolute value of |a| is less than, equal to or greater than the absolute
|
441
449
|
* value of |b|, respectively. */
|
442
450
|
OPENSSL_EXPORT int BN_ucmp(const BIGNUM *a, const BIGNUM *b);
|
443
451
|
|
452
|
+
/* BN_equal_consttime returns one if |a| is equal to |b|, and zero otherwise.
|
453
|
+
* It takes an amount of time dependent on the sizes of |a| and |b|, but
|
454
|
+
* independent of the contents (including the signs) of |a| and |b|. */
|
455
|
+
OPENSSL_EXPORT int BN_equal_consttime(const BIGNUM *a, const BIGNUM *b);
|
456
|
+
|
444
457
|
/* BN_abs_is_word returns one if the absolute value of |bn| equals |w| and zero
|
445
458
|
* otherwise. */
|
446
459
|
OPENSSL_EXPORT int BN_abs_is_word(const BIGNUM *bn, BN_ULONG w);
|
@@ -497,7 +510,7 @@ OPENSSL_EXPORT int BN_mask_bits(BIGNUM *a, int n);
|
|
497
510
|
|
498
511
|
/* Modulo arithmetic. */
|
499
512
|
|
500
|
-
/* BN_mod_word returns |a| mod |w
|
513
|
+
/* BN_mod_word returns |a| mod |w| or (BN_ULONG)-1 on error. */
|
501
514
|
OPENSSL_EXPORT BN_ULONG BN_mod_word(const BIGNUM *a, BN_ULONG w);
|
502
515
|
|
503
516
|
/* BN_mod is a helper macro that calls |BN_div| and discards the quotient. */
|
@@ -560,31 +573,50 @@ OPENSSL_EXPORT int BN_mod_lshift1(BIGNUM *r, const BIGNUM *a, const BIGNUM *m,
|
|
560
573
|
OPENSSL_EXPORT int BN_mod_lshift1_quick(BIGNUM *r, const BIGNUM *a,
|
561
574
|
const BIGNUM *m);
|
562
575
|
|
563
|
-
/* BN_mod_sqrt returns a |BIGNUM|, r, such that r^2 == a (mod p).
|
576
|
+
/* BN_mod_sqrt returns a |BIGNUM|, r, such that r^2 == a (mod p). |p| must be a
|
577
|
+
* prime. */
|
564
578
|
OPENSSL_EXPORT BIGNUM *BN_mod_sqrt(BIGNUM *in, const BIGNUM *a, const BIGNUM *p,
|
565
579
|
BN_CTX *ctx);
|
566
580
|
|
567
581
|
|
568
582
|
/* Random and prime number generation. */
|
569
583
|
|
570
|
-
/*
|
571
|
-
|
572
|
-
|
584
|
+
/* The following are values for the |top| parameter of |BN_rand|. */
|
585
|
+
#define BN_RAND_TOP_ANY -1
|
586
|
+
#define BN_RAND_TOP_ONE 0
|
587
|
+
#define BN_RAND_TOP_TWO 1
|
588
|
+
|
589
|
+
/* The following are values for the |bottom| parameter of |BN_rand|. */
|
590
|
+
#define BN_RAND_BOTTOM_ANY 0
|
591
|
+
#define BN_RAND_BOTTOM_ODD 1
|
592
|
+
|
593
|
+
/* BN_rand sets |rnd| to a random number of length |bits|. It returns one on
|
594
|
+
* success and zero otherwise.
|
573
595
|
*
|
574
|
-
*
|
575
|
-
*
|
596
|
+
* |top| must be one of the |BN_RAND_TOP_*| values. If |BN_RAND_TOP_ONE|, the
|
597
|
+
* most-significant bit, if any, will be set. If |BN_RAND_TOP_TWO|, the two
|
598
|
+
* most significant bits, if any, will be set. If |BN_RAND_TOP_ANY|, no extra
|
599
|
+
* action will be taken and |BN_num_bits(rnd)| may not equal |bits| if the most
|
600
|
+
* significant bits randomly ended up as zeros.
|
576
601
|
*
|
577
|
-
*
|
578
|
-
*
|
602
|
+
* |bottom| must be one of the |BN_RAND_BOTTOM_*| values. If
|
603
|
+
* |BN_RAND_BOTTOM_ODD|, the least-significant bit, if any, will be set. If
|
604
|
+
* |BN_RAND_BOTTOM_ANY|, no extra action will be taken. */
|
579
605
|
OPENSSL_EXPORT int BN_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
580
606
|
|
581
607
|
/* BN_pseudo_rand is an alias for |BN_rand|. */
|
582
608
|
OPENSSL_EXPORT int BN_pseudo_rand(BIGNUM *rnd, int bits, int top, int bottom);
|
583
609
|
|
584
|
-
/* BN_rand_range
|
585
|
-
*
|
610
|
+
/* BN_rand_range is equivalent to |BN_rand_range_ex| with |min_inclusive| set
|
611
|
+
* to zero and |max_exclusive| set to |range|. */
|
586
612
|
OPENSSL_EXPORT int BN_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
587
613
|
|
614
|
+
/* BN_rand_range_ex sets |rnd| to a random value in
|
615
|
+
* [min_inclusive..max_exclusive). It returns one on success and zero
|
616
|
+
* otherwise. */
|
617
|
+
OPENSSL_EXPORT int BN_rand_range_ex(BIGNUM *r, BN_ULONG min_inclusive,
|
618
|
+
const BIGNUM *max_exclusive);
|
619
|
+
|
588
620
|
/* BN_pseudo_rand_range is an alias for BN_rand_range. */
|
589
621
|
OPENSSL_EXPORT int BN_pseudo_rand_range(BIGNUM *rnd, const BIGNUM *range);
|
590
622
|
|
@@ -706,20 +738,41 @@ OPENSSL_EXPORT int BN_is_prime_ex(const BIGNUM *candidate, int checks,
|
|
706
738
|
OPENSSL_EXPORT int BN_gcd(BIGNUM *r, const BIGNUM *a, const BIGNUM *b,
|
707
739
|
BN_CTX *ctx);
|
708
740
|
|
709
|
-
/* BN_mod_inverse sets |out| equal to |a|^-1, mod |n|. If
|
710
|
-
*
|
711
|
-
*
|
712
|
-
* or
|
741
|
+
/* BN_mod_inverse sets |out| equal to |a|^-1, mod |n|. If |out| is NULL, a
|
742
|
+
* fresh BIGNUM is allocated. It returns the result or NULL on error.
|
743
|
+
*
|
744
|
+
* If either of |a| or |n| have |BN_FLG_CONSTTIME| set then the operation is
|
745
|
+
* performed using an algorithm that avoids some branches but which isn't
|
746
|
+
* constant-time. This function shouldn't be used for secret values, even
|
747
|
+
* with |BN_FLG_CONSTTIME|; use |BN_mod_inverse_blinded| instead. Or, if
|
748
|
+
* |n| is guaranteed to be prime, use
|
749
|
+
* |BN_mod_exp_mont_consttime(out, a, m_minus_2, m, ctx, m_mont)|, taking
|
750
|
+
* advantage of Fermat's Little Theorem. */
|
713
751
|
OPENSSL_EXPORT BIGNUM *BN_mod_inverse(BIGNUM *out, const BIGNUM *a,
|
714
752
|
const BIGNUM *n, BN_CTX *ctx);
|
715
753
|
|
716
|
-
/*
|
717
|
-
*
|
718
|
-
* |
|
754
|
+
/* BN_mod_inverse_blinded sets |out| equal to |a|^-1, mod |n|, where |n| is the
|
755
|
+
* Montgomery modulus for |mont|. |a| must be non-negative and must be less
|
756
|
+
* than |n|. |n| must be greater than 1. |a| is blinded (masked by a random
|
757
|
+
* value) to protect it against side-channel attacks. |BN_mod_inverse_blinded|
|
758
|
+
* may or may not ignore the |BN_FLG_CONSTTIME| flag on any/all of its inputs.
|
759
|
+
* It returns one on success or zero on failure. On failure, if the failure was
|
760
|
+
* caused by |a| having no inverse mod |n| then |*out_no_inverse| will be set
|
761
|
+
* to one; otherwise it will be set to zero. */
|
762
|
+
int BN_mod_inverse_blinded(BIGNUM *out, int *out_no_inverse, const BIGNUM *a,
|
763
|
+
const BN_MONT_CTX *mont, BN_CTX *ctx);
|
764
|
+
|
765
|
+
/* BN_mod_inverse_odd sets |out| equal to |a|^-1, mod |n|. |a| must be
|
766
|
+
* non-negative and must be less than |n|. |n| must be odd. This function
|
767
|
+
* shouldn't be used for secret values; use |BN_mod_inverse_blinded| instead.
|
768
|
+
* Or, if |n| is guaranteed to be prime, use
|
769
|
+
* |BN_mod_exp_mont_consttime(out, a, m_minus_2, m, ctx, m_mont)|, taking
|
770
|
+
* advantage of Fermat's Little Theorem. It returns one on success or zero on
|
771
|
+
* failure. On failure, if the failure was caused by |a| having no inverse mod
|
772
|
+
* |n| then |*out_no_inverse| will be set to one; otherwise it will be set to
|
719
773
|
* zero. */
|
720
|
-
|
721
|
-
|
722
|
-
BN_CTX *ctx);
|
774
|
+
int BN_mod_inverse_odd(BIGNUM *out, int *out_no_inverse, const BIGNUM *a,
|
775
|
+
const BIGNUM *n, BN_CTX *ctx);
|
723
776
|
|
724
777
|
/* BN_kronecker returns the Kronecker symbol of |a| and |b| (which is -1, 0 or
|
725
778
|
* 1), or -2 on error. */
|
@@ -749,25 +802,29 @@ OPENSSL_EXPORT int BN_MONT_CTX_set(BN_MONT_CTX *mont, const BIGNUM *mod,
|
|
749
802
|
|
750
803
|
/* BN_MONT_CTX_set_locked takes |lock| and checks whether |*pmont| is NULL. If
|
751
804
|
* so, it creates a new |BN_MONT_CTX| and sets the modulus for it to |mod|. It
|
752
|
-
* then stores it as |*pmont
|
805
|
+
* then stores it as |*pmont|. It returns one on success and zero on error.
|
753
806
|
*
|
754
|
-
* If |*pmont| is already non-NULL then
|
755
|
-
|
756
|
-
|
807
|
+
* If |*pmont| is already non-NULL then it does nothing and returns one. */
|
808
|
+
int BN_MONT_CTX_set_locked(BN_MONT_CTX **pmont, CRYPTO_MUTEX *lock,
|
809
|
+
const BIGNUM *mod, BN_CTX *bn_ctx);
|
757
810
|
|
758
|
-
/* BN_to_montgomery sets |ret| equal to |a| in the Montgomery domain.
|
759
|
-
*
|
811
|
+
/* BN_to_montgomery sets |ret| equal to |a| in the Montgomery domain. |a| is
|
812
|
+
* assumed to be in the range [0, n), where |n| is the Montgomery modulus. It
|
813
|
+
* returns one on success or zero on error. */
|
760
814
|
OPENSSL_EXPORT int BN_to_montgomery(BIGNUM *ret, const BIGNUM *a,
|
761
815
|
const BN_MONT_CTX *mont, BN_CTX *ctx);
|
762
816
|
|
763
|
-
/* BN_from_montgomery sets |ret| equal to |a| * R^-1, i.e. translates values
|
764
|
-
*
|
817
|
+
/* BN_from_montgomery sets |ret| equal to |a| * R^-1, i.e. translates values out
|
818
|
+
* of the Montgomery domain. |a| is assumed to be in the range [0, n), where |n|
|
819
|
+
* is the Montgomery modulus. It returns one on success or zero on error. */
|
765
820
|
OPENSSL_EXPORT int BN_from_montgomery(BIGNUM *ret, const BIGNUM *a,
|
766
821
|
const BN_MONT_CTX *mont, BN_CTX *ctx);
|
767
822
|
|
768
823
|
/* BN_mod_mul_montgomery set |r| equal to |a| * |b|, in the Montgomery domain.
|
769
824
|
* Both |a| and |b| must already be in the Montgomery domain (by
|
770
|
-
* |BN_to_montgomery|).
|
825
|
+
* |BN_to_montgomery|). In particular, |a| and |b| are assumed to be in the
|
826
|
+
* range [0, n), where |n| is the Montgomery modulus. It returns one on success
|
827
|
+
* or zero on error. */
|
771
828
|
OPENSSL_EXPORT int BN_mod_mul_montgomery(BIGNUM *r, const BIGNUM *a,
|
772
829
|
const BIGNUM *b,
|
773
830
|
const BN_MONT_CTX *mont, BN_CTX *ctx);
|
@@ -797,14 +854,6 @@ OPENSSL_EXPORT int BN_mod_exp_mont_consttime(BIGNUM *rr, const BIGNUM *a,
|
|
797
854
|
BN_CTX *ctx,
|
798
855
|
const BN_MONT_CTX *mont);
|
799
856
|
|
800
|
-
OPENSSL_EXPORT int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
|
801
|
-
const BIGNUM *m, BN_CTX *ctx,
|
802
|
-
const BN_MONT_CTX *mont);
|
803
|
-
OPENSSL_EXPORT int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1,
|
804
|
-
const BIGNUM *p1, const BIGNUM *a2,
|
805
|
-
const BIGNUM *p2, const BIGNUM *m,
|
806
|
-
BN_CTX *ctx, const BN_MONT_CTX *mont);
|
807
|
-
|
808
857
|
|
809
858
|
/* Deprecated functions */
|
810
859
|
|
@@ -824,6 +873,20 @@ OPENSSL_EXPORT size_t BN_bn2mpi(const BIGNUM *in, uint8_t *out);
|
|
824
873
|
* is updated. */
|
825
874
|
OPENSSL_EXPORT BIGNUM *BN_mpi2bn(const uint8_t *in, size_t len, BIGNUM *out);
|
826
875
|
|
876
|
+
/* BN_mod_exp_mont_word is like |BN_mod_exp_mont| except that the base |a| is
|
877
|
+
* given as a |BN_ULONG| instead of a |BIGNUM *|. It returns one on success
|
878
|
+
* or zero otherwise. */
|
879
|
+
OPENSSL_EXPORT int BN_mod_exp_mont_word(BIGNUM *r, BN_ULONG a, const BIGNUM *p,
|
880
|
+
const BIGNUM *m, BN_CTX *ctx,
|
881
|
+
const BN_MONT_CTX *mont);
|
882
|
+
|
883
|
+
/* BN_mod_exp2_mont calculates (a1^p1) * (a2^p2) mod m. It returns 1 on success
|
884
|
+
* or zero otherwise. */
|
885
|
+
OPENSSL_EXPORT int BN_mod_exp2_mont(BIGNUM *r, const BIGNUM *a1,
|
886
|
+
const BIGNUM *p1, const BIGNUM *a2,
|
887
|
+
const BIGNUM *p2, const BIGNUM *m,
|
888
|
+
BN_CTX *ctx, const BN_MONT_CTX *mont);
|
889
|
+
|
827
890
|
|
828
891
|
/* Private functions */
|
829
892
|
|
@@ -852,17 +915,21 @@ OPENSSL_EXPORT unsigned BN_num_bits_word(BN_ULONG l);
|
|
852
915
|
#define BN_FLG_CONSTTIME 0x04
|
853
916
|
|
854
917
|
|
855
|
-
|
856
|
-
|
857
|
-
* These functions are declared, temporarily, for Android because
|
858
|
-
* wpa_supplicant will take a little time to sync with upstream. Outside of
|
859
|
-
* Android they'll have no definition. */
|
918
|
+
#if defined(__cplusplus)
|
919
|
+
} /* extern C */
|
860
920
|
|
861
|
-
|
921
|
+
extern "C++" {
|
862
922
|
|
923
|
+
namespace bssl {
|
924
|
+
|
925
|
+
BORINGSSL_MAKE_DELETER(BIGNUM, BN_free)
|
926
|
+
BORINGSSL_MAKE_DELETER(BN_CTX, BN_CTX_free)
|
927
|
+
BORINGSSL_MAKE_DELETER(BN_MONT_CTX, BN_MONT_CTX_free)
|
928
|
+
|
929
|
+
} // namespace bssl
|
930
|
+
|
931
|
+
} /* extern C++ */
|
863
932
|
|
864
|
-
#if defined(__cplusplus)
|
865
|
-
} /* extern C */
|
866
933
|
#endif
|
867
934
|
|
868
935
|
#define BN_R_ARG2_LT_ARG3 100
|
@@ -80,6 +80,10 @@ OPENSSL_EXPORT BUF_MEM *BUF_MEM_new(void);
|
|
80
80
|
/* BUF_MEM_free frees |buf->data| if needed and then frees |buf| itself. */
|
81
81
|
OPENSSL_EXPORT void BUF_MEM_free(BUF_MEM *buf);
|
82
82
|
|
83
|
+
/* BUF_MEM_reserve ensures |buf| has capacity |cap| and allocates memory if
|
84
|
+
* needed. It returns one on success and zero on error. */
|
85
|
+
OPENSSL_EXPORT int BUF_MEM_reserve(BUF_MEM *buf, size_t cap);
|
86
|
+
|
83
87
|
/* BUF_MEM_grow ensures that |buf| has length |len| and allocates memory if
|
84
88
|
* needed. If the length of |buf| increased, the new bytes are filled with
|
85
89
|
* zeros. It returns the length of |buf|, or zero if there's an error. */
|
@@ -113,6 +117,17 @@ OPENSSL_EXPORT size_t BUF_strlcat(char *dst, const char *src, size_t size);
|
|
113
117
|
|
114
118
|
#if defined(__cplusplus)
|
115
119
|
} /* extern C */
|
120
|
+
|
121
|
+
extern "C++" {
|
122
|
+
|
123
|
+
namespace bssl {
|
124
|
+
|
125
|
+
BORINGSSL_MAKE_DELETER(BUF_MEM, BUF_MEM_free)
|
126
|
+
|
127
|
+
} // namespace bssl
|
128
|
+
|
129
|
+
} /* extern C++ */
|
130
|
+
|
116
131
|
#endif
|
117
132
|
|
118
133
|
#endif /* OPENSSL_HEADER_BUFFER_H */
|
@@ -95,6 +95,10 @@ OPENSSL_EXPORT int CBS_get_u24(CBS *cbs, uint32_t *out);
|
|
95
95
|
* and advances |cbs|. It returns one on success and zero on error. */
|
96
96
|
OPENSSL_EXPORT int CBS_get_u32(CBS *cbs, uint32_t *out);
|
97
97
|
|
98
|
+
/* CBS_get_last_u8 sets |*out| to the last uint8_t from |cbs| and shortens
|
99
|
+
* |cbs|. It returns one on success and zero on error. */
|
100
|
+
OPENSSL_EXPORT int CBS_get_last_u8(CBS *cbs, uint8_t *out);
|
101
|
+
|
98
102
|
/* CBS_get_bytes sets |*out| to the next |len| bytes from |cbs| and advances
|
99
103
|
* |cbs|. It returns one on success and zero on error. */
|
100
104
|
OPENSSL_EXPORT int CBS_get_bytes(CBS *cbs, CBS *out, size_t len);
|
@@ -121,6 +125,7 @@ OPENSSL_EXPORT int CBS_get_u24_length_prefixed(CBS *cbs, CBS *out);
|
|
121
125
|
|
122
126
|
/* Parsing ASN.1 */
|
123
127
|
|
128
|
+
/* The following values are tag numbers for UNIVERSAL elements. */
|
124
129
|
#define CBS_ASN1_BOOLEAN 0x1
|
125
130
|
#define CBS_ASN1_INTEGER 0x2
|
126
131
|
#define CBS_ASN1_BITSTRING 0x3
|
@@ -128,6 +133,7 @@ OPENSSL_EXPORT int CBS_get_u24_length_prefixed(CBS *cbs, CBS *out);
|
|
128
133
|
#define CBS_ASN1_NULL 0x5
|
129
134
|
#define CBS_ASN1_OBJECT 0x6
|
130
135
|
#define CBS_ASN1_ENUMERATED 0xa
|
136
|
+
#define CBS_ASN1_UTF8STRING 0xc
|
131
137
|
#define CBS_ASN1_SEQUENCE (0x10 | CBS_ASN1_CONSTRUCTED)
|
132
138
|
#define CBS_ASN1_SET (0x11 | CBS_ASN1_CONSTRUCTED)
|
133
139
|
#define CBS_ASN1_NUMERICSTRING 0x12
|
@@ -143,8 +149,27 @@ OPENSSL_EXPORT int CBS_get_u24_length_prefixed(CBS *cbs, CBS *out);
|
|
143
149
|
#define CBS_ASN1_UNIVERSALSTRING 0x1c
|
144
150
|
#define CBS_ASN1_BMPSTRING 0x1e
|
145
151
|
|
152
|
+
/* CBS_ASN1_CONSTRUCTED may be ORed into a tag to toggle the constructed
|
153
|
+
* bit. |CBS| and |CBB| APIs consider the constructed bit to be part of the
|
154
|
+
* tag. */
|
146
155
|
#define CBS_ASN1_CONSTRUCTED 0x20
|
156
|
+
|
157
|
+
/* The following values specify the constructed bit or tag class and may be ORed
|
158
|
+
* into a tag number to produce the final tag. If none is used, the tag will be
|
159
|
+
* UNIVERSAL.
|
160
|
+
*
|
161
|
+
* Note that although they currently match the DER serialization, consumers must
|
162
|
+
* use these bits rather than make assumptions about the representation. This is
|
163
|
+
* to allow for tag numbers beyond 31 in the future. */
|
164
|
+
#define CBS_ASN1_APPLICATION 0x40
|
147
165
|
#define CBS_ASN1_CONTEXT_SPECIFIC 0x80
|
166
|
+
#define CBS_ASN1_PRIVATE 0xc0
|
167
|
+
|
168
|
+
/* CBS_ASN1_CLASS_MASK may be ANDed with a tag to query its class. */
|
169
|
+
#define CBS_ASN1_CLASS_MASK 0xc0
|
170
|
+
|
171
|
+
/* CBS_ASN1_TAG_NUMBER_MASK may be ANDed with a tag to query its number. */
|
172
|
+
#define CBS_ASN1_TAG_NUMBER_MASK 0x1f
|
148
173
|
|
149
174
|
/* CBS_get_asn1 sets |*out| to the contents of DER-encoded, ASN.1 element (not
|
150
175
|
* including tag and length bytes) and advances |cbs| over it. The ASN.1
|
@@ -237,7 +262,8 @@ OPENSSL_EXPORT int CBS_get_optional_asn1_bool(CBS *cbs, int *out, unsigned tag,
|
|
237
262
|
* not be used again.
|
238
263
|
*
|
239
264
|
* If one needs to force a length prefix to be written out because a |CBB| is
|
240
|
-
* going out of scope, use |CBB_flush|.
|
265
|
+
* going out of scope, use |CBB_flush|. If an operation on a |CBB| fails, it is
|
266
|
+
* in an undefined state and must not be used except to call |CBB_cleanup|. */
|
241
267
|
|
242
268
|
struct cbb_buffer_st {
|
243
269
|
uint8_t *buf;
|
@@ -245,6 +271,8 @@ struct cbb_buffer_st {
|
|
245
271
|
size_t cap; /* The size of buf. */
|
246
272
|
char can_resize; /* One iff |buf| is owned by this object. If not then |buf|
|
247
273
|
cannot be resized. */
|
274
|
+
char error; /* One iff there was an error writing to this CBB. All future
|
275
|
+
operations will fail. */
|
248
276
|
};
|
249
277
|
|
250
278
|
struct cbb_st {
|
@@ -299,8 +327,10 @@ OPENSSL_EXPORT void CBB_cleanup(CBB *cbb);
|
|
299
327
|
OPENSSL_EXPORT int CBB_finish(CBB *cbb, uint8_t **out_data, size_t *out_len);
|
300
328
|
|
301
329
|
/* CBB_flush causes any pending length prefixes to be written out and any child
|
302
|
-
* |CBB| objects of |cbb| to be invalidated.
|
303
|
-
*
|
330
|
+
* |CBB| objects of |cbb| to be invalidated. This allows |cbb| to continue to be
|
331
|
+
* used after the children go out of scope, e.g. when local |CBB| objects are
|
332
|
+
* added as children to a |CBB| that persists after a function returns. This
|
333
|
+
* function returns one on success or zero on error. */
|
304
334
|
OPENSSL_EXPORT int CBB_flush(CBB *cbb);
|
305
335
|
|
306
336
|
/* CBB_data returns a pointer to the bytes written to |cbb|. It does not flush
|
@@ -337,7 +367,7 @@ OPENSSL_EXPORT int CBB_add_u24_length_prefixed(CBB *cbb, CBB *out_contents);
|
|
337
367
|
* the object. Passing in |tag| number 31 will return in an error since only
|
338
368
|
* single octet identifiers are supported. It returns one on success or zero
|
339
369
|
* on error. */
|
340
|
-
OPENSSL_EXPORT int CBB_add_asn1(CBB *cbb, CBB *out_contents,
|
370
|
+
OPENSSL_EXPORT int CBB_add_asn1(CBB *cbb, CBB *out_contents, unsigned tag);
|
341
371
|
|
342
372
|
/* CBB_add_bytes appends |len| bytes from |data| to |cbb|. It returns one on
|
343
373
|
* success and zero otherwise. */
|
@@ -372,6 +402,10 @@ OPENSSL_EXPORT int CBB_add_u16(CBB *cbb, uint16_t value);
|
|
372
402
|
* returns one on success and zero otherwise. */
|
373
403
|
OPENSSL_EXPORT int CBB_add_u24(CBB *cbb, uint32_t value);
|
374
404
|
|
405
|
+
/* CBB_add_u32 appends a 32-bit, big-endian number from |value| to |cbb|. It
|
406
|
+
* returns one on success and zero otherwise. */
|
407
|
+
OPENSSL_EXPORT int CBB_add_u32(CBB *cbb, uint32_t value);
|
408
|
+
|
375
409
|
/* CBB_discard_child discards the current unflushed child of |cbb|. Neither the
|
376
410
|
* child's contents nor the length prefix will be included in the output. */
|
377
411
|
OPENSSL_EXPORT void CBB_discard_child(CBB *cbb);
|
@@ -384,6 +418,20 @@ OPENSSL_EXPORT int CBB_add_asn1_uint64(CBB *cbb, uint64_t value);
|
|
384
418
|
|
385
419
|
#if defined(__cplusplus)
|
386
420
|
} /* extern C */
|
421
|
+
|
422
|
+
|
423
|
+
#if !defined(BORINGSSL_NO_CXX)
|
424
|
+
extern "C++" {
|
425
|
+
|
426
|
+
namespace bssl {
|
427
|
+
|
428
|
+
using ScopedCBB = internal::StackAllocated<CBB, void, CBB_zero, CBB_cleanup>;
|
429
|
+
|
430
|
+
} // namespace bssl
|
431
|
+
|
432
|
+
} // extern C++
|
433
|
+
#endif
|
434
|
+
|
387
435
|
#endif
|
388
436
|
|
389
437
|
#endif /* OPENSSL_HEADER_BYTESTRING_H */
|
@@ -23,8 +23,8 @@ extern "C" {
|
|
23
23
|
|
24
24
|
|
25
25
|
/* CRYPTO_chacha_20 encrypts |in_len| bytes from |in| with the given key and
|
26
|
-
* nonce and writes the result to |out
|
27
|
-
* initial block counter is specified by |counter|. */
|
26
|
+
* nonce and writes the result to |out|. If |in| and |out| alias, they must be
|
27
|
+
* equal. The initial block counter is specified by |counter|. */
|
28
28
|
OPENSSL_EXPORT void CRYPTO_chacha_20(uint8_t *out, const uint8_t *in,
|
29
29
|
size_t in_len, const uint8_t key[32],
|
30
30
|
const uint8_t nonce[12], uint32_t counter);
|
@@ -481,7 +481,7 @@ struct evp_cipher_ctx_st {
|
|
481
481
|
|
482
482
|
/* num contains the number of bytes of |iv| which are valid for modes that
|
483
483
|
* manage partial blocks themselves. */
|
484
|
-
|
484
|
+
unsigned num;
|
485
485
|
|
486
486
|
/* final_used is non-zero if the |final| buffer contains plaintext. */
|
487
487
|
int final_used;
|
@@ -540,6 +540,23 @@ struct evp_cipher_st {
|
|
540
540
|
|
541
541
|
#if defined(__cplusplus)
|
542
542
|
} /* extern C */
|
543
|
+
|
544
|
+
#if !defined(BORINGSSL_NO_CXX)
|
545
|
+
extern "C++" {
|
546
|
+
|
547
|
+
namespace bssl {
|
548
|
+
|
549
|
+
BORINGSSL_MAKE_DELETER(EVP_CIPHER_CTX, EVP_CIPHER_CTX_free)
|
550
|
+
|
551
|
+
using ScopedEVP_CIPHER_CTX =
|
552
|
+
internal::StackAllocated<EVP_CIPHER_CTX, int, EVP_CIPHER_CTX_init,
|
553
|
+
EVP_CIPHER_CTX_cleanup>;
|
554
|
+
|
555
|
+
} // namespace bssl
|
556
|
+
|
557
|
+
} // extern C++
|
558
|
+
#endif
|
559
|
+
|
543
560
|
#endif
|
544
561
|
|
545
562
|
#define CIPHER_R_AES_KEY_SETUP_FAILED 100
|