[Libreoffice-commits] .: Branch 'feature/pdf-signing' - 2 commits - filter/source offapi/com xmlsecurity/source

Gökcen Eraslan gokcen at kemper.freedesktop.org
Sat Jul 7 09:16:32 PDT 2012


 filter/source/pdf/impdialog.cxx                             |   24 ++++++------
 offapi/com/sun/star/security/XDocumentDigitalSignatures.idl |    4 +-
 xmlsecurity/source/component/documentdigitalsignatures.cxx  |   23 +++++++++++
 xmlsecurity/source/component/documentdigitalsignatures.hxx  |    1 
 4 files changed, 40 insertions(+), 12 deletions(-)

New commits:
commit bb1ba4f3b784b1ad8776319d6336dba97e484d59
Author: Gökçen Eraslan <gokcen.eraslan at gmail.com>
Date:   Sat Jul 7 19:15:17 2012 +0300

    Use new chooseCertificate UNO method to pop up certificate dialog.
    
    Change-Id: I713357547c462cd0164f2aa361c44fca63cce435

diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx
index cc26818..dd9c429 100644
--- a/filter/source/pdf/impdialog.cxx
+++ b/filter/source/pdf/impdialog.cxx
@@ -42,6 +42,7 @@
 #include "com/sun/star/container/XIndexAccess.hpp"
 #include "com/sun/star/frame/XController.hpp"
 #include "com/sun/star/view/XSelectionSupplier.hpp"
+#include "com/sun/star/security/XDocumentDigitalSignatures.hpp"
 
 #include <boost/shared_ptr.hpp>
 
@@ -1697,19 +1698,20 @@ ImpPDFTabSigningPage::~ImpPDFTabSigningPage()
 
 IMPL_LINK_NOARG( ImpPDFTabSigningPage, ClickmaPbSignSelectCert )
 {
-    // Certificate selection dialog will pop up
-    /*
-    Reference< dcss::xml::crypto::XSecurityEnvironment > xSecEnv;
-    Reference< XComponentContext > mxCtx;
 
-    XMLSignatureHelper aSignatureHelper( mxCtx );
-    if ( aSignatureHelper.Init() )
-        xSecEnv = aSignatureHelper.GetSecurityEnvironment();
+    uno::Sequence< uno::Any > aArgs( 2 );
+    aArgs[0] <<= rtl::OUString("1.2");
+    aArgs[1] <<= sal_False;
 
-    SignatureInformations maCurrentSignatureInformations = maSignatureHelper.GetSignatureInformations();
-    CertificateChooser aChooser( this, mxCtx, xSecEnv, maCurrentSignatureInformations );
-    aChooser.Execute();
-    */
+    Reference< security::XDocumentDigitalSignatures > xSigner(
+        comphelper::getProcessServiceFactory()->createInstanceWithArguments(
+            rtl::OUString( "com.sun.star.security.DocumentDigitalSignatures"  ), aArgs ),
+        uno::UNO_QUERY );
+
+    if ( !xSigner.is() )
+        return 0;
+
+    Reference< security::XCertificate > xCert = xSigner->chooseCertificate();
 
     return 0;
 }
commit 786f730ea2608abaafdc656e2181d11e076b6648
Author: Gökçen Eraslan <gokcen.eraslan at gmail.com>
Date:   Sat Jul 7 19:08:48 2012 +0300

    Add new chooseCertificate method to XDocumentDigitalSignatures UNO interface.
    
    This method shows the certificate choosing dialog previously used in ODF
    signing and returns the selected certificate. For PDF signing support,
    we need to reuse existing CertifacateChooser class of xmlsecurity module.
    So the UNO api of ::com::sun::star::security::XDocumentDigitalSignatures is
    extended.
    
    Change-Id: I09f7d0ee180b16b588798820206780df359d133e

