xref: /trunk/main/xmlsecurity/source/framework/xsec_framework.cxx (revision cdf0e10c4e3984b49a9502b011690b615761d4a3)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_xmlsecurity.hxx"
30 
31 #include <stdio.h>
32 
33 #include <osl/mutex.hxx>
34 #include <osl/thread.h>
35 #include <cppuhelper/factory.hxx>
36 #include <com/sun/star/lang/XSingleServiceFactory.hpp>
37 
38 #include <decryptorimpl.hxx>
39 #include <encryptorimpl.hxx>
40 #include <signaturecreatorimpl.hxx>
41 #include <signatureverifierimpl.hxx>
42 #include <saxeventkeeperimpl.hxx>
43 #include <xmlencryptiontemplateimpl.hxx>
44 #include <xmlsignaturetemplateimpl.hxx>
45 
46 using namespace ::rtl;
47 using namespace ::cppu;
48 using namespace ::com::sun::star::uno;
49 using namespace ::com::sun::star::lang;
50 using namespace ::com::sun::star::registry;
51 
52 extern "C"
53 {
54 //==================================================================================================
55 void SAL_CALL component_getImplementationEnvironment(
56     const sal_Char ** ppEnvTypeName, uno_Environment **)
57 {
58     *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME;
59 }
60 
61 //==================================================================================================
62 void * SAL_CALL component_getFactory(
63     const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
64 {
65     void * pRet = 0;
66 
67     //Decryptor
68     OUString implName = OUString::createFromAscii( pImplName );
69     if ( pServiceManager && implName.equals(DecryptorImpl_getImplementationName()) )
70     {
71         Reference< XSingleServiceFactory > xFactory( createSingleFactory(
72             reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
73             OUString::createFromAscii( pImplName ),
74             DecryptorImpl_createInstance, DecryptorImpl_getSupportedServiceNames() ) );
75 
76         if (xFactory.is())
77         {
78             xFactory->acquire();
79             pRet = xFactory.get();
80         }
81     }
82 
83     //Encryptor
84     if ( pServiceManager && implName.equals(EncryptorImpl_getImplementationName()) )
85     {
86         Reference< XSingleServiceFactory > xFactory( createSingleFactory(
87             reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
88             OUString::createFromAscii( pImplName ),
89             EncryptorImpl_createInstance, EncryptorImpl_getSupportedServiceNames() ) );
90 
91         if (xFactory.is())
92         {
93             xFactory->acquire();
94             pRet = xFactory.get();
95         }
96     }
97 
98     //SignatureCreator
99     if ( pServiceManager && implName.equals(SignatureCreatorImpl_getImplementationName()) )
100     {
101         Reference< XSingleServiceFactory > xFactory( createSingleFactory(
102             reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
103             OUString::createFromAscii( pImplName ),
104             SignatureCreatorImpl_createInstance, SignatureCreatorImpl_getSupportedServiceNames() ) );
105 
106         if (xFactory.is())
107         {
108             xFactory->acquire();
109             pRet = xFactory.get();
110         }
111     }
112 
113     //SignatureVerifier
114     if ( pServiceManager && implName.equals(SignatureVerifierImpl_getImplementationName()) )
115     {
116         Reference< XSingleServiceFactory > xFactory( createSingleFactory(
117             reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
118             OUString::createFromAscii( pImplName ),
119             SignatureVerifierImpl_createInstance, SignatureVerifierImpl_getSupportedServiceNames() ) );
120 
121         if (xFactory.is())
122         {
123             xFactory->acquire();
124             pRet = xFactory.get();
125         }
126     }
127 
128     //SAXEventKeeper
129     if ( pServiceManager && implName.equals(SAXEventKeeperImpl_getImplementationName()) )
130     {
131         Reference< XSingleServiceFactory > xFactory( createSingleFactory(
132             reinterpret_cast< XMultiServiceFactory * >( pServiceManager ),
133             OUString::createFromAscii( pImplName ),
134             SAXEventKeeperImpl_createInstance, SAXEventKeeperImpl_getSupportedServiceNames() ) );
135 
136         if (xFactory.is())
137         {
138             xFactory->acquire();
139             pRet = xFactory.get();
140         }
141     }
142 
143     //XMLSignatureTemplate
144     if ( pServiceManager && implName.equals( XMLSignatureTemplateImpl::impl_getImplementationName()) )
145     {
146         Reference< XSingleServiceFactory > xFactory = XMLSignatureTemplateImpl::impl_createFactory(
147                 reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
148 
149         if (xFactory.is())
150         {
151             xFactory->acquire();
152             pRet = xFactory.get();
153         }
154     }
155 
156     //XMLEncryptionTemplate
157     if ( pServiceManager && implName.equals( XMLEncryptionTemplateImpl::impl_getImplementationName()) )
158     {
159         Reference< XSingleServiceFactory > xFactory = XMLEncryptionTemplateImpl::impl_createFactory(
160                 reinterpret_cast< XMultiServiceFactory* >( pServiceManager ) ) ;
161 
162         if (xFactory.is())
163         {
164             xFactory->acquire();
165             pRet = xFactory.get();
166         }
167     }
168 
169     return pRet;
170 }
171 }
172 
173 
174