summaryrefslogtreecommitdiff
path: root/gtests/ssl_gtest/tls_agent.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtests/ssl_gtest/tls_agent.cc')
-rw-r--r--gtests/ssl_gtest/tls_agent.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/gtests/ssl_gtest/tls_agent.cc b/gtests/ssl_gtest/tls_agent.cc
index 73e57d850..edcfd8daf 100644
--- a/gtests/ssl_gtest/tls_agent.cc
+++ b/gtests/ssl_gtest/tls_agent.cc
@@ -35,6 +35,7 @@ const std::string TlsAgent::kServerRsa = "rsa"; // both sign and encrypt
const std::string TlsAgent::kServerRsaSign = "rsa_sign";
const std::string TlsAgent::kServerRsaPss = "rsa_pss";
const std::string TlsAgent::kServerRsaDecrypt = "rsa_decrypt";
+const std::string TlsAgent::kServerRsaChain = "rsa_chain";
const std::string TlsAgent::kServerEcdsa256 = "ecdsa256";
const std::string TlsAgent::kServerEcdsa384 = "ecdsa384";
const std::string TlsAgent::kServerEcdsa521 = "ecdsa521";
@@ -201,6 +202,25 @@ SECStatus TlsAgent::GetClientAuthDataHook(void* self, PRFileDesc* fd,
return SECFailure;
}
+bool TlsAgent::GetPeerChainLength(size_t* count) {
+ CERTCertList *chain = SSL_PeerCertificateChain(ssl_fd_);
+ if (!chain)
+ return false;
+ *count = 0;
+
+ for (PRCList *cursor = PR_NEXT_LINK(&chain->list);
+ cursor != &chain->list;
+ cursor = PR_NEXT_LINK(cursor)) {
+ CERTCertListNode *node = (CERTCertListNode *)cursor;
+ std::cerr << node->cert->subjectName << std::endl;
+ ++(*count);
+ }
+
+ CERT_DestroyCertList(chain);
+
+ return true;
+}
+
void TlsAgent::RequestClientAuth(bool requireAuth) {
EXPECT_TRUE(EnsureTlsSetup());
ASSERT_EQ(SERVER, role_);