| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _SECURITYENGINE_HXX |
| #define _SECURITYENGINE_HXX |
| |
| #include <com/sun/star/xml/crypto/sax/XReferenceResolvedListener.hpp> |
| #include <com/sun/star/xml/crypto/sax/XReferenceResolvedBroadcaster.hpp> |
| #include <com/sun/star/xml/crypto/sax/XKeyCollector.hpp> |
| #include <com/sun/star/xml/crypto/sax/XMissionTaker.hpp> |
| #include <com/sun/star/xml/crypto/sax/XSAXEventKeeper.hpp> |
| #include <com/sun/star/xml/crypto/XXMLSignature.hpp> |
| |
| #include <cppuhelper/implbase3.hxx> |
| |
| class SecurityEngine : public cppu::WeakImplHelper3 |
| < |
| com::sun::star::xml::crypto::sax::XReferenceResolvedListener, |
| com::sun::star::xml::crypto::sax::XKeyCollector, |
| com::sun::star::xml::crypto::sax::XMissionTaker |
| > |
| /****** securityengine.hxx/CLASS SecurityEngine ******************************* |
| * |
| * NAME |
| * SecurityEngine -- Base class of SignatureEngine and EncryptionEngine |
| * |
| * FUNCTION |
| * Maintains common members and methods related with security engine |
| * operation. |
| * |
| * HISTORY |
| * 05.01.2004 - Interface supported: XReferenceResolvedListener, |
| * XKeyCollector, and XMissionTaker |
| * |
| * AUTHOR |
| * Michael Mi |
| * Email: michael.mi@sun.com |
| ******************************************************************************/ |
| { |
| protected: |
| com::sun::star::uno::Reference< |
| com::sun::star::lang::XMultiServiceFactory > mxMSF; |
| |
| /* |
| * A SAXEventKeeper internally maintians all resources that a security |
| * operation needs. The m_xSAXEventKeeper member is used to release |
| * those resources when the security operation finishes. |
| */ |
| com::sun::star::uno::Reference< |
| com::sun::star::xml::crypto::sax::XSAXEventKeeper > m_xSAXEventKeeper; |
| |
| /* |
| * the id of ElementCollector of the template element. |
| * For a signature, the template element is the Signature element, |
| * for a encryption, the EncryptedData/EncryptedKey element is. |
| */ |
| sal_Int32 m_nIdOfTemplateEC; |
| |
| /* |
| * remembers how many referenced elements have been bufferred completely, |
| * including the key element, template element, and referenced element of |
| * signature. |
| */ |
| sal_Int32 m_nNumOfResolvedReferences; |
| |
| /* |
| * the id of ElementCollector of the key element. |
| * If a Signature element or EncryptedData/EncryptedKey element has |
| * an internal key sub-element, then this member should be -1 |
| */ |
| sal_Int32 m_nIdOfKeyEC; |
| |
| /* |
| * remembers whether the current opertion has finished. |
| */ |
| bool m_bMissionDone; |
| |
| /* |
| * the Id of the security entity, a signature or encryption, which is used for |
| * the result listener to identify the entity. |
| */ |
| sal_Int32 m_nSecurityId; |
| |
| /* |
| * the status of the operation |
| */ |
| //bool m_bOperationSucceed; |
| com::sun::star::xml::crypto::SecurityOperationStatus m_nStatus; |
| |
| /* |
| * the result listener, which will receives the security operation result. |
| */ |
| com::sun::star::uno::Reference< |
| com::sun::star::uno::XInterface > |
| m_xResultListener; |
| |
| protected: |
| explicit SecurityEngine( const com::sun::star::uno::Reference< |
| com::sun::star::lang::XMultiServiceFactory >& rxMSF = NULL ); |
| virtual ~SecurityEngine() {}; |
| |
| /* |
| * perform the security operation. |
| * Any derived class will implement this method respectively. |
| */ |
| virtual void tryToPerform( ) |
| throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException){}; |
| |
| /* |
| * clear up all resources used by this operation. |
| * This method is called after the operation finishes, or a End-Your-Mission |
| * message is received. |
| * Any derived class will implement this method respectively. |
| */ |
| virtual void clearUp( ) const {}; |
| |
| /* |
| * notifies any possible result listener. |
| * When verify a signature or conduct a decryption, the operation result will |
| * be transferred to a listener by this method. |
| * Any derived class will implement this method respectively. |
| */ |
| virtual void notifyResultListener() const |
| throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException) |
| {}; |
| |
| /* |
| * checks whether everything is ready. |
| * Any derived class will implement this method respectively. |
| */ |
| virtual bool checkReady() const { return true; }; |
| |
| public: |
| /* XReferenceResolvedListener */ |
| virtual void SAL_CALL referenceResolved( sal_Int32 referenceId ) |
| throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException); |
| |
| /* XKeyCollector */ |
| virtual void SAL_CALL setKeyId( sal_Int32 id ) |
| throw (com::sun::star::uno::Exception, com::sun::star::uno::RuntimeException); |
| |
| /* XMissionTaker */ |
| virtual sal_Bool SAL_CALL endMission( ) |
| throw (com::sun::star::uno::RuntimeException); |
| }; |
| |
| #endif |
| |