![]() |
Kea 3.1.1
|
#include <client_message.h>
Public Member Functions | |
Message (const Message &other) | |
Copy constructor. | |
Message (const std::vector< uint8_t > &buffer, const std::vector< uint8_t > &auth, const std::string &secret) | |
Constructor. | |
Message (const uint8_t code, uint16_t length, const std::vector< uint8_t > &auth, const std::string &secret, const AttributesPtr &attributes) | |
Constructor. | |
virtual | ~Message () |
Destructor. | |
void | decode () |
Decode a message. | |
std::vector< uint8_t > | encode () |
Encode a message. | |
AttributesPtr | getAttributes () const |
Get attributes. | |
std::vector< uint8_t > | getAuth () const |
Get authenticator. | |
std::vector< uint8_t > | getBuffer () const |
Get buffer. | |
uint8_t | getCode () const |
Get code. | |
uint8_t | getIdentifier () const |
Get identifier. | |
uint16_t | getLength () const |
Get length. | |
std::string | getSecret () const |
Get secret. | |
void | randomAuth () |
Randomize authenticator. | |
void | randomIdentifier () |
Randomize identifier. | |
void | setAttributes (const AttributesPtr &attributes) |
Set attributes. | |
void | setAuth (const std::vector< uint8_t > &auth) |
Set authenticator. | |
void | setBuffer (const std::vector< uint8_t > &buffer) |
Set buffer. | |
void | setCode (const uint8_t code) |
Set code. | |
void | setIdentifier (const uint8_t identifier) |
Set identifier. | |
void | setLength (const uint16_t length) |
Set length. | |
void | setSecret (const std::string &secret) |
Set secret. | |
void | zeroAuth () |
Fill authenticator with 0. | |
Static Public Member Functions | |
static const std::vector< uint8_t > | ZERO_AUTH () |
Build a zero authenticator. | |
Protected Member Functions | |
ConstAttributePtr | decodeUserPassword (const ConstAttributePtr &attr) |
Decode User-Password in an Access-Request. | |
ConstAttributePtr | encodeUserPassword (const ConstAttributePtr &attr) |
Encode User-Password in an Access-Request. | |
Protected Attributes | |
AttributesPtr | attributes_ |
Attributes: header[20]... | |
std::vector< uint8_t > | auth_ |
Authenticator: header[4] (16 octets). | |
std::vector< uint8_t > | buffer_ |
Buffer (message content). | |
uint8_t | code_ |
Code (useful values in MsgCode): header[0]. | |
uint8_t | identifier_ |
Identifier (random): header[1]. | |
uint16_t | length_ |
Length: header[2] (16 bits, network order). | |
std::string | secret_ |
Secret (not empty). | |
RADIUS Message.
Definition at line 55 of file client_message.h.
isc::radius::Message::Message | ( | const uint8_t | code, |
uint16_t | length, | ||
const std::vector< uint8_t > & | auth, | ||
const std::string & | secret, | ||
const AttributesPtr & | attributes ) |
Constructor.
To be used to send a message.
code message code.
length message length (0 to be computed).
auth authenticator (16 octets).
secret associated secret (not empty).
attributes attributes.
Definition at line 63 of file client_message.cc.
References attributes_, auth_, buffer_, code_, length_, and secret_.
isc::radius::Message::Message | ( | const Message & | other | ) |
Copy constructor.
Copy attributes.
other message to copy.
Definition at line 70 of file client_message.cc.
References Message(), attributes_, auth_, buffer_, code_, length_, and secret_.
isc::radius::Message::Message | ( | const std::vector< uint8_t > & | buffer, |
const std::vector< uint8_t > & | auth, | ||
const std::string & | secret ) |
Constructor.
To be used on message reception.
buffer | buffer containing the message. |
auth | authenticator (16 octets). |
secret | associated secret (not empty). |
Definition at line 86 of file client_message.cc.
References Message(), attributes_, auth_, buffer_, code_, length_, and secret_.
|
virtual |
Destructor.
Destroy the secret.
Definition at line 93 of file client_message.cc.
References secret_.
void isc::radius::Message::decode | ( | ) |
Decode a message.
an | exception when something goes wrong. |
Definition at line 197 of file client_message.cc.
References attributes_, auth_, buffer_, code_, decodeUserPassword(), isc::cryptolink::digest(), isc::radius::Attribute::fromBytes(), isc::cryptolink::CryptoLink::getCryptoLink(), identifier_, isc::radius::AttrDefs::instance(), isc_throw, length_, LOG_DEBUG, isc::cryptolink::MD5, isc::radius::msgCodeToText(), isc::radius::PW_ACCESS_REQUEST, isc::radius::PW_USER_PASSWORD, isc::radius::RADIUS_DBG_TRACE, isc::radius::RADIUS_DECODE_MESSAGE, isc::radius::radius_logger, and secret_.
|
protected |
Decode User-Password in an Access-Request.
attr | the User-Password attribute. |
Definition at line 341 of file client_message.cc.
References auth_, isc::cryptolink::digest(), isc::radius::Attribute::fromBinary(), isc::cryptolink::CryptoLink::getCryptoLink(), isc_throw, isc::cryptolink::MD5, isc::radius::PW_TYPE_STRING, isc::radius::PW_USER_PASSWORD, and secret_.
Referenced by decode().
vector< uint8_t > isc::radius::Message::encode | ( | ) |
Encode a message.
an | exception when something goes wrong. |
Definition at line 140 of file client_message.cc.
References attributes_, auth_, buffer_, code_, encodeUserPassword(), isc::cryptolink::CryptoLink::getCryptoLink(), identifier_, isc_throw, length_, LOG_DEBUG, isc::cryptolink::MD5, isc::radius::msgCodeToText(), isc::radius::PW_ACCESS_REQUEST, isc::radius::PW_USER_PASSWORD, isc::radius::RADIUS_DBG_TRACE, isc::radius::RADIUS_ENCODE_MESSAGE, isc::radius::radius_logger, and secret_.
|
protected |
Encode User-Password in an Access-Request.
attr | the User-Password attribute. |
Definition at line 298 of file client_message.cc.
References auth_, isc::cryptolink::digest(), isc::radius::Attribute::fromBinary(), isc::cryptolink::CryptoLink::getCryptoLink(), isc_throw, isc::cryptolink::MD5, isc::radius::PW_TYPE_STRING, isc::radius::PW_USER_PASSWORD, and secret_.
Referenced by encode().
|
inline |
Get attributes.
Definition at line 179 of file client_message.h.
References attributes_.
|
inline |
Get authenticator.
Definition at line 150 of file client_message.h.
References auth_.
|
inline |
Get buffer.
Definition at line 193 of file client_message.h.
References buffer_.
|
inline |
|
inline |
Get identifier.
Definition at line 119 of file client_message.h.
References identifier_.
|
inline |
Get length.
Definition at line 136 of file client_message.h.
References length_.
|
inline |
void isc::radius::Message::randomAuth | ( | ) |
Randomize authenticator.
Definition at line 124 of file client_message.cc.
References auth_, isc_throw, and isc::cryptolink::random().
void isc::radius::Message::randomIdentifier | ( | ) |
Randomize identifier.
Definition at line 101 of file client_message.cc.
References identifier_, isc_throw, and isc::cryptolink::random().
|
inline |
Set attributes.
attributes | new attributes. |
Definition at line 186 of file client_message.h.
References attributes_.
void isc::radius::Message::setAuth | ( | const std::vector< uint8_t > & | auth | ) |
Set authenticator.
auth | new authenticator (must have 16 octets). |
Definition at line 110 of file client_message.cc.
|
inline |
Set buffer.
buffer | new message content. |
Definition at line 200 of file client_message.h.
References buffer_.
|
inline |
Set code.
code | new code. |
Definition at line 112 of file client_message.h.
References code_.
|
inline |
Set identifier.
identifier | new identifier. |
Definition at line 126 of file client_message.h.
References identifier_.
|
inline |
Set length.
length | new length. |
Definition at line 143 of file client_message.h.
References length_.
void isc::radius::Message::setSecret | ( | const std::string & | secret | ) |
Set secret.
secret | new secret (not empty). |
Definition at line 132 of file client_message.cc.
|
inlinestatic |
Build a zero authenticator.
Definition at line 60 of file client_message.h.
void isc::radius::Message::zeroAuth | ( | ) |
|
protected |
Attributes: header[20]...
Definition at line 244 of file client_message.h.
Referenced by Message(), Message(), Message(), decode(), encode(), getAttributes(), and setAttributes().
|
protected |
Authenticator: header[4] (16 octets).
Definition at line 238 of file client_message.h.
Referenced by Message(), Message(), Message(), decode(), decodeUserPassword(), encode(), encodeUserPassword(), getAuth(), randomAuth(), setAuth(), and zeroAuth().
|
protected |
Buffer (message content).
Definition at line 247 of file client_message.h.
Referenced by Message(), Message(), Message(), decode(), encode(), getBuffer(), and setBuffer().
|
protected |
|
protected |
Identifier (random): header[1].
Definition at line 232 of file client_message.h.
Referenced by decode(), encode(), getIdentifier(), randomIdentifier(), and setIdentifier().
|
protected |
Length: header[2] (16 bits, network order).
Definition at line 235 of file client_message.h.
Referenced by Message(), Message(), Message(), decode(), encode(), getLength(), and setLength().
|
protected |
Secret (not empty).
Definition at line 241 of file client_message.h.
Referenced by Message(), Message(), Message(), ~Message(), decode(), decodeUserPassword(), encode(), encodeUserPassword(), getSecret(), and setSecret().