#include <cCipherCamellia.h>
|
| cCipherCamellia (bool bEncodeMode) |
|
virtual | ~cCipherCamellia () |
|
virtual size_t | get_BlockAlignSize () const override |
|
virtual HRESULT | SetCipherKey (const void *pKeyData, size_t nKeySize) override |
|
virtual HRESULT | CipherModeECB (BYTE pOutput[k_BlockAlign], const BYTE pInput[k_BlockAlign]) override |
|
virtual HRESULT | CipherModeCBC (BYTE *pOutput, const BYTE *pInput, size_t nSize, BYTE *pIV) override |
|
virtual HRESULT | CipherModeCFB (BYTE *pOutput, const BYTE *pInput, size_t nSize, BYTE pIV[k_BlockAlign], size_t *pnIVOffset) override |
|
virtual HRESULT | CipherModeCTR (BYTE *pOutput, const BYTE *pInput, size_t nSize, BYTE pNonceCounter[k_BlockAlign], size_t *pNCOffset, BYTE pStreamBlock[k_BlockAlign]) override |
|
virtual HRESULT | Cipher (BYTE *pOutput, const BYTE *pInput, size_t nSize) override |
|
| UNITTEST_FRIEND (cCipherCamellia) |
|
| cCipherBase (bool bEncodeMode=true, CIPHER_BLOCK_TYPE eBlockMode=CIPHER_BLOCK_UNK) noexcept |
|
virtual | ~cCipherBase () |
|
void | put_EncodeMode (bool bEncodeMode) noexcept |
|
bool | get_EncodeMode () const noexcept |
|
void | put_BlockMode (CIPHER_BLOCK_TYPE eBlockMode) noexcept |
|
virtual HRESULT | CipherModeECB (BYTE *pOutput, const BYTE *pInput) |
|
virtual HRESULT | CipherModeCFB (BYTE *pOutput, const BYTE *pInput, size_t nSize, BYTE *pIV, size_t *pIVOffset) |
|
virtual HRESULT | CipherModeCTR (BYTE *pOutput, const BYTE *pInput, size_t nSize, BYTE *pNonceCounter, size_t *pNCOffset, BYTE *pStreamBlock) |
|
virtual | ~CObject () |
|
virtual bool | isValidCheck () const noexcept |
| < memory allocation and structure definitions are valid. More...
|
|
virtual void | AssertValid () const |
| < memory allocation and structure definitions are valid. More...
|
|
virtual void | Serialize (cArchive &a) |
|
◆ cCipherCamellia()
GrayLib::cCipherCamellia::cCipherCamellia |
( |
bool |
bEncodeMode | ) |
|
|
inline |
◆ ~cCipherCamellia()
virtual GrayLib::cCipherCamellia::~cCipherCamellia |
( |
| ) |
|
|
inlinevirtual |
◆ Cipher()
HRESULT GrayLib::cCipherCamellia::Cipher |
( |
BYTE * |
pOutput, |
|
|
const BYTE * |
pInput, |
|
|
size_t |
nSize |
|
) |
| |
|
overridevirtual |
◆ CipherModeCBC()
HRESULT GrayLib::cCipherCamellia::CipherModeCBC |
( |
BYTE * |
pOutput, |
|
|
const BYTE * |
pInput, |
|
|
size_t |
nSize, |
|
|
BYTE * |
pIV |
|
) |
| |
|
overridevirtual |
CIPHER_BLOCK_CBC CAMELLIA-CBC buffer encryption/decryption Length should be a multiple of the block size (16 bytes)
- Note
- Upon exit, the content of the IV is updated so that you can call the function same function again on the following block(s) of data and get the same result as if it was encrypted in one call. This allows a "streaming" usage. If on the other hand you need to retain the contents of the IV, you should either save it manually or use the cipher module instead.
- pOutput = buffer holding the output data
- pInput = buffer holding the input data
- nSize = length of the input data
- pIV = initialization vector (updated after use)
- Returns
- 0 if successful, or NTE_BAD_LEN
Reimplemented from GrayLib::cCipherBase.
◆ CipherModeCFB()
HRESULT GrayLib::cCipherCamellia::CipherModeCFB |
( |
BYTE * |
pOutput, |
|
|
const BYTE * |
pInput, |
|
|
size_t |
nSize, |
|
|
BYTE |
pIV[k_BlockAlign], |
|
|
size_t * |
pnIVOffset |
|
) |
| |
|
overridevirtual |
CIPHER_BLOCK_CFB CAMELLIA-CFB128 buffer encryption/decryption
- Note
- Due to the nature of CFB you should use the same key schedule for both encryption and decryption. So a context initialized with camellia_setkey_enc() for bEncodeMode
-
Upon exit, the content of the IV is updated so that you can call the function same function again on the following block(s) of data and get the same result as if it was encrypted in one call. This allows a "streaming" usage. If on the other hand you need to retain the contents of the IV, you should either save it manually or use the cipher module instead.
- pOutput = buffer holding the output data
- pInput = buffer holding the input data
- nSize = length of the input data
- pIV = initialization vector (updated after use)
- pnIVOffset = offset in IV (updated after use)
- Returns
- 0 if successful, or NTE_BAD_LEN
◆ CipherModeCTR()
HRESULT GrayLib::cCipherCamellia::CipherModeCTR |
( |
BYTE * |
pOutput, |
|
|
const BYTE * |
pInput, |
|
|
size_t |
nSize, |
|
|
BYTE |
pNonceCounter[k_BlockAlign], |
|
|
size_t * |
pNCOffset, |
|
|
BYTE |
pStreamBlock[k_BlockAlign] |
|
) |
| |
|
overridevirtual |
Camellia-CTR buffer encryption/decryption
Warning: You have to keep the maximum use of your counter in mind!
- Note
- Due to the nature of CTR you should use the same key schedule for both encryption and decryption. So a context initialized with camellia_setkey_enc() for bEncodeMode
- pOutput = buffer holding the output data
- pInput = buffer holding the input data
- nSize = length of the input data
- pNonceCounter The 128-bit nonce and counter.
- pNCOffset = The offset in the current pStreamBlock (for resuming within current cipher stream). The offset pointer to should be 0 at the start of a stream.
- pStreamBlock = The saved stream-block for resuming. Is overwritten by the function.
- Returns
- 0 if successful
◆ CipherModeECB()
HRESULT GrayLib::cCipherCamellia::CipherModeECB |
( |
BYTE |
pOutput[k_BlockAlign], |
|
|
const BYTE |
pInput[k_BlockAlign] |
|
) |
| |
|
overridevirtual |
CIPHER_BLOCK_ECB CAMELLIA-ECB block encryption/decryption
- pOutput = 16-byte output block
- pInput = 16-byte input block
- Returns
- 0 if successful
◆ get_BlockAlignSize()
virtual size_t GrayLib::cCipherCamellia::get_BlockAlignSize |
( |
| ) |
const |
|
inlineoverridevirtual |
◆ SetCipherKey()
HRESULT GrayLib::cCipherCamellia::SetCipherKey |
( |
const void * |
pKeyData, |
|
|
size_t |
nKeySize |
|
) |
| |
|
overridevirtual |
CAMELLIA key schedule (encryption)
- pKeyData = set cipher key. Fix it if unaligned.
- nKeySize = must be 128/8, 192/8 or 256/8
- Returns
- 0 if successful, or NTE_BAD_LEN
Reimplemented from GrayLib::cCipherBase.
◆ UNITTEST_FRIEND()
◆ k_BlockAlign
const size_t GrayLib::cCipherCamellia::k_BlockAlign = 16 |
|
static |
◆ m_nRounds
int GrayLib::cCipherCamellia::m_nRounds |
◆ m_RK
UINT32 GrayLib::cCipherCamellia::m_RK[68] |
The documentation for this class was generated from the following files: