Vault 7: Projects

This publication series is about specific projects related to the Vault 7 main publication.

// CFB mode context
BLOCK_CIPHER_CFB_CONTEXT context;
// Initialization vector for CFB mode
static uint8_t initialization_vector[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
// Cipher text to decrypt
static uint8_t cipher_text[] = { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9,
0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a,
0xae, 0x2d, 0x8a, 0x57, 0x1e, 0x03, 0xac, 0x9c, 0x9e,
0xb7, 0x6f, 0xac, 0x45, 0xaf, 0x8e, 0x51,
0x30, 0xc8, 0x1c, 0x46, 0xa3, 0x5c, 0xe4, 0x11, 0xe5,
0xfb, 0xc1, 0x19, 0x1a, 0x0a, 0x52, 0xef,
0xf6, 0x9f, 0x24, 0x45, 0xdf, 0x4f, 0x9b, 0x17, 0xad,
0x2b, 0x41, 0x7b, 0xe6, 0x6c, 0x37, 0x10};
// The encryption key
static uint8_t AESKey128[] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7,
0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c};
// Structure to contain the created AES round keys
AES_ROUND_KEYS_128_BIT round_keys;
// Buffer to contain encrypted plaintext
uint8_t plain_text[sizeof(cipher_text)];
// The number of bytes that were decrypted
uint32_t num_bytes_decrypted;
// Initialization call for the AES module
sysObject = DRV_AES_Initialize (DRV_AES_INDEX, NULL);
if (sysObject != SYS_MODULE_OBJ_STATIC)
{
// error
}
// Driver open call for the AES module
handle = DRV_AES_Open (DRV_AES_INDEX, 0);
if (handle != DRV_AES_HANDLE)
{
// error
}
//Create the AES round keys. This only needs to be done once for each AES key.
AES_RoundKeysCreate (&round_keys, (uint8_t*)AESKey128, AES_KEY_SIZE_128_BIT);
// Initialize the Block Cipher context with the AES module encryption/decryption functions
and the AES block size
BLOCK_CIPHER_CFB_Initialize (&context, AES_Encrypt, AES_Decrypt, AES_BLOCK_SIZE,
initialization_vector);
// Decrypt the data
BLOCK_CIPHER_CFB_Decrypt (handle, plain_text, &num_bytes_decrypted, (void *) cipher_text,
sizeof(cipher_text), &round_keys, &context, BLOCK_CIPHER_OPTION_STREAM_START |
BLOCK_CIPHER_USE_CFB1);
Parameters
Parameters Description
handle A handle that is passed to the block cipher's encrypt/decrypt
functions to specify which instance of the block cipher
module to use. This parameter can be specified as NULL if
the block cipher does not have multiple instances.
plainText The plain test produced by the decryption. This buffer must
be a multiple of the block cipher's block size, even if the
cipher text passed in is not.
numPlainBytes Pointer to a uint32_t; the number of bytes decrypted will be
returned in this parameter.
1.7 Library Interface MLA - Crypto Library Help Block Cipher Modes
54

e-Highlighter

Click to send permalink to address bar, or right-click to copy permalink.

Un-highlight all Un-highlight selectionu Highlight selectionh