Go to the documentation of this file.
28 #include "absl/status/status.h"
29 #include "absl/status/statusor.h"
30 #include "absl/strings/string_view.h"
66 #define GRPC_UDS_URI_PATTERN "unix:"
67 #define GRPC_ABSTRACT_UDS_URI_PATTERN "unix-abstract:"
68 #define GRPC_LOCAL_TRANSPORT_SECURITY_TYPE "local"
76 grpc_core::MakeRefCounted<grpc_auth_context>(
nullptr);
97 bool is_endpoint_local =
false;
109 grpc_sockaddr* sock_addr =
reinterpret_cast<grpc_sockaddr*
>(&
addr->addr);
112 is_endpoint_local =
true;
114 }
else if (
type ==
LOCAL_TCP && sock_addr->sa_family == GRPC_AF_INET) {
115 const grpc_sockaddr_in*
addr4 =
116 reinterpret_cast<const grpc_sockaddr_in*
>(sock_addr);
118 is_endpoint_local =
true;
121 }
else if (
type ==
LOCAL_TCP && sock_addr->sa_family == GRPC_AF_INET6) {
122 const grpc_sockaddr_in6*
addr6 =
123 reinterpret_cast<const grpc_sockaddr_in6*
>(
addr);
125 sizeof(in6addr_loopback)) == 0) {
126 is_endpoint_local =
true;
131 if (!is_endpoint_local) {
133 "Endpoint is neither UDS or TCP loopback address.");
140 gpr_zalloc(
sizeof(*new_properties) * new_property_count));
147 const char* security_level =
159 *auth_context = local_auth_context_create(&peer);
163 "Could not create local auth context");
167 class grpc_local_channel_security_connector final
170 grpc_local_channel_security_connector(
173 const char* target_name)
178 ~grpc_local_channel_security_connector()
override {
gpr_free(target_name_); }
185 handshake_manager->
Add(
191 reinterpret_cast<const grpc_local_channel_security_connector*
>(
194 if (
c != 0)
return c;
195 return strcmp(target_name_, other->target_name_);
203 local_check_peer(peer, ep, auth_context, on_peer_checked,
214 if (host.
empty() || host != target_name_) {
216 "local call host does not match target name"));
221 const char* target_name()
const {
return target_name_; }
227 class grpc_local_server_security_connector final
230 explicit grpc_local_server_security_connector(
233 ~grpc_local_server_security_connector()
override =
default;
240 handshake_manager->
Add(
249 local_check_peer(peer, ep, auth_context, on_peer_checked,
270 if (channel_creds ==
nullptr || target_name ==
nullptr) {
273 "Invalid arguments to grpc_local_channel_security_connector_create()");
289 "Invalid UDS target name to "
290 "grpc_local_channel_security_connector_create()");
293 return grpc_core::MakeRefCounted<grpc_local_channel_security_connector>(
294 channel_creds, request_metadata_creds, target_name);
300 if (server_creds ==
nullptr) {
303 "Invalid arguments to grpc_local_server_security_connector_create()");
306 return grpc_core::MakeRefCounted<grpc_local_server_security_connector>(
const char * tsi_security_level_to_string(tsi_security_level security_level)
#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
virtual void check_peer(tsi_peer peer, grpc_endpoint *ep, grpc_core::RefCountedPtr< grpc_auth_context > *auth_context, grpc_closure *on_peer_checked)=0
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_SECURITY_LEVEL_PEER_PROPERTY
struct grpc_pollset_set grpc_pollset_set
GPRAPI void gpr_free(void *ptr)
grpc_local_connect_type connect_type() const
static struct test_ctx ctx
grpc_channel_security_connector(absl::string_view url_scheme, grpc_core::RefCountedPtr< grpc_channel_credentials > channel_creds, grpc_core::RefCountedPtr< grpc_call_credentials > request_metadata_creds)
static absl::StatusOr< URI > Parse(absl::string_view uri_text)
int grpc_is_unix_socket(const grpc_resolved_address *resolved_addr)
#define GRPC_UDS_URI_PATTERN
GPRAPI void * gpr_zalloc(size_t size)
Status UnauthenticatedError(absl::string_view message)
bool grpc_parse_uri(const grpc_core::URI &uri, grpc_resolved_address *resolved_addr)
GRPCAPI int grpc_auth_context_set_peer_identity_property_name(grpc_auth_context *ctx, const char *name)
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
constexpr size_type size() const noexcept
virtual grpc_core::ArenaPromise< absl::Status > CheckCallHost(absl::string_view host, grpc_auth_context *auth_context)=0
#define GRPC_ARG_SERVER_URI
grpc_channel_credentials * mutable_channel_creds()
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
static struct sockaddr_in6 addr6
uint32_t grpc_htonl(uint32_t hostlong)
void Add(RefCountedPtr< Handshaker > handshaker)
GRPCAPI void grpc_auth_context_add_cstring_property(grpc_auth_context *ctx, const char *name, const char *value)
grpc_core::RefCountedPtr< grpc_server_security_connector > grpc_local_server_security_connector_create(grpc_core::RefCountedPtr< grpc_server_credentials > server_creds)
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.
grpc_local_connect_type connect_type() const
tsi_result tsi_local_handshaker_create(tsi_handshaker **self)
#define GRPC_ERROR_CREATE_FROM_STATIC_STRING(desc)
int channel_security_connector_cmp(const grpc_channel_security_connector *other) const
static struct sockaddr_in addr4
ABSL_MUST_USE_RESULT bool ok() const
grpc_core::RefCountedPtr< grpc_channel_security_connector > grpc_local_channel_security_connector_create(grpc_core::RefCountedPtr< grpc_channel_credentials > channel_creds, grpc_core::RefCountedPtr< grpc_call_credentials > request_metadata_creds, const grpc_channel_args *args, const char *target_name)
GRPCAPI void grpc_auth_context_add_property(grpc_auth_context *ctx, const char *name, const char *value, size_t value_length)
#define GRPC_ERROR_UNREF(err)
static void Run(const DebugLocation &location, grpc_closure *closure, grpc_error_handle error)
struct ares_in6_addr sin6_addr
#define GRPC_ABSTRACT_UDS_URI_PATTERN
GPRAPI char * gpr_strdup(const char *src)
promise_detail::Immediate< T > Immediate(T value)
grpc_server_credentials * mutable_server_creds()
constexpr bool empty() const noexcept
@ TSI_PRIVACY_AND_INTEGRITY
absl::string_view grpc_endpoint_get_local_address(grpc_endpoint *ep)
#define GRPC_LOCAL_TRANSPORT_SECURITY_TYPE
virtual int cmp(const grpc_security_connector *other) const =0
int grpc_sockaddr_is_v4mapped(const grpc_resolved_address *resolved_addr, grpc_resolved_address *resolved_addr4_out)
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)
grpc_server_security_connector(absl::string_view url_scheme, grpc_core::RefCountedPtr< grpc_server_credentials > server_creds)
tsi_result tsi_construct_string_peer_property_from_cstring(const char *name, const char *value, tsi_peer_property *property)
int server_security_connector_cmp(const grpc_server_security_connector *other) const
grpc
Author(s):
autogenerated on Fri May 16 2025 02:59:16