Botan  1.11.15
Public Types | Public Member Functions
Botan::TLS::Heartbeat_Message Class Reference

#include <tls_heartbeats.h>

List of all members.

Public Types

enum  Type { REQUEST = 1, RESPONSE = 2 }

Public Member Functions

std::vector< bytecontents () const
 Heartbeat_Message (const std::vector< byte > &buf)
 Heartbeat_Message (Type type, const byte payload[], size_t payload_len, const std::vector< byte > &padding)
bool is_request () const
const std::vector< byte > & payload () const

Detailed Description

TLS Heartbeat message

Definition at line 20 of file tls_heartbeats.h.


Member Enumeration Documentation

Enumerator:
REQUEST 
RESPONSE 

Definition at line 23 of file tls_heartbeats.h.

{ REQUEST = 1, RESPONSE = 2 };

Constructor & Destructor Documentation

Botan::TLS::Heartbeat_Message::Heartbeat_Message ( const std::vector< byte > &  buf)

Definition at line 17 of file tls_heartbeats.cpp.

References Botan::TLS::TLS_Data_Reader::get_byte(), Botan::TLS::TLS_Data_Reader::get_range(), Botan::TLS::TLS_Data_Reader::get_remaining(), and Botan::TLS::Alert::ILLEGAL_PARAMETER.

   {
   TLS_Data_Reader reader("Heartbeat", buf);

   const byte type = reader.get_byte();

   if(type != 1 && type != 2)
      throw TLS_Exception(Alert::ILLEGAL_PARAMETER,
                          "Unknown heartbeat message type");

   m_type = static_cast<Type>(type);

   m_payload = reader.get_range<byte>(2, 0, 16*1024);

   m_padding = reader.get_remaining();

   if(m_padding.size() < 16)
      throw Decoding_Error("Invalid heartbeat padding");
   }
Botan::TLS::Heartbeat_Message::Heartbeat_Message ( Type  type,
const byte  payload[],
size_t  payload_len,
const std::vector< byte > &  padding 
)

Definition at line 37 of file tls_heartbeats.cpp.

                                                                     :
   m_type(type),
   m_payload(payload, payload + payload_len),
   m_padding(padding)
   {
   if(payload_len >= 64*1024)
      throw std::runtime_error("Heartbeat payload too long");
   if(m_padding.size() < 16)
      throw std::runtime_error("Invalid heartbeat padding length");
   }

Member Function Documentation

Definition at line 51 of file tls_heartbeats.cpp.

Referenced by Botan::TLS::Channel::heartbeat().

   {
   //std::vector<byte> send_buf(3 + m_payload.size() + 16);
   std::vector<byte> send_buf;
   send_buf.reserve(3 + m_payload.size() + m_padding.size());

   send_buf.push_back(m_type);
   send_buf.push_back(get_byte<u16bit>(0, m_payload.size()));
   send_buf.push_back(get_byte<u16bit>(1, m_payload.size()));
   send_buf += m_payload;
   send_buf += m_padding;

   return send_buf;
   }

Definition at line 29 of file tls_heartbeats.h.

References REQUEST.

Referenced by Botan::TLS::Channel::received_data().

{ return m_type == REQUEST; }
const std::vector<byte>& Botan::TLS::Heartbeat_Message::payload ( ) const [inline]

Definition at line 27 of file tls_heartbeats.h.

Referenced by Botan::TLS::Channel::received_data().

{ return m_payload; }

The documentation for this class was generated from the following files: