Protocol++® (Protocolpp®)
v5.6.2
|
Public Member Functions | |
jtlsa () | |
jtlsa (direction_t dir, tls_ciphersuite_t ciphersuite, tlsver_t ver, tlstype_t type, uint16_t epoch, uint64_t seqnum, uint32_t icvlen, uint32_t ivlen, std::shared_ptr< jarray< uint8_t >> iv, uint32_t ckeylen, std::shared_ptr< jarray< uint8_t >> cipherkey, uint32_t akeylen, std::shared_ptr< jarray< uint8_t >> authkey, uint32_t saltlen, std::shared_ptr< jarray< uint8_t >> salt, uint32_t arlen, jarray< uint8_t > arwin, uint32_t mtu, bool randiv, bool ivex, bool encthenmac) | |
jtlsa (jtlsa &rhs) | |
jtlsa (std::shared_ptr< jtlsa > &rhs) | |
~jtlsa () | |
Standard deconstructor. | |
template<typename T > | |
void | set_field (field_t field, T fieldval) |
template<typename T > | |
T | get_field (field_t field) |
void | to_xml (tinyxml2::XMLPrinter &myxml, direction_t direction) |
void | to_json (std::ofstream &myjson, direction_t direction, std::string &indent) |
jtlsa (const jtlsa &rhs)=delete | |
Public Member Functions inherited from ProtocolPP::jsecass | |
jsecass () | |
virtual | ~jsecass ()=default |
Standard deconstructor. | |
jsecass (jsecass &jsecass)=delete | |
jsecass (const jsecass &jsecass)=delete | |
ProtocolPP::jtlsa::jtlsa | ( | ) |
Standard Constructor with defaults
field | Default Value |
---|---|
dir | direction_t::ENCAP |
ciphersuite | tls_ciphersuite_t::TLS_DH_DSS_WITH_AES_128_CBC_SHA |
ver | tlsver_t::TLS10 |
type | tlstype_t::APPLICATION |
icvlen | 20 |
epoch | 0 |
seqnum | 0 |
ivlen | 16 |
ckeylen | 16 |
akeylen | 20 |
saltlen | 0 |
arlen | 0 |
arwin | 0 |
mtu | 0 |
randiv | false |
ivex | true |
encthenmac | false |
authkey | 0 |
cipherkey | 0 |
iv | 0 |
salt | 0 |
ProtocolPP::jtlsa::jtlsa | ( | direction_t | dir, |
tls_ciphersuite_t | ciphersuite, | ||
tlsver_t | ver, | ||
tlstype_t | type, | ||
uint16_t | epoch, | ||
uint64_t | seqnum, | ||
uint32_t | icvlen, | ||
uint32_t | ivlen, | ||
std::shared_ptr< jarray< uint8_t >> | iv, | ||
uint32_t | ckeylen, | ||
std::shared_ptr< jarray< uint8_t >> | cipherkey, | ||
uint32_t | akeylen, | ||
std::shared_ptr< jarray< uint8_t >> | authkey, | ||
uint32_t | saltlen, | ||
std::shared_ptr< jarray< uint8_t >> | salt, | ||
uint32_t | arlen, | ||
jarray< uint8_t > | arwin, | ||
uint32_t | mtu, | ||
bool | randiv, | ||
bool | ivex, | ||
bool | encthenmac | ||
) |
Security Association for TLS
dir | - Direction of processing (ENCAP or DECAP) |
ciphersuite | - Ciphersuite to use with TLS/SSL |
ver | - Version of TLS/SSL to use |
icvlen | - Length of the ICV tag |
mtu | - Maximum transmition unit |
type | - Default type of packet to send (usually Application) |
epoch | - Initial Epoch for DTLS |
seqnum | - Initial sequence number |
ivlen | - Length of the initialization vector (IV) |
iv | - Initialization Vector (IV) |
ckeylen | - Length of the cipher key |
cipherkey | - Key for the encryption algorithm |
akeylen | - Length of the authentication key |
authkey | - Key for the authentication algorithm |
saltlen | - Length of the salt |
salt | - salt for CTR, CCM, GCM, and CHACHA20 ciphers |
arlen | - Number og packets to track in the replay window |
arwin | - Anti-replay window for tracking packets |
randiv | - use random IV instead of IV passed in |
ivex | - IV is sent in the clear instead of encrypted if asserted |
encthenmac | - Encrypt then MAC flag set by negogiated features |
ProtocolPP::jtlsa::jtlsa | ( | jtlsa & | rhs | ) |
Constructor for TLS Security Association
rhs | - Security association (SA) for this TLS flow |
|
explicit |
Constructor for TLS Security Association
rhs | - Security association (SA) for this TLS flow |
T ProtocolPP::jtlsa::get_field | ( | field_t | field | ) |
Retrieve the field from the TLS security association
field type | field name | Example |
---|---|---|
direction_t | DIRECTION | direction_t mydir = get_field<direction_t>(field_t::DIRECTION) |
tls_ciphersuite_t | CIPHERSUITE | tls_ciphersuite_t mycsuite = get_field<tls_ciphersuite_t>(field_t::CIPHERSUITE) |
tlsver_t | VERSION | tlsver_t myver = get_field<tlsver_t>(field_t::VERSION) |
tlstype_t | TYPE | tlstype_t mytype = get_field<tlstype_t>(field_t::TYPE) |
bool | RANDIV | bool myrandiv = get_field<bool>(field_t::RANDIV); |
IVEX | bool myivex = get_field<bool>(field_t::IVEX); | |
ENCTHENMAC | bool myethm = get_field<bool>(field_t::ENCTHENMAC); | |
uint16_t | EPOCH | uint16_t myepoch = get_field<uint16_t>(field_t::EPOCH); |
uint32_t | ICVLEN | uint32_t myicvlen = get_field<uint32_t>(field_t::ICVLEN); |
IVLEN | uint32_t myivlen = get_field<uint32_t>(field_t::IVLEN); | |
CKEYLEN | uint32_t myckeylen = get_field<uint32_t>(field_t::CKEYLEN); | |
AKEYLEN | uint32_t myakeylen = get_field<uint32_t>(field_t::AKEYLEN); | |
SALTLEN | uint32_t mysaltlen = get_field<uint32_t>(field_t::SALTLEN); | |
ARLEN | uint32_t myarlen = get_field<uint32_t>(field_t::ARLEN); | |
MTU | uint32_t mymtu = get_field<uint32_t>(field_t::MTU); | |
uint64_t | SEQNUM | uint64_t myseqnum = get_field<uint64_t>(field_t::SEQNUM); |
jarray<uint8_t> | ARWIN | jarray<uint8_t> myarwin = get_field<jarray<uint8_t>>(field_t::ARWIN) |
std::shared_ptr<jarray<uint8_t>> | IV | std::shared_ptr<jarray<uint8_t>> myarwin = get_field<std::shared_ptr<jarray<uint8_t>>>(field_t::IV) |
CIPHERKEY | std::shared_ptr<jarray<uint8_t>> myarwin = get_field<std::shared_ptr<jarray<uint8_t>>>(field_t::CIPHERKEY) | |
AUTHKEY | std::shared_ptr<jarray<uint8_t>> myarwin = get_field<std::shared_ptr<jarray<uint8_t>>>(field_t::AUTHKEY) | |
SALT | std::shared_ptr<jarray<uint8_t>> myarwin = get_field<std::shared_ptr<jarray<uint8_t>>>(field_t::SALT) |
field | - field to retrieve |
void ProtocolPP::jtlsa::set_field | ( | field_t | field, |
T | fieldval | ||
) |
Update the field in the TLS security association
field type | field name | Example |
---|---|---|
direction_t | DIRECTION | set_field<direction_t>(field_t::DIRECTION, direction_t::DECAP) |
tls_ciphersuite_t | CIPHERSUITE | set_field<tls_ciphersuite_t>(field_t::CIPHERSUITE, tls_ciphersuite::TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA) |
tlsver_t | VERSION | set_field<tlsver_t>(field_t::VERSION, tlsver_t::DTLS) |
tlstype_t | TYPE | set_field<tlstype_t>(field_t::TYPE, tlstype_t::APPLICATION) |
bool | RANDIV | set_field<bool>(field_t::RANDIV, true); |
IVEX | set_field<bool>(field_t::IVEX, true); | |
ENCTHENMAC | set_field<bool>(field_t::ENCTHENMAC, true); | |
uint16_t | EPOCH | set_field<uint16_t>(field_t::EPOCH, 0); |
uint32_t | ICVLEN | set_field<uint32_t>(field_t::ICVLEN, 0); |
IVLEN | set_field<uint32_t>(field_t::IVLEN, 0); | |
CKEYLEN | set_field<uint32_t>(field_t::CKEYLEN, 0); | |
AKEYLEN | set_field<uint32_t>(field_t::AKEYLEN, 0); | |
SALTLEN | set_field<uint32_t>(field_t::SALTLEN, 0); | |
ARLEN | set_field<uint32_t>(field_t::ARLEN, 0); | |
MTU | set_field<uint32_t>(field_t::MTU, 0); | |
uint64_t | SEQNUM | set_field<uint64_t>(field_t::SEQNUM, 0); |
jarray<uint8_t> | ARWIN | set_field<jarray<uint8_t>>(field_t::ARWIN, jarray<uint8_t>("000000000000001")) |
std::shared_ptr<jarray<uint8_t>> | IV | set_field<std::shared_ptr<jarray<uint8_t>>>(field_t::IV, std::make_shared<rotocolPP::jarray<uint8_t>>("000000000000001")) |
CIPHERKEY | set_field<std::shared_ptr<jarray<uint8_t>>>(field_t::CIPHERKEY, std::make_shared<rotocolPP::jarray<uint8_t>>("000000000000001")) | |
AUTHKEY | set_field<std::shared_ptr<jarray<uint8_t>>>(field_t::AUTHKEY, std::make_shared<rotocolPP::jarray<uint8_t>>("000000000000001")) | |
SALT | set_field<std::shared_ptr<jarray<uint8_t>>>(field_t::SALT, std::make_shared<rotocolPP::jarray<uint8_t>>("000000000000001")) |
field | - TLS field to update |
fieldval | - new value for the field |
|
virtual |
Print the protocol and security objects to JSON
myjson | - JSON object |
direction | - facilitator for random descriptor generation |
indent | - indentation for JSON output |
Implements ProtocolPP::jsecass.
|
virtual |
Print the protocol and security objects to XML
myxml | - XMLPrinter object |
direction | - facilitator for random descriptor generation |
Implements ProtocolPP::jsecass.