00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "gpgsigned.h"
00015 #include "tag.h"
00016
00017 namespace gloox
00018 {
00019
00020 GPGSigned::GPGSigned( const std::string& signature )
00021 : StanzaExtension( ExtGPGSigned ),
00022 m_signature( signature ), m_valid( true )
00023 {
00024 if( m_signature.empty() )
00025 m_valid = false;
00026 }
00027
00028 GPGSigned::GPGSigned( const Tag* tag )
00029 : StanzaExtension( ExtGPGSigned ),
00030 m_valid( false )
00031 {
00032 if( tag && tag->name() == "x" && tag->hasAttribute( XMLNS, XMLNS_X_GPGSIGNED ) )
00033 {
00034 m_valid = true;
00035 m_signature = tag->cdata();
00036 }
00037 }
00038
00039 GPGSigned::~GPGSigned()
00040 {
00041 }
00042
00043 const std::string& GPGSigned::filterString() const
00044 {
00045 static const std::string filter =
00046 "/presence/x[@xmlns='" + XMLNS_X_GPGSIGNED + "']"
00047 "|/message/x[@xmlns='" + XMLNS_X_GPGSIGNED + "']";
00048 return filter;
00049 }
00050
00051 Tag* GPGSigned::tag() const
00052 {
00053 if( !m_valid )
00054 return 0;
00055
00056 Tag* x = new Tag( "x", m_signature );
00057 x->addAttribute( XMLNS, XMLNS_X_GPGSIGNED );
00058
00059 return x;
00060 }
00061
00062 }