#include <grpc/support/alloc.h>
#include <grpc/support/log.h>
+#include <grpcpp/support/string_ref.h>
#include "src/core/lib/channel/channel_args.h"
#include "src/core/lib/gpr/string.h"
#include <gtest/gtest.h>
+extern "C" {
+#include <openssl/crypto.h>
+}
+
+static grpc::string test_server1_key_id;
+
namespace grpc {
namespace testing {
#define SERVER_INIT(REQUEST_TYPE) \
static void SERVER_INIT_NAME(REQUEST_TYPE)( \
grpc_end2end_test_fixture * f, grpc_channel_args * server_args) { \
- grpc_ssl_pem_key_cert_pair pem_cert_key_pair = {test_server1_key, \
- test_server1_cert}; \
+ grpc_ssl_pem_key_cert_pair pem_cert_key_pair; \
+ if (!test_server1_key_id.empty()) { \
+ pem_cert_key_pair.private_key = test_server1_key_id.c_str(); \
+ pem_cert_key_pair.cert_chain = test_server1_cert; \
+ } else { \
+ pem_cert_key_pair.private_key = test_server1_key; \
+ pem_cert_key_pair.cert_chain = test_server1_cert; \
+ } \
grpc_server_credentials* ssl_creds = \
grpc_ssl_server_credentials_create_ex( \
test_root_cert, &pem_cert_key_pair, 1, REQUEST_TYPE, NULL); \
simple_request_body(fixture_, GetParam().result);
}
+#ifndef OPENSSL_IS_BORINGSSL
+#if GPR_LINUX
+TEST_P(H2SslCertTest, SimpleRequestBodyUseEngine) {
+ test_server1_key_id.clear();
+ test_server1_key_id.append("engine:libengine_passthrough:");
+ test_server1_key_id.append(test_server1_key);
+ simple_request_body(fixture_, GetParam().result);
+}
+#endif
+#endif
+
INSTANTIATE_TEST_SUITE_P(H2SslCert, H2SslCertTest,
::testing::ValuesIn(configs));