Skip to content

des3.h

Functions

Name
int wc_Des_SetKey(Des * des, const byte * key, const byte * iv, int dir)
This function sets the key and initialization vector (iv) for the Des structure given as argument. It also initializes and allocates space for the buffers needed for encryption and decryption, if these have not yet been initialized. Note: If no iv is provided (i.e. iv == NULL) the initialization vector defaults to an iv of 0.
void wc_Des_SetIV(Des * des, const byte * iv)
This function sets the initialization vector (iv) for the Des structure given as argument. When passed a NULL iv, it sets the initialization vector to 0.
int wc_Des_CbcEncrypt(Des * des, byte * out, const byte * in, word32 sz)
This function encrypts the input message, in, and stores the result in the output buffer, out. It uses DES encryption with cipher block chaining (CBC) mode.
int wc_Des_CbcDecrypt(Des * des, byte * out, const byte * in, word32 sz)
This function decrypts the input ciphertext, in, and stores the resulting plaintext in the output buffer, out. It uses DES encryption with cipher block chaining (CBC) mode.
int wc_Des_EcbEncrypt(Des * des, byte * out, const byte * in, word32 sz)
This function encrypts the input message, in, and stores the result in the output buffer, out. It uses Des encryption with Electronic Codebook (ECB) mode.
int wc_Des3_EcbEncrypt(Des3 * des, byte * out, const byte * in, word32 sz)
This function encrypts the input message, in, and stores the result in the output buffer, out. It uses Des3 encryption with Electronic Codebook (ECB) mode. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible.
int wc_Des3_SetKey(Des3 * des, const byte * key, const byte * iv, int dir)
This function sets the key and initialization vector (iv) for the Des3 structure given as argument. It also initializes and allocates space for the buffers needed for encryption and decryption, if these have not yet been initialized. Note: If no iv is provided (i.e. iv == NULL) the initialization vector defaults to an iv of 0.
int wc_Des3_SetIV(Des3 * des, const byte * iv)
This function sets the initialization vector (iv) for the Des3 structure given as argument. When passed a NULL iv, it sets the initialization vector to 0.
int wc_Des3_CbcEncrypt(Des3 * des, byte * out, const byte * in, word32 sz)
This function encrypts the input message, in, and stores the result in the output buffer, out. It uses Triple Des (3DES) encryption with cipher block chaining (CBC) mode.
int wc_Des3_CbcDecrypt(Des3 * des, byte * out, const byte * in, word32 sz)
This function decrypts the input ciphertext, in, and stores the resulting plaintext in the output buffer, out. It uses Triple Des (3DES) encryption with cipher block chaining (CBC) mode.

Functions Documentation

function wc_Des_SetKey

int wc_Des_SetKey(
    Des * des,
    const byte * key,
    const byte * iv,
    int dir
)

This function sets the key and initialization vector (iv) for the Des structure given as argument. It also initializes and allocates space for the buffers needed for encryption and decryption, if these have not yet been initialized. Note: If no iv is provided (i.e. iv == NULL) the initialization vector defaults to an iv of 0.

Parameters:

  • des pointer to the Des structure to initialize
  • key pointer to the buffer containing the 8 byte key with which to initialize the Des structure
  • iv pointer to the buffer containing the 8 byte iv with which to initialize the Des structure. If this is not provided, the iv defaults to 0
  • dir direction of encryption. Valid options are: DES_ENCRYPTION, and DES_DECRYPTION

See:

Return: 0 On successfully setting the key and initialization vector for the Des structure

3

Example

Des enc; // Des structure used for encryption
int ret;
byte key[] = { // initialize with 8 byte key };
byte iv[]  = { // initialize with 8 byte iv };

ret = wc_Des_SetKey(&des, key, iv, DES_ENCRYPTION);
if (ret != 0) {
    // error initializing des structure
}

function wc_Des_SetIV

void wc_Des_SetIV(
    Des * des,
    const byte * iv
)

This function sets the initialization vector (iv) for the Des structure given as argument. When passed a NULL iv, it sets the initialization vector to 0.

Parameters:

  • des pointer to the Des structure for which to set the iv
  • iv pointer to the buffer containing the 8 byte iv with which to initialize the Des structure. If this is not provided, the iv defaults to 0

See: wc_Des_SetKey

Return: none No returns.

3

Example

Des enc; // Des structure used for encryption
// initialize enc with wc_Des_SetKey
byte iv[]  = { // initialize with 8 byte iv };
wc_Des_SetIV(&enc, iv);
}

function wc_Des_CbcEncrypt

int wc_Des_CbcEncrypt(
    Des * des,
    byte * out,
    const byte * in,
    word32 sz
)

This function encrypts the input message, in, and stores the result in the output buffer, out. It uses DES encryption with cipher block chaining (CBC) mode.

Parameters:

  • des pointer to the Des structure to use for encryption
  • out pointer to the buffer in which to store the encrypted ciphertext
  • in pointer to the input buffer containing the message to encrypt
  • sz length of the message to encrypt

See:

Return: 0 Returned upon successfully encrypting the given input message

3

Example

Des enc; // Des structure used for encryption
// initialize enc with wc_Des_SetKey, use mode DES_ENCRYPTION

byte plain[]  = { // initialize with message };
byte cipher[sizeof(plain)];

if ( wc_Des_CbcEncrypt(&enc, cipher, plain, sizeof(plain)) != 0) {
    // error encrypting message
}

function wc_Des_CbcDecrypt

int wc_Des_CbcDecrypt(
    Des * des,
    byte * out,
    const byte * in,
    word32 sz
)

This function decrypts the input ciphertext, in, and stores the resulting plaintext in the output buffer, out. It uses DES encryption with cipher block chaining (CBC) mode.

Parameters:

  • des pointer to the Des structure to use for decryption
  • out pointer to the buffer in which to store the decrypted plaintext
  • in pointer to the input buffer containing the encrypted ciphertext
  • sz length of the ciphertext to decrypt

See:

Return: 0 Returned upon successfully decrypting the given ciphertext

3

Example

Des dec; // Des structure used for decryption
// initialize dec with wc_Des_SetKey, use mode DES_DECRYPTION

byte cipher[]  = { // initialize with ciphertext };
byte decoded[sizeof(cipher)];

if ( wc_Des_CbcDecrypt(&dec, decoded, cipher, sizeof(cipher)) != 0) {
    // error decrypting message
}

function wc_Des_EcbEncrypt

int wc_Des_EcbEncrypt(
    Des * des,
    byte * out,
    const byte * in,
    word32 sz
)

This function encrypts the input message, in, and stores the result in the output buffer, out. It uses Des encryption with Electronic Codebook (ECB) mode.

Parameters:

  • des pointer to the Des structure to use for encryption
  • out pointer to the buffer in which to store the encrypted message
  • in pointer to the input buffer containing the plaintext to encrypt
  • sz length of the plaintext to encrypt

See: wc_Des_SetKe

Return: 0: Returned upon successfully encrypting the given plaintext.

3

Example

Des enc; // Des structure used for encryption
// initialize enc with wc_Des_SetKey, use mode DES_ENCRYPTION

byte plain[]  = { // initialize with message to encrypt };
byte cipher[sizeof(plain)];

if ( wc_Des_EcbEncrypt(&enc,cipher, plain, sizeof(plain)) != 0) {
    // error encrypting message
}

function wc_Des3_EcbEncrypt

int wc_Des3_EcbEncrypt(
    Des3 * des,
    byte * out,
    const byte * in,
    word32 sz
)

This function encrypts the input message, in, and stores the result in the output buffer, out. It uses Des3 encryption with Electronic Codebook (ECB) mode. Warning: In nearly all use cases ECB mode is considered to be less secure. Please avoid using ECB API’s directly whenever possible.

Parameters:

  • des3 pointer to the Des3 structure to use for encryption
  • out pointer to the buffer in which to store the encrypted message
  • in pointer to the input buffer containing the plaintext to encrypt
  • sz length of the plaintext to encrypt

See: wc_Des3_SetKey

Return: 0 Returned upon successfully encrypting the given plaintext

3

Example

Des3 enc; // Des3 structure used for encryption
// initialize enc with wc_Des3_SetKey, use mode DES_ENCRYPTION

byte plain[]  = { // initialize with message to encrypt };
byte cipher[sizeof(plain)];

if ( wc_Des3_EcbEncrypt(&enc,cipher, plain, sizeof(plain)) != 0) {
    // error encrypting message
}

function wc_Des3_SetKey

int wc_Des3_SetKey(
    Des3 * des,
    const byte * key,
    const byte * iv,
    int dir
)

This function sets the key and initialization vector (iv) for the Des3 structure given as argument. It also initializes and allocates space for the buffers needed for encryption and decryption, if these have not yet been initialized. Note: If no iv is provided (i.e. iv == NULL) the initialization vector defaults to an iv of 0.

Parameters:

  • des3 pointer to the Des3 structure to initialize
  • key pointer to the buffer containing the 24 byte key with which to initialize the Des3 structure
  • iv pointer to the buffer containing the 8 byte iv with which to initialize the Des3 structure. If this is not provided, the iv defaults to 0
  • dir direction of encryption. Valid options are: DES_ENCRYPTION, and DES_DECRYPTION

See:

Return: 0 On successfully setting the key and initialization vector for the Des structure

3

Example

Des3 enc; // Des3 structure used for encryption
int ret;
byte key[] = { // initialize with 24 byte key };
byte iv[]  = { // initialize with 8 byte iv };

ret = wc_Des3_SetKey(&des, key, iv, DES_ENCRYPTION);
if (ret != 0) {
    // error initializing des structure
}

function wc_Des3_SetIV

int wc_Des3_SetIV(
    Des3 * des,
    const byte * iv
)

This function sets the initialization vector (iv) for the Des3 structure given as argument. When passed a NULL iv, it sets the initialization vector to 0.

Parameters:

  • des pointer to the Des3 structure for which to set the iv
  • iv pointer to the buffer containing the 8 byte iv with which to initialize the Des3 structure. If this is not provided, the iv defaults to 0

See: wc_Des3_SetKey

Return: none No returns.

3

Example

Des3 enc; // Des3 structure used for encryption
// initialize enc with wc_Des3_SetKey

byte iv[]  = { // initialize with 8 byte iv };

wc_Des3_SetIV(&enc, iv);
}

function wc_Des3_CbcEncrypt

int wc_Des3_CbcEncrypt(
    Des3 * des,
    byte * out,
    const byte * in,
    word32 sz
)

This function encrypts the input message, in, and stores the result in the output buffer, out. It uses Triple Des (3DES) encryption with cipher block chaining (CBC) mode.

Parameters:

  • des pointer to the Des3 structure to use for encryption
  • out pointer to the buffer in which to store the encrypted ciphertext
  • in pointer to the input buffer containing the message to encrypt
  • sz length of the message to encrypt

See:

Return: 0 Returned upon successfully encrypting the given input message

3

Example

Des3 enc; // Des3 structure used for encryption
// initialize enc with wc_Des3_SetKey, use mode DES_ENCRYPTION

byte plain[]  = { // initialize with message };
byte cipher[sizeof(plain)];

if ( wc_Des3_CbcEncrypt(&enc, cipher, plain, sizeof(plain)) != 0) {
    // error encrypting message
}

function wc_Des3_CbcDecrypt

int wc_Des3_CbcDecrypt(
    Des3 * des,
    byte * out,
    const byte * in,
    word32 sz
)

This function decrypts the input ciphertext, in, and stores the resulting plaintext in the output buffer, out. It uses Triple Des (3DES) encryption with cipher block chaining (CBC) mode.

Parameters:

  • des pointer to the Des3 structure to use for decryption
  • out pointer to the buffer in which to store the decrypted plaintext
  • in pointer to the input buffer containing the encrypted ciphertext
  • sz length of the ciphertext to decrypt

See:

Return: 0 Returned upon successfully decrypting the given ciphertext

3

Example

Des3 dec; // Des structure used for decryption
// initialize dec with wc_Des3_SetKey, use mode DES_DECRYPTION

byte cipher[]  = { // initialize with ciphertext };
byte decoded[sizeof(cipher)];

if ( wc_Des3_CbcDecrypt(&dec, decoded, cipher, sizeof(cipher)) != 0) {
    // error decrypting message
}

Source code


int  wc_Des_SetKey(Des* des, const byte* key,
                               const byte* iv, int dir);

void wc_Des_SetIV(Des* des, const byte* iv);

int  wc_Des_CbcEncrypt(Des* des, byte* out,
                                   const byte* in, word32 sz);

int  wc_Des_CbcDecrypt(Des* des, byte* out,
                                   const byte* in, word32 sz);

int  wc_Des_EcbEncrypt(Des* des, byte* out,
                                   const byte* in, word32 sz);

int wc_Des3_EcbEncrypt(Des3* des, byte* out,
                                   const byte* in, word32 sz);

int  wc_Des3_SetKey(Des3* des, const byte* key,
                                const byte* iv,int dir);

int  wc_Des3_SetIV(Des3* des, const byte* iv);

int  wc_Des3_CbcEncrypt(Des3* des, byte* out,
                                    const byte* in,word32 sz);

int  wc_Des3_CbcDecrypt(Des3* des, byte* out,
                                    const byte* in,word32 sz);

Updated on 2024-03-19 at 01:20:40 +0000