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

This file contains AES definitions and functions. More...

#include "config.h"
#include <stddef.h>
#include <stdint.h>
Include dependency graph for aes.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  mbedtls_aes_context
 The AES context-type definition. More...
 

Macros

#define MBEDTLS_AES_ENCRYPT   1
 
#define MBEDTLS_AES_DECRYPT   0
 
#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH   -0x0020
 
#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH   -0x0022
 
#define MBEDTLS_ERR_AES_BAD_INPUT_DATA   -0x0021
 
#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE   -0x0023
 
#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED   -0x0025
 
#define MBEDTLS_DEPRECATED
 

Typedefs

typedef struct mbedtls_aes_context mbedtls_aes_context
 The AES context-type definition. More...
 

Functions

void mbedtls_aes_init (mbedtls_aes_context *ctx)
 This function initializes the specified AES context. More...
 
void mbedtls_aes_free (mbedtls_aes_context *ctx)
 This function releases and clears the specified AES context. More...
 
int mbedtls_aes_setkey_enc (mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits)
 This function sets the encryption key. More...
 
int mbedtls_aes_setkey_dec (mbedtls_aes_context *ctx, const unsigned char *key, unsigned int keybits)
 This function sets the decryption key. More...
 
int mbedtls_aes_crypt_ecb (mbedtls_aes_context *ctx, int mode, const unsigned char input[16], unsigned char output[16])
 This function performs an AES single-block encryption or decryption operation. More...
 
int mbedtls_internal_aes_encrypt (mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16])
 Internal AES block encryption function. This is only exposed to allow overriding it using MBEDTLS_AES_ENCRYPT_ALT. More...
 
int mbedtls_internal_aes_decrypt (mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16])
 Internal AES block decryption function. This is only exposed to allow overriding it using see MBEDTLS_AES_DECRYPT_ALT. More...
 
MBEDTLS_DEPRECATED void mbedtls_aes_encrypt (mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16])
 Deprecated internal AES block encryption function without return value. More...
 
MBEDTLS_DEPRECATED void mbedtls_aes_decrypt (mbedtls_aes_context *ctx, const unsigned char input[16], unsigned char output[16])
 Deprecated internal AES block decryption function without return value. More...
 
int mbedtls_aes_self_test (int verbose)
 Checkup routine. More...
 

Detailed Description

This file contains AES definitions and functions.

     The Advanced Encryption Standard (AES) specifies a FIPS-approved
     cryptographic algorithm that can be used to protect electronic
     data.

     The AES algorithm is a symmetric block cipher that can
     encrypt and decrypt information. For more information, see
     <em>FIPS Publication 197: Advanced Encryption Standard</em> and
     <em>ISO/IEC 18033-2:2006: Information technology -- Security
     techniques -- Encryption algorithms -- Part 2: Asymmetric
     ciphers</em>.

     The AES-XTS block mode is standardized by NIST SP 800-38E
     <https://nvlpubs.nist.gov/nistpubs/legacy/sp/nistspecialpublication800-38e.pdf>
     and described in detail by IEEE P1619
     <https://ieeexplore.ieee.org/servlet/opac?punumber=4375278>.

Macro Definition Documentation

◆ MBEDTLS_AES_DECRYPT

#define MBEDTLS_AES_DECRYPT   0

AES decryption.

◆ MBEDTLS_AES_ENCRYPT

#define MBEDTLS_AES_ENCRYPT   1

AES encryption.

◆ MBEDTLS_DEPRECATED

#define MBEDTLS_DEPRECATED

◆ MBEDTLS_ERR_AES_BAD_INPUT_DATA

#define MBEDTLS_ERR_AES_BAD_INPUT_DATA   -0x0021

Invalid input data.

◆ MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE

#define MBEDTLS_ERR_AES_FEATURE_UNAVAILABLE   -0x0023

Feature not available. For example, an unsupported AES key size.

◆ MBEDTLS_ERR_AES_HW_ACCEL_FAILED

#define MBEDTLS_ERR_AES_HW_ACCEL_FAILED   -0x0025

AES hardware accelerator failed.

◆ MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH

#define MBEDTLS_ERR_AES_INVALID_INPUT_LENGTH   -0x0022

Invalid data input length.

◆ MBEDTLS_ERR_AES_INVALID_KEY_LENGTH

#define MBEDTLS_ERR_AES_INVALID_KEY_LENGTH   -0x0020

Invalid key length.

Typedef Documentation

◆ mbedtls_aes_context

The AES context-type definition.

Function Documentation

◆ mbedtls_aes_crypt_ecb()

int mbedtls_aes_crypt_ecb ( mbedtls_aes_context ctx,
int  mode,
const unsigned char  input[16],
unsigned char  output[16] 
)

This function performs an AES single-block encryption or decryption operation.

It performs the operation defined in the mode parameter (encrypt or decrypt), on the input data buffer defined in the input parameter.

mbedtls_aes_init(), and either mbedtls_aes_setkey_enc() or mbedtls_aes_setkey_dec() must be called before the first call to this API with the same context.

Parameters
ctxThe AES context to use for encryption or decryption. It must be initialized and bound to a key.
modeThe AES operation: MBEDTLS_AES_ENCRYPT or MBEDTLS_AES_DECRYPT.
inputThe buffer holding the input data. It must be readable and at least 16 Bytes long.
outputThe buffer where the output data will be written. It must be writeable and at least 16 Bytes long.
Returns
0 on success.
Here is the call graph for this function:

◆ mbedtls_aes_decrypt()

MBEDTLS_DEPRECATED void mbedtls_aes_decrypt ( mbedtls_aes_context ctx,
const unsigned char  input[16],
unsigned char  output[16] 
)

Deprecated internal AES block decryption function without return value.

Deprecated:
Superseded by mbedtls_internal_aes_decrypt()
Parameters
ctxThe AES context to use for decryption.
inputCiphertext block.
outputOutput (plaintext) block.
Here is the call graph for this function:

◆ mbedtls_aes_encrypt()

MBEDTLS_DEPRECATED void mbedtls_aes_encrypt ( mbedtls_aes_context ctx,
const unsigned char  input[16],
unsigned char  output[16] 
)

Deprecated internal AES block encryption function without return value.

Deprecated:
Superseded by mbedtls_internal_aes_encrypt()
Parameters
ctxThe AES context to use for encryption.
inputPlaintext block.
outputOutput (ciphertext) block.
Here is the call graph for this function:

◆ mbedtls_aes_free()

void mbedtls_aes_free ( mbedtls_aes_context ctx)

This function releases and clears the specified AES context.

Parameters
ctxThe AES context to clear. If this is NULL, this function does nothing. Otherwise, the context must have been at least initialized.
Here is the call graph for this function:

◆ mbedtls_aes_init()

void mbedtls_aes_init ( mbedtls_aes_context ctx)

This function initializes the specified AES context.

            It must be the first API called before using
            the context.
Parameters
ctxThe AES context to initialize. This must not be NULL.

◆ mbedtls_aes_self_test()

int mbedtls_aes_self_test ( int  verbose)

Checkup routine.

Returns
0 on success.
1 on failure.

◆ mbedtls_aes_setkey_dec()

int mbedtls_aes_setkey_dec ( mbedtls_aes_context ctx,
const unsigned char *  key,
unsigned int  keybits 
)

This function sets the decryption key.

Parameters
ctxThe AES context to which the key should be bound. It must be initialized.
keyThe decryption key. This must be a readable buffer of size keybits bits.
keybitsThe size of data passed. Valid options are:
  • 128 bits
  • 192 bits
  • 256 bits
Returns
0 on success.
MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure.

◆ mbedtls_aes_setkey_enc()

int mbedtls_aes_setkey_enc ( mbedtls_aes_context ctx,
const unsigned char *  key,
unsigned int  keybits 
)

This function sets the encryption key.

Parameters
ctxThe AES context to which the key should be bound. It must be initialized.
keyThe encryption key. This must be a readable buffer of size keybits bits.
keybitsThe size of data passed in bits. Valid options are:
  • 128 bits
  • 192 bits
  • 256 bits
Returns
0 on success.
MBEDTLS_ERR_AES_INVALID_KEY_LENGTH on failure.

◆ mbedtls_internal_aes_decrypt()

int mbedtls_internal_aes_decrypt ( mbedtls_aes_context ctx,
const unsigned char  input[16],
unsigned char  output[16] 
)

Internal AES block decryption function. This is only exposed to allow overriding it using see MBEDTLS_AES_DECRYPT_ALT.

Parameters
ctxThe AES context to use for decryption.
inputThe ciphertext block.
outputThe output (plaintext) block.
Returns
0 on success.

◆ mbedtls_internal_aes_encrypt()

int mbedtls_internal_aes_encrypt ( mbedtls_aes_context ctx,
const unsigned char  input[16],
unsigned char  output[16] 
)

Internal AES block encryption function. This is only exposed to allow overriding it using MBEDTLS_AES_ENCRYPT_ALT.

Parameters
ctxThe AES context to use for encryption.
inputThe plaintext block.
outputThe output (ciphertext) block.
Returns
0 on success.