libtins  3.4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
Classes | Public Types | Public Member Functions | Static Public Attributes | List of all members
Tins::RSNEAPOL Class Reference

Class that represents the RSN EAPOL PDU. More...

#include <eapol.h>

Inheritance diagram for Tins::RSNEAPOL:
Tins::EAPOL Tins::PDU

Public Types

typedef std::vector< uint8_t > key_type
 
- Public Types inherited from Tins::EAPOL
enum  EAPOLTYPE { RC4 = 1, RSN, EAPOL_WPA = 254 }
 
- Public Types inherited from Tins::PDU
enum  endian_type { BE, LE }
 
enum  PDUType {
  RAW, ETHERNET_II, IEEE802_3, DOT3 = IEEE802_3,
  RADIOTAP, DOT11, DOT11_ACK, DOT11_ASSOC_REQ,
  DOT11_ASSOC_RESP, DOT11_AUTH, DOT11_BEACON, DOT11_BLOCK_ACK,
  DOT11_BLOCK_ACK_REQ, DOT11_CF_END, DOT11_DATA, DOT11_CONTROL,
  DOT11_DEAUTH, DOT11_DIASSOC, DOT11_END_CF_ACK, DOT11_MANAGEMENT,
  DOT11_PROBE_REQ, DOT11_PROBE_RESP, DOT11_PS_POLL, DOT11_REASSOC_REQ,
  DOT11_REASSOC_RESP, DOT11_RTS, DOT11_QOS_DATA, LLC,
  SNAP, IP, ARP, TCP,
  UDP, ICMP, BOOTP, DHCP,
  EAPOL, RC4EAPOL, RSNEAPOL, DNS,
  LOOPBACK, IPv6, ICMPv6, SLL,
  DHCPv6, DOT1Q, PPPOE, STP,
  PPI, IPSEC_AH, IPSEC_ESP, PKTAP,
  MPLS, UNKNOWN = 999, USER_DEFINED_PDU = 1000
}
 Enum which identifies each type of PDU. More...
 
typedef byte_array serialization_type
 

Public Member Functions

 RSNEAPOL ()
 Creates an instance of RSNEAPOL.
 
 RSNEAPOL (const uint8_t *buffer, uint32_t total_sz)
 Constructs a RSNEAPOL object from a buffer. More...
 
uint16_t key_length () const
 Getter for the key length field. More...
 
uint64_t replay_counter () const
 Getter for the replay counter field. More...
 
const uint8_t * key_iv () const
 Getter for the key IV field. More...
 
const uint8_t * nonce () const
 Getter for the nonce field. More...
 
const uint8_t * rsc () const
 Getter for the rsc field. More...
 
const uint8_t * id () const
 Getter for the id field. More...
 
const uint8_t * mic () const
 Getter for the mic field. More...
 
uint16_t wpa_length () const
 Getter for the wpa length field. More...
 
const key_typekey () const
 Getter for the key field. More...
 
small_uint< 1 > key_mic () const
 Getter for the key mic field. More...
 
small_uint< 1 > secure () const
 Getter for the secure field. More...
 
small_uint< 1 > error () const
 Getter for the error field. More...
 
small_uint< 1 > request () const
 Getter for the request field. More...
 
small_uint< 1 > encrypted () const
 Getter for the encrypted field. More...
 
small_uint< 3 > key_descriptor () const
 Getter for the key descriptor field. More...
 
small_uint< 1 > key_t () const
 Getter for the key type field. More...
 
small_uint< 2 > key_index () const
 Getter for the key_index field. More...
 
small_uint< 1 > install () const
 Getter for the install field. More...
 
small_uint< 1 > key_ack () const
 Getter for the key_ack field. More...
 
uint32_t header_size () const
 Returns the header size. More...
 
void key_length (uint16_t value)
 Sets the key length field. More...
 
void replay_counter (uint64_t value)
 Sets the replay counter field. More...
 
void key_iv (const uint8_t *ptr)
 Sets the key IV field. More...
 
void nonce (const uint8_t *ptr)
 Sets the nonce field. More...
 
void rsc (const uint8_t *ptr)
 Sets the rsc field. More...
 
void id (const uint8_t *ptr)
 Sets the id field. More...
 
void mic (const uint8_t *ptr)
 Sets the mic field. More...
 
void wpa_length (uint16_t length)
 Sets the wpa length field. More...
 
void key (const key_type &value)
 Sets the key field. More...
 
