Go to the documentation of this file.
21 #include <arpa/inet.h>
23 #include <sys/socket.h>
31 #include "absl/strings/str_cat.h"
45 #define SSL_CERT_PATH "src/core/tsi/test_creds/server1.pem"
46 #define SSL_KEY_PATH "src/core/tsi/test_creds/server1.key"
47 #define SSL_CA_PATH "src/core/tsi/test_creds/ca.pem"
56 struct sockaddr_in
addr;
58 addr.sin_family = AF_INET;
60 addr.sin_addr.s_addr = htonl(INADDR_ANY);
62 s =
socket(AF_INET, SOCK_STREAM, 0);
64 perror(
"Unable to create socket");
68 if (connect(s,
reinterpret_cast<struct sockaddr*
>(&
addr),
sizeof(
addr)) < 0) {
69 perror(
"Unable to connect");
78 explicit ServerInfo(
int p) :
port_(
p) {}
104 ServerInfo* s =
static_cast<ServerInfo*
>(
arg);
105 const int port = s->port();
116 const char* ca_cert =
123 ca_cert, &pem_key_cert_pair, 1, 0,
nullptr);
142 while (!
gpr_event_get(&client_handshake_complete) && retries-- > 0) {
171 const char* alpn_expected) {
192 perror(
"Unable to create SSL context");
209 const char* cipher_list =
210 "ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-"
211 "SHA384:ECDHE-RSA-AES256-GCM-SHA384";
220 unsigned int alpn_protos_len = alpn_list_len;
221 for (
unsigned int i = 0;
i < alpn_list_len; ++
i) {
222 alpn_protos_len +=
static_cast<unsigned int>(strlen(alpn_list[
i]));
224 unsigned char* alpn_protos =
225 static_cast<unsigned char*
>(
gpr_malloc(alpn_protos_len));
226 unsigned char*
p = alpn_protos;
227 for (
unsigned int i = 0;
i < alpn_list_len; ++
i) {
239 while (sock == -1 && retries-- > 0) {
259 const unsigned char* alpn_selected;
260 unsigned int alpn_selected_len;
262 if (strlen(alpn_expected) != alpn_selected_len ||
263 strncmp(
reinterpret_cast<const char*
>(alpn_selected), alpn_expected,
264 alpn_selected_len) != 0) {
269 gpr_event_set(&client_handshake_complete, &client_handshake_complete);
GPRAPI void grpc_slice_unref(grpc_slice s)
gpr_timespec grpc_timeout_seconds_to_deadline(int64_t time_s)
grpc_error_handle grpc_load_file(const char *filename, int add_null_terminator, grpc_slice *output)
GPRAPI void * gpr_event_get(gpr_event *ev)
std::string StrCat(const AlphaNum &a, const AlphaNum &b)
std::condition_variable cv_
#define SSL_get0_alpn_selected
void server_thread(void *vargs)
GPRAPI void gpr_event_set(gpr_event *ev, void *value)
GPRAPI void gpr_free(void *ptr)
#define ERR_print_errors_fp
GRPCAPI grpc_server * grpc_server_create(const grpc_channel_args *args, void *reserved)
GPRAPI void * gpr_malloc(size_t size)
#define ABSL_GUARDED_BY(x)
GRPCAPI void grpc_server_register_completion_queue(grpc_server *server, grpc_completion_queue *cq, void *reserved)
#define GRPC_LOG_IF_ERROR(what, error)
#define TLSv1_2_client_method
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
GRPCAPI grpc_server_credentials * grpc_ssl_server_credentials_create(const char *pem_root_certs, grpc_ssl_pem_key_cert_pair *pem_key_cert_pairs, size_t num_key_cert_pairs, int force_client_auth, void *reserved)
GRPCAPI void grpc_server_credentials_release(grpc_server_credentials *creds)
GRPCAPI int grpc_server_add_http2_port(grpc_server *server, const char *addr, grpc_server_credentials *creds)
GPRAPI void gpr_log(const char *file, int line, gpr_log_severity severity, const char *format,...) GPR_PRINT_FORMAT_CHECK(4
#define GRPC_SLICE_START_PTR(slice)
int create_socket(const char *socket_type, fd_pair *client_fds, fd_pair *server_fds)
struct grpc_server grpc_server
GPRAPI void gpr_event_init(gpr_event *ev)
GRPCAPI void grpc_server_destroy(grpc_server *server)
int grpc_pick_unused_port_or_die(void)
#define SSL_CTX_use_certificate_file
#define SSL_CTX_set_cipher_list
GRPCAPI void grpc_completion_queue_destroy(grpc_completion_queue *cq)
GRPCAPI void grpc_server_shutdown_and_notify(grpc_server *server, grpc_completion_queue *cq, void *tag)
GRPCAPI grpc_event grpc_completion_queue_next(grpc_completion_queue *cq, gpr_timespec deadline, void *reserved)
GRPCAPI void grpc_completion_queue_shutdown(grpc_completion_queue *cq)
#define SSL_CTX_use_PrivateKey_file
#define SSL_CTX_set_alpn_protos
bool server_ssl_test(const char *alpn_list[], unsigned int alpn_list_len, const char *alpn_expected)
GRPCAPI grpc_completion_queue * grpc_completion_queue_create_for_next(void *reserved)
grpc_completion_type type
GRPCAPI void grpc_init(void)
GRPCAPI void grpc_server_start(grpc_server *server)
GRPCAPI void grpc_shutdown(void)
static grpc_completion_queue * cq
grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:17