grpc 0.14.1 → 0.15.0
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 +1398 -817
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +10 -1
- data/include/grpc/grpc_cronet.h +51 -0
- data/include/grpc/grpc_posix.h +70 -0
- data/include/grpc/impl/codegen/atm.h +2 -2
- data/include/grpc/impl/codegen/{atm_win32.h → atm_windows.h} +3 -3
- data/include/grpc/impl/codegen/compression_types.h +39 -5
- data/include/grpc/impl/codegen/connectivity_state.h +1 -1
- data/include/grpc/impl/codegen/grpc_types.h +10 -0
- data/include/grpc/impl/codegen/log.h +2 -1
- data/include/grpc/impl/codegen/port_platform.h +30 -12
- data/include/grpc/impl/codegen/slice_buffer.h +2 -3
- data/include/grpc/impl/codegen/sync.h +2 -2
- data/include/grpc/impl/codegen/{sync_win32.h → sync_windows.h} +3 -3
- data/include/grpc/support/{sync_win32.h → atm_windows.h} +4 -4
- data/include/grpc/support/avl.h +5 -0
- data/include/grpc/support/{log_win32.h → log_windows.h} +3 -3
- data/include/grpc/support/string_util.h +2 -1
- data/include/grpc/support/{atm_win32.h → sync_windows.h} +4 -4
- data/src/core/ext/census/gen/census.pb.c +179 -0
- data/src/core/ext/census/gen/census.pb.h +294 -0
- data/src/core/ext/census/grpc_filter.c +11 -7
- data/src/core/ext/client_config/channel_connectivity.c +28 -14
- data/src/core/ext/client_config/client_channel.c +77 -53
- data/src/core/ext/client_config/connector.h +1 -1
- data/src/core/ext/client_config/lb_policy.c +9 -6
- data/src/core/ext/client_config/lb_policy.h +9 -5
- data/src/core/ext/client_config/subchannel.c +58 -39
- data/src/core/ext/client_config/subchannel.h +3 -2
- data/src/core/ext/client_config/subchannel_call_holder.c +34 -19
- data/src/core/ext/client_config/subchannel_call_holder.h +2 -1
- data/src/core/ext/client_config/subchannel_index.c +20 -9
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +7 -7
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +5 -5
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/{v0 → v1}/load_balancer.pb.c +29 -30
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +178 -0
- data/src/core/ext/lb_policy/pick_first/pick_first.c +65 -45
- data/src/core/ext/lb_policy/round_robin/round_robin.c +84 -43
- data/src/core/ext/load_reporting/load_reporting.c +133 -0
- data/src/core/ext/load_reporting/load_reporting.h +75 -0
- data/src/core/ext/load_reporting/load_reporting_filter.c +151 -0
- data/src/core/ext/load_reporting/load_reporting_filter.h +41 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +22 -8
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +2 -2
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +4 -4
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +95 -0
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +14 -18
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +49 -24
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +82 -0
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +104 -60
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +232 -0
- data/src/{ruby/ext/grpc/rb_signal.c → core/ext/transport/chttp2/transport/bin_decoder.h} +27 -31
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +481 -260
- data/src/core/ext/transport/chttp2/transport/frame.h +1 -7
- data/src/core/ext/transport/chttp2/transport/frame_data.c +44 -27
- data/src/core/ext/transport/chttp2/transport/frame_data.h +6 -5
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +23 -17
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +12 -7
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +3 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +25 -12
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +23 -21
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -2
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +17 -9
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -2
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +365 -287
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +8 -6
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -4
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +1 -0
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -0
- data/src/core/ext/transport/chttp2/transport/internal.h +34 -32
- data/src/core/ext/transport/chttp2/transport/parsing.c +296 -212
- data/src/core/ext/transport/chttp2/transport/writing.c +12 -9
- data/src/core/lib/channel/channel_args.c +26 -12
- data/src/core/lib/channel/channel_args.h +1 -1
- data/src/core/lib/channel/channel_stack.c +12 -8
- data/src/core/lib/channel/channel_stack.h +27 -11
- data/src/core/lib/channel/channel_stack_builder.c +2 -2
- data/src/core/lib/channel/compress_filter.c +26 -31
- data/src/core/lib/channel/compress_filter.h +4 -4
- data/src/core/lib/channel/connected_channel.c +7 -5
- data/src/core/lib/channel/http_client_filter.c +34 -8
- data/src/core/lib/channel/http_client_filter.h +1 -1
- data/src/core/lib/channel/http_server_filter.c +21 -12
- data/src/core/lib/compression/{compression_algorithm.c → compression.c} +22 -21
- data/src/core/lib/http/httpcli.c +81 -59
- data/src/core/lib/http/httpcli.h +11 -15
- data/src/core/lib/http/httpcli_security_connector.c +5 -3
- data/src/core/lib/http/parser.c +127 -118
- data/src/core/lib/http/parser.h +11 -6
- data/src/core/lib/iomgr/closure.c +20 -16
- data/src/core/lib/iomgr/closure.h +19 -15
- data/src/core/lib/iomgr/endpoint.h +1 -1
- data/src/core/lib/iomgr/endpoint_pair_posix.c +2 -2
- data/src/core/lib/iomgr/error.c +535 -0
- data/src/core/lib/iomgr/error.h +192 -0
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +190 -83
- data/src/core/lib/iomgr/ev_poll_posix.c +1267 -0
- data/src/{ruby/ext/grpc/rb_signal.h → core/lib/iomgr/ev_poll_posix.h} +7 -5
- data/src/core/lib/iomgr/ev_posix.c +104 -14
- data/src/core/lib/iomgr/ev_posix.h +17 -7
- data/src/core/lib/iomgr/exec_ctx.c +25 -7
- data/src/core/lib/iomgr/exec_ctx.h +27 -8
- data/src/core/lib/iomgr/executor.c +2 -2
- data/src/core/lib/iomgr/executor.h +1 -1
- data/src/core/lib/iomgr/iocp_windows.c +2 -41
- data/src/core/lib/iomgr/iocp_windows.h +0 -8
- data/src/core/lib/iomgr/iomgr.c +5 -4
- data/src/core/lib/iomgr/iomgr_posix.c +5 -1
- data/src/core/lib/iomgr/iomgr_windows.c +1 -1
- data/src/core/lib/{support → iomgr}/load_file.c +15 -17
- data/src/core/lib/{support → iomgr}/load_file.h +8 -7
- data/src/core/lib/iomgr/polling_entity.c +104 -0
- data/src/core/lib/iomgr/polling_entity.h +81 -0
- data/src/core/lib/iomgr/pollset.h +6 -5
- data/src/core/lib/iomgr/pollset_set_windows.c +4 -1
- data/src/core/lib/iomgr/pollset_windows.c +10 -6
- data/src/core/lib/iomgr/resolve_address.h +5 -9
- data/src/core/lib/iomgr/resolve_address_posix.c +55 -38
- data/src/core/lib/iomgr/resolve_address_windows.c +51 -37
- data/src/core/lib/iomgr/sockaddr.h +2 -2
- data/src/core/lib/iomgr/{sockaddr_win32.h → sockaddr_windows.h} +3 -3
- data/src/core/lib/iomgr/socket_utils_common_posix.c +92 -45
- data/src/core/lib/iomgr/socket_utils_posix.h +19 -12
- data/src/core/lib/iomgr/socket_windows.c +61 -2
- data/src/core/lib/iomgr/socket_windows.h +13 -0
- data/src/core/lib/iomgr/tcp_client_posix.c +54 -39
- data/src/core/lib/iomgr/tcp_client_windows.c +34 -34
- data/src/core/lib/iomgr/tcp_posix.c +43 -39
- data/src/core/lib/iomgr/tcp_server.h +5 -3
- data/src/core/lib/iomgr/tcp_server_posix.c +103 -64
- data/src/core/lib/iomgr/tcp_server_windows.c +114 -101
- data/src/core/lib/iomgr/tcp_windows.c +45 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -1
- data/src/core/lib/iomgr/timer.c +26 -13
- data/src/core/lib/iomgr/udp_server.c +28 -4
- data/src/core/lib/iomgr/udp_server.h +5 -1
- data/src/core/lib/iomgr/unix_sockets_posix.c +8 -7
- data/src/core/lib/iomgr/unix_sockets_posix.h +2 -1
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -2
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +15 -5
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +13 -9
- data/src/core/lib/iomgr/wakeup_fd_posix.c +6 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.h +9 -6
- data/src/core/lib/iomgr/workqueue.h +5 -4
- data/src/core/lib/iomgr/workqueue_posix.c +40 -26
- data/src/core/lib/iomgr/workqueue_windows.c +2 -2
- data/src/core/lib/profiling/basic_timers.c +2 -2
- data/src/core/lib/security/{security_context.c → context/security_context.c} +1 -1
- data/src/core/lib/security/{security_context.h → context/security_context.h} +4 -4
- data/src/core/lib/security/credentials/composite/composite_credentials.c +263 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.h +72 -0
- data/src/core/lib/security/credentials/credentials.c +233 -0
- data/src/core/lib/security/{credentials.h → credentials/credentials.h} +19 -157
- data/src/core/lib/security/{credentials_metadata.c → credentials/credentials_metadata.c} +1 -1
- data/src/core/lib/security/credentials/fake/fake_credentials.c +139 -0
- data/src/core/lib/security/credentials/fake/fake_credentials.h +56 -0
- data/src/core/lib/security/{credentials_posix.c → credentials/google_default/credentials_posix.c} +1 -1
- data/src/core/lib/security/{credentials_win32.c → credentials/google_default/credentials_windows.c} +3 -3
- data/src/core/lib/security/{google_default_credentials.c → credentials/google_default/google_default_credentials.c} +93 -35
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +46 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +85 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.h +44 -0
- data/src/core/lib/security/{json_token.c → credentials/jwt/json_token.c} +10 -101
- data/src/core/lib/security/{json_token.h → credentials/jwt/json_token.h} +3 -33
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +160 -0
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +62 -0
- data/src/core/lib/security/{jwt_verifier.c → credentials/jwt/jwt_verifier.c} +35 -15
- data/src/core/lib/security/{jwt_verifier.h → credentials/jwt/jwt_verifier.h} +3 -3
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +433 -0
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +109 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +129 -0
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +45 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +240 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +48 -0
- data/src/core/lib/security/{auth_filters.h → transport/auth_filters.h} +3 -3
- data/src/core/lib/security/{client_auth_filter.c → transport/client_auth_filter.c} +27 -20
- data/src/core/lib/security/{handshake.c → transport/handshake.c} +77 -45
- data/src/core/lib/security/{handshake.h → transport/handshake.h} +9 -11
- data/src/core/lib/security/{secure_endpoint.c → transport/secure_endpoint.c} +19 -12
- data/src/core/lib/security/{secure_endpoint.h → transport/secure_endpoint.h} +3 -3
- data/src/core/lib/security/{security_connector.c → transport/security_connector.c} +26 -17
- data/src/core/lib/security/{security_connector.h → transport/security_connector.h} +8 -8
- data/src/core/lib/security/{server_auth_filter.c → transport/server_auth_filter.c} +24 -16
- data/src/core/lib/security/transport/tsi_error.c +40 -0
- data/src/core/lib/security/transport/tsi_error.h +42 -0
- data/src/core/lib/security/{b64.c → util/b64.c} +1 -1
- data/src/core/lib/security/{b64.h → util/b64.h} +3 -3
- data/src/core/lib/security/util/json_util.c +61 -0
- data/src/core/lib/security/util/json_util.h +55 -0
- data/src/core/lib/support/avl.c +11 -0
- data/src/core/lib/support/cpu_windows.c +2 -2
- data/src/core/lib/support/{env_win32.c → env_windows.c} +3 -3
- data/src/core/lib/support/log.c +3 -1
- data/src/core/lib/support/log_linux.c +2 -2
- data/src/core/lib/support/{log_win32.c → log_windows.c} +4 -4
- data/src/core/lib/support/murmur_hash.c +3 -5
- data/src/core/lib/support/string.c +10 -0
- data/src/core/lib/support/string.h +4 -0
- data/src/core/lib/support/{string_util_win32.c → string_util_windows.c} +3 -3
- data/src/core/lib/support/{string_win32.c → string_windows.c} +2 -2
- data/src/core/lib/support/{string_win32.h → string_windows.h} +5 -5
- data/src/core/lib/support/subprocess_windows.c +1 -1
- data/src/core/lib/support/{sync_win32.c → sync_windows.c} +2 -2
- data/src/core/lib/support/{thd_win32.c → thd_windows.c} +2 -2
- data/src/core/lib/support/{time_win32.c → time_windows.c} +2 -2
- data/src/core/lib/support/tmpfile_msys.c +1 -1
- data/src/core/lib/support/{tmpfile_win32.c → tmpfile_windows.c} +3 -3
- data/src/core/lib/surface/alarm.c +2 -2
- data/src/core/lib/surface/byte_buffer_reader.c +13 -6
- data/src/core/lib/surface/call.c +323 -123
- data/src/core/lib/surface/call.h +2 -0
- data/src/core/lib/surface/call_log_batch.c +1 -1
- data/src/core/lib/surface/channel.c +64 -15
- data/src/core/lib/surface/channel.h +9 -0
- data/src/core/lib/surface/channel_ping.c +3 -3
- data/src/core/lib/surface/completion_queue.c +75 -19
- data/src/core/lib/surface/completion_queue.h +7 -2
- data/src/core/lib/surface/init.c +2 -1
- data/src/core/lib/surface/init_secure.c +4 -4
- data/src/core/lib/surface/lame_client.c +12 -8
- data/src/core/lib/surface/server.c +213 -120
- data/src/core/lib/surface/server.h +1 -0
- data/src/core/lib/surface/version.c +1 -1
- data/src/core/lib/transport/connectivity_state.c +40 -18
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/metadata.c +23 -23
- data/src/core/lib/transport/metadata.h +4 -0
- data/src/core/lib/transport/metadata_batch.c +9 -0
- data/src/core/lib/transport/metadata_batch.h +3 -0
- data/src/core/lib/transport/static_metadata.c +6 -5
- data/src/core/lib/transport/static_metadata.h +64 -60
- data/src/core/lib/transport/transport.c +24 -12
- data/src/core/lib/transport/transport.h +6 -5
- data/src/core/lib/transport/transport_impl.h +4 -0
- data/src/core/lib/transport/transport_op_string.c +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.c +4 -0
- data/src/ruby/bin/math_services.rb +41 -2
- data/src/ruby/ext/grpc/rb_call.c +42 -40
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +59 -6
- data/src/ruby/ext/grpc/rb_completion_queue.h +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +1 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -2
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +21 -5
- data/src/ruby/ext/grpc/rb_loader.c +1 -1
- data/src/ruby/ext/grpc/rb_server.c +5 -3
- data/src/ruby/lib/grpc.rb +0 -3
- data/src/ruby/lib/grpc/errors.rb +3 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +32 -42
- data/src/ruby/lib/grpc/generic/bidi_call.rb +20 -0
- data/src/ruby/lib/grpc/generic/client_stub.rb +31 -54
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +4 -4
- data/src/ruby/lib/grpc/generic/rpc_server.rb +12 -23
- data/src/ruby/lib/grpc/generic/service.rb +8 -8
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/v1/health_services.rb +30 -2
- data/src/ruby/pb/grpc/testing/duplicate/echo_duplicate_services.rb +34 -4
- data/src/ruby/pb/grpc/testing/metrics_services.rb +39 -2
- data/src/ruby/pb/src/proto/grpc/testing/empty.rb +15 -0
- data/src/ruby/pb/src/proto/grpc/testing/messages.rb +84 -0
- data/src/ruby/pb/src/proto/grpc/testing/test.rb +14 -0
- data/src/ruby/pb/src/proto/grpc/testing/test_services.rb +110 -0
- data/src/ruby/pb/test/client.rb +5 -2
- data/src/ruby/spec/generic/active_call_spec.rb +3 -2
- data/src/ruby/spec/generic/client_stub_spec.rb +27 -24
- data/src/ruby/spec/generic/rpc_desc_spec.rb +11 -11
- data/src/ruby/spec/generic/rpc_server_spec.rb +42 -61
- data/src/ruby/spec/pb/health/checker_spec.rb +3 -5
- metadata +86 -48
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v0/load_balancer.pb.h +0 -182
- data/src/core/lib/security/credentials.c +0 -1296
- data/src/ruby/lib/grpc/signals.rb +0 -69
@@ -0,0 +1,233 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015, Google Inc.
|
4
|
+
* All rights reserved.
|
5
|
+
*
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
7
|
+
* modification, are permitted provided that the following conditions are
|
8
|
+
* met:
|
9
|
+
*
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above
|
13
|
+
* copyright notice, this list of conditions and the following disclaimer
|
14
|
+
* in the documentation and/or other materials provided with the
|
15
|
+
* distribution.
|
16
|
+
* * Neither the name of Google Inc. nor the names of its
|
17
|
+
* contributors may be used to endorse or promote products derived from
|
18
|
+
* this software without specific prior written permission.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
*/
|
33
|
+
|
34
|
+
#include "src/core/lib/security/credentials/credentials.h"
|
35
|
+
|
36
|
+
#include <stdio.h>
|
37
|
+
#include <string.h>
|
38
|
+
|
39
|
+
#include "src/core/lib/channel/channel_args.h"
|
40
|
+
#include "src/core/lib/channel/http_client_filter.h"
|
41
|
+
#include "src/core/lib/http/httpcli.h"
|
42
|
+
#include "src/core/lib/http/parser.h"
|
43
|
+
#include "src/core/lib/iomgr/executor.h"
|
44
|
+
#include "src/core/lib/json/json.h"
|
45
|
+
#include "src/core/lib/support/string.h"
|
46
|
+
#include "src/core/lib/surface/api_trace.h"
|
47
|
+
|
48
|
+
#include <grpc/support/alloc.h>
|
49
|
+
#include <grpc/support/log.h>
|
50
|
+
#include <grpc/support/string_util.h>
|
51
|
+
#include <grpc/support/sync.h>
|
52
|
+
#include <grpc/support/time.h>
|
53
|
+
|
54
|
+
/* -- Common. -- */
|
55
|
+
|
56
|
+
grpc_credentials_metadata_request *grpc_credentials_metadata_request_create(
|
57
|
+
grpc_call_credentials *creds, grpc_credentials_metadata_cb cb,
|
58
|
+
void *user_data) {
|
59
|
+
grpc_credentials_metadata_request *r =
|
60
|
+
gpr_malloc(sizeof(grpc_credentials_metadata_request));
|
61
|
+
memset(&r->response, 0, sizeof(r->response));
|
62
|
+
r->creds = grpc_call_credentials_ref(creds);
|
63
|
+
r->cb = cb;
|
64
|
+
r->user_data = user_data;
|
65
|
+
return r;
|
66
|
+
}
|
67
|
+
|
68
|
+
void grpc_credentials_metadata_request_destroy(
|
69
|
+
grpc_credentials_metadata_request *r) {
|
70
|
+
grpc_call_credentials_unref(r->creds);
|
71
|
+
grpc_http_response_destroy(&r->response);
|
72
|
+
gpr_free(r);
|
73
|
+
}
|
74
|
+
|
75
|
+
grpc_channel_credentials *grpc_channel_credentials_ref(
|
76
|
+
grpc_channel_credentials *creds) {
|
77
|
+
if (creds == NULL) return NULL;
|
78
|
+
gpr_ref(&creds->refcount);
|
79
|
+
return creds;
|
80
|
+
}
|
81
|
+
|
82
|
+
void grpc_channel_credentials_unref(grpc_channel_credentials *creds) {
|
83
|
+
if (creds == NULL) return;
|
84
|
+
if (gpr_unref(&creds->refcount)) {
|
85
|
+
if (creds->vtable->destruct != NULL) creds->vtable->destruct(creds);
|
86
|
+
gpr_free(creds);
|
87
|
+
}
|
88
|
+
}
|
89
|
+
|
90
|
+
void grpc_channel_credentials_release(grpc_channel_credentials *creds) {
|
91
|
+
GRPC_API_TRACE("grpc_channel_credentials_release(creds=%p)", 1, (creds));
|
92
|
+
grpc_channel_credentials_unref(creds);
|
93
|
+
}
|
94
|
+
|
95
|
+
grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds) {
|
96
|
+
if (creds == NULL) return NULL;
|
97
|
+
gpr_ref(&creds->refcount);
|
98
|
+
return creds;
|
99
|
+
}
|
100
|
+
|
101
|
+
void grpc_call_credentials_unref(grpc_call_credentials *creds) {
|
102
|
+
if (creds == NULL) return;
|
103
|
+
if (gpr_unref(&creds->refcount)) {
|
104
|
+
if (creds->vtable->destruct != NULL) creds->vtable->destruct(creds);
|
105
|
+
gpr_free(creds);
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
void grpc_call_credentials_release(grpc_call_credentials *creds) {
|
110
|
+
GRPC_API_TRACE("grpc_call_credentials_release(creds=%p)", 1, (creds));
|
111
|
+
grpc_call_credentials_unref(creds);
|
112
|
+
}
|
113
|
+
|
114
|
+
void grpc_call_credentials_get_request_metadata(
|
115
|
+
grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds,
|
116
|
+
grpc_polling_entity *pollent, grpc_auth_metadata_context context,
|
117
|
+
grpc_credentials_metadata_cb cb, void *user_data) {
|
118
|
+
if (creds == NULL || creds->vtable->get_request_metadata == NULL) {
|
119
|
+
if (cb != NULL) {
|
120
|
+
cb(exec_ctx, user_data, NULL, 0, GRPC_CREDENTIALS_OK);
|
121
|
+
}
|
122
|
+
return;
|
123
|
+
}
|
124
|
+
creds->vtable->get_request_metadata(exec_ctx, creds, pollent, context, cb,
|
125
|
+
user_data);
|
126
|
+
}
|
127
|
+
|
128
|
+
grpc_security_status grpc_channel_credentials_create_security_connector(
|
129
|
+
grpc_channel_credentials *channel_creds, const char *target,
|
130
|
+
const grpc_channel_args *args, grpc_channel_security_connector **sc,
|
131
|
+
grpc_channel_args **new_args) {
|
132
|
+
*new_args = NULL;
|
133
|
+
if (channel_creds == NULL) {
|
134
|
+
return GRPC_SECURITY_ERROR;
|
135
|
+
}
|
136
|
+
GPR_ASSERT(channel_creds->vtable->create_security_connector != NULL);
|
137
|
+
return channel_creds->vtable->create_security_connector(
|
138
|
+
channel_creds, NULL, target, args, sc, new_args);
|
139
|
+
}
|
140
|
+
|
141
|
+
grpc_server_credentials *grpc_server_credentials_ref(
|
142
|
+
grpc_server_credentials *creds) {
|
143
|
+
if (creds == NULL) return NULL;
|
144
|
+
gpr_ref(&creds->refcount);
|
145
|
+
return creds;
|
146
|
+
}
|
147
|
+
|
148
|
+
void grpc_server_credentials_unref(grpc_server_credentials *creds) {
|
149
|
+
if (creds == NULL) return;
|
150
|
+
if (gpr_unref(&creds->refcount)) {
|
151
|
+
if (creds->vtable->destruct != NULL) creds->vtable->destruct(creds);
|
152
|
+
if (creds->processor.destroy != NULL && creds->processor.state != NULL) {
|
153
|
+
creds->processor.destroy(creds->processor.state);
|
154
|
+
}
|
155
|
+
gpr_free(creds);
|
156
|
+
}
|
157
|
+
}
|
158
|
+
|
159
|
+
void grpc_server_credentials_release(grpc_server_credentials *creds) {
|
160
|
+
GRPC_API_TRACE("grpc_server_credentials_release(creds=%p)", 1, (creds));
|
161
|
+
grpc_server_credentials_unref(creds);
|
162
|
+
}
|
163
|
+
|
164
|
+
grpc_security_status grpc_server_credentials_create_security_connector(
|
165
|
+
grpc_server_credentials *creds, grpc_server_security_connector **sc) {
|
166
|
+
if (creds == NULL || creds->vtable->create_security_connector == NULL) {
|
167
|
+
gpr_log(GPR_ERROR, "Server credentials cannot create security context.");
|
168
|
+
return GRPC_SECURITY_ERROR;
|
169
|
+
}
|
170
|
+
return creds->vtable->create_security_connector(creds, sc);
|
171
|
+
}
|
172
|
+
|
173
|
+
void grpc_server_credentials_set_auth_metadata_processor(
|
174
|
+
grpc_server_credentials *creds, grpc_auth_metadata_processor processor) {
|
175
|
+
GRPC_API_TRACE(
|
176
|
+
"grpc_server_credentials_set_auth_metadata_processor("
|
177
|
+
"creds=%p, "
|
178
|
+
"processor=grpc_auth_metadata_processor { process: %p, state: %p })",
|
179
|
+
3, (creds, (void *)(intptr_t)processor.process, processor.state));
|
180
|
+
if (creds == NULL) return;
|
181
|
+
if (creds->processor.destroy != NULL && creds->processor.state != NULL) {
|
182
|
+
creds->processor.destroy(creds->processor.state);
|
183
|
+
}
|
184
|
+
creds->processor = processor;
|
185
|
+
}
|
186
|
+
|
187
|
+
static void server_credentials_pointer_arg_destroy(void *p) {
|
188
|
+
grpc_server_credentials_unref(p);
|
189
|
+
}
|
190
|
+
|
191
|
+
static void *server_credentials_pointer_arg_copy(void *p) {
|
192
|
+
return grpc_server_credentials_ref(p);
|
193
|
+
}
|
194
|
+
|
195
|
+
static int server_credentials_pointer_cmp(void *a, void *b) {
|
196
|
+
return GPR_ICMP(a, b);
|
197
|
+
}
|
198
|
+
|
199
|
+
static const grpc_arg_pointer_vtable cred_ptr_vtable = {
|
200
|
+
server_credentials_pointer_arg_copy, server_credentials_pointer_arg_destroy,
|
201
|
+
server_credentials_pointer_cmp};
|
202
|
+
|
203
|
+
grpc_arg grpc_server_credentials_to_arg(grpc_server_credentials *p) {
|
204
|
+
grpc_arg arg;
|
205
|
+
memset(&arg, 0, sizeof(grpc_arg));
|
206
|
+
arg.type = GRPC_ARG_POINTER;
|
207
|
+
arg.key = GRPC_SERVER_CREDENTIALS_ARG;
|
208
|
+
arg.value.pointer.p = p;
|
209
|
+
arg.value.pointer.vtable = &cred_ptr_vtable;
|
210
|
+
return arg;
|
211
|
+
}
|
212
|
+
|
213
|
+
grpc_server_credentials *grpc_server_credentials_from_arg(const grpc_arg *arg) {
|
214
|
+
if (strcmp(arg->key, GRPC_SERVER_CREDENTIALS_ARG) != 0) return NULL;
|
215
|
+
if (arg->type != GRPC_ARG_POINTER) {
|
216
|
+
gpr_log(GPR_ERROR, "Invalid type %d for arg %s", arg->type,
|
217
|
+
GRPC_SERVER_CREDENTIALS_ARG);
|
218
|
+
return NULL;
|
219
|
+
}
|
220
|
+
return arg->value.pointer.p;
|
221
|
+
}
|
222
|
+
|
223
|
+
grpc_server_credentials *grpc_find_server_credentials_in_args(
|
224
|
+
const grpc_channel_args *args) {
|
225
|
+
size_t i;
|
226
|
+
if (args == NULL) return NULL;
|
227
|
+
for (i = 0; i < args->num_args; i++) {
|
228
|
+
grpc_server_credentials *p =
|
229
|
+
grpc_server_credentials_from_arg(&args->args[i]);
|
230
|
+
if (p != NULL) return p;
|
231
|
+
}
|
232
|
+
return NULL;
|
233
|
+
}
|
@@ -31,8 +31,8 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_CREDENTIALS_H
|
35
|
+
#define GRPC_CORE_LIB_SECURITY_CREDENTIALS_CREDENTIALS_H
|
36
36
|
|
37
37
|
#include <grpc/grpc.h>
|
38
38
|
#include <grpc/grpc_security.h>
|
@@ -41,8 +41,8 @@
|
|
41
41
|
|
42
42
|
#include "src/core/lib/http/httpcli.h"
|
43
43
|
#include "src/core/lib/http/parser.h"
|
44
|
-
#include "src/core/lib/
|
45
|
-
#include "src/core/lib/security/security_connector.h"
|
44
|
+
#include "src/core/lib/iomgr/polling_entity.h"
|
45
|
+
#include "src/core/lib/security/transport/security_connector.h"
|
46
46
|
|
47
47
|
struct grpc_http_response;
|
48
48
|
|
@@ -69,10 +69,6 @@ typedef enum {
|
|
69
69
|
"x-goog-iam-authorization-token"
|
70
70
|
#define GRPC_IAM_AUTHORITY_SELECTOR_METADATA_KEY "x-goog-iam-authority-selector"
|
71
71
|
|
72
|
-
#define GRPC_GOOGLE_CLOUD_SDK_CONFIG_DIRECTORY "gcloud"
|
73
|
-
#define GRPC_GOOGLE_WELL_KNOWN_CREDENTIALS_FILE \
|
74
|
-
"application_default_credentials.json"
|
75
|
-
|
76
72
|
#define GRPC_SECURE_TOKEN_REFRESH_THRESHOLD_SECS 60
|
77
73
|
|
78
74
|
#define GRPC_COMPUTE_ENGINE_METADATA_HOST "metadata"
|
@@ -169,7 +165,8 @@ typedef void (*grpc_credentials_metadata_cb)(grpc_exec_ctx *exec_ctx,
|
|
169
165
|
typedef struct {
|
170
166
|
void (*destruct)(grpc_call_credentials *c);
|
171
167
|
void (*get_request_metadata)(grpc_exec_ctx *exec_ctx,
|
172
|
-
grpc_call_credentials *c,
|
168
|
+
grpc_call_credentials *c,
|
169
|
+
grpc_polling_entity *pollent,
|
173
170
|
grpc_auth_metadata_context context,
|
174
171
|
grpc_credentials_metadata_cb cb,
|
175
172
|
void *user_data);
|
@@ -185,51 +182,14 @@ grpc_call_credentials *grpc_call_credentials_ref(grpc_call_credentials *creds);
|
|
185
182
|
void grpc_call_credentials_unref(grpc_call_credentials *creds);
|
186
183
|
void grpc_call_credentials_get_request_metadata(
|
187
184
|
grpc_exec_ctx *exec_ctx, grpc_call_credentials *creds,
|
188
|
-
|
185
|
+
grpc_polling_entity *pollent, grpc_auth_metadata_context context,
|
189
186
|
grpc_credentials_metadata_cb cb, void *user_data);
|
190
187
|
|
191
|
-
typedef struct {
|
192
|
-
grpc_call_credentials **creds_array;
|
193
|
-
size_t num_creds;
|
194
|
-
} grpc_call_credentials_array;
|
195
|
-
|
196
|
-
const grpc_call_credentials_array *
|
197
|
-
grpc_composite_call_credentials_get_credentials(
|
198
|
-
grpc_call_credentials *composite_creds);
|
199
|
-
|
200
|
-
/* Returns creds if creds is of the specified type or the inner creds of the
|
201
|
-
specified type (if found), if the creds is of type COMPOSITE.
|
202
|
-
If composite_creds is not NULL, *composite_creds will point to creds if of
|
203
|
-
type COMPOSITE in case of success. */
|
204
|
-
grpc_call_credentials *grpc_credentials_contains_type(
|
205
|
-
grpc_call_credentials *creds, const char *type,
|
206
|
-
grpc_call_credentials **composite_creds);
|
207
|
-
|
208
|
-
/* Exposed for testing only. */
|
209
|
-
grpc_credentials_status
|
210
|
-
grpc_oauth2_token_fetcher_credentials_parse_server_response(
|
211
|
-
const struct grpc_http_response *response,
|
212
|
-
grpc_credentials_md_store **token_md, gpr_timespec *token_lifetime);
|
213
|
-
|
214
|
-
void grpc_flush_cached_google_default_credentials(void);
|
215
|
-
|
216
188
|
/* Metadata-only credentials with the specified key and value where
|
217
189
|
asynchronicity can be simulated for testing. */
|
218
190
|
grpc_call_credentials *grpc_md_only_test_credentials_create(
|
219
191
|
const char *md_key, const char *md_value, int is_async);
|
220
192
|
|
221
|
-
/* Private constructor for jwt credentials from an already parsed json key.
|
222
|
-
Takes ownership of the key. */
|
223
|
-
grpc_call_credentials *
|
224
|
-
grpc_service_account_jwt_access_credentials_create_from_auth_json_key(
|
225
|
-
grpc_auth_json_key key, gpr_timespec token_lifetime);
|
226
|
-
|
227
|
-
/* Private constructor for refresh token credentials from an already parsed
|
228
|
-
refresh token. Takes ownership of the refresh token. */
|
229
|
-
grpc_call_credentials *
|
230
|
-
grpc_refresh_token_credentials_create_from_auth_refresh_token(
|
231
|
-
grpc_auth_refresh_token token);
|
232
|
-
|
233
193
|
/* --- grpc_server_credentials. --- */
|
234
194
|
|
235
195
|
typedef struct {
|
@@ -260,118 +220,20 @@ grpc_server_credentials *grpc_server_credentials_from_arg(const grpc_arg *arg);
|
|
260
220
|
grpc_server_credentials *grpc_find_server_credentials_in_args(
|
261
221
|
const grpc_channel_args *args);
|
262
222
|
|
263
|
-
/* --
|
264
|
-
|
265
|
-
/* Creates a fake transport security credentials object for testing. */
|
266
|
-
grpc_channel_credentials *grpc_fake_transport_security_credentials_create(void);
|
267
|
-
/* Creates a fake server transport security credentials object for testing. */
|
268
|
-
grpc_server_credentials *grpc_fake_transport_security_server_credentials_create(
|
269
|
-
void);
|
270
|
-
|
271
|
-
/* -- Ssl credentials. -- */
|
272
|
-
|
273
|
-
typedef struct {
|
274
|
-
grpc_channel_credentials base;
|
275
|
-
grpc_ssl_config config;
|
276
|
-
} grpc_ssl_credentials;
|
277
|
-
|
278
|
-
typedef struct {
|
279
|
-
grpc_server_credentials base;
|
280
|
-
grpc_ssl_server_config config;
|
281
|
-
} grpc_ssl_server_credentials;
|
282
|
-
|
283
|
-
/* -- Channel composite credentials. -- */
|
284
|
-
|
285
|
-
typedef struct {
|
286
|
-
grpc_channel_credentials base;
|
287
|
-
grpc_channel_credentials *inner_creds;
|
288
|
-
grpc_call_credentials *call_creds;
|
289
|
-
} grpc_composite_channel_credentials;
|
290
|
-
|
291
|
-
/* -- Jwt credentials -- */
|
223
|
+
/* -- Credentials Metadata Request. -- */
|
292
224
|
|
293
225
|
typedef struct {
|
294
|
-
grpc_call_credentials
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
struct {
|
300
|
-
grpc_credentials_md_store *jwt_md;
|
301
|
-
char *service_url;
|
302
|
-
gpr_timespec jwt_expiration;
|
303
|
-
} cached;
|
304
|
-
|
305
|
-
grpc_auth_json_key key;
|
306
|
-
gpr_timespec jwt_lifetime;
|
307
|
-
} grpc_service_account_jwt_access_credentials;
|
308
|
-
|
309
|
-
/* -- Oauth2TokenFetcher credentials --
|
310
|
-
|
311
|
-
This object is a base for credentials that need to acquire an oauth2 token
|
312
|
-
from an http service. */
|
313
|
-
|
314
|
-
typedef struct grpc_credentials_metadata_request
|
315
|
-
grpc_credentials_metadata_request;
|
226
|
+
grpc_call_credentials *creds;
|
227
|
+
grpc_credentials_metadata_cb cb;
|
228
|
+
grpc_http_response response;
|
229
|
+
void *user_data;
|
230
|
+
} grpc_credentials_metadata_request;
|
316
231
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
grpc_pollset *pollset,
|
321
|
-
grpc_httpcli_response_cb response_cb,
|
322
|
-
gpr_timespec deadline);
|
232
|
+
grpc_credentials_metadata_request *grpc_credentials_metadata_request_create(
|
233
|
+
grpc_call_credentials *creds, grpc_credentials_metadata_cb cb,
|
234
|
+
void *user_data);
|
323
235
|
|
324
|
-
|
325
|
-
|
326
|
-
gpr_mu mu;
|
327
|
-
grpc_credentials_md_store *access_token_md;
|
328
|
-
gpr_timespec token_expiration;
|
329
|
-
grpc_httpcli_context httpcli_context;
|
330
|
-
grpc_fetch_oauth2_func fetch_func;
|
331
|
-
} grpc_oauth2_token_fetcher_credentials;
|
332
|
-
|
333
|
-
/* -- GoogleRefreshToken credentials. -- */
|
334
|
-
|
335
|
-
typedef struct {
|
336
|
-
grpc_oauth2_token_fetcher_credentials base;
|
337
|
-
grpc_auth_refresh_token refresh_token;
|
338
|
-
} grpc_google_refresh_token_credentials;
|
339
|
-
|
340
|
-
/* -- Oauth2 Access Token credentials. -- */
|
341
|
-
|
342
|
-
typedef struct {
|
343
|
-
grpc_call_credentials base;
|
344
|
-
grpc_credentials_md_store *access_token_md;
|
345
|
-
} grpc_access_token_credentials;
|
346
|
-
|
347
|
-
/* -- Metadata-only Test credentials. -- */
|
348
|
-
|
349
|
-
typedef struct {
|
350
|
-
grpc_call_credentials base;
|
351
|
-
grpc_credentials_md_store *md_store;
|
352
|
-
int is_async;
|
353
|
-
} grpc_md_only_test_credentials;
|
354
|
-
|
355
|
-
/* -- GoogleIAM credentials. -- */
|
356
|
-
|
357
|
-
typedef struct {
|
358
|
-
grpc_call_credentials base;
|
359
|
-
grpc_credentials_md_store *iam_md;
|
360
|
-
} grpc_google_iam_credentials;
|
361
|
-
|
362
|
-
/* -- Composite credentials. -- */
|
363
|
-
|
364
|
-
typedef struct {
|
365
|
-
grpc_call_credentials base;
|
366
|
-
grpc_call_credentials_array inner;
|
367
|
-
} grpc_composite_call_credentials;
|
368
|
-
|
369
|
-
/* -- Plugin credentials. -- */
|
370
|
-
|
371
|
-
typedef struct {
|
372
|
-
grpc_call_credentials base;
|
373
|
-
grpc_metadata_credentials_plugin plugin;
|
374
|
-
grpc_credentials_md_store *plugin_md;
|
375
|
-
} grpc_plugin_credentials;
|
236
|
+
void grpc_credentials_metadata_request_destroy(
|
237
|
+
grpc_credentials_metadata_request *r);
|
376
238
|
|
377
|
-
#endif /*
|
239
|
+
#endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_CREDENTIALS_H */
|