xref: /trunk/main/xmlsecurity/source/framework/decryptorimpl.hxx (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 #ifndef _DECRYPTORIMPL_HXX
29 #define _DECRYPTORIMPL_HXX
30 
31 #include <com/sun/star/xml/crypto/sax/XDecryptionResultBroadcaster.hpp>
32 #include <com/sun/star/xml/crypto/sax/XDecryptionResultListener.hpp>
33 #include <com/sun/star/xml/crypto/XXMLSecurityContext.hpp>
34 #include <com/sun/star/lang/XInitialization.hpp>
35 #include <com/sun/star/lang/XServiceInfo.hpp>
36 #include <cppuhelper/implbase3.hxx>
37 
38 #include "encryptionengine.hxx"
39 
40 class DecryptorImpl : public cppu::ImplInheritanceHelper3
41 <
42     EncryptionEngine,
43     com::sun::star::xml::crypto::sax::XDecryptionResultBroadcaster,
44     com::sun::star::lang::XInitialization,
45     com::sun::star::lang::XServiceInfo
46 >
47 /****** DecryptorImpl.hxx/CLASS DecryptorImpl *********************************
48  *
49  *   NAME
50  *  DecryptorImpl -- decrypts an encryption
51  *
52  *   FUNCTION
53  *  Collects all resources for decrypting an encryption, then decrypts the
54  *  encryption by invoking a xmlsec-based encryption bridge component.
55  *
56  *   HISTORY
57  *  05.01.2004 -    Interface supported: XDecryptionResultBroadcaster,
58  *                  XInitialization, XServiceInfo
59  *
60  *   AUTHOR
61  *  Michael Mi
62  *  Email: michael.mi@sun.com
63  ******************************************************************************/
64 {
65 private:
66     /*
67      * the Id of the encryption, which is used for the result listener to
68      * identify the encryption.
69      */
70     sal_Int32 m_nEncryptionId;
71 
72     /*
73      * the decryption result,
74      * remembers whether the decryption succeeds.
75      */
76     bool      m_bDecryptionSucceed;
77 
78     com::sun::star::uno::Reference<
79         com::sun::star::xml::crypto::XXMLSecurityContext > m_xXMLSecurityContext;
80 
81     virtual void notifyResultListener() const
82         throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException);
83     virtual bool checkReady() const;
84     virtual void startEngine( const com::sun::star::uno::Reference<
85         com::sun::star::xml::crypto::XXMLEncryptionTemplate >&
86         xEncryptionTemplate)
87         throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException);
88 
89 public:
90     explicit DecryptorImpl( const com::sun::star::uno::Reference<
91         com::sun::star::lang::XMultiServiceFactory >& rxMSF);
92     virtual ~DecryptorImpl();
93 
94     /* XDecryptionResultBroadcaster */
95     virtual void SAL_CALL addDecryptionResultListener(
96         const com::sun::star::uno::Reference<
97             com::sun::star::xml::crypto::sax::XDecryptionResultListener >&
98             listener )
99             throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException);
100         virtual void SAL_CALL removeDecryptionResultListener(
101             const com::sun::star::uno::Reference<
102                 com::sun::star::xml::crypto::sax::XDecryptionResultListener >&
103                 listener )
104             throw (com::sun::star::uno::RuntimeException);
105 
106     /* XInitialization */
107     virtual void SAL_CALL initialize(
108         const com::sun::star::uno::Sequence< com::sun::star::uno::Any >& aArguments )
109         throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException);
110 
111     /* XServiceInfo */
112     virtual rtl::OUString SAL_CALL getImplementationName(  )
113         throw (com::sun::star::uno::RuntimeException);
114     virtual sal_Bool SAL_CALL supportsService( const rtl::OUString& ServiceName )
115         throw (com::sun::star::uno::RuntimeException);
116     virtual com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL getSupportedServiceNames(  )
117         throw (com::sun::star::uno::RuntimeException);
118 };
119 
120 rtl::OUString DecryptorImpl_getImplementationName()
121     throw ( com::sun::star::uno::RuntimeException );
122 
123 sal_Bool SAL_CALL DecryptorImpl_supportsService( const rtl::OUString& ServiceName )
124     throw ( com::sun::star::uno::RuntimeException );
125 
126 com::sun::star::uno::Sequence< rtl::OUString > SAL_CALL DecryptorImpl_getSupportedServiceNames(  )
127     throw ( com::sun::star::uno::RuntimeException );
128 
129 com::sun::star::uno::Reference< com::sun::star::uno::XInterface >
130 SAL_CALL DecryptorImpl_createInstance(
131     const com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >&
132         rSMgr)
133     throw ( com::sun::star::uno::Exception );
134 
135 #endif
136 
137