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

Public Member Functions

 jmemblob (std::shared_ptr< jrand > &rand, uint8_t *bkek, uint32_t bkek_size, uint8_t *blobkey, uint32_t blobkey_size)
 
 jmemblob (std::shared_ptr< jrand > &rand, jmemblobsa &security)
 
 jmemblob (std::shared_ptr< jrand > &rand, std::shared_ptr< jmemblobsa > &security)
 
virtual ~jmemblob ()=default
 Standard deconstructor.
 
void encap_packet (std::shared_ptr< jarray< uint8_t >> &input, std::shared_ptr< jarray< uint8_t >> &output)
 
void decap_packet (std::shared_ptr< jarray< uint8_t >> &input, std::shared_ptr< jarray< uint8_t >> &output)
 
void get_security (std::shared_ptr< jmemblobsa > &sec)
 
void to_xml (tinyxml2::XMLPrinter &myxml, direction_t direction)
 
void to_json (std::ofstream &myjson, direction_t direction, std::string &indent)
 
void set_hdr (jarray< uint8_t > &hdr)
 
void set_field (field_t field, uint64_t value)
 
jarray< uint8_t > get_hdr ()
 
uint64_t get_field (field_t field, jarray< uint8_t > &hdr)
 
 jmemblob (jmemblob &rhs)=delete
 
 jmemblob (const jmemblob &rhs)=delete
 
- Public Member Functions inherited from ProtocolPP::jprotocol
 jprotocol (direction_t dir)
 
 jprotocol (direction_t dir, std::string &file)
 
 jprotocol (direction_t dir, std::shared_ptr< jrand > &rand)
 
 jprotocol (direction_t dir, std::shared_ptr< jrand > &rand, std::string &file)
 
virtual ~jprotocol ()
 Standard deconstructor.
 
virtual void encap_packet (std::shared_ptr< jarray< uint8_t >> &output)
 
virtual void decap_packet (std::shared_ptr< jarray< uint8_t >> &input)
 
virtual uint64_t get_field (field_t field)
 
bool hasfile ()
 
uint32_t get_status ()
 
jarray< uint8_t > checksum (iana_t prot, direction_t dir, jarray< uint8_t > &check, uint32_t offset=0)
 
jarray< uint8_t > pad (pad_t padtype, uint32_t len)
 
 jprotocol (jprotocol &jprotocol)=delete
 
 jprotocol (const jprotocol &jprotocol)=delete
 

Additional Inherited Members

- Static Public Member Functions inherited from ProtocolPP::jprotocol
const static std::string currentDateTime ()
 
static std::string str_status (uint32_t status)
 
static jarray< uint8_t > to_array (uint8_t input)
 
static jarray< uint8_t > to_array (uint16_t input)
 
static jarray< uint8_t > to_array (uint32_t input)
 
static jarray< uint8_t > to_array (uint64_t input)
 
static uint8_t to_u8 (jarray< uint8_t > src_array)
 
static uint16_t to_u16 (jarray< uint8_t > src_array)
 
static uint32_t to_u32 (jarray< uint8_t > src_array)
 
static uint64_t to_u64 (jarray< uint8_t > src_array)
 
static uint32_t fnv_hash (std::shared_ptr< jarray< uint8_t >> &header, jarray< uint8_t > &mask, uint32_t hdrlen)
 
- Protected Member Functions inherited from ProtocolPP::jprotocol
template<typename T , typename TE >
std::shared_ptr< jreplay< T, TE > > update_replay (protocol_t prot, T &seqnum, TE &extseq, bool usext, uint32_t size)
 
template<typename T , typename TE >
std::shared_ptr< jreplay< T, TE > > update_replay (protocol_t prot, T &seqnum, TE &extseq, bool usext, uint32_t size, jarray< uint8_t > &window)
 
void update_status (uint32_t stat)
 
void get_data (std::shared_ptr< jarray< uint8_t >> &data)
 
void put_data (std::shared_ptr< jarray< uint8_t >> &wdata)
 
void encryptdat (std::shared_ptr< jarray< uint8_t >> &red, std::shared_ptr< jarray< uint8_t >> &black)
 
void decryptdat (std::shared_ptr< jarray< uint8_t >> &black, std::shared_ptr< jarray< uint8_t >> &red)
 
uint32_t roundup (uint32_t value, uint32_t mult)
 
