cbc.c File Reference

Cipher Block Chaining (CBC) mode. More...

#include "core/crypto.h"
#include "cipher_modes/cbc.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL
 

Functions

__weak_func error_t cbcEncrypt (const CipherAlgo *cipher, void *context, uint8_t *iv, const uint8_t *p, uint8_t *c, size_t length)
 CBC encryption. More...
 
__weak_func error_t cbcDecrypt (const CipherAlgo *cipher, void *context, uint8_t *iv, const uint8_t *c, uint8_t *p, size_t length)
 CBC decryption. More...
 

Detailed Description

Cipher Block Chaining (CBC) mode.

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

The Cipher Block Chaining (CBC) mode is a confidentiality mode whose encryption process features the combining of the plaintext blocks with the previous ciphertext blocks. The CBC mode requires an IV to combine with the first plaintext block. Refer to SP 800-38A for more details

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

Definition in file cbc.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL

Definition at line 39 of file cbc.c.

Function Documentation

◆ cbcDecrypt()

__weak_func error_t cbcDecrypt ( const CipherAlgo cipher,
void *  context,
uint8_t *  iv,
const uint8_t *  c,
uint8_t *  p,
size_t  length 
)

CBC decryption.

Parameters
[in]cipherCipher algorithm
[in]contextCipher algorithm context
[in,out]ivInitialization vector
[in]cCiphertext to be decrypted
[out]pPlaintext resulting from the decryption
[in]lengthTotal number of data bytes to be decrypted
Returns
Error code

Definition at line 108 of file cbc.c.

◆ cbcEncrypt()

__weak_func error_t cbcEncrypt ( const CipherAlgo cipher,
void *  context,
uint8_t *  iv,
const uint8_t *  p,
uint8_t *  c,
size_t  length 
)

CBC encryption.

Parameters
[in]cipherCipher algorithm
[in]contextCipher algorithm context
[in,out]ivInitialization vector
[in]pPlaintext to be encrypted
[out]cCiphertext resulting from the encryption
[in]lengthTotal number of data bytes to be encrypted
Returns
Error code

Definition at line 61 of file cbc.c.