plugin_credentials.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright 2016 gRPC authors.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  */
18 
19 #ifndef GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H
20 #define GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H
21 
23 
24 #include <stddef.h>
25 
26 #include <atomic>
27 #include <string>
28 #include <utility>
29 
30 #include "absl/container/inlined_vector.h"
31 #include "absl/status/statusor.h"
32 
33 #include <grpc/grpc_security.h>
36 #include <grpc/status.h>
37 
50 
52 
53 // This type is forward declared as a C struct and we cannot define it as a
54 // class. Otherwise, compiler will complain about type mismatch due to
55 // -Wmismatched-tags.
57  public:
60  ~grpc_plugin_credentials() override;
61 
64  const GetRequestMetadataArgs* args) override;
65 
66  std::string debug_string() override;
67 
68  grpc_core::UniqueTypeName type() const override;
69 
70  private:
71  class PendingRequest : public grpc_core::RefCounted<PendingRequest> {
72  public:
74  grpc_core::ClientMetadataHandle initial_metadata,
77  context_(
78  grpc_core::MakePluginAuthMetadataContext(initial_metadata, args)),
79  md_(std::move(initial_metadata)) {}
80 
81  ~PendingRequest() override {
83  for (size_t i = 0; i < metadata_.size(); i++) {
86  }
87  }
88 
90  const grpc_metadata* md, size_t num_md, grpc_status_code status,
91  const char* error_details);
92 
95 
96  static void RequestMetadataReady(void* request, const grpc_metadata* md,
97  size_t num_md, grpc_status_code status,
98  const char* error_details);
99 
102 
103  private:
104  std::atomic<bool> ready_{false};
110  // final status
114  };
115 
116  int cmp_impl(const grpc_call_credentials* other) const override {
117  // TODO(yashykt): Check if we can do something better here
119  static_cast<const grpc_call_credentials*>(this), other);
120  }
121 
123 };
124 
125 #endif /* GRPC_CORE_LIB_SECURITY_CREDENTIALS_PLUGIN_PLUGIN_CREDENTIALS_H */
trace.h
grpc_core::Activity::MakeNonOwningWaker
virtual Waker MakeNonOwningWaker()=0
grpc_call_credentials::GetRequestMetadataArgs
Definition: src/core/lib/security/credentials/credentials.h:196
grpc_plugin_credentials::PendingRequest::waker_
grpc_core::Waker waker_
Definition: plugin_credentials.h:105
grpc_core::RefCountedPtr::get
T * get() const
Definition: ref_counted_ptr.h:146
grpc_plugin_credentials::GetRequestMetadata
grpc_core::ArenaPromise< absl::StatusOr< grpc_core::ClientMetadataHandle > > GetRequestMetadata(grpc_core::ClientMetadataHandle initial_metadata, const GetRequestMetadataArgs *args) override
Definition: plugin_credentials.cc:147
grpc_core
Definition: call_metric_recorder.h:31
grpc_core::Activity::current
static Activity * current()
Definition: activity.h:124
grpc_call_credentials::min_security_level
virtual grpc_security_level min_security_level() const
Definition: src/core/lib/security/credentials/credentials.h:217
benchmark.request
request
Definition: benchmark.py:77
useful.h
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
grpc_plugin_credentials_trace
grpc_core::TraceFlag grpc_plugin_credentials_trace
grpc_plugin_credentials::PendingRequest::context_
grpc_auth_metadata_context context_
Definition: plugin_credentials.h:108
grpc_status_code
grpc_status_code
Definition: include/grpc/impl/codegen/status.h:28
grpc_call_credentials
Definition: src/core/lib/security/credentials/credentials.h:189
status
absl::Status status
Definition: rls.cc:251
grpc_plugin_credentials::grpc_plugin_credentials
grpc_plugin_credentials(grpc_metadata_credentials_plugin plugin, grpc_security_level min_security_level)
Definition: plugin_credentials.cc:203
grpc_security.h
grpc_auth_metadata_context_reset
GRPCAPI void grpc_auth_metadata_context_reset(grpc_auth_metadata_context *context)
Definition: client_auth_filter.cc:71
grpc_plugin_credentials::debug_string
std::string debug_string() override
Definition: plugin_credentials.cc:51
grpc_plugin_credentials::PendingRequest::PollAsyncResult
grpc_core::Poll< absl::StatusOr< grpc_core::ClientMetadataHandle > > PollAsyncResult()
Definition: plugin_credentials.cc:111
credentials.h
status.h
grpc_types.h
grpc_metadata
Definition: grpc_types.h:537
grpc_plugin_credentials::cmp_impl
int cmp_impl(const grpc_call_credentials *other) const override
Definition: plugin_credentials.h:116
grpc_plugin_credentials::PendingRequest::creds
grpc_plugin_credentials * creds() const
Definition: plugin_credentials.h:101
asyncio_get_stats.args
args
Definition: asyncio_get_stats.py:40
grpc_core::RefCountedPtr< grpc_plugin_credentials >
absl::move
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
Definition: abseil-cpp/absl/utility/utility.h:221
grpc_plugin_credentials::PendingRequest::call_creds_
grpc_core::RefCountedPtr< grpc_plugin_credentials > call_creds_
Definition: plugin_credentials.h:107
grpc_plugin_credentials::PendingRequest::error_details_
std::string error_details_
Definition: plugin_credentials.h:112
grpc_plugin_credentials::PendingRequest::RequestMetadataReady
static void RequestMetadataReady(void *request, const grpc_metadata *md, size_t num_md, grpc_status_code status, const char *error_details)
Definition: plugin_credentials.cc:119
grpc_plugin_credentials::PendingRequest::ProcessPluginResult
absl::StatusOr< grpc_core::ClientMetadataHandle > ProcessPluginResult(const grpc_metadata *md, size_t num_md, grpc_status_code status, const char *error_details)
Definition: plugin_credentials.cc:70
grpc_plugin_credentials::PendingRequest::ready_
std::atomic< bool > ready_
Definition: plugin_credentials.h:104
arena_promise.h
grpc_metadata_credentials_plugin
Definition: grpc_security.h:424
grpc_plugin_credentials::PendingRequest::metadata_
absl::InlinedVector< grpc_metadata, 2 > metadata_
Definition: plugin_credentials.h:111
absl::InlinedVector::size
size_type size() const noexcept
Definition: abseil-cpp/absl/container/inlined_vector.h:270
grpc_core::RefCounted
Definition: ref_counted.h:280
grpc_plugin_credentials
Definition: plugin_credentials.h:56
grpc_core::MetadataHandle< ClientMetadata >
grpc_plugin_credentials::PendingRequest::PendingRequest
PendingRequest(grpc_core::RefCountedPtr< grpc_plugin_credentials > creds, grpc_core::ClientMetadataHandle initial_metadata, const grpc_call_credentials::GetRequestMetadataArgs *args)
Definition: plugin_credentials.h:73
grpc_core::TraceFlag
Definition: debug/trace.h:63
value
const char * value
Definition: hpack_parser_table.cc:165
grpc_plugin_credentials::PendingRequest
Definition: plugin_credentials.h:71
benchmark.md
md
Definition: benchmark.py:86
grpc_security_level
grpc_security_level
Definition: grpc_security_constants.h:131
grpc_plugin_credentials::PendingRequest::context
grpc_auth_metadata_context context() const
Definition: plugin_credentials.h:100
key
const char * key
Definition: hpack_parser_table.cc:164
grpc_core::UniqueTypeName
Definition: unique_type_name.h:56
grpc_core::ArenaPromise
Definition: arena_promise.h:152
grpc_core::Waker
Definition: activity.h:61
grpc_core::QsortCompare
int QsortCompare(const T &a, const T &b)
Definition: useful.h:95
ref_counted.h
grpc_plugin_credentials::PendingRequest::status_
grpc_status_code status_
Definition: plugin_credentials.h:113
poll.h
grpc_plugin_credentials::plugin_
grpc_metadata_credentials_plugin plugin_
Definition: plugin_credentials.h:122
std
Definition: grpcpp/impl/codegen/async_unary_call.h:407
grpc_plugin_credentials::PendingRequest::md_
grpc_core::ClientMetadataHandle md_
Definition: plugin_credentials.h:109
grpc_security_constants.h
slice_refcount.h
unique_type_name.h
grpc_plugin_credentials::PendingRequest::~PendingRequest
~PendingRequest() override
Definition: plugin_credentials.h:81
grpc_plugin_credentials::~grpc_plugin_credentials
~grpc_plugin_credentials() override
Definition: plugin_credentials.cc:45
ref_counted_ptr.h
transport.h
grpc_core::MakePluginAuthMetadataContext
grpc_auth_metadata_context MakePluginAuthMetadataContext(const ClientMetadataHandle &initial_metadata, const grpc_call_credentials::GetRequestMetadataArgs *args)
Definition: call_creds_util.cc:83
call_creds_util.h
absl::StatusOr
Definition: abseil-cpp/absl/status/statusor.h:187
absl::InlinedVector< grpc_metadata, 2 >
grpc_plugin_credentials::type
grpc_core::UniqueTypeName type() const override
Definition: plugin_credentials.cc:64
grpc_auth_metadata_context
Definition: grpc_security.h:391
activity.h
absl::variant
Definition: abseil-cpp/absl/types/internal/variant.h:46
i
uint64_t i
Definition: abseil-cpp/absl/container/btree_benchmark.cc:230
grpc_slice_unref_internal
void grpc_slice_unref_internal(const grpc_slice &slice)
Definition: slice_refcount.h:39
port_platform.h


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:00:53