Kaydet (Commit) 08ac81cc authored tarafından Miklos Vajna's avatar Miklos Vajna

xmlsecurity nss: create SEInitializer instances with a constructor

And split NSSInitializer and SEInitializer into two implementations,
they are not the same on Windows, so it simplifies things if they're
also split on other platforms.

Change-Id: Ifc0ea7e35e804232ee492b7eea9c25662c9b499e
Reviewed-on: https://gerrit.libreoffice.org/52801Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarMiklos Vajna <vmiklos@collabora.co.uk>
üst ca2fd526
......@@ -108,37 +108,57 @@ void SAL_CALL SEInitializer_NssImpl::freeSecurityContext( const uno::Reference<
//NSS_Shutdown();
}
OUString SEInitializer_NssImpl_getImplementationName ()
/* XServiceInfo */
OUString SAL_CALL SEInitializer_NssImpl::getImplementationName( )
{
return OUString("com.sun.star.xml.crypto.SEInitializer");
}
sal_Bool SAL_CALL SEInitializer_NssImpl::supportsService( const OUString& rServiceName )
{
return cppu::supportsService( this, rServiceName );
}
uno::Sequence< OUString > SAL_CALL SEInitializer_NssImpl::getSupportedServiceNames( )
{
return OUString ("com.sun.star.xml.security.bridge.xmlsec.SEInitializer_NssImpl" );
uno::Sequence<OUString> seqServiceNames{ "com.sun.star.xml.crypto.SEInitializer" };
return seqServiceNames;
}
uno::Sequence< OUString > SEInitializer_NssImpl_getSupportedServiceNames( )
class NSSInitializer_NssImpl : public SEInitializer_NssImpl
{
public:
explicit NSSInitializer_NssImpl(const uno::Reference<uno::XComponentContext>& xContext);
OUString SAL_CALL getImplementationName() override;
uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
};
NSSInitializer_NssImpl::NSSInitializer_NssImpl(const uno::Reference<uno::XComponentContext>& xContext)
: SEInitializer_NssImpl(xContext)
{
uno::Sequence < OUString > aRet(2);
OUString* pArray = aRet.getArray();
pArray[0] = "com.sun.star.xml.crypto.SEInitializer";
pArray[1] = NSS_SERVICE_NAME;
return aRet;
}
uno::Reference< uno::XInterface > SEInitializer_NssImpl_createInstance( const uno::Reference< lang::XMultiServiceFactory > & rxMSF)
OUString NSSInitializer_NssImpl::getImplementationName()
{
return static_cast<cppu::OWeakObject*>(new SEInitializer_NssImpl(comphelper::getComponentContext(rxMSF)));
return OUString("com.sun.star.xml.crypto.NSSInitializer");
}
/* XServiceInfo */
OUString SAL_CALL SEInitializer_NssImpl::getImplementationName( )
uno::Sequence<OUString> SAL_CALL NSSInitializer_NssImpl::getSupportedServiceNames()
{
return SEInitializer_NssImpl_getImplementationName();
uno::Sequence<OUString> seqServiceNames{ "com.sun.star.xml.crypto.NSSInitializer" };
return seqServiceNames;
}
sal_Bool SAL_CALL SEInitializer_NssImpl::supportsService( const OUString& rServiceName )
extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface*
com_sun_star_xml_crypto_NSSInitializer_get_implementation(
uno::XComponentContext* pCtx, uno::Sequence<uno::Any> const& /*rSeq*/)
{
return cppu::supportsService( this, rServiceName );
return cppu::acquire(new NSSInitializer_NssImpl(pCtx));
}
uno::Sequence< OUString > SAL_CALL SEInitializer_NssImpl::getSupportedServiceNames( )
extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface*
com_sun_star_xml_crypto_SEInitializer_get_implementation(
uno::XComponentContext* pCtx, uno::Sequence<uno::Any> const& /*rSeq*/)
{
return SEInitializer_NssImpl_getSupportedServiceNames();
return cppu::acquire(new SEInitializer_NssImpl(pCtx));
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -54,16 +54,6 @@ public:
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
};
/// @throws css::uno::RuntimeException
OUString SEInitializer_NssImpl_getImplementationName();
/// @throws css::uno::RuntimeException
css::uno::Sequence< OUString > SEInitializer_NssImpl_getSupportedServiceNames( );
/// @throws css::uno::Exception
css::uno::Reference< css::uno::XInterface >
SEInitializer_NssImpl_createInstance( const css::uno::Reference< css::lang::XMultiServiceFactory > & rxMSF);
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
......@@ -42,15 +42,7 @@ void* nss_component_getFactory( const sal_Char* pImplName , void* pServiceManage
if( pImplName != nullptr && pServiceManager != nullptr )
{
#ifdef XMLSEC_CRYPTO_NSS
if( SEInitializer_NssImpl_getImplementationName().equalsAscii( pImplName ) )
{
xFactory.set( createSingleFactory(
static_cast< XMultiServiceFactory * >( pServiceManager ),
OUString::createFromAscii( pImplName ),
SEInitializer_NssImpl_createInstance, SEInitializer_NssImpl_getSupportedServiceNames() ) );
}
#else
#ifndef XMLSEC_CRYPTO_NSS
if( ONSSInitializer_getImplementationName().equalsAscii( pImplName ) )
{
xFactory.set( createSingleFactory(
......
......@@ -19,8 +19,12 @@
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
prefix="xsec_xmlsec" xmlns="http://openoffice.org/2010/uno-components">
<implementation name="com.sun.star.xml.security.bridge.xmlsec.SEInitializer_NssImpl">
<implementation name="com.sun.star.xml.crypto.NSSInitializer"
constructor="com_sun_star_xml_crypto_NSSInitializer_get_implementation">
<service name="com.sun.star.xml.crypto.NSSInitializer"/>
</implementation>
<implementation name="com.sun.star.xml.crypto.SEInitializer"
constructor="com_sun_star_xml_crypto_SEInitializer_get_implementation">
<service name="com.sun.star.xml.crypto.SEInitializer"/>
</implementation>
<implementation name="com.sun.star.xml.security.SEInitializer_Gpg">
......
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