ndn::security::transform::BlockCipher Class Referencefinal

The module to encrypt data using block cipher. More...

#include <ndn-cxx/security/transform/block-cipher.hpp>

+ Inheritance diagram for ndn::security::transform::BlockCipher:
+ Collaboration diagram for ndn::security::transform::BlockCipher:

Public Member Functions

 BlockCipher (BlockCipherAlgorithm algo, CipherOperator op, span< const uint8_t > key, span< const uint8_t > iv)
 Create a block cipher. More...
 
 ~BlockCipher () final
 
void end ()
 Close the input interface of a module. More...
 
size_t getIndex () const
 Get the module index. More...
 
bool isEnd () const
 Check if the input interface of a module is closed. More...
 
void setIndex (size_t index)
 Set the module index. More...
 
size_t write (const uint8_t *buf, size_t size)
 
size_t write (span< const uint8_t > buf)
 Accept input data and perform transformation. More...
 

Protected Types

using OBuffer = std::vector< uint8_t >
 

Protected Member Functions

void appendChain (unique_ptr< Downstream > tail)
 Connect to the next transformation module. More...
 
void flushAllOutput ()
 Read the all the content from output buffer and write it into next module. More...
 
void flushOutputBuffer ()
 Read the content from output buffer and write it into next module. More...
 
DownstreamgetNext ()
 
bool isOutputBufferEmpty () const
 Check if output buffer is empty. More...
 
void setOutputBuffer (unique_ptr< OBuffer > buffer)
 Set output buffer to buffer. More...
 

Protected Attributes

unique_ptr< Downstreamm_next
 

Detailed Description

The module to encrypt data using block cipher.

The padding scheme of the block cipher is set to the OpenSSL default, which is PKCS padding.

Definition at line 38 of file block-cipher.hpp.

Member Typedef Documentation

◆ OBuffer

using ndn::security::transform::Transform::OBuffer = std::vector<uint8_t>
protectedinherited

Definition at line 195 of file transform-base.hpp.

Constructor & Destructor Documentation

◆ BlockCipher()

ndn::security::transform::BlockCipher::BlockCipher ( BlockCipherAlgorithm  algo,
CipherOperator  op,
span< const uint8_t >  key,
span< const uint8_t >  iv 
)

Create a block cipher.

Parameters
algoThe block cipher algorithm to use.
opThe operation to perform (encrypt or decrypt).
keyThe symmetric key.
ivThe initialization vector.

Definition at line 52 of file block-cipher.cpp.

◆ ~BlockCipher()

ndn::security::transform::BlockCipher::~BlockCipher ( )
finaldefault

Member Function Documentation

◆ appendChain()

void ndn::security::transform::Upstream::appendChain ( unique_ptr< Downstream tail)
protectedinherited

Connect to the next transformation module.

Definition at line 56 of file transform-base.cpp.

◆ end()

void ndn::security::transform::Downstream::end ( )
inherited

Close the input interface of a module.

This method will notify this module that there is no more input and that the module should finalize transformation.

Although end() can be invoked multiple times, only the first invocation takes effect.

Definition at line 46 of file transform-base.cpp.

◆ flushAllOutput()

void ndn::security::transform::Transform::flushAllOutput ( )
protectedinherited

Read the all the content from output buffer and write it into next module.

Postcondition
isOutputBufferEmpty() returns true.

Definition at line 78 of file transform-base.cpp.

◆ flushOutputBuffer()

void ndn::security::transform::Transform::flushOutputBuffer ( )
protectedinherited

Read the content from output buffer and write it into next module.

It is not guaranteed that all the content in output buffer will be flushed to next module.

Definition at line 68 of file transform-base.cpp.

◆ getIndex()

size_t ndn::security::transform::Downstream::getIndex ( ) const
inlineinherited

Get the module index.

Definition at line 137 of file transform-base.hpp.

◆ getNext()

Downstream* ndn::security::transform::Upstream::getNext ( )
inlineprotectedinherited

Definition at line 179 of file transform-base.hpp.

◆ isEnd()

bool ndn::security::transform::Downstream::isEnd ( ) const
inlineinherited

Check if the input interface of a module is closed.

Definition at line 119 of file transform-base.hpp.

◆ isOutputBufferEmpty()

bool ndn::security::transform::Transform::isOutputBufferEmpty ( ) const
protectedinherited

Check if output buffer is empty.

Definition at line 94 of file transform-base.cpp.

◆ setIndex()

void ndn::security::transform::Downstream::setIndex ( size_t  index)
inlineinherited

Set the module index.

Definition at line 128 of file transform-base.hpp.

◆ setOutputBuffer()

void ndn::security::transform::Transform::setOutputBuffer ( unique_ptr< OBuffer buffer)
protectedinherited

Set output buffer to buffer.

Definition at line 86 of file transform-base.cpp.

◆ write() [1/2]

size_t ndn::security::transform::Downstream::write ( const uint8_t *  buf,
size_t  size 
)
inlineinherited
Deprecated:

Definition at line 99 of file transform-base.hpp.

◆ write() [2/2]

size_t ndn::security::transform::Downstream::write ( span< const uint8_t >  buf)
inherited

Accept input data and perform transformation.

An upstream module should call this method to write data into this module. The written data will be transformed and the result will be written into the next downstream module.

An upstream module can keep calling this method to until end() is called, which indicates the end of input. After that, calling this method will cause Error.

If a Downstream implementation expects structured input (e.g., hex decoding requires byte-pair), it should not return less than size if final portion of input is not a complete record.

Returns
number of bytes that has been written into this module
Exceptions
Errorif this module is closed or transformation error happens.

Definition at line 35 of file transform-base.cpp.

Member Data Documentation

◆ m_next

unique_ptr<Downstream> ndn::security::transform::Upstream::m_next
protectedinherited

Definition at line 185 of file transform-base.hpp.