ica_des_cbc

Purpose

Encrypt or decrypt data with a DES key using Cipher Block Chaining (CBC) mode, as described in NIST Special Publication 800-38A Chapter 6.2.

Format


unsigned int ica_des_cbc(const unsigned char *in_data,
  unsigned char *out_data,
  unsigned long data_length,
  const unsigned char *key,
  unsigned char *iv,
  unsigned int direction);

Required hardware support

KMC-DEA

Parameters

const unsigned char *in_data
Pointer to a readable buffer that contains the message to be encrypted or decrypted. The size of the message in bytes is data_length. This buffer must be at least as large as data_length.
unsigned char *out_data
Pointer to a writable buffer to contain the resulting encrypted or decrypted message. The size of this buffer in bytes must be at least as large as data_length.
unsigned long data_length
Length in bytes of the message to be encrypted or decrypted, which resides at the beginning of in_data. data_length must be a multiple of the cipher block size (a multiple of 8 bytes for DES).
const unsigned char *key
Pointer to a valid DES key of 8 bytes in length.
unsigned char *iv
Pointer to a valid initialization vector of cipher block size number of bytes (8 bytes for DES). This vector is overwritten by this function. The result value in iv can be used as the initialization vector for a chained ica_des_cbc or ica_des_cbc_cs call with the same key.
unsigned int direction
0
Use the decrypt function.
1
Use the encrypt function.

Return codes

0
Success

For return codes indicating exceptions, see Return codes.