From f6c006397896ae8b431a0ab85c89ab677d6ab981 Mon Sep 17 00:00:00 2001 From: Cédric Bosdonnat Date: Thu, 25 Jul 2013 18:00:18 +0200 Subject: Store the decision about the certificate in a container to remember it Change-Id: I19da6c1aeb7fada97166d37c68fa5ba242bbcaba --- ucb/source/ucp/cmis/certvalidation_handler.cxx | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'ucb') diff --git a/ucb/source/ucp/cmis/certvalidation_handler.cxx b/ucb/source/ucp/cmis/certvalidation_handler.cxx index 7ac8cda76dc9..f13c75bc6924 100644 --- a/ucb/source/ucp/cmis/certvalidation_handler.cxx +++ b/ucb/source/ucp/cmis/certvalidation_handler.cxx @@ -10,7 +10,9 @@ * */ +#include #include +#include #include #include #include @@ -59,6 +61,26 @@ namespace cmis xSecurityEnv->createCertificateFromAscii( sCleanCert ) ); + uno::Reference< security::XCertificateContainer > xCertificateContainer; + try + { + xCertificateContainer = security::CertificateContainer::create( m_xContext ); + } + catch ( uno::Exception const & ) + { + } + + if ( xCertificateContainer.is( ) ) + { + security::CertificateContainerStatus status( + xCertificateContainer->hasCertificate( + m_sHostname, xCert->getSubjectName() ) ); + + if ( status != security::CertificateContainerStatus_NOCERT ) + return status == security::CertificateContainerStatus_TRUSTED; + } + + // If we had no certificate, ask what to do std::vector< uno::Reference< security::XCertificate > > vecCerts; for ( ++pIt; pIt != aCertificates.end(); ++pIt ) @@ -90,6 +112,10 @@ namespace cmis uno::Reference< task::XInteractionApprove > xApprove( xSelection.get(), uno::UNO_QUERY ); bValidate = xApprove.is(); + + // Store the decision in the container + xCertificateContainer->addCertificate( + m_sHostname, xCert->getSubjectName(), bValidate ); } } } -- cgit