OPTIGA Trust M  1.1.0
C++ library for Optiga Trust M Chip Security Controller
des.h File Reference

DES block cipher. More...

#include "config.h"
#include <stddef.h>
#include <stdint.h>
Include dependency graph for des.h:

Go to the source code of this file.

Classes

struct  mbedtls_des_context
 DES context structure. More...
 
struct  mbedtls_des3_context
 Triple-DES context structure. More...
 

Macros

#define MBEDTLS_DES_ENCRYPT   1
 
#define MBEDTLS_DES_DECRYPT   0
 
#define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH   -0x0032
 
#define MBEDTLS_ERR_DES_HW_ACCEL_FAILED   -0x0033
 
#define MBEDTLS_DES_KEY_SIZE   8
 

Typedefs

typedef struct mbedtls_des_context mbedtls_des_context
 DES context structure. More...
 
typedef struct mbedtls_des3_context mbedtls_des3_context
 Triple-DES context structure. More...
 

Functions

void mbedtls_des_init (mbedtls_des_context *ctx)
 Initialize DES context. More...
 
void mbedtls_des_free (mbedtls_des_context *ctx)
 Clear DES context. More...
 
void mbedtls_des3_init (mbedtls_des3_context *ctx)
 Initialize Triple-DES context. More...
 
void mbedtls_des3_free (mbedtls_des3_context *ctx)
 Clear Triple-DES context. More...
 
void mbedtls_des_key_set_parity (unsigned char key[MBEDTLS_DES_KEY_SIZE])
 Set key parity on the given key to odd. More...
 
int mbedtls_des_key_check_key_parity (const unsigned char key[MBEDTLS_DES_KEY_SIZE])
 Check that key parity on the given key is odd. More...
 
int mbedtls_des_key_check_weak (const unsigned char key[MBEDTLS_DES_KEY_SIZE])
 Check that key is not a weak or semi-weak DES key. More...
 
int mbedtls_des_setkey_enc (mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE])
 DES key schedule (56-bit, encryption) More...
 
int mbedtls_des_setkey_dec (mbedtls_des_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE])
 DES key schedule (56-bit, decryption) More...
 
int mbedtls_des3_set2key_enc (mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *2])
 Triple-DES key schedule (112-bit, encryption) More...
 
int mbedtls_des3_set2key_dec (mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *2])
 Triple-DES key schedule (112-bit, decryption) More...
 
int mbedtls_des3_set3key_enc (mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *3])
 Triple-DES key schedule (168-bit, encryption) More...
 
int mbedtls_des3_set3key_dec (mbedtls_des3_context *ctx, const unsigned char key[MBEDTLS_DES_KEY_SIZE *3])
 Triple-DES key schedule (168-bit, decryption) More...
 
int mbedtls_des_crypt_ecb (mbedtls_des_context *ctx, const unsigned char input[8], unsigned char output[8])
 DES-ECB block encryption/decryption. More...
 
int mbedtls_des3_crypt_ecb (mbedtls_des3_context *ctx, const unsigned char input[8], unsigned char output[8])
 3DES-ECB block encryption/decryption More...
 
void mbedtls_des_setkey (uint32_t SK[32], const unsigned char key[MBEDTLS_DES_KEY_SIZE])
 Internal function for key expansion. (Only exposed to allow overriding it, see MBEDTLS_DES_SETKEY_ALT) More...
 
int mbedtls_des_self_test (int verbose)
 Checkup routine. More...
 

Detailed Description

DES block cipher.

Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

Macro Definition Documentation

◆ MBEDTLS_DES_DECRYPT

#define MBEDTLS_DES_DECRYPT   0

◆ MBEDTLS_DES_ENCRYPT

#define MBEDTLS_DES_ENCRYPT   1

◆ MBEDTLS_DES_KEY_SIZE

#define MBEDTLS_DES_KEY_SIZE   8

◆ MBEDTLS_ERR_DES_HW_ACCEL_FAILED

#define MBEDTLS_ERR_DES_HW_ACCEL_FAILED   -0x0033

DES hardware accelerator failed.

◆ MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH

#define MBEDTLS_ERR_DES_INVALID_INPUT_LENGTH   -0x0032

The data input has an invalid length.

Typedef Documentation

◆ mbedtls_des3_context

Triple-DES context structure.

◆ mbedtls_des_context

DES context structure.

Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

Function Documentation

◆ mbedtls_des3_crypt_ecb()

int mbedtls_des3_crypt_ecb ( mbedtls_des3_context ctx,
const unsigned char  input[8],
unsigned char  output[8] 
)

3DES-ECB block encryption/decryption

Parameters
ctx3DES context
input64-bit input block
output64-bit output block
Returns
0 if successful

◆ mbedtls_des3_free()

void mbedtls_des3_free ( mbedtls_des3_context ctx)

Clear Triple-DES context.

Parameters
ctxDES3 context to be cleared

◆ mbedtls_des3_init()

void mbedtls_des3_init ( mbedtls_des3_context ctx)

Initialize Triple-DES context.

Parameters
ctxDES3 context to be initialized

◆ mbedtls_des3_set2key_dec()

int mbedtls_des3_set2key_dec ( mbedtls_des3_context ctx,
const unsigned char  key[MBEDTLS_DES_KEY_SIZE *2] 
)

Triple-DES key schedule (112-bit, decryption)

Parameters
ctx3DES context to be initialized
key16-byte secret key
Returns
0

◆ mbedtls_des3_set2key_enc()

int mbedtls_des3_set2key_enc ( mbedtls_des3_context ctx,
const unsigned char  key[MBEDTLS_DES_KEY_SIZE *2] 
)

Triple-DES key schedule (112-bit, encryption)

Parameters
ctx3DES context to be initialized
key16-byte secret key
Returns
0

◆ mbedtls_des3_set3key_dec()

int mbedtls_des3_set3key_dec ( mbedtls_des3_context ctx,
const unsigned char  key[MBEDTLS_DES_KEY_SIZE *3] 
)

Triple-DES key schedule (168-bit, decryption)

Parameters
ctx3DES context to be initialized
key24-byte secret key
Returns
0

◆ mbedtls_des3_set3key_enc()

int mbedtls_des3_set3key_enc ( mbedtls_des3_context ctx,
const unsigned char  key[MBEDTLS_DES_KEY_SIZE *3] 
)

Triple-DES key schedule (168-bit, encryption)

Parameters
ctx3DES context to be initialized
key24-byte secret key
Returns
0

◆ mbedtls_des_crypt_ecb()

int mbedtls_des_crypt_ecb ( mbedtls_des_context ctx,
const unsigned char  input[8],
unsigned char  output[8] 
)

DES-ECB block encryption/decryption.

Parameters
ctxDES context
input64-bit input block
output64-bit output block
Returns
0 if successful
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_free()

void mbedtls_des_free ( mbedtls_des_context ctx)

Clear DES context.

Parameters
ctxDES context to be cleared
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_init()

void mbedtls_des_init ( mbedtls_des_context ctx)

Initialize DES context.

Parameters
ctxDES context to be initialized
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_key_check_key_parity()

int mbedtls_des_key_check_key_parity ( const unsigned char  key[MBEDTLS_DES_KEY_SIZE])

Check that key parity on the given key is odd.

            DES keys are 56 bits long, but each byte is padded with
            a parity bit to allow verification.
Parameters
key8-byte secret key
Returns
0 is parity was ok, 1 if parity was not correct.
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_key_check_weak()

int mbedtls_des_key_check_weak ( const unsigned char  key[MBEDTLS_DES_KEY_SIZE])

Check that key is not a weak or semi-weak DES key.

Parameters
key8-byte secret key
Returns
0 if no weak key was found, 1 if a weak key was identified.
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_key_set_parity()

void mbedtls_des_key_set_parity ( unsigned char  key[MBEDTLS_DES_KEY_SIZE])

Set key parity on the given key to odd.

            DES keys are 56 bits long, but each byte is padded with
            a parity bit to allow verification.
Parameters
key8-byte secret key
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_self_test()

int mbedtls_des_self_test ( int  verbose)

Checkup routine.

Returns
0 if successful, or 1 if the test failed

◆ mbedtls_des_setkey()

void mbedtls_des_setkey ( uint32_t  SK[32],
const unsigned char  key[MBEDTLS_DES_KEY_SIZE] 
)

Internal function for key expansion. (Only exposed to allow overriding it, see MBEDTLS_DES_SETKEY_ALT)

Parameters
SKRound keys
keyBase key
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_setkey_dec()

int mbedtls_des_setkey_dec ( mbedtls_des_context ctx,
const unsigned char  key[MBEDTLS_DES_KEY_SIZE] 
)

DES key schedule (56-bit, decryption)

Parameters
ctxDES context to be initialized
key8-byte secret key
Returns
0
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.

◆ mbedtls_des_setkey_enc()

int mbedtls_des_setkey_enc ( mbedtls_des_context ctx,
const unsigned char  key[MBEDTLS_DES_KEY_SIZE] 
)

DES key schedule (56-bit, encryption)

Parameters
ctxDES context to be initialized
key8-byte secret key
Returns
0
Warning
DES is considered a weak cipher and its use constitutes a security risk. We recommend considering stronger ciphers instead.