- Protected Attributes inherited from ProtocolPP::jprotocol
direction_t m_dir
 direction of processing
 
uint32_t m_status
 
std::shared_ptr< jrandm_rand
 random data generator passed into constructor
 
std::string m_filename
 file input string for this protocol
 
std::fstream m_file
 input file stream object for this protocol
 
endian_t m_endian
 endianess string for this protocol
 

Constructor & Destructor Documentation

◆ jmemblob() [1/3]

ProtocolPP::jmemblob::jmemblob ( std::shared_ptr< jrand > &  rand,
uint8_t *  bkek,
uint32_t  bkek_size,
uint8_t *  blobkey,
uint32_t  blobkey_size 
)

Constructor for memory BLOB

Parameters
rand- randomizer
bkek- system level key used for offline key protection
bkek_size- size of the bkek
blobkey- BLOB key used for offline key protection
blobkey_size- size of the blob key

◆ jmemblob() [2/3]

ProtocolPP::jmemblob::jmemblob ( std::shared_ptr< jrand > &  rand,
jmemblobsa security 
)

Constructor for memory BLOB security association

Parameters
rand- randomizer
security- BLOB security association

◆ jmemblob() [3/3]

ProtocolPP::jmemblob::jmemblob ( std::shared_ptr< jrand > &  rand,
std::shared_ptr< jmemblobsa > &  security 
)

Constructor for memory BLOB security association

Parameters
rand- randomizer
security- BLOB security association pointer

Member Function Documentation

◆ decap_packet()

void ProtocolPP::jmemblob::decap_packet ( std::shared_ptr< jarray< uint8_t >> &  input,
std::shared_ptr< jarray< uint8_t >> &  output 
)
virtual

Decapsulate the data as a Blob. Due to the nature of the Blob Key Encryption Key (BKEK) and how it's constructed, this function must supply the BKEK from the system. The BKEK bits are not accessible once the design is in silicon. Furthermore, Blob construction is typically specific to the device such that only that device can retrieve the Blob

Parameters
input- Encapsulated Blob data
output- correctly sized pointer to hold plaintext Blob data

Implements ProtocolPP::jprotocol.

◆ encap_packet()

void ProtocolPP::jmemblob::encap_packet ( std::shared_ptr< jarray< uint8_t >> &  input,
std::shared_ptr< jarray< uint8_t >> &  output 
)
virtual

Encapsulate the data as a Blob. Due to the nature of the Blob Key Encryption Key (BKEK) and how it's constructed, this function must supply the BKEK from the system. The BKEK bits are not accessible once the design is in silicon. Furthermore, Blob construction is typically specific to the device such that only that device can create and retrieve the Blob

Parameters
input- Data to enacapsulate as the Blob
output- Correctly sized pointer to hold encapsulated Blob

Implements ProtocolPP::jprotocol.

◆ get_field()

uint64_t ProtocolPP::jmemblob::get_field ( field_t  field,
jarray< uint8_t > &  hdr 
)
virtual

Not used in this protocol

Returns
0

Implements ProtocolPP::jprotocol.

◆ get_hdr()

jarray<uint8_t> ProtocolPP::jmemblob::get_hdr ( )
virtual

Not used in this protocol

Returns
empty array

Implements ProtocolPP::jprotocol.

◆ get_security()

void ProtocolPP::jmemblob::get_security ( std::shared_ptr< jmemblobsa > &  sec)

get_security

Parameters
sec- Shared pointer to hold the security association

◆ set_field()

void ProtocolPP::jmemblob::set_field ( field_t  field,
uint64_t  value 
)
virtual

Not used in this protocol

Parameters
field- field to update
value- new value for the field

Implements ProtocolPP::jprotocol.

◆ set_hdr()

void ProtocolPP::jmemblob::set_hdr ( jarray< uint8_t > &  hdr)
virtual

Not used in this protocol

Parameters
hdr- header of the packet

Implements ProtocolPP::jprotocol.

◆ to_json()

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

Prints the protocol object in JSON

Parameters
myjson- JSON object to print to
direction- randomzation
indent- indentation for JSON output

Implements ProtocolPP::jprotocol.

◆ to_xml()

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

Prints the protocol object in XML

Parameters
myxml- XMLPrinter object to print to
direction- randomzation

Implements ProtocolPP::jprotocol.


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