aes.c File Reference

AES (Advanced Encryption Standard) More...

#include "core/crypto.h"
#include "cipher/aes.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL
 

Functions

__weak_func error_t aesInit (AesContext *context, const uint8_t *key, size_t keyLen)
 Key expansion. More...
 
__weak_func void aesEncryptBlock (AesContext *context, const uint8_t *input, uint8_t *output)
 Encrypt a 16-byte block using AES algorithm. More...
 
__weak_func void aesDecryptBlock (AesContext *context, const uint8_t *input, uint8_t *output)
 Decrypt a 16-byte block using AES algorithm. More...
 
__weak_func void aesDeinit (AesContext *context)
 Release AES context. More...
 

Variables

const uint8_t AES128_ECB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x01}
 
const uint8_t AES128_CBC_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x02}
 
const uint8_t AES128_OFB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x03}
 
const uint8_t AES128_CFB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x04}
 
const uint8_t AES128_GCM_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x06}
 
const uint8_t AES128_CCM_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x07}
 
const uint8_t AES192_ECB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x15}
 
const uint8_t AES192_CBC_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x16}
 
const uint8_t AES192_OFB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x17}
 
const uint8_t AES192_CFB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x18}
 
const uint8_t AES192_GCM_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x1A}
 
const uint8_t AES192_CCM_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x1B}
 
const uint8_t AES256_ECB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x29}
 
const uint8_t AES256_CBC_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2A}
 
const uint8_t AES256_OFB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2B}
 
const uint8_t AES256_CFB_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2C}
 
const uint8_t AES256_GCM_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2E}
 
const uint8_t AES256_CCM_OID [9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2F}
 
const CipherAlgo aesCipherAlgo
 

Detailed Description

AES (Advanced Encryption Standard)

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneCRYPTO Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Description

AES is an encryption standard based on Rijndael algorithm, a symmetric block cipher that can process data blocks of 128 bits, using cipher keys with lengths of 128, 192, and 256 bits. Refer to FIPS 197 for more details

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file aes.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL

Definition at line 38 of file aes.c.

Function Documentation

◆ aesDecryptBlock()

__weak_func void aesDecryptBlock ( AesContext context,
const uint8_t *  input,
uint8_t *  output 
)

Decrypt a 16-byte block using AES algorithm.

Parameters
[in]contextPointer to the AES context
[in]inputCiphertext block to decrypt
[out]outputPlaintext block resulting from decryption

Definition at line 462 of file aes.c.

◆ aesDeinit()

__weak_func void aesDeinit ( AesContext context)

Release AES context.

Parameters
[in]contextPointer to the AES context

Definition at line 571 of file aes.c.

◆ aesEncryptBlock()

__weak_func void aesEncryptBlock ( AesContext context,
const uint8_t *  input,
uint8_t *  output 
)

Encrypt a 16-byte block using AES algorithm.

Parameters
[in]contextPointer to the AES context
[in]inputPlaintext block to encrypt
[out]outputCiphertext block resulting from encryption

Definition at line 351 of file aes.c.

◆ aesInit()

__weak_func error_t aesInit ( AesContext context,
const uint8_t *  key,
size_t  keyLen 
)

Key expansion.

Parameters
[in]contextPointer to the AES context to initialize
[in]keyPointer to the key
[in]keyLenLength of the key
Returns
Error code

Definition at line 242 of file aes.c.

Variable Documentation

◆ AES128_CBC_OID

const uint8_t AES128_CBC_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x02}

Definition at line 182 of file aes.c.

◆ AES128_CCM_OID

const uint8_t AES128_CCM_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x07}

Definition at line 190 of file aes.c.

◆ AES128_CFB_OID

const uint8_t AES128_CFB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x04}

Definition at line 186 of file aes.c.

◆ AES128_ECB_OID

const uint8_t AES128_ECB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x01}

Definition at line 180 of file aes.c.

◆ AES128_GCM_OID

const uint8_t AES128_GCM_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x06}

Definition at line 188 of file aes.c.

◆ AES128_OFB_OID

const uint8_t AES128_OFB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x03}

Definition at line 184 of file aes.c.

◆ AES192_CBC_OID

const uint8_t AES192_CBC_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x16}

Definition at line 195 of file aes.c.

◆ AES192_CCM_OID

const uint8_t AES192_CCM_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x1B}

Definition at line 203 of file aes.c.

◆ AES192_CFB_OID

const uint8_t AES192_CFB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x18}

Definition at line 199 of file aes.c.

◆ AES192_ECB_OID

const uint8_t AES192_ECB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x15}

Definition at line 193 of file aes.c.

◆ AES192_GCM_OID

const uint8_t AES192_GCM_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x1A}

Definition at line 201 of file aes.c.

◆ AES192_OFB_OID

const uint8_t AES192_OFB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x17}

Definition at line 197 of file aes.c.

◆ AES256_CBC_OID

const uint8_t AES256_CBC_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2A}

Definition at line 208 of file aes.c.

◆ AES256_CCM_OID

const uint8_t AES256_CCM_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2F}

Definition at line 216 of file aes.c.

◆ AES256_CFB_OID

const uint8_t AES256_CFB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2C}

Definition at line 212 of file aes.c.

◆ AES256_ECB_OID

const uint8_t AES256_ECB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x29}

Definition at line 206 of file aes.c.

◆ AES256_GCM_OID

const uint8_t AES256_GCM_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2E}

Definition at line 214 of file aes.c.

◆ AES256_OFB_OID

const uint8_t AES256_OFB_OID[9] = {0x60, 0x86, 0x48, 0x01, 0x65, 0x03, 0x04, 0x01, 0x2B}

Definition at line 210 of file aes.c.

◆ aesCipherAlgo

const CipherAlgo aesCipherAlgo
Initial value:
=
{
"AES",
sizeof(AesContext),
NULL,
NULL,
}
__weak_func void aesDecryptBlock(AesContext *context, const uint8_t *input, uint8_t *output)
Decrypt a 16-byte block using AES algorithm.
Definition: aes.c:462
__weak_func void aesDeinit(AesContext *context)
Release AES context.
Definition: aes.c:571
__weak_func void aesEncryptBlock(AesContext *context, const uint8_t *input, uint8_t *output)
Encrypt a 16-byte block using AES algorithm.
Definition: aes.c:351
__weak_func error_t aesInit(AesContext *context, const uint8_t *key, size_t keyLen)
Key expansion.
Definition: aes.c:242
#define AES_BLOCK_SIZE
Definition: aes.h:43
void(* CipherAlgoDeinit)(void *context)
Definition: crypto.h:983
void(* CipherAlgoDecryptBlock)(void *context, const uint8_t *input, uint8_t *output)
Definition: crypto.h:980
error_t(* CipherAlgoInit)(void *context, const uint8_t *key, size_t keyLen)
Definition: crypto.h:968
void(* CipherAlgoEncryptBlock)(void *context, const uint8_t *input, uint8_t *output)
Definition: crypto.h:977
@ CIPHER_ALGO_TYPE_BLOCK
Definition: crypto.h:932
AES algorithm context.
Definition: aes.h:58

Definition at line 219 of file aes.c.