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 16-byte block using RC2 algorithm. More...
 
void rc2DecryptBlock (Rc2Context *context, const uint8_t *input, uint8_t *output)
 Decrypt a 16-byte block using RC2 algorithm. More...
 

Variables

const CipherAlgo rc2CipherAlgo
 

Detailed Description

RC2 block cipher.

License

Copyright (C) 2010-2018 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
1.9.0

Definition in file rc2.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL

Definition at line 37 of file rc2.c.

Function Documentation

◆ rc2DecryptBlock()

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

Decrypt a 16-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 220 of file rc2.c.

◆ rc2EncryptBlock()

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

Encrypt a 16-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 167 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 91 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 107 of file rc2.c.

Variable Documentation

◆ rc2CipherAlgo

const CipherAlgo rc2CipherAlgo
Initial value:
=
{
"RC2",
sizeof(Rc2Context),
NULL,
NULL,
}
void rc2EncryptBlock(Rc2Context *context, const uint8_t *input, uint8_t *output)
Encrypt a 16-byte block using RC2 algorithm.
Definition: rc2.c:167
RC2 algorithm context.
Definition: rc2.h:50
void(* CipherAlgoDecryptBlock)(void *context, const uint8_t *input, uint8_t *output)
Definition: crypto.h:1030
void rc2DecryptBlock(Rc2Context *context, const uint8_t *input, uint8_t *output)
Decrypt a 16-byte block using RC2 algorithm.
Definition: rc2.c:220
error_t rc2Init(Rc2Context *context, const uint8_t *key, size_t keyLen)
Initialize a RC2 context using the supplied key.
Definition: rc2.c:91
error_t(* CipherAlgoInit)(void *context, const uint8_t *key, size_t keyLen)
Definition: crypto.h:1026
#define RC2_BLOCK_SIZE
Definition: rc2.h:36
void(* CipherAlgoEncryptBlock)(void *context, const uint8_t *input, uint8_t *output)
Definition: crypto.h:1029

Definition at line 69 of file rc2.c.