void key_mic (small_uint< 1 > value)
 Setter for the key_mic field. More...
 
void secure (small_uint< 1 > value)
 Setter for the secure field. More...
 
void error (small_uint< 1 > flag)
 Setter for the error field. More...
 
void request (small_uint< 1 > flag)
 Setter for the request field. More...
 
void encrypted (small_uint< 1 > flag)
 Setter for the encrypted field. More...
 
void key_descriptor (small_uint< 3 > value)
 Setter for the key_descriptor field. More...
 
void key_t (small_uint< 1 > flag)
 Setter for the key_t field. More...
 
void key_index (small_uint< 2 > value)
 Setter for the key_index field. More...
 
void install (small_uint< 1 > flag)
 Setter for the install field. More...
 
void key_ack (small_uint< 1 > flag)
 Setter for the key_ack field. More...
 
PDUType pdu_type () const
 Getter for the PDU's type. More...
 
bool matches_flag (PDUType flag) const
 Check whether this PDU matches the specified flag. More...
 
RSNEAPOLclone () const
 Clones this PDU. More...
 
- Public Member Functions inherited from Tins::EAPOL
uint8_t version () const
 Getter for the version field. More...
 
uint8_t packet_type () const
 Getter for the packet type field. More...
 
uint16_t length () const
 Getter for the length field. More...
 
uint8_t type () const
 Getter for the type field. More...
 
void version (uint8_t value)
 Sets the version field. More...
 
void packet_type (uint8_t value)
 Sets the packet type field. More...
 
void length (uint16_t value)
 Sets the length field. More...
 
void type (uint8_t value)
 Sets the type field. More...
 
- Public Member Functions inherited from Tins::PDU
 PDU ()
 Default constructor.
 
 PDU (PDU &&rhs) TINS_NOEXCEPT
 Move constructor. More...
 
PDUoperator= (PDU &&rhs) TINS_NOEXCEPT
 Move assignment operator. More...
 
virtual ~PDU ()
 PDU destructor. More...
 
virtual uint32_t trailer_size () const
 Trailer's size. More...
 
uint32_t size () const
 The whole chain of PDU's size, including this one. More...
 
PDUinner_pdu () const
 Getter for the inner PDU. More...
 
PDUrelease_inner_pdu ()
 Releases the inner PDU. More...
 
void inner_pdu (PDU *next_pdu)
 Sets the child PDU. More...
 
void inner_pdu (const PDU &next_pdu)
 Sets the child PDU. More...
 
serialization_type serialize ()
 Serializes the whole chain of PDU's, including this one. More...
 
template<typename T >
T * find_pdu (PDUType type=T::pdu_flag)
 Finds and returns the first PDU that matches the given flag. More...
 
template<typename T >
const T * find_pdu (PDUType type=T::pdu_flag) const
 Finds and returns the first PDU that matches the given flag. More...
 
template<typename T >
T & rfind_pdu (PDUType type=T::pdu_flag)
 Finds and returns the first PDU that matches the given flag. More...
 
template<typename T >
const T & rfind_pdu (PDUType type=T::pdu_flag) const
 Finds and returns the first PDU that matches the given flag. More...
 
virtual void send (PacketSender &sender, const NetworkInterface &iface)
 Send the stack of PDUs through a PacketSender. More...
 
virtual PDUrecv_response (PacketSender &sender, const NetworkInterface &iface)
 Receives a matching response for this packet. More...
 
virtual bool matches_response (const uint8_t *ptr, uint32_t total_sz) const
 Check whether ptr points to a valid response for this PDU. More...
 

Static Public Attributes

static const PDU::PDUType pdu_flag = PDU::RSNEAPOL
 This PDU's flag.
 
static const size_t key_iv_size = 16
 
static const size_t nonce_size = 32
 
static const size_t mic_size = 16
 
static const size_t rsc_size = 8
 
static const size_t id_size = 8
 
- Static Public Attributes inherited from Tins::EAPOL
static const PDU::PDUType pdu_flag = PDU::EAPOL
 This PDU's flag.
 
- Static Public Attributes inherited from Tins::PDU
static const endian_type endianness = BE
 

Additional Inherited Members

- Static Public Member Functions inherited from Tins::EAPOL
static metadata extract_metadata (const uint8_t *buffer, uint32_t total_sz)
 Extracts metadata for this protocol based on the buffer provided. More...
 
static EAPOLfrom_bytes (const uint8_t *buffer, uint32_t total_sz)
 Static method to instantiate the correct EAPOL subclass based on a raw buffer. More...
 
