Vault 7: Projects

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

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 cipher_text[sizeof(plain_text)];
// The number of bytes that were encrypted
uint32_t num_bytes_encrypted;
// 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_ECB_Initialize (&context, AES_Encrypt, AES_Decrypt, AES_BLOCK_SIZE);
//Encrypt the data
BLOCK_CIPHER_ECB_Encrypt (handle, cipher_text, &num_bytes_encrypted, (void *) plain_text,
sizeof(plain_text), &round_keys, &context, BLOCK_CIPHER_OPTION_STREAM_START);
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.
cipherText The cipher text produced by the encryption. This buffer must
be a multiple of the block size, even if the plain text buffer
size is not. This buffer should always be larger than the plain
text buffer.
numCipherBytes Pointer to a uint32_t; the number of bytes encrypted will be
returned in this parameter.
plainText The plain test to encrypt.
numPlainBytes The number of plain text bytes that must be encrypted. If the
number of plain text bytes encrypted is not evenly divisible
by the block size, the remaining bytes will be cached in the
ECB context structure until additional data is provided.
key The key to use when encrypting/decrypting the data. The
format of this key will depend on the block cipher you are
using.
1.7 Library Interface MLA - Crypto Library Help Block Cipher Modes
39

e-Highlighter

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

Un-highlight all Un-highlight selectionu Highlight selectionh