Mixe for Privacy and Anonymity in the Internet
CAAbstractXMLSignable.hpp
Go to the documentation of this file.
00001 #ifndef __CAABSTRACTXMLSIGNABLE__
00002 #define __CAABSTRACTXMLSIGNABLE__
00003 
00004 #ifndef ONLY_LOCAL_PROXY
00005 
00006 #include "CAAbstractXMLEncodable.hpp"
00007 #include "CACertStore.hpp"
00008 #include "CASignature.hpp"
00009 #include "CAMsg.hpp"
00010 #include "xml/DOM_Output.hpp"
00011 
00017 class CAAbstractXMLSignable : public CAAbstractXMLEncodable
00018 {
00019 public:
00020   CAAbstractXMLSignable() : CAAbstractXMLEncodable()
00021   {
00022     m_pSignature = NULL;
00023   }
00024 
00025   virtual ~CAAbstractXMLSignable()
00026   {
00027     if(m_pSignature!=NULL)
00028     {
00029       m_pSignature->release();
00030       m_pSignature = NULL;
00031     }
00032   }
00033 
00035   SINT32 sign(CASignature &)
00036     {
00037       return E_UNKNOWN;
00038     }
00039 
00043   /*SINT32 verifySignature(CASignature &verifier)
00044     {
00045       //ASSERT(verifier!=NULL, "sigVerifier is NULL");
00046       XERCES_CPP_NAMESPACE::DOMDocument* pDoc=NULL;
00047       toXmlDocument(pDoc);
00048       DOMElement* pElemRoot = pDoc->getDocumentElement();
00049       SINT32 rc = verifier.verifyXML( pElemRoot, (CACertStore *)NULL );
00050       if(pDoc != NULL)
00051       {
00052         pDoc->release();
00053       }
00054       return rc;
00055     }*/
00056 
00061   SINT32 setSignature(DOMElement* elemSig)
00062     {
00063       ASSERT(!elemSig==NULL, "Signature element is NULL")
00064       m_pSignature = createDOMDocument();
00065       m_pSignature->appendChild(m_pSignature->importNode(elemSig, true));
00066       return E_SUCCESS;
00067     }
00068 
00070   SINT32 isSigned()
00071     {
00072       if(m_pSignature!=NULL)
00073       {
00074         return true;
00075       }
00076       else
00077       {
00078         return false;
00079       }
00080     }
00081 
00082 protected:
00083   XERCES_CPP_NAMESPACE::DOMDocument* m_pSignature;
00084 };
00085 
00086 #endif //ONLY_LOCAL_PROXY
00087 #endif