- Protected Member Functions inherited from Tins::EAPOL
 EAPOL (uint8_t packet_type, EAPOLTYPE type)
 Protected constructor that sets the packet_type and type fields.
 
 EAPOL (const uint8_t *buffer, uint32_t total_sz)
 Constructor which creates an EAPOL object from a buffer. More...
 
- Protected Member Functions inherited from Tins::PDU
 PDU (const PDU &other)
 Copy constructor.
 
PDUoperator= (const PDU &other)
 Copy assignment operator.
 
void copy_inner_pdu (const PDU &pdu)
 Copy other PDU's inner PDU(if any). More...
 
virtual void prepare_for_serialize (const PDU *parent)
 Prepares this PDU for serialization. More...
 
void serialize (uint8_t *buffer, uint32_t total_sz, const PDU *parent)
 Serializes this PDU and propagates this action to child PDUs. More...
 
- Protected Attributes inherited from Tins::EAPOL
TINS_BEGIN_PACK struct
Tins::EAPOL::eapol_header 
TINS_END_PACK
 

Detailed Description

Class that represents the RSN EAPOL PDU.

Member Typedef Documentation

typedef std::vector<uint8_t> Tins::RSNEAPOL::key_type

The type used to store the key.

Constructor & Destructor Documentation

Tins::RSNEAPOL::RSNEAPOL ( const uint8_t *  buffer,
uint32_t  total_sz 
)

Constructs a RSNEAPOL object from a buffer.

If there is not enough size for the RSNEAPOL header, a malformed_packet exception is thrown.

Parameters
bufferThe buffer from which this PDU will be constructed.
total_szThe total size of the buffer.

Member Function Documentation

RSNEAPOL* Tins::RSNEAPOL::clone ( ) const
inlinevirtual

Clones this PDU.

See Also
PDU::clone

Implements Tins::PDU.

small_uint<1> Tins::RSNEAPOL::encrypted ( ) const
inline

Getter for the encrypted field.

Returns
The encrypted field.
void Tins::RSNEAPOL::encrypted ( small_uint< 1 >  flag)

Setter for the encrypted field.

Parameters
flagThe new to be set.
small_uint<1> Tins::RSNEAPOL::error ( ) const
inline

Getter for the error field.

Returns
The error field.
void Tins::RSNEAPOL::error ( small_uint< 1 >  flag)

Setter for the error field.

Parameters
flagThe new to be set.
uint32_t Tins::RSNEAPOL::header_size ( ) const
virtual

Returns the header size.

This method overrides PDU::header_size. This size includes the payload and options size.

See Also
PDU::header_size

Implements Tins::PDU.

const uint8_t* Tins::RSNEAPOL::id ( ) const
inline

Getter for the id field.

Returns
The id field.
void Tins::RSNEAPOL::id ( const uint8_t *  ptr)

Sets the id field.

The pointer has to contain at least id_size bytes. The pointer's contents will be copied.

Parameters
ptrThe new id to be set.
small_uint<1> Tins::RSNEAPOL::install ( ) const
inline

Getter for the install field.

Returns
The install field.
void Tins::RSNEAPOL::install ( small_uint< 1 >  flag)

Setter for the install field.

Parameters
flagThe new to be set.
const key_type& Tins::RSNEAPOL::key ( ) const
inline

Getter for the key field.

Returns
The key field.
void Tins::RSNEAPOL::key ( const key_type value)

Sets the key field.

Parameters
valueThe new key to be set.
small_uint<1> Tins::RSNEAPOL::key_ack ( ) const
inline

Getter for the key_ack field.

Returns
The key_ack field.
void Tins::RSNEAPOL::key_ack ( small_uint< 1 >  flag)

Setter for the key_ack field.

Parameters
flagThe new to be set.
small_uint<3> Tins::RSNEAPOL::key_descriptor ( ) const
inline

Getter for the key descriptor field.

Returns
The key descriptor field.
void Tins::RSNEAPOL::key_descriptor ( small_uint< 3 >  value)

Setter for the key_descriptor field.

Parameters
valueThe new to be set.
small_uint<2> Tins::RSNEAPOL::key_index ( ) const
inline

Getter for the key_index field.

Returns
The key_index field.
void Tins::RSNEAPOL::key_index ( small_uint< 2 >  value)

Setter for the key_index field.

Parameters
valueThe new to be set.
const uint8_t* Tins::RSNEAPOL::key_iv ( ) const
inline

