Kaydet (Commit) f6465c51 authored tarafından Vladimir Glazounov's avatar Vladimir Glazounov

INTEGRATION: CWS cmcfixes48 (1.35.16); FILE MERGED

2008/08/01 13:54:31 cmc 1.35.16.1: #i92247# remove duplication of object code, link only the single library to libxmlsec1, and update some stuff to new api
üst 003b09a3
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
* OpenOffice.org - a multi-platform office productivity suite * OpenOffice.org - a multi-platform office productivity suite
* *
* $RCSfile: digitalsignaturesdialog.cxx,v $ * $RCSfile: digitalsignaturesdialog.cxx,v $
* $Revision: 1.35 $ * $Revision: 1.36 $
* *
* This file is part of OpenOffice.org. * This file is part of OpenOffice.org.
* *
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
#include <xmlsecurity/certificatechooser.hxx> #include <xmlsecurity/certificatechooser.hxx>
#include <xmlsecurity/certificateviewer.hxx> #include <xmlsecurity/certificateviewer.hxx>
#include <xmlsecurity/biginteger.hxx> #include <xmlsecurity/biginteger.hxx>
#include "xmlsecurity/baseencoding.hxx" #include <xmloff/xmluconv.hxx>
#include <com/sun/star/embed/XStorage.hpp> #include <com/sun/star/embed/XStorage.hpp>
#include <com/sun/star/embed/ElementModes.hpp> #include <com/sun/star/embed/ElementModes.hpp>
#include <com/sun/star/io/XSeekable.hpp> #include <com/sun/star/io/XSeekable.hpp>
...@@ -47,6 +47,9 @@ ...@@ -47,6 +47,9 @@
#include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/security/CertificateValidity.hdl> #include <com/sun/star/security/CertificateValidity.hdl>
#include <com/sun/star/packages/WrongPasswordException.hpp> #include <com/sun/star/packages/WrongPasswordException.hpp>
#include <com/sun/star/security/SerialNumberAdapter.hpp>
#include <rtl/ustrbuf.hxx>
#include <tools/date.hxx> #include <tools/date.hxx>
#include <tools/time.hxx> #include <tools/time.hxx>
...@@ -57,6 +60,7 @@ ...@@ -57,6 +60,7 @@
#include <vcl/msgbox.hxx> // Until encrypted docs work... #include <vcl/msgbox.hxx> // Until encrypted docs work...
#include <unotools/configitem.hxx> #include <unotools/configitem.hxx>
#include <comphelper/componentcontext.hxx>
using namespace ::com::sun::star::security; using namespace ::com::sun::star::security;
...@@ -146,10 +150,11 @@ sal_Bool HandleStreamAsXML_Impl( const uno::Reference < embed::XStorage >& rxSto ...@@ -146,10 +150,11 @@ sal_Bool HandleStreamAsXML_Impl( const uno::Reference < embed::XStorage >& rxSto
DigitalSignaturesDialog::DigitalSignaturesDialog( DigitalSignaturesDialog::DigitalSignaturesDialog(
Window* pParent, Window* pParent,
uno::Reference< lang::XMultiServiceFactory >& rxMSF, DocumentSignatureMode eMode, uno::Reference< uno::XComponentContext >& rxCtx, DocumentSignatureMode eMode,
sal_Bool bReadOnly) sal_Bool bReadOnly)
:ModalDialog ( pParent, XMLSEC_RES( RID_XMLSECDLG_DIGSIG ) ) :ModalDialog ( pParent, XMLSEC_RES( RID_XMLSECDLG_DIGSIG ) )
,maSignatureHelper ( rxMSF ) ,mxCtx ( rxCtx )
,maSignatureHelper ( rxCtx )
,meSignatureMode ( eMode ) ,meSignatureMode ( eMode )
,maHintDocFT ( this, XMLSEC_RES( FT_HINT_DOC ) ) ,maHintDocFT ( this, XMLSEC_RES( FT_HINT_DOC ) )
,maHintBasicFT ( this, XMLSEC_RES( FT_HINT_BASIC ) ) ,maHintBasicFT ( this, XMLSEC_RES( FT_HINT_BASIC ) )
...@@ -319,7 +324,10 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG ) ...@@ -319,7 +324,10 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG )
try try
{ {
uno::Reference<com::sun::star::xml::crypto::XSecurityEnvironment> xSecEnv = maSignatureHelper.GetSecurityEnvironment(); uno::Reference<com::sun::star::xml::crypto::XSecurityEnvironment> xSecEnv = maSignatureHelper.GetSecurityEnvironment();
CertificateChooser aChooser( this, xSecEnv, maCurrentSignatureInformations );
uno::Reference<com::sun::star::security::XSerialNumberAdapter> xSerialNumberAdapter =
::com::sun::star::security::SerialNumberAdapter::create(mxCtx);
CertificateChooser aChooser( this, mxCtx, xSecEnv, maCurrentSignatureInformations );
if ( aChooser.Execute() == RET_OK ) if ( aChooser.Execute() == RET_OK )
{ {
uno::Reference< ::com::sun::star::security::XCertificate > xCert = aChooser.GetSelectedCertificate(); uno::Reference< ::com::sun::star::security::XCertificate > xCert = aChooser.GetSelectedCertificate();
...@@ -328,7 +336,7 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG ) ...@@ -328,7 +336,7 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG )
DBG_ERRORFILE( "no certificate selected" ); DBG_ERRORFILE( "no certificate selected" );
return -1; return -1;
} }
rtl::OUString aCertSerial = bigIntegerToNumericString( xCert->getSerialNumber() ); rtl::OUString aCertSerial = xSerialNumberAdapter->toString( xCert->getSerialNumber() );
if ( !aCertSerial.getLength() ) if ( !aCertSerial.getLength() )
{ {
DBG_ERROR( "Error in Certificate, problem with serial number!" ); DBG_ERROR( "Error in Certificate, problem with serial number!" );
...@@ -339,8 +347,13 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG ) ...@@ -339,8 +347,13 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG )
sal_Int32 nSecurityId = maSignatureHelper.GetNewSecurityId(); sal_Int32 nSecurityId = maSignatureHelper.GetNewSecurityId();
maSignatureHelper.SetX509Certificate( nSecurityId, xCert->getIssuerName(), aCertSerial, rtl::OUStringBuffer aStrBuffer;
baseEncode(xCert->getEncoded(), BASE64)); SvXMLUnitConverter::encodeBase64(aStrBuffer, xCert->getEncoded());
maSignatureHelper.SetX509Certificate( nSecurityId,
xCert->getIssuerName(), aCertSerial,
aStrBuffer.makeStringAndClear());
std::vector< rtl::OUString > aElements = DocumentSignatureHelper::CreateElementList( mxStore, rtl::OUString(), meSignatureMode ); std::vector< rtl::OUString > aElements = DocumentSignatureHelper::CreateElementList( mxStore, rtl::OUString(), meSignatureMode );
...@@ -390,6 +403,7 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG ) ...@@ -390,6 +403,7 @@ IMPL_LINK( DigitalSignaturesDialog, AddButtonHdl, Button*, EMPTYARG )
aStreamHelper = SignatureStreamHelper(); // release objects... aStreamHelper = SignatureStreamHelper(); // release objects...
sal_Int32 nStatus = maSignatureHelper.GetSignatureInformation( nSecurityId ).nStatus; sal_Int32 nStatus = maSignatureHelper.GetSignatureInformation( nSecurityId ).nStatus;
if ( nStatus == ::com::sun::star::xml::crypto::SecurityOperationStatus_OPERATION_SUCCEEDED ) if ( nStatus == ::com::sun::star::xml::crypto::SecurityOperationStatus_OPERATION_SUCCEEDED )
{ {
mbSignaturesChanged = true; mbSignaturesChanged = true;
...@@ -472,6 +486,9 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox() ...@@ -472,6 +486,9 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox()
maSignaturesLB.Clear(); maSignaturesLB.Clear();
uno::Reference< ::com::sun::star::xml::crypto::XSecurityEnvironment > xSecEnv = maSignatureHelper.GetSecurityEnvironment(); uno::Reference< ::com::sun::star::xml::crypto::XSecurityEnvironment > xSecEnv = maSignatureHelper.GetSecurityEnvironment();
uno::Reference<com::sun::star::security::XSerialNumberAdapter> xSerialNumberAdapter =
::com::sun::star::security::SerialNumberAdapter::create(mxCtx);
uno::Reference< ::com::sun::star::security::XCertificate > xCert; uno::Reference< ::com::sun::star::security::XCertificate > xCert;
String aNullStr; String aNullStr;
...@@ -500,7 +517,7 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox() ...@@ -500,7 +517,7 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox()
//In case there is no embedded certificate we try to get it from a local store //In case there is no embedded certificate we try to get it from a local store
//Todo: This probably could be removed, see above. //Todo: This probably could be removed, see above.
if (!xCert.is()) if (!xCert.is())
xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, numericStringToBigInteger( rInfo.ouX509SerialNumber ) ); xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xSerialNumberAdapter->toSequence( rInfo.ouX509SerialNumber ) );
DBG_ASSERT( xCert.is(), "Certificate not found and can't be created!" ); DBG_ASSERT( xCert.is(), "Certificate not found and can't be created!" );
...@@ -615,13 +632,15 @@ void DigitalSignaturesDialog::ImplShowSignaturesDetails() ...@@ -615,13 +632,15 @@ void DigitalSignaturesDialog::ImplShowSignaturesDetails()
const SignatureInformation& rInfo = maCurrentSignatureInformations[ nSelected ]; const SignatureInformation& rInfo = maCurrentSignatureInformations[ nSelected ];
css::uno::Reference<css::xml::crypto::XSecurityEnvironment > xSecEnv = css::uno::Reference<css::xml::crypto::XSecurityEnvironment > xSecEnv =
maSignatureHelper.GetSecurityEnvironment(); maSignatureHelper.GetSecurityEnvironment();
css::uno::Reference<com::sun::star::security::XSerialNumberAdapter> xSerialNumberAdapter =
::com::sun::star::security::SerialNumberAdapter::create(mxCtx);
// Use Certificate from doc, not from key store // Use Certificate from doc, not from key store
uno::Reference< dcss::security::XCertificate > xCert; uno::Reference< dcss::security::XCertificate > xCert;
if (rInfo.ouX509Certificate.getLength()) if (rInfo.ouX509Certificate.getLength())
xCert = xSecEnv->createCertificateFromAscii(rInfo.ouX509Certificate); xCert = xSecEnv->createCertificateFromAscii(rInfo.ouX509Certificate);
//fallback if no certificate is embedded, get if from store //fallback if no certificate is embedded, get if from store
if (!xCert.is()) if (!xCert.is())
xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, numericStringToBigInteger( rInfo.ouX509SerialNumber ) ); xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xSerialNumberAdapter->toSequence( rInfo.ouX509SerialNumber ) );
DBG_ASSERT( xCert.is(), "Error getting cCertificate!" ); DBG_ASSERT( xCert.is(), "Error getting cCertificate!" );
if ( xCert.is() ) if ( xCert.is() )
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment