ucb/source/ucp/cmis/certvalidation_handler.cxx |   26 +++++++++++++++++++++++++
 1 file changed, 26 insertions(+)

New commits:
commit 1498cf0d9429f992affbe1ab5701b07e66cf1754
Author: Cédric Bosdonnat <cedric.bosdonnat....@free.fr>
Date:   Thu Jul 25 18:00:18 2013 +0200

    Store the decision about the certificate in a container to remember it
    
    Change-Id: I19da6c1aeb7fada97166d37c68fa5ba242bbcaba

diff --git a/ucb/source/ucp/cmis/certvalidation_handler.cxx 
b/ucb/source/ucp/cmis/certvalidation_handler.cxx
index 7ac8cda..f13c75b 100644
--- a/ucb/source/ucp/cmis/certvalidation_handler.cxx
+++ b/ucb/source/ucp/cmis/certvalidation_handler.cxx
@@ -10,7 +10,9 @@
  *
  */
 
+#include <com/sun/star/security/CertificateContainer.hpp>
 #include <com/sun/star/security/XCertificate.hpp>
+#include <com/sun/star/security/XCertificateContainer.hpp>
 #include <com/sun/star/security/CertificateValidity.hpp>
 #include <com/sun/star/xml/crypto/SEInitializer.hpp>
 #include <com/sun/star/xml/crypto/XSecurityEnvironment.hpp>
@@ -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 );
                     }
                 }
             }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to