rc2.c File Reference

RC2 block cipher. More...

#include "core/crypto.h"
#include "cipher/rc2.h"
#include "debug.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL
 

Functions

error_t rc2Init (Rc2Context *context, const uint8_t *key, size_t keyLen)
 Initialize a RC2 context using the supplied key. More...
 
error_t rc2InitEx (Rc2Context *context, const uint8_t *key, size_t keyLen, uint_t effectiveKeyLen)
 Initialize a RC2 context using the supplied key. More...
 
void rc2EncryptBlock (Rc2Context *context, const uint8_t *input, uint8_t *output)
 Encrypt a 8-byte block using RC2 algorithm. More...
 
void rc2DecryptBlock (Rc2Context *context, const uint8_t *input, uint8_t *output)
 Decrypt a 8-byte block using RC2 algorithm. More...
 
void rc2Deinit (Rc2Context *context)
 Release RC2 context. More...
 

Variables

const CipherAlgo rc2CipherAlgo
 

Detailed Description

RC2 block cipher.

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

RC2 is a block encryption algorithm, which may be considered as a proposal for a DES replacement. The input and output block sizes are 64 bits each. The key size is variable, from one byte up to 128 bytes. Refer to RFC 2268 for more details

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

Definition in file rc2.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL

Definition at line 39 of file rc2.c.

Function Documentation

◆ rc2DecryptBlock()

void rc2DecryptBlock ( Rc2Context context,
const uint8_t *  input,
uint8_t *  output 
)

Decrypt a 8-byte block using RC2 algorithm.

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

Definition at line 228 of file rc2.c.

◆ rc2Deinit()

void rc2Deinit ( Rc2Context context)

Release RC2 context.

Parameters
[in]contextPointer to the RC2 context

Definition at line 280 of file rc2.c.

◆ rc2EncryptBlock()

void rc2EncryptBlock ( Rc2Context context,
const uint8_t *  input,
uint8_t *  output 
)

Encrypt a 8-byte block using RC2 algorithm.

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

Definition at line 174 of file rc2.c.

◆ rc2Init()

error_t rc2Init ( Rc2Context context,
const uint8_t *  key,
size_t  keyLen 
)

Initialize a RC2 context using the supplied key.

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

Definition at line 94 of file rc2.c.

◆ rc2InitEx()

error_t rc2InitEx ( Rc2Context context,
const uint8_t *  key,
size_t  keyLen,
uint_t  effectiveKeyLen 
)

Initialize a RC2 context using the supplied key.

Parameters
[in]contextPointer to the RC2 context to initialize
[in]keyPointer to the key
[in]keyLenLength of the key (T)
[in]effectiveKeyLenMaximum effective key length, in bits (T1)
Returns
Error code

Definition at line 110 of file rc2.c.

Variable Documentation

◆ rc2CipherAlgo

const CipherAlgo rc2CipherAlgo
Initial value:
=
{
"RC2",
sizeof(Rc2Context),
NULL,
NULL,
}
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
void rc2DecryptBlock(Rc2Context *context, const uint8_t *input, uint8_t *output)
Decrypt a 8-byte block using RC2 algorithm.
Definition: rc2.c:228
void rc2Deinit(Rc2Context *context)
Release RC2 context.
Definition: rc2.c:280
error_t rc2Init(Rc2Context *context, const uint8_t *key, size_t keyLen)
Initialize a RC2 context using the supplied key.
Definition: rc2.c:94
void rc2EncryptBlock(Rc2Context *context, const uint8_t *input, uint8_t *output)
Encrypt a 8-byte block using RC2 algorithm.
Definition: rc2.c:174
#define RC2_BLOCK_SIZE
Definition: rc2.h:38
RC2 algorithm context.
Definition: rc2.h:53

Definition at line 71 of file rc2.c.