1 /*
2  * Copyright (C) 2012 Emweb bv, Herent, Belgium.
3  *
4  * See the LICENSE file for terms of use.
5  */
6 
7 #include "Wt/WSslInfo.h"
8 
9 #include "Wt/WLogger.h"
10 #include "Wt/Utils.h"
11 
12 #include <sstream>
13 #include <stdexcept>
14 
15 namespace Wt {
16 
17 LOGGER("WSslInfo");
18 
WSslInfo(const WSslCertificate & clientCertificate,const std::vector<WSslCertificate> & clientCertificateChain,WValidator::Result clientVerificationResult)19 WSslInfo::WSslInfo(const WSslCertificate &clientCertificate,
20 		   const std::vector<WSslCertificate> &clientCertificateChain,
21 		   WValidator::Result clientVerificationResult)
22   : clientCertificate_(clientCertificate),
23     clientCertificateChain_(clientCertificateChain),
24     clientVerificationResult_(clientVerificationResult)
25 {
26   LOG_DEBUG("WSslInfo fields: " <<  gdb());
27 }
28 
gdb()29 std::string WSslInfo::gdb() const
30 {
31   std::stringstream ss;
32   ss << "client certificate:\n";
33   clientCertificate_.gdb();
34 
35   for (unsigned i = 0; i < clientCertificateChain_.size(); ++i) {
36     ss << "client cert chain " << i << " :\n";
37     clientCertificateChain_[i].gdb();
38   }
39 
40   ss
41     << "valid: "
42     << (clientVerificationResult_.state() == ValidationState::Valid)
43     << std::endl
44     << "validity info: " << clientVerificationResult_.message() << std::endl;
45 
46   return ss.str();
47 }
48 
49 }
50