BearSSL
|
Class type for CTR encryption/decryption implementations. More...
Data Fields | |
size_t | context_size |
Size (in bytes) of the context structure appropriate for containing subkeys. More... | |
unsigned | block_size |
Size of individual blocks (in bytes). More... | |
unsigned | log_block_size |
Base-2 logarithm of the size of individual blocks, expressed in bytes. More... | |
void(* | init )(const br_block_ctr_class **ctx, const void *key, size_t key_len) |
Initialisation function. More... | |
uint32_t(* | run )(const br_block_ctr_class *const *ctx, const void *iv, uint32_t cc, void *data, size_t len) |
Run the CTR encryption or decryption. More... | |
Class type for CTR encryption/decryption implementations.
A br_block_ctr_class
instance points to the functions implementing a specific block cipher, when used in CTR mode for encrypting or decrypting data.
unsigned br_block_ctr_class::block_size |
Size of individual blocks (in bytes).
size_t br_block_ctr_class::context_size |
Size (in bytes) of the context structure appropriate for containing subkeys.
void(* br_block_ctr_class::init) (const br_block_ctr_class **ctx, const void *key, size_t key_len) |
Initialisation function.
This function sets the vtable
field in the context structure. The key length MUST be one of the key lengths supported by the implementation.
ctx | context structure to initialise. |
key | secret key. |
key_len | key length (in bytes). |
unsigned br_block_ctr_class::log_block_size |
Base-2 logarithm of the size of individual blocks, expressed in bytes.
uint32_t(* br_block_ctr_class::run) (const br_block_ctr_class *const *ctx, const void *iv, uint32_t cc, void *data, size_t len) |
Run the CTR encryption or decryption.
The iv
parameter points to the IV for this run; its length is exactly 4 bytes less than the block size (e.g. 12 bytes for AES/CTR). The IV is combined with a 32-bit block counter to produce the block value which is processed with the block cipher.
The data to encrypt or decrypt is updated "in place". Its length (len
bytes) is not required to be a multiple of the block size; if the final block is partial, then the corresponding key stream bits are dropped.
The resulting counter value is returned.
ctx | context structure (already initialised). |
iv | IV for CTR encryption/decryption. |
cc | initial value for the block counter. |
data | data to encrypt or decrypt. |
len | data length (in bytes). |