FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
cast5.c File Reference
#include "cast5.h"
#include "common.h"
#include "intreadwrite.h"
#include "attributes.h"

Go to the source code of this file.

Data Structures

struct  AVCAST5
 

Macros

#define IA(x)   ((x)>>24)
 
#define IB(x)   (((x)>>16) & 0xff)
 
#define IC(x)   (((x)>>8) & 0xff)
 
#define ID(x)   ((x) & 0xff)
 
#define LR(x, c)   (((x)<<(c))|((x)>>(32-(c))))
 
#define F3(l, r, i)
 
#define F2(l, r, i)
 
#define F1(l, r, i)
 
#define COMPUTE_Z
 
#define COMPUTE_X
 

Functions

static void generate_round_keys (int rnds, uint32_t *K, uint32_t *x, uint32_t *z)
 
static void encipher (AVCAST5 *cs, uint8_t *dst, const uint8_t *src)
 
static void decipher (AVCAST5 *cs, uint8_t *dst, const uint8_t *src)
 
struct AVCAST5av_cast5_alloc (void)
 Allocate an AVCAST5 context To free the struct: av_free(ptr)
 
av_cold int av_cast5_init (AVCAST5 *cs, const uint8_t *key, int key_bits)
 Initialize an AVCAST5 context.
 
void av_cast5_crypt (AVCAST5 *cs, uint8_t *dst, const uint8_t *src, int count, int decrypt)
 Encrypt or decrypt a buffer using a previously initialized context.
 

Variables

const int av_cast5_size = sizeof(AVCAST5)
 
static const uint32_t S1 [256]
 
static const uint32_t S2 [256]
 
static const uint32_t S3 [256]
 
static const uint32_t S4 [256]
 
static const uint32_t S5 [256]
 
static const uint32_t S6 [256]
 
static const uint32_t S7 [256]
 
static const uint32_t S8 [256]
 

Macro Definition Documentation

#define IA (   x)    ((x)>>24)

Definition at line 26 of file cast5.c.

Referenced by generate_round_keys().

#define IB (   x)    (((x)>>16) & 0xff)

Definition at line 27 of file cast5.c.

Referenced by generate_round_keys().

#define IC (   x)    (((x)>>8) & 0xff)

Definition at line 28 of file cast5.c.

Referenced by generate_round_keys().

#define ID (   x)    ((x) & 0xff)

Definition at line 29 of file cast5.c.

Referenced by generate_round_keys().

#define LR (   x,
  c 
)    (((x)<<(c))|((x)>>(32-(c))))

Definition at line 31 of file cast5.c.

#define F3 (   l,
  r,
 
)
Value:
do { \
I=LR(cs->Km[i]-r,cs->Kr[i]); \
f=((S1[IA(I)]+S2[IB(I)])^S3[IC(I)])-S4[ID(I)]; \
l=f^l; \
} while (0)

Definition at line 33 of file cast5.c.

Referenced by decipher(), and encipher().

#define F2 (   l,
  r,
 
)
Value:
do { \
I=LR(cs->Km[i]^r,cs->Kr[i]); \
f=((S1[IA(I)]-S2[IB(I)])+S3[IC(I)])^S4[ID(I)]; \
l=f^l; \
} while (0)

Definition at line 40 of file cast5.c.

Referenced by decipher(), and encipher().

#define F1 (   l,
  r,
 
)
Value:
do { \
I=LR(cs->Km[i]+r,cs->Kr[i]); \
f=((S1[IA(I)]^S2[IB(I)])-S3[IC(I)])+S4[ID(I)]; \
l=f^l; \
} while (0)

Definition at line 47 of file cast5.c.

Referenced by decipher(), and encipher().

#define COMPUTE_Z
Value:
do { \
z[0]=x[0]^S5[IB(x[3])]^S6[ID(x[3])]^S7[IA(x[3])]^S8[IC(x[3])]^S7[IA(x[2])]; \
z[1]=x[2]^S5[IA(z[0])]^S6[IC(z[0])]^S7[IB(z[0])]^S8[ID(z[0])]^S8[IC(x[2])]; \
z[2]=x[3]^S5[ID(z[1])]^S6[IC(z[1])]^S7[IB(z[1])]^S8[IA(z[1])]^S5[IB(x[2])]; \
z[3]=x[1]^S5[IC(z[2])]^S6[IB(z[2])]^S7[ID(z[2])]^S8[IA(z[2])]^S6[ID(x[2])]; \
} while (0)

Definition at line 54 of file cast5.c.

Referenced by generate_round_keys().

#define COMPUTE_X
Value:
do { \
x[0]=z[2]^S5[IB(z[1])]^S6[ID(z[1])]^S7[IA(z[1])]^S8[IC(z[1])]^S7[IA(z[0])]; \
x[1]=z[0]^S5[IA(x[0])]^S6[IC(x[0])]^S7[IB(x[0])]^S8[ID(x[0])]^S8[IC(z[0])]; \
x[2]=z[1]^S5[ID(x[1])]^S6[IC(x[1])]^S7[IB(x[1])]^S8[IA(x[1])]^S5[IB(z[0])]; \
x[3]=z[3]^S5[IC(x[2])]^S6[IB(x[2])]^S7[ID(x[2])]^S8[IA(x[2])]^S6[ID(z[0])]; \
} while (0)

Definition at line 62 of file cast5.c.

Referenced by generate_round_keys().

Function Documentation

static void generate_round_keys ( int  rnds,
uint32_t *  K,
uint32_t *  x,
uint32_t *  z 
)
static

Definition at line 351 of file cast5.c.

Referenced by av_cast5_init().

static void encipher ( AVCAST5 cs,
uint8_t dst,
const uint8_t src 
)
static

Definition at line 384 of file cast5.c.

Referenced by av_cast5_crypt().

static void decipher ( AVCAST5 cs,
uint8_t dst,
const uint8_t src 
)
static

Definition at line 411 of file cast5.c.

Referenced by av_cast5_crypt().

Variable Documentation

const uint32_t S1[256]
static

Definition at line 79 of file cast5.c.

const uint32_t S2[256]
static

Definition at line 113 of file cast5.c.

const uint32_t S3[256]
static

Definition at line 147 of file cast5.c.

const uint32_t S4[256]
static

Definition at line 181 of file cast5.c.

const uint32_t S5[256]
static

Definition at line 215 of file cast5.c.

Referenced by generate_round_keys().

const uint32_t S6[256]
static

Definition at line 249 of file cast5.c.

Referenced by generate_round_keys().

const uint32_t S7[256]
static

Definition at line 283 of file cast5.c.

Referenced by generate_round_keys().

const uint32_t S8[256]
static

Definition at line 317 of file cast5.c.

Referenced by generate_round_keys().