Protocol++® (Protocolpp®)  v5.6.2
ProtocolPP::jdtlsa13 Class Reference
Inheritance diagram for ProtocolPP::jdtlsa13:
Collaboration diagram for ProtocolPP::jdtlsa13:

Public Member Functions

 jdtlsa13 ()
 
 jdtlsa13 (direction_t dir, tls_ciphersuite_t ciphersuite, tlstype_t type, uint64_t epoch, uint64_t seqnum, uint64_t authfail, uint8_t cid, bool cbit, bool sbit, bool lbit, uint32_t icvlen, uint32_t ivlen, std::shared_ptr< jarray< uint8_t >> iv, uint32_t ckeylen, std::shared_ptr< jarray< uint8_t >> cipherkey, std::shared_ptr< jarray< uint8_t >> app_traffic_secret, uint32_t arlen, jarray< uint8_t > arwin, uint32_t mtu)
 
 jdtlsa13 (jdtlsa13 &rhs)
 
 jdtlsa13 (std::shared_ptr< jdtlsa13 > &rhs)
 
 ~jdtlsa13 ()
 Standard deconstructor.
 
template<typename T >
void set_field (field_t field, T fieldval)
 
template<typename 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)
 
 jdtlsa13 (const jdtlsa13 &rhs)=delete
 
- Public Member Functions inherited from ProtocolPP::jsecass
 jsecass ()
 
virtual ~jsecass ()=default
 Standard deconstructor.
 
 jsecass (jsecass &jsecass)=delete
 
 jsecass (const jsecass &jsecass)=delete
 

Constructor & Destructor Documentation

◆ jdtlsa13() [1/4]

ProtocolPP::jdtlsa13::jdtlsa13 ( )

Standard Constructor with defaults

DTLSA13 Defaults
fieldDefault Value
dirdirection_t::ENCAP
ciphersuitetls_ciphersuite_t::TLS_AES_128_GCM_SHA256
typetlstype_t::APPLICATION
icvlen16
epoch0
seqnum0
authfail0
cid0
cbittrue
sbittrue
lbittrue
ivlen16
ckeylen16
arlen0
arwin0
mtu0
cipherkey0
iv0

◆ jdtlsa13() [2/4]

ProtocolPP::jdtlsa13::jdtlsa13 ( direction_t  dir,
tls_ciphersuite_t  ciphersuite,
tlstype_t  type,
uint64_t  epoch,
uint64_t  seqnum,
uint64_t  authfail,
uint8_t  cid,
bool  cbit,
bool  sbit,
bool  lbit,
uint32_t  icvlen,
uint32_t  ivlen,
std::shared_ptr< jarray< uint8_t >>  iv,
uint32_t  ckeylen,
std::shared_ptr< jarray< uint8_t >>  cipherkey,
std::shared_ptr< jarray< uint8_t >>  app_traffic_secret,
uint32_t  arlen,
jarray< uint8_t >  arwin,
uint32_t  mtu 
)

Security Association for DTLS13

Parameters
dir- Direction of processing (ENCAP or DECAP)
ciphersuite- Ciphersuite to use with TLS v1.3
icvlen- Length of the ICV tag
mtu- Maximum transmition unit
type- Default type of packet to send (usually Application)
epoch- Initial Epoch number
seqnum- Initial sequence number
authfail- Initial ICV failures
cid- Connection ID
cbit- Indicates presence of connection ID (CID) field in variable length DTLS header
sbit- Indicates length of SeqNum field in variable length DTLS header. SBIT=0 SeqNum length is 8 bits, SBIT=1 SeqNum length is 16 bits
lbit- Indicates presence of length field in variable length DTLS header
ivlen- Length of the initialization vector (IV)
iv- Initialization Vector (IV)
ckeylen- Length of the cipher key
cipherkey- Key for the encryption algorithm
app_traffic_secret- Per EPOCH Application Traffic Secret
arlen- Number og packets to track in the replay window
arwin- Anti-replay window for tracking packets

◆ jdtlsa13() [3/4]

ProtocolPP::jdtlsa13::jdtlsa13 ( jdtlsa13 rhs)

Constructor for TLS Security Association

Parameters
rhs- Security association (SA) for this TLS flow

◆ jdtlsa13() [4/4]

ProtocolPP::jdtlsa13::jdtlsa13 ( std::shared_ptr< jdtlsa13 > &  rhs)
explicit

Constructor for TLS Security Association

Parameters
rhs- Security association (SA) for this TLS flow

Member Function Documentation

◆ get_field()

template<typename T >
T ProtocolPP::jdtlsa13::get_field ( field_t  field)

Retrieve the field from the TLS security association

