00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef PAYLOAD_AUTH_H
00022 #define PAYLOAD_AUTH_H
00023
00024 #ifdef HAVE_CONFIG_H
00025 #include "config.h"
00026 #endif
00027
00028 #include "payload.h"
00029 #include "payload_id.h"
00030 #include "certificate.h"
00031 #include "pseudorandomfunction.h"
00032
00033 namespace openikev2 {
00034
00039 class Payload_AUTH : public Payload {
00040
00041
00042 protected:
00043 auto_ptr<ByteArray> auth_field;
00044 public:
00045 Enums::AUTH_METHOD auth_method;
00047
00048 protected:
00058 auto_ptr<ByteArray> generateAuthData(ByteArray& message, ByteArray& nonce, Payload_ID& payload_id, PseudoRandomFunction& prf, ByteArray& prf_key);
00059
00060 public:
00070 Payload_AUTH( ByteArray& message, ByteArray& nonce, Payload_ID& payload_id, PseudoRandomFunction& prf, ByteArray& prf_key, ByteArray& psk );
00071
00075 Payload_AUTH( );
00076
00086 Payload_AUTH( ByteArray& message, ByteArray& nonce, Payload_ID& payload_id, PseudoRandomFunction& prf, ByteArray& prf_key, Certificate& certificate );
00087
00092 Payload_AUTH( const Payload_AUTH& other);
00093
00098 Payload_AUTH( ByteBuffer& byte_buffer );
00099
00110 bool verifyAuthField(ByteArray& message, ByteArray& nonce, Payload_ID& payload_id, PseudoRandomFunction& prf, ByteArray& prf_key, ByteArray& psk);
00111
00122 bool verifyAuthField(ByteArray& message, ByteArray& nonce, Payload_ID& payload_id, PseudoRandomFunction& prf, ByteArray& prf_key, Certificate& certificate);
00123
00129 virtual bool operator==( const Payload_AUTH &other ) const;
00130
00131 virtual void getBinaryRepresentation( ByteBuffer& byte_buffer ) const;
00132
00133 virtual string toStringTab( uint8_t tabs ) const ;
00134
00135 virtual auto_ptr<Payload> clone() const;
00136
00137 virtual ~Payload_AUTH();
00138 };
00139 }
00140
00141 #endif