1.10 CRYPT_AES_CBC_Decrypt Function

C

int CRYPT_AES_CBC_Decrypt(
CRYPT_AES_CTX* aes,
unsigned char* out,
const unsigned char* in,
unsigned int inSz
);

Description

This function decrypts a block of data using the AES algorithm in Cipher-Block-Chaining (CBC) mode.

Preconditions

Key and Initialization Vector (IV) must be set earlier with a call to CRYPT_AES_KeySet and CRYPT_AES_IvSet.

Parameters

ParametersDescription
aesPointer to context which saves state between calls
outPointer to buffer to store the results of the decryption pass
inPointer to buffer holding the data to be decrypted
inSzSize of the input data, in bytes

Returns

  • BAD_FUNC_ARG - An invalid pointer was passed to the function
  • 0 - An invalid pointer was not passed to the function

Remarks

The output buffer must be equal in size to the input buffer.

Example

CRYPT_AES_CTX mcAes;
int           ret;
byte          out1[AES_TEST_SIZE];
byte          out2[AES_TEST_SIZE];

strncpy((char*)key, "1234567890abcdefghijklmnopqrstuv", 32);
strncpy((char*)iv,  "1234567890abcdef", 16);

ret = CRYPT_AES_KeySet(&mcAes, key, 16, iv, CRYPT_AES_ENCRYPTION);
ret = CRYPT_AES_CBC_Decrypt(&mcAes, out2, out1, AES_TEST_SIZE);