Bitcoin Core 31.0.0
P2P Digital Currency
Loading...
Searching...
No Matches
ctaes.c File Reference
#include "ctaes.h"
Include dependency graph for ctaes.c:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define BIT_RANGE(from, to)
#define BIT_RANGE_LEFT(x, from, to, shift)
#define BIT_RANGE_RIGHT(x, from, to, shift)
#define ROT(x, b)

Functions

static void LoadByte (AES_state *s, unsigned char byte, int r, int c)
 Convert a byte to sliced form, storing it corresponding to given row and column in s.
static void LoadBytes (AES_state *s, const unsigned char *data16)
 Load 16 bytes of data into 8 sliced integers.
static void SaveBytes (unsigned char *data16, const AES_state *s)
 Convert 8 sliced integers into 16 bytes of data.
static void SubBytes (AES_state *s, int inv)
static void ShiftRows (AES_state *s)
static void InvShiftRows (AES_state *s)
static void MixColumns (AES_state *s, int inv)
static void AddRoundKey (AES_state *s, const AES_state *round)
static void GetOneColumn (AES_state *s, const AES_state *a, int c)
 column_0(s) = column_c(a)
static void KeySetupColumnMix (AES_state *s, AES_state *r, const AES_state *a, int c1, int c2)
 column_c1(r) |= (column_0(s) ^= column_c2(a))
static void KeySetupTransform (AES_state *s, const AES_state *r)
 Rotate the rows in s one position upwards, and xor in r.
static void MultX (AES_state *s)
static void AES_setup (AES_state *rounds, const uint8_t *key, int nkeywords, int nrounds)
 Expand the cipher key into the key schedule.
static void AES_encrypt (const AES_state *rounds, int nrounds, unsigned char *cipher16, const unsigned char *plain16)
static void AES_decrypt (const AES_state *rounds, int nrounds, unsigned char *plain16, const unsigned char *cipher16)
void AES128_init (AES128_ctx *ctx, const unsigned char *key16)
void AES128_encrypt (const AES128_ctx *ctx, size_t blocks, unsigned char *cipher16, const unsigned char *plain16)
void AES128_decrypt (const AES128_ctx *ctx, size_t blocks, unsigned char *plain16, const unsigned char *cipher16)
void AES192_init (AES192_ctx *ctx, const unsigned char *key24)
void AES192_encrypt (const AES192_ctx *ctx, size_t blocks, unsigned char *cipher16, const unsigned char *plain16)
void AES192_decrypt (const AES192_ctx *ctx, size_t blocks, unsigned char *plain16, const unsigned char *cipher16)
void AES256_init (AES256_ctx *ctx, const unsigned char *key32)
void AES256_encrypt (const AES256_ctx *ctx, size_t blocks, unsigned char *cipher16, const unsigned char *plain16)
void AES256_decrypt (const AES256_ctx *ctx, size_t blocks, unsigned char *plain16, const unsigned char *cipher16)

Macro Definition Documentation

◆ BIT_RANGE

#define BIT_RANGE ( from,
to )
Value:
(((1 << ((to) - (from))) - 1) << (from))

Definition at line 258 of file ctaes.c.

◆ BIT_RANGE_LEFT

#define BIT_RANGE_LEFT ( x,
from,
to,
shift )
Value:
(((x) & BIT_RANGE((from), (to))) << (shift))
#define BIT_RANGE(from, to)
Definition ctaes.c:258

Definition at line 260 of file ctaes.c.

◆ BIT_RANGE_RIGHT

#define BIT_RANGE_RIGHT ( x,
from,
to,
shift )
Value:
(((x) & BIT_RANGE((from), (to))) >> (shift))

Definition at line 261 of file ctaes.c.

◆ ROT

#define ROT ( x,
b )
Value:
(((x) >> ((b) * 4)) | ((x) << ((4-(b)) * 4)))

Definition at line 287 of file ctaes.c.

Function Documentation

◆ AddRoundKey()

void AddRoundKey ( AES_state * s,
const AES_state * round )
static

Definition at line 354 of file ctaes.c.

Here is the caller graph for this function:

◆ AES128_decrypt()

void AES128_decrypt ( const AES128_ctx * ctx,
size_t blocks,
unsigned char * plain16,
const unsigned char * cipher16 )

Definition at line 509 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES128_encrypt()

