From 42460fd4eb4757dcdf3b3e533aafabda77751321 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 2 Mar 2017 08:10:07 +0100 Subject: xmlsecurity: avoid using the SerialNumberAdapter wrapper This service is only used in xmlsecurity and it's a wrapper around two free functions in the same module. Change-Id: Ibc5a026b51eda6c2b4b27b7254dedc220dbf909a Reviewed-on: https://gerrit.libreoffice.org/34772 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- xmlsecurity/inc/biginteger.hxx | 9 +++++++-- xmlsecurity/qa/unit/signing/signing.cxx | 1 - .../source/component/documentdigitalsignatures.cxx | 16 +++------------- xmlsecurity/source/dialogs/certificatechooser.cxx | 4 ---- xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx | 9 ++------- xmlsecurity/source/dialogs/macrosecurity.cxx | 6 +----- xmlsecurity/source/helper/documentsignaturemanager.cxx | 5 ++--- xmlsecurity/source/xmlsec/biginteger.cxx | 3 +++ .../xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx | 2 +- xmlsecurity/source/xmlsec/serialnumberadapter.cxx | 4 ++-- 10 files changed, 21 insertions(+), 38 deletions(-) (limited to 'xmlsecurity') diff --git a/xmlsecurity/inc/biginteger.hxx b/xmlsecurity/inc/biginteger.hxx index 73f6259c966b..2cd116d50763 100644 --- a/xmlsecurity/inc/biginteger.hxx +++ b/xmlsecurity/inc/biginteger.hxx @@ -25,8 +25,13 @@ #include -OUString bigIntegerToNumericString( const css::uno::Sequence< sal_Int8 >& serial ); -css::uno::Sequence< sal_Int8 > numericStringToBigInteger ( const OUString& serialNumber ); +#include + +namespace xmlsecurity +{ +XSECXMLSEC_DLLPUBLIC OUString bigIntegerToNumericString( const css::uno::Sequence< sal_Int8 >& serial ); +XSECXMLSEC_DLLPUBLIC css::uno::Sequence< sal_Int8 > numericStringToBigInteger ( const OUString& serialNumber ); +} #endif diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx index 03c7c961d996..f8fe7b55123d 100644 --- a/xmlsecurity/qa/unit/signing/signing.cxx +++ b/xmlsecurity/qa/unit/signing/signing.cxx @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include diff --git a/xmlsecurity/source/component/documentdigitalsignatures.cxx b/xmlsecurity/source/component/documentdigitalsignatures.cxx index 81d6aeba0db6..54b084075fbc 100644 --- a/xmlsecurity/source/component/documentdigitalsignatures.cxx +++ b/xmlsecurity/source/component/documentdigitalsignatures.cxx @@ -42,7 +42,6 @@ #include #include #include -#include #include #include #include @@ -316,9 +315,6 @@ DocumentDigitalSignatures::ImplVerifySignatures( if ( nInfos ) { - Reference xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mxCtx); - for( int n = 0; n < nInfos; ++n ) { DocumentSignatureAlgorithm mode = DocumentSignatureHelper::getDocumentAlgorithm( @@ -333,7 +329,7 @@ DocumentDigitalSignatures::ImplVerifySignatures( if (!rInfo.ouX509Certificate.isEmpty()) rSigInfo.Signer = xSecEnv->createCertificateFromAscii( rInfo.ouX509Certificate ) ; if (!rSigInfo.Signer.is()) - rSigInfo.Signer = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xSerialNumberAdapter->toSequence( rInfo.ouX509SerialNumber ) ); + rSigInfo.Signer = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xmlsecurity::numericStringToBigInteger( rInfo.ouX509SerialNumber ) ); // Time support again (#i38744#) Date aDate( rInfo.stDateTime.Day, rInfo.stDateTime.Month, rInfo.stDateTime.Year ); @@ -431,10 +427,7 @@ sal_Bool DocumentDigitalSignatures::isAuthorTrusted( { bool bFound = false; - Reference xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mxCtx); - - OUString sSerialNum = xSerialNumberAdapter->toString( Author->getSerialNumber() ); + OUString sSerialNum = xmlsecurity::bigIntegerToNumericString( Author->getSerialNumber() ); Sequence< SvtSecurityOptions::Certificate > aTrustedAuthors = SvtSecurityOptions().GetTrustedAuthors(); const SvtSecurityOptions::Certificate* pAuthors = aTrustedAuthors.getConstArray(); @@ -486,12 +479,9 @@ void DocumentDigitalSignatures::addAuthorToTrustedSources( { SvtSecurityOptions aSecOpts; - Reference xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mxCtx); - SvtSecurityOptions::Certificate aNewCert( 3 ); aNewCert[ 0 ] = Author->getIssuerName(); - aNewCert[ 1 ] = xSerialNumberAdapter->toString( Author->getSerialNumber() ); + aNewCert[ 1 ] = xmlsecurity::bigIntegerToNumericString( Author->getSerialNumber() ); OUStringBuffer aStrBuffer; ::sax::Converter::encodeBase64(aStrBuffer, Author->getEncoded()); diff --git a/xmlsecurity/source/dialogs/certificatechooser.cxx b/xmlsecurity/source/dialogs/certificatechooser.cxx index 53ceb0d55de2..292f41e8d9ae 100644 --- a/xmlsecurity/source/dialogs/certificatechooser.cxx +++ b/xmlsecurity/source/dialogs/certificatechooser.cxx @@ -27,7 +27,6 @@ #include #include -#include #include "resourcemanager.hxx" #include @@ -168,9 +167,6 @@ void CertificateChooser::ImplInitialize() { } - uno::Reference< css::security::XSerialNumberAdapter> xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mxCtx); - sal_Int32 nCertificates = maCerts.getLength(); for( sal_Int32 nCert = nCertificates; nCert; ) { diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx index 082e6316a69a..2373fb21a735 100644 --- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx +++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx @@ -32,7 +32,6 @@ #include #include #include -#include #include #include #include @@ -458,8 +457,6 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox() m_pSignaturesLB->Clear(); uno::Reference xSecEnv = maSignatureManager.getSecurityEnvironment(); - uno::Reference xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mxCtx); uno::Reference< css::security::XCertificate > xCert; @@ -494,7 +491,7 @@ void DigitalSignaturesDialog::ImplFillSignaturesBox() //In case there is no embedded certificate we try to get it from a local store //Todo: This probably could be removed, see above. if (!xCert.is()) - xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xSerialNumberAdapter->toSequence( rInfo.ouX509SerialNumber ) ); + xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xmlsecurity::numericStringToBigInteger( rInfo.ouX509SerialNumber ) ); SAL_WARN_IF( !xCert.is(), "xmlsecurity.dialogs", "Certificate not found and can't be created!" ); @@ -639,15 +636,13 @@ void DigitalSignaturesDialog::ImplShowSignaturesDetails() sal_uInt16 nSelected = (sal_uInt16) reinterpret_cast( m_pSignaturesLB->FirstSelected()->GetUserData() ); const SignatureInformation& rInfo = maSignatureManager.maCurrentSignatureInformations[ nSelected ]; uno::Reference xSecEnv = maSignatureManager.getSecurityEnvironment(); - css::uno::Reference xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mxCtx); // Use Certificate from doc, not from key store uno::Reference< css::security::XCertificate > xCert; if (!rInfo.ouX509Certificate.isEmpty()) xCert = xSecEnv->createCertificateFromAscii(rInfo.ouX509Certificate); //fallback if no certificate is embedded, get if from store if (!xCert.is()) - xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xSerialNumberAdapter->toSequence( rInfo.ouX509SerialNumber ) ); + xCert = xSecEnv->getCertificate( rInfo.ouX509IssuerName, xmlsecurity::numericStringToBigInteger( rInfo.ouX509SerialNumber ) ); SAL_WARN_IF( !xCert.is(), "xmlsecurity.dialogs", "Error getting Certificate!" ); if ( xCert.is() ) diff --git a/xmlsecurity/source/dialogs/macrosecurity.cxx b/xmlsecurity/source/dialogs/macrosecurity.cxx index c284ebabb51e..440ea3c894be 100644 --- a/xmlsecurity/source/dialogs/macrosecurity.cxx +++ b/xmlsecurity/source/dialogs/macrosecurity.cxx @@ -29,7 +29,6 @@ #include -#include #include #include #include @@ -221,10 +220,7 @@ IMPL_LINK_NOARG(MacroSecurityTrustedSourcesTP, ViewCertPBHdl, Button*, void) { sal_uInt16 nSelected = sal_uInt16( sal_uIntPtr( m_pTrustCertLB->FirstSelected()->GetUserData() ) ); - uno::Reference< css::security::XSerialNumberAdapter > xSerialNumberAdapter = - css::security::SerialNumberAdapter::create(mpDlg->mxCtx); - - uno::Reference< css::security::XCertificate > xCert = mpDlg->mxSecurityEnvironment->getCertificate( maTrustedAuthors[nSelected][0], xSerialNumberAdapter->toSequence( maTrustedAuthors[nSelected][1] ) ); + uno::Reference< css::security::XCertificate > xCert = mpDlg->mxSecurityEnvironment->getCertificate( maTrustedAuthors[nSelected][0], xmlsecurity::numericStringToBigInteger( maTrustedAuthors[nSelected][1] ) ); // If we don't get it, create it from signature data: if ( !xCert.is() ) diff --git a/xmlsecurity/source/helper/documentsignaturemanager.cxx b/xmlsecurity/source/helper/documentsignaturemanager.cxx index dcee8e4d1f77..d97b1d11e0e6 100644 --- a/xmlsecurity/source/helper/documentsignaturemanager.cxx +++ b/xmlsecurity/source/helper/documentsignaturemanager.cxx @@ -23,7 +23,6 @@ #include #include #include -#include #include #include @@ -35,6 +34,7 @@ #include #include +#include using namespace com::sun::star; @@ -239,8 +239,7 @@ bool DocumentSignatureManager::add(const uno::Reference& return false; } - uno::Reference xSerialNumberAdapter = security::SerialNumberAdapter::create(mxContext); - OUString aCertSerial = xSerialNumberAdapter->toString(xCert->getSerialNumber()); + OUString aCertSerial = xmlsecurity::bigIntegerToNumericString(xCert->getSerialNumber()); if (aCertSerial.isEmpty()) { SAL_WARN("xmlsecurity.helper", "Error in Certificate, problem with serial number!"); diff --git a/xmlsecurity/source/xmlsec/biginteger.cxx b/xmlsecurity/source/xmlsec/biginteger.cxx index 331e853a7f9b..4f1004be1a97 100644 --- a/xmlsecurity/source/xmlsec/biginteger.cxx +++ b/xmlsecurity/source/xmlsec/biginteger.cxx @@ -25,6 +25,8 @@ using namespace ::com::sun::star::uno ; +namespace xmlsecurity +{ Sequence< sal_Int8 > numericStringToBigInteger ( const OUString& numeral ) { if( numeral.getStr() != nullptr ) @@ -106,5 +108,6 @@ OUString bigIntegerToNumericString ( const Sequence< sal_Int8 >& integer ) return aRet ; } +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx index 14fb71d85b95..97c253a8977b 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx @@ -618,7 +618,7 @@ Reference< XCertificate > SecurityEnvironment_MSCryptImpl::getCertificate( const } Reference< XCertificate > SecurityEnvironment_MSCryptImpl::getCertificate( const OUString& issuerName, const OUString& serialNumber ) { - Sequence< sal_Int8 > serial = numericStringToBigInteger( serialNumber ) ; + Sequence< sal_Int8 > serial = xmlsecurity::numericStringToBigInteger( serialNumber ) ; return getCertificate( issuerName, serial ) ; } diff --git a/xmlsecurity/source/xmlsec/serialnumberadapter.cxx b/xmlsecurity/source/xmlsec/serialnumberadapter.cxx index 2377654b086d..372b68330f83 100644 --- a/xmlsecurity/source/xmlsec/serialnumberadapter.cxx +++ b/xmlsecurity/source/xmlsec/serialnumberadapter.cxx @@ -60,11 +60,11 @@ private: virtual OUString SAL_CALL toString( css::uno::Sequence< sal_Int8 > const & SerialNumber) override - { return bigIntegerToNumericString(SerialNumber); } + { return xmlsecurity::bigIntegerToNumericString(SerialNumber); } virtual css::uno::Sequence< sal_Int8 > SAL_CALL toSequence( OUString const & SerialNumber) override - { return numericStringToBigInteger(SerialNumber); } + { return xmlsecurity::numericStringToBigInteger(SerialNumber); } }; } -- cgit