# Vault 7: Projects

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

### Protego

# MLA -- Crypto Library

1 January, 2012

- 1
- 2
…
- 49
- 50
- 51
- 52
- 53
…
- 119
- 120

1.7.1.4.3 BLOCK_CIPHER_CFB_Encrypt Function
Encrypts plain text using cipher feedback mode.
File
block_cipher_mode_cfb.h
Syntax
void BLOCK_CIPHER_CFB_Encrypt(DRV_HANDLE handle, uint8_t * cipherText, uint8_t * plainText,
uint32_t numBytes, void * key, BLOCK_CIPHER_CFB_CONTEXT * context, uint32_t options);
Module
CFB
Returns
None
Description
Encrypts plain text using cipher feedback mode.
Preconditions
The CFB context must be initialized with the block cipher encrypt/decrypt functions and the block cipher algorithm's block
size. The block cipher module must be initialized, if necessary.
Example
// ***************************************************************
// Encrypt data in CFB mode with the AES algorithm.
// ***************************************************************
// System module object variable (for initializing AES)
SYS_MODULE_OBJ sysObject;
// Drive handle variable, to describe which AES module to use
DRV_HANDLE handle;
// 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};
// Plain text to encrypt
static uint8_t plain_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 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)
{
1.7 Library Interface MLA - Crypto Library Help Block Cipher Modes
51

- 1
- 2
…
- 49
- 50
- 51
- 52
- 53
…
- 119
- 120