void AES128_encrypt ( const AES128_ctx * ctx,
size_t blocks,
unsigned char * cipher16,
const unsigned char * plain16 )

Definition at line 501 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES128_init()

void AES128_init ( AES128_ctx * ctx,
const unsigned char * key16 )

Definition at line 497 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES192_decrypt()

void AES192_decrypt ( const AES192_ctx * ctx,
size_t blocks,
unsigned char * plain16,
const unsigned char * cipher16 )

Definition at line 530 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES192_encrypt()

void AES192_encrypt ( const AES192_ctx * ctx,
size_t blocks,
unsigned char * cipher16,
const unsigned char * plain16 )

Definition at line 521 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES192_init()

void AES192_init ( AES192_ctx * ctx,
const unsigned char * key24 )

Definition at line 517 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES256_decrypt()

void AES256_decrypt ( const AES256_ctx * ctx,
size_t blocks,
unsigned char * plain16,
const unsigned char * cipher16 )

Definition at line 550 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES256_encrypt()

void AES256_encrypt ( const AES256_ctx * ctx,
size_t blocks,
unsigned char * cipher16,
const unsigned char * plain16 )

Definition at line 542 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES256_init()

void AES256_init ( AES256_ctx * ctx,
const unsigned char * key32 )

Definition at line 538 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES_decrypt()

void AES_decrypt ( const AES_state * rounds,
int nrounds,
unsigned char * plain16,
const unsigned char * cipher16 )
static

Definition at line 470 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES_encrypt()

void AES_encrypt ( const AES_state * rounds,
int nrounds,
unsigned char * cipher16,
const unsigned char * plain16 )
static

Definition at line 449 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AES_setup()

void AES_setup ( AES_state * rounds,
const uint8_t * key,
int nkeywords,
int nrounds )
static

Expand the cipher key into the key schedule.

state must be a pointer to an array of size nrounds + 1. key must be a pointer to 4 * nkeywords bytes.

AES128 uses nkeywords = 4, nrounds = 10 AES192 uses nkeywords = 6, nrounds = 12 AES256 uses nkeywords = 8, nrounds = 14

Definition at line 407 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetOneColumn()

void GetOneColumn ( AES_state * s,
const AES_state * a,
int c )
static

column_0(s) = column_c(a)

Definition at line 362 of file ctaes.c.

Here is the caller graph for this function:

◆ InvShiftRows()

void InvShiftRows ( AES_state * s)
static

Definition at line 275 of file ctaes.c.

Here is the caller graph for this function:

◆ KeySetupColumnMix()

void KeySetupColumnMix ( AES_state * s,
AES_state * r,
const AES_state * a,
int c1,
int c2 )
static

column_c1(r) |= (column_0(s) ^= column_c2(a))

Definition at line 370 of file ctaes.c.

Here is the caller graph for this function:

◆ KeySetupTransform()

void KeySetupTransform ( AES_state * s,
const AES_state * r )
static

Rotate the rows in s one position upwards, and xor in r.

Definition at line 378 of file ctaes.c.

Here is the caller graph for this function:

◆ LoadByte()

void LoadByte ( AES_state * s,
unsigned char byte,
int r,
int c )
static

Convert a byte to sliced form, storing it corresponding to given row and column in s.

Definition at line 25 of file ctaes.c.

Here is the caller graph for this function:

◆ LoadBytes()

void LoadBytes ( AES_state * s,
const unsigned char * data16 )
static

Load 16 bytes of data into 8 sliced integers.

Definition at line 34 of file ctaes.c.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MixColumns()

void MixColumns ( AES_state * s,
int inv )
static

Definition at line 289 of file ctaes.c.

Here is the caller graph for this function:

◆ MultX()

void MultX ( AES_state * s)
static

Definition at line 386 of file ctaes.c.

Here is the caller graph for this function:

◆ SaveBytes()

void SaveBytes ( unsigned char * data16,
const AES_state * s )
static

Convert 8 sliced integers into 16 bytes of data.

Definition at line 45 of file ctaes.c.

Here is the caller graph for this function:

◆ ShiftRows()

void ShiftRows ( AES_state * s)
static

Definition at line 263 of file ctaes.c.

Here is the caller graph for this function:

◆ SubBytes()

void SubBytes ( AES_state * s,
int inv )
static

Definition at line 64 of file ctaes.c.

Here is the caller graph for this function: