Vault 7: Projects
This publication series is about specific projects related to the Vault 7 main publication.
// 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
BLOCK_CIPHER_GCM_Initialize (handle, &context, AES_Encrypt, AES_Decrypt, AES_BLOCK_SIZE,
(uint8_t *)ivValue, 12, (void *)&keyStream, sizeof(keyStream), &round_keys);
//Generate 4 blocks of key stream
BLOCK_CIPHER_GCM_KeyStreamGenerate(handle, 4, &round_keys, &context, 0);
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.
numBlocks The number of blocks of key stream that should be created.
context->keyStream should have enough space remaining to
handle this request.
key The key to use when generating this key stream. The format
of this key will depend on the block cipher you are using.
context Pointer to a context structure for this operation. The first call
of this function should have the context->initializationVector
set. This value will be incremented for each block request.
options Block cipher encryption options that the user can specify,
or'd together. This function currently does not support any
options.
Function
BLOCK_CIPHER_ERRORS BLOCK_CIPHER_GCM_KeyStreamGenerate (DRV_HANDLE handle,
uint32_t numBlocks, void * key, BLOCK_CIPHER_GCM_CONTEXT * context,
uint32_t options)
1.7.1.7.4 BLOCK_CIPHER_GCM_Encrypt Function
Encrypts/authenticates plain text using Galois/counter mode.
File
block_cipher_mode_gcm.h
Syntax
BLOCK_CIPHER_ERRORS BLOCK_CIPHER_GCM_Encrypt(DRV_HANDLE handle, uint8_t * cipherText,
uint8_t * plainText, uint32_t numBytes, uint8_t * authenticationTag, uint8_t tagLen, void *
key, BLOCK_CIPHER_GCM_CONTEXT * context, uint32_t options);
Module
GCM
1.7 Library Interface MLA - Crypto Library Help Block Cipher Modes
78
Protego_Release_01_05-Related-OEM-Documentation-MLA_v2013_12_20-help_mla_crypto.pdf