Chapter 2 Algorithm Info Types 39
AI_DESX_CBC_IV8
AI_DESX_CBC_IV8
Purpose:
This AI allows you to perform DESX encryption or decryption in CBC mode with an
8-byte initialization vector on data that is a multiple of 8 bytes long. This algorithm
takes 24 bytes of keying material. The first 8 bytes of the key form a standard 56-bit
DES key, the second 8 bytes become the input whitening, and the last 8 bytes become
the output whitening. The DESX algorithm has 64-bit input and output blocks like
DES and it is used in all the same modes. Internally, the plaintext is XORed with the
input whitening before running it through a DES encryption; and the output of DES is
XORed with the output whitening to produce the output block of DESX. Decryption
reverses those steps. See AI_DESX_CBCPadIV8 for the same algorithm type with
padding.
Type of information this allows you to use:
an 8-byte initialization vector for the DESX-CBC encryption algorithm, as defined by
RSA Security Inc.
Format of info supplied to B_SetAlgorithmInfo:
pointer to an unsigned char array that holds the 8 bytes of the initialization vector.
Format of info returned by B_GetAlgorithmInfo:
pointer to an unsigned char array that holds the 8 bytes of the initialization vector.
Crypto-C procedures to use with algorithm object:
B_EncryptInit, B_EncryptUpdate, B_EncryptFinal, B_DecryptInit,
B_DecryptUpdate, and B_DecryptFinal. You may pass (B_ALGORITHM_OBJ)NULL_PTR
for all
randomAlgorithm
arguments.
Algorithm methods to include in application’s algorithm chooser:
AM_DESX_CBC_ENCRYPT for encryption and AM_DESX_CBC_DECRYPT for decryption.