diff options
Diffstat (limited to 'gtests/ssl_gtest/tls_agent.cc')
-rw-r--r-- | gtests/ssl_gtest/tls_agent.cc | 20 |
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_); |