24#include <com/sun/star/lang/XServiceInfo.hpp>
25#include <com/sun/star/xml/crypto/XXMLSecurityContext.hpp>
33using ::com::sun::star::xml::crypto::XSecurityEnvironment ;
34using ::com::sun::star::xml::crypto::XXMLSecurityContext ;
38class XMLSecurityContext_NssImpl
39 :
public ::cppu::WeakImplHelper<xml::crypto::XXMLSecurityContext, lang::XServiceInfo>
42 std::vector<uno::Reference<xml::crypto::XSecurityEnvironment>> m_vSecurityEnvironments;
44 sal_Int32 m_nDefaultEnvIndex;
47 XMLSecurityContext_NssImpl();
50 virtual sal_Int32 SAL_CALL addSecurityEnvironment(
51 const uno::Reference<xml::crypto::XSecurityEnvironment>& aSecurityEnvironment)
override;
53 virtual ::sal_Int32 SAL_CALL getSecurityEnvironmentNumber()
override;
55 virtual uno::Reference<xml::crypto::XSecurityEnvironment>
56 SAL_CALL getSecurityEnvironmentByIndex(::sal_Int32 index)
override;
58 virtual uno::Reference<xml::crypto::XSecurityEnvironment>
59 SAL_CALL getSecurityEnvironment()
override;
61 virtual ::sal_Int32 SAL_CALL getDefaultSecurityEnvironmentIndex()
override;
63 virtual void SAL_CALL setDefaultSecurityEnvironmentIndex(sal_Int32 nDefaultEnvIndex)
override;
75XMLSecurityContext_NssImpl::XMLSecurityContext_NssImpl()
76 : m_nDefaultEnvIndex(-1)
80sal_Int32 SAL_CALL XMLSecurityContext_NssImpl::addSecurityEnvironment(
81 const uno::Reference< xml::crypto::XSecurityEnvironment >& aSecurityEnvironment)
83 if( !aSecurityEnvironment.is() )
85 throw uno::RuntimeException() ;
88 m_vSecurityEnvironments.push_back( aSecurityEnvironment );
90 return m_vSecurityEnvironments.size() - 1 ;
94sal_Int32 SAL_CALL XMLSecurityContext_NssImpl::getSecurityEnvironmentNumber( )
96 return m_vSecurityEnvironments.size();
99uno::Reference< xml::crypto::XSecurityEnvironment > SAL_CALL
100 XMLSecurityContext_NssImpl::getSecurityEnvironmentByIndex( sal_Int32 index )
103 throw uno::RuntimeException();
105 uno::Reference< xml::crypto::XSecurityEnvironment > xSecurityEnvironment = m_vSecurityEnvironments[
index];
106 return xSecurityEnvironment;
109uno::Reference< xml::crypto::XSecurityEnvironment > SAL_CALL
110 XMLSecurityContext_NssImpl::getSecurityEnvironment( )
112 if (m_nDefaultEnvIndex < 0 ||
o3tl::make_unsigned(m_nDefaultEnvIndex) >= m_vSecurityEnvironments.size())
113 throw uno::RuntimeException();
115 return getSecurityEnvironmentByIndex(m_nDefaultEnvIndex);
118sal_Int32 SAL_CALL XMLSecurityContext_NssImpl::getDefaultSecurityEnvironmentIndex( )
120 return m_nDefaultEnvIndex ;
123void SAL_CALL XMLSecurityContext_NssImpl::setDefaultSecurityEnvironmentIndex( sal_Int32 nDefaultEnvIndex )
125 m_nDefaultEnvIndex = nDefaultEnvIndex;
129OUString SAL_CALL XMLSecurityContext_NssImpl::getImplementationName() {
130 return "com.sun.star.xml.crypto.XMLSecurityContext";
134sal_Bool SAL_CALL XMLSecurityContext_NssImpl::supportsService(
const OUString& serviceName) {
139uno::Sequence< OUString > SAL_CALL XMLSecurityContext_NssImpl::getSupportedServiceNames() {
140 return {
"com.sun.star.xml.crypto.XMLSecurityContext" };
143extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface*
145 uno::XComponentContext* , uno::Sequence<uno::Any>
const& )
147 return cppu::acquire(
new XMLSecurityContext_NssImpl);
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
SAL_DLLPUBLIC_EXPORT uno::XInterface * com_sun_star_xml_crypto_XMLSecurityContext_get_implementation(uno::XComponentContext *, uno::Sequence< uno::Any > const &)