diff --git a/offapi/com/sun/star/security/XDocumentDigitalSignatures.idl b/offapi/com/sun/star/security/XDocumentDigitalSignatures.idl
index be75dc1..8e9089e 100644
--- a/offapi/com/sun/star/security/XDocumentDigitalSignatures.idl
+++ b/offapi/com/sun/star/security/XDocumentDigitalSignatures.idl
@@ -143,7 +143,9 @@ interface XDocumentDigitalSignatures : com::sun::star::uno::XInterface
     void    addAuthorToTrustedSources( [in] com::sun::star::security::XCertificate Author );
     void    addLocationToTrustedSources( [in] string Location );
 
-
+    /**  This method shows CertificateChooser dialog, used by document and PDF signing
+     */
+    com::sun::star::security::XCertificate chooseCertificate();
 
 } ;
 
diff --git a/xmlsecurity/source/component/documentdigitalsignatures.cxx b/xmlsecurity/source/component/documentdigitalsignatures.cxx
index 3282dfe..f52c1a4 100644
--- a/xmlsecurity/source/component/documentdigitalsignatures.cxx
+++ b/xmlsecurity/source/component/documentdigitalsignatures.cxx
@@ -28,6 +28,7 @@
 
 #include <documentdigitalsignatures.hxx>
 #include <xmlsecurity/digitalsignaturesdialog.hxx>
+#include <xmlsecurity/certificatechooser.hxx>
 #include <xmlsecurity/certificateviewer.hxx>
 #include <xmlsecurity/macrosecurity.hxx>
 #include <xmlsecurity/biginteger.hxx>
@@ -424,6 +425,28 @@ void DocumentDigitalSignatures::showCertificate(
     return bFound;
 }
 
+Reference< css::security::XCertificate > DocumentDigitalSignatures::chooseCertificate() throw (RuntimeException)
+{
+    Reference< dcss::xml::crypto::XSecurityEnvironment > xSecEnv;
+
+    XMLSignatureHelper aSignatureHelper( mxCtx );
+    if ( aSignatureHelper.Init() )
+        xSecEnv = aSignatureHelper.GetSecurityEnvironment();
+
+    CertificateChooser aChooser( NULL, mxCtx, xSecEnv, aSignatureHelper.GetSignatureInformations());
+
+    if (aChooser.Execute() != RET_OK)
+        return Reference< css::security::XCertificate >(0);
+
+    Reference< css::security::XCertificate > xCert = aChooser.GetSelectedCertificate();
+
+    if ( !xCert.is() )
+        return Reference< css::security::XCertificate >(0);
+
+    return xCert;
+}
+
+
 ::sal_Bool DocumentDigitalSignatures::isLocationTrusted( const ::rtl::OUString& Location ) throw (RuntimeException)
 {
     sal_Bool bFound = sal_False;
diff --git a/xmlsecurity/source/component/documentdigitalsignatures.hxx b/xmlsecurity/source/component/documentdigitalsignatures.hxx
index 3525370..a16ee9a 100644
--- a/xmlsecurity/source/component/documentdigitalsignatures.hxx
+++ b/xmlsecurity/source/component/documentdigitalsignatures.hxx
@@ -94,6 +94,7 @@ public:
     void SAL_CALL addAuthorToTrustedSources( const ::com::sun::star::uno::Reference< ::com::sun::star::security::XCertificate >& Author ) throw (::com::sun::star::uno::RuntimeException);
     void SAL_CALL addLocationToTrustedSources( const ::rtl::OUString& Location ) throw (::com::sun::star::uno::RuntimeException);
 
+    ::com::sun::star::uno::Reference< ::com::sun::star::security::XCertificate > SAL_CALL chooseCertificate( ) throw (::com::sun::star::uno::RuntimeException);
 };
 
 com::sun::star::uno::Reference< com::sun::star::uno::XInterface > SAL_CALL DocumentDigitalSignatures_CreateInstance(


More information about the Libreoffice-commits mailing list