Getter for the key IV field.

Returns
The key IV field.
void Tins::RSNEAPOL::key_iv ( const uint8_t *  ptr)

Sets the key IV field.

The input pointer has to contain at least key_iv_size bytes. The IV will be copied into this PDU.

Parameters
ptrThe new key IV to be set.
uint16_t Tins::RSNEAPOL::key_length ( ) const
inline

Getter for the key length field.

Returns
The key length field.
void Tins::RSNEAPOL::key_length ( uint16_t  value)

Sets the key length field.

Parameters
valueThe new key length to be set.
small_uint<1> Tins::RSNEAPOL::key_mic ( ) const
inline

Getter for the key mic field.

Returns
1 if this EAPOL PDU contains a valid MIC, 0 otherwise.
void Tins::RSNEAPOL::key_mic ( small_uint< 1 >  value)

Setter for the key_mic field.

Parameters
valueThe new to be set.
small_uint<1> Tins::RSNEAPOL::key_t ( ) const
inline

Getter for the key type field.

Returns
1 if this is a pairwise key, 0 otherwise.
void Tins::RSNEAPOL::key_t ( small_uint< 1 >  flag)

Setter for the key_t field.

Parameters
flagThe new to be set.
bool Tins::RSNEAPOL::matches_flag ( PDUType  flag) const
inlinevirtual

Check whether this PDU matches the specified flag.

Parameters
flagThe flag to match
See Also
PDU::matches_flag

Reimplemented from Tins::PDU.

const uint8_t* Tins::RSNEAPOL::mic ( ) const
inline

Getter for the mic field.

Returns
The mic field.
void Tins::RSNEAPOL::mic ( const uint8_t *  ptr)

Sets the mic field.

The pointer has to contain at least mic_size bytes. The pointer's contents will be copied.

Parameters
ptrThe new mic to be set.
const uint8_t* Tins::RSNEAPOL::nonce ( ) const
inline

Getter for the nonce field.

Returns
The nonce field.
void Tins::RSNEAPOL::nonce ( const uint8_t *  ptr)

Sets the nonce field.

The pointer has to contain at least nonce_size bytes. The pointer's contents will be copied.

Parameters
ptrThe new nonce to be set.
PDUType Tins::RSNEAPOL::pdu_type ( ) const
inlinevirtual

Getter for the PDU's type.

Returns
Returns the PDUType corresponding to the PDU.

Reimplemented from Tins::EAPOL.

uint64_t Tins::RSNEAPOL::replay_counter ( ) const
inline

Getter for the replay counter field.

Returns
The replay counter field.
void Tins::RSNEAPOL::replay_counter ( uint64_t  value)

Sets the replay counter field.

Parameters
valueThe new replay counter to be set.
small_uint<1> Tins::RSNEAPOL::request ( ) const
inline

Getter for the request field.

Returns
The request field.
void Tins::RSNEAPOL::request ( small_uint< 1 >  flag)

Setter for the request field.

Parameters
flagThe new to be set.
const uint8_t* Tins::RSNEAPOL::rsc ( ) const
inline

Getter for the rsc field.

Returns
The rsc field.
void Tins::RSNEAPOL::rsc ( const uint8_t *  ptr)

Sets the rsc field.

The pointer has to contain at least rsc_size bytes. The pointer's contents will be copied.

Parameters
ptrThe new rsc to be set.
small_uint<1> Tins::RSNEAPOL::secure ( ) const
inline

Getter for the secure field.

Returns
The secure field.
void Tins::RSNEAPOL::secure ( small_uint< 1 >  value)

Setter for the secure field.

Parameters
valueThe new to be set.
uint16_t Tins::RSNEAPOL::wpa_length ( ) const
inline

Getter for the wpa length field.

Returns
The wpa length field.
void Tins::RSNEAPOL::wpa_length ( uint16_t  length)

Sets the wpa length field.

Parameters
lengthThe new wpa length to be set.

Member Data Documentation

const size_t Tins::RSNEAPOL::id_size = 8
static

The length of the id field

const size_t Tins::RSNEAPOL::key_iv_size = 16
static

The length of the key IV field

const size_t Tins::RSNEAPOL::mic_size = 16
static

The length of the mic field

const size_t Tins::RSNEAPOL::nonce_size = 32
static

The length of the nonce field

const size_t Tins::RSNEAPOL::rsc_size = 8
static

The length of the rsc field


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