TLS Get Fields
field typefield nameExample
direction_tDIRECTIONdirection_t mydir = get_field<direction_t>(field_t::DIRECTION)
tls_ciphersuite_tCIPHERSUITEtls_ciphersuite_t mycsuite = get_field<tls_ciphersuite_t>(field_t::CIPHERSUITE)
tlsver_tVERSIONtlsver_t myver = get_field<tlsver_t>(field_t::VERSION)
tlstype_tTYPEtlstype_t mytype = get_field<tlstype_t>(field_t::TYPE)
uint32_tICVLENuint32_t myicvlen = get_field<uint32_t>(field_t::ICVLEN);
IVLENuint32_t myivlen = get_field<uint32_t>(field_t::IVLEN);
CKEYLENuint32_t myckeylen = get_field<uint32_t>(field_t::CKEYLEN);
ARLENuint32_t myarlen = get_field<uint32_t>(field_t::ARLEN);
MTUuint32_t mymtu = get_field<uint32_t>(field_t::MTU);
uint64_tEPOCHuint64_t myepoch = get_field<uint64_t>(field_t::EPOCH);
uint64_tSEQNUMuint64_t myseqnum = get_field<uint64_t>(field_t::SEQNUM);
uint8_tCIDuint8_t mycid = get_field<uint8_t>(field_t::CID);
boolCBITbool mycbit = get_field<bool>(field_t::CBIT);
boolSBITbool mysbit = get_field<bool>(field_t::SBIT);
boolLBITbool mylbit = get_field<bool>(field_t::LBIT);
jarray<uint8_t>ARWINjarray<uint8_t> myarwin = get_field<jarray<uint8_t>>(field_t::ARWIN)
std::shared_ptr<jarray<uint8_t>>IVstd::shared_ptr<jarray<uint8_t>> myarwin = get_field<std::shared_ptr<jarray<uint8_t>>>(field_t::IV)
CIPHERKEYstd::shared_ptr<jarray<uint8_t>> myarwin = get_field<std::shared_ptr<jarray<uint8_t>>>(field_t::CIPHERKEY)
Parameters
field- field to retrieve
Returns
value of the field

◆ set_field()

template<typename T >
void ProtocolPP::jdtlsa13::set_field ( field_t  field,
fieldval 
)

Update the field in the TLS security association

TLS Set Fields
field typefield nameExample
direction_tDIRECTIONset_field<direction_t>(field_t::DIRECTION, direction_t::DECAP)
tls_ciphersuite_tCIPHERSUITEset_field<tls_ciphersuite_t>(field_t::CIPHERSUITE, tls_ciphersuite::TLS_DH_DSS_WITH_CAMELLIA_256_CBC_SHA)
tlsver_tVERSIONset_field<tlsver_t>(field_t::VERSION, tlsver_t::DTLS)
tlstype_tTYPEset_field<tlstype_t>(field_t::TYPE, tlstype_t::APPLICATION)
uint32_tICVLENset_field<uint32_t>(field_t::ICVLEN, 0);
IVLENset_field<uint32_t>(field_t::IVLEN, 0);
CKEYLENset_field<uint32_t>(field_t::CKEYLEN, 0);
ARLENset_field<uint32_t>(field_t::ARLEN, 0);
MTUset_field<uint32_t>(field_t::MTU, 0);
uint64_tEPOCHset_field<uint64_t>(field_t::EPOCH, 0);
uint64_tSEQNUMset_field<uint64_t>(field_t::SEQNUM, 0);
uint8_tCIDset_field<uint8_t>(field_t::CID, 0);
boolCBITset_field<bool>(field_t::CBIT, false);
boolSBITset_field<bool>(field_t::SBIT, true);
boolLBITset_field<bool>(field_t::LBIT, true);
jarray<uint8_t>ARWINset_field<jarray<uint8_t>>(field_t::ARWIN, jarray<uint8_t>("000000000000001"))
std::shared_ptr<jarray<uint8_t>>IVset_field<std::shared_ptr<jarray<uint8_t>>>(field_t::IV, std::make_shared<rotocolPP::jarray<uint8_t>>("000000000000001"))
CIPHERKEYset_field<std::shared_ptr<jarray<uint8_t>>>(field_t::CIPHERKEY, std::make_shared<rotocolPP::jarray<uint8_t>>("000000000000001"))
Parameters
field- TLS field to update
fieldval- new value for the field

◆ to_json()

void ProtocolPP::jdtlsa13::to_json ( std::ofstream &  myjson,
direction_t  direction,
std::string &  indent 
)
virtual

Print the protocol and security objects to JSON

Parameters
myjson- JSON object
direction- facilitator for random descriptor generation
indent- indentation for JSON output

Implements ProtocolPP::jsecass.

◆ to_xml()

void ProtocolPP::jdtlsa13::to_xml ( tinyxml2::XMLPrinter myxml,
direction_t  direction 
)
virtual

Print the protocol and security objects to XML

Parameters
myxml- XMLPrinter object
direction- facilitator for random descriptor generation

Implements ProtocolPP::jsecass.


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