Go to the documentation of this file.
28 #include "absl/status/status.h"
29 #include "absl/strings/str_cat.h"
30 #include "absl/strings/string_view.h"
61 class grpc_fake_channel_security_connector final
64 grpc_fake_channel_security_connector(
70 std::
move(request_metadata_creds)),
77 const grpc_arg* target_name_override_arg =
79 if (target_name_override_arg !=
nullptr) {
80 target_name_override_ =
83 target_name_override_ =
nullptr;
87 ~grpc_fake_channel_security_connector()
override {
90 if (target_name_override_ !=
nullptr)
gpr_free(target_name_override_);
104 reinterpret_cast<const grpc_fake_channel_security_connector*
>(other_sc);
106 if (
c != 0)
return c;
107 c = strcmp(
target_, other->target_);
108 if (
c != 0)
return c;
109 if (expected_targets_ ==
nullptr || other->expected_targets_ ==
nullptr) {
112 c = strcmp(expected_targets_, other->expected_targets_);
114 if (
c != 0)
return c;
132 &authority_ignored_port);
134 if (target_name_override_ !=
nullptr) {
138 target_name_override_, &fake_security_target_name_override_hostname,
139 &fake_security_target_name_override_ignored_port);
140 if (authority_hostname != fake_security_target_name_override_hostname) {
142 "Authority (host) '%s' != Fake Security Target override '%s'",
144 fake_security_target_name_override_hostname.
data());
147 }
else if (authority_hostname != target_hostname) {
156 char* expected_targets()
const {
return expected_targets_; }
157 bool is_lb_channel()
const {
return is_lb_channel_; }
158 char* target_name_override()
const {
return target_name_override_; }
161 bool fake_check_target(
const char*
target,
const char* set_str)
const {
163 char**
set =
nullptr;
167 for (
size_t i = 0;
i < set_size; ++
i) {
170 for (
size_t i = 0;
i < set_size; ++
i) {
177 void fake_secure_name_check()
const {
178 if (expected_targets_ ==
nullptr)
return;
179 char** lbs_and_backends =
nullptr;
180 size_t lbs_and_backends_size = 0;
181 bool success =
false;
183 &lbs_and_backends_size);
184 if (lbs_and_backends_size > 2 || lbs_and_backends_size == 0) {
189 if (is_lb_channel_) {
190 if (lbs_and_backends_size != 2) {
192 "Invalid expected targets arg value: '%s'. Expectations for LB "
193 "channels must be of the form 'be1,be2,be3,...;lb1,lb2,...",
197 if (!fake_check_target(
target_, lbs_and_backends[1])) {
204 if (!fake_check_target(
target_, lbs_and_backends[0])) {
212 for (
size_t i = 0;
i < lbs_and_backends_size; ++
i) {
216 if (!success) abort();
220 char* expected_targets_;
222 char* target_name_override_;
228 const char* prop_name;
230 *auth_context =
nullptr;
233 "Fake peers should only have 2 properties.");
237 if (prop_name ==
nullptr ||
241 prop_name ==
nullptr ?
"<EMPTY>" : prop_name));
247 "Invalid value for cert type property.");
251 if (prop_name ==
nullptr ||
255 prop_name ==
nullptr ?
"<EMPTY>" : prop_name));
261 "Invalid value for security level property.");
265 *auth_context = grpc_core::MakeRefCounted<grpc_auth_context>(
nullptr);
281 fake_check_peer(
this, peer, auth_context, on_peer_checked);
282 fake_secure_name_check();
285 class grpc_fake_server_security_connector
288 explicit grpc_fake_server_security_connector(
292 ~grpc_fake_server_security_connector()
override =
default;
297 fake_check_peer(
this, peer, auth_context, on_peer_checked);
324 return grpc_core::MakeRefCounted<grpc_fake_channel_security_connector>(
332 return grpc_core::MakeRefCounted<grpc_fake_server_security_connector>(
#define GRPC_TRANSPORT_SECURITY_LEVEL_PROPERTY_NAME
char * grpc_channel_arg_get_string(const grpc_arg *arg)
tsi_peer_property * properties
struct tsi_peer_property::@48 value
void gpr_string_split(const char *input, const char *sep, char ***strs, size_t *nstrs)
virtual void check_peer(tsi_peer peer, grpc_endpoint *ep, grpc_core::RefCountedPtr< grpc_auth_context > *auth_context, grpc_closure *on_peer_checked)=0
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
virtual void add_handshakers(const grpc_channel_args *args, grpc_pollset_set *interested_parties, grpc_core::HandshakeManager *handshake_mgr)=0
RefCountedPtr< Handshaker > SecurityHandshakerCreate(tsi_handshaker *handshaker, grpc_security_connector *connector, const grpc_channel_args *args)
Creates a security handshaker using handshaker.
#define TSI_FAKE_SECURITY_LEVEL
#define TSI_SECURITY_LEVEL_PEER_PROPERTY
struct grpc_pollset_set grpc_pollset_set
GPRAPI void gpr_free(void *ptr)
bool SplitHostPort(absl::string_view name, absl::string_view *host, absl::string_view *port)
tsi_handshaker * tsi_create_fake_handshaker(int is_client)
#define TSI_FAKE_CERTIFICATE_TYPE
virtual void cancel_check_peer(grpc_closure *on_peer_checked, grpc_error_handle error)=0
#define GRPC_TRANSPORT_SECURITY_TYPE_PROPERTY_NAME
constexpr absl::remove_reference_t< T > && move(T &&t) noexcept
#define GRPC_SSL_TARGET_NAME_OVERRIDE_ARG
#define GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER
grpc_core::RefCountedPtr< grpc_channel_security_connector > grpc_fake_channel_security_connector_create(grpc_core::RefCountedPtr< grpc_channel_credentials > channel_creds, grpc_core::RefCountedPtr< grpc_call_credentials > request_metadata_creds, const char *target, const grpc_channel_args *args)
virtual grpc_core::ArenaPromise< absl::Status > CheckCallHost(absl::string_view host, grpc_auth_context *auth_context)=0
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
void Add(RefCountedPtr< Handshaker > handshaker)
GRPCAPI void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, const char *name, const char *value)
#define GRPC_FAKE_SECURITY_URL_SCHEME
virtual void add_handshakers(const grpc_channel_args *args, grpc_pollset_set *interested_parties, grpc_core::HandshakeManager *handshake_mgr)=0
Registers handshakers with handshake_mgr.
const char * grpc_fake_transport_get_expected_targets(const grpc_channel_args *args)
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc)
int channel_security_connector_cmp(const grpc_channel_security_connector *other) const
int QsortCompare(const T &a, const T &b)
static void check_peer(char *peer_name)
#define GRPC_ERROR_CREATE_FROM_CPP_STRING(desc)
#define GRPC_ERROR_UNREF(err)
static void Run(const DebugLocation &location, grpc_closure *closure, grpc_error_handle error)
GPRAPI char * gpr_strdup(const char *src)
#define TSI_CERTIFICATE_TYPE_PEER_PROPERTY
grpc_core::RefCountedPtr< grpc_server_security_connector > grpc_fake_server_security_connector_create(grpc_core::RefCountedPtr< grpc_server_credentials > server_creds)
virtual int cmp(const grpc_security_connector *other) const =0
constexpr const_pointer data() const noexcept
const grpc_arg * grpc_channel_args_find(const grpc_channel_args *args, const char *name)
void tsi_peer_destruct(tsi_peer *self)
#define GRPC_FAKE_TRANSPORT_SECURITY_TYPE
int server_security_connector_cmp(const grpc_server_security_connector *other) const
grpc
Author(s):
autogenerated on Fri May 16 2025 02:58:22