libfortuna  1
FortunalibraryfunctionsextractedfromPostgreSQLsource
 All Data Structures Files Functions Variables Typedefs Macros
rijndael.c File Reference
#include <sys/param.h>
#include "px.h"
#include "rijndael.h"
#include "rijndael.tbl"

Macros

#define PRE_CALC_TABLES
 
#define LARGE_TABLES
 
#define rotr(x, n)   (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
 
#define rotl(x, n)   (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
 
#define bswap(x)   ((rotl((x), 8) & 0x00ff00ff) | (rotr((x), 8) & 0xff00ff00))
 
#define byte(x, n)   ((u1byte)((x) >> (8 * (n))))
 
#define io_swap(x)   (x)
 
#define tab_gen   1
 
#define ff_mult(a, b)   ((a) && (b) ? pow_tab[(log_tab[a] + log_tab[b]) % 255] : 0)
 
#define f_rn(bo, bi, n, k)
 
#define i_rn(bo, bi, n, k)
 
#define ls_box(x)
 
#define f_rl(bo, bi, n, k)
 
#define i_rl(bo, bi, n, k)
 
#define star_x(x)   (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)
 
#define imix_col(y, x)
 
#define loop4(i)
 
#define loop6(i)
 
#define loop8(i)
 
#define f_nround(bo, bi, k)
 
#define f_lround(bo, bi, k)
 
#define i_nround(bo, bi, k)
 
#define i_lround(bo, bi, k)
 

Functions

void gen_tabs (void)
 
rijndael_ctxrijndael_set_key (rijndael_ctx *ctx, const u4byte *in_key, const u4byte key_len, int encrypt)
 
void rijndael_encrypt (rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
 
void rijndael_decrypt (rijndael_ctx *ctx, const u4byte *in_blk, u4byte *out_blk)
 
void aes_set_key (rijndael_ctx *ctx, const uint8 *key, unsigned keybits, int enc)
 
void aes_ecb_encrypt (rijndael_ctx *ctx, uint8 *data, unsigned len)
 
void aes_ecb_decrypt (rijndael_ctx *ctx, uint8 *data, unsigned len)
 
void aes_cbc_encrypt (rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
 
void aes_cbc_decrypt (rijndael_ctx *ctx, uint8 *iva, uint8 *data, unsigned len)
 

Macro Definition Documentation

#define bswap (   x)    ((rotl((x), 8) & 0x00ff00ff) | (rotr((x), 8) & 0xff00ff00))
#define byte (   x,
 
)    ((u1byte)((x) >> (8 * (n))))
#define f_lround (   bo,
  bi,
 
)
Value:
do { \
f_rl(bo, bi, 0, k); \
f_rl(bo, bi, 1, k); \
f_rl(bo, bi, 2, k); \
f_rl(bo, bi, 3, k); \
} while (0)
#define f_nround (   bo,
  bi,
 
)
Value:
do { \
f_rn(bo, bi, 0, k); \
f_rn(bo, bi, 1, k); \
f_rn(bo, bi, 2, k); \
f_rn(bo, bi, 3, k); \
k += 4; \
} while (0)
#define f_rl (   bo,
  bi,
  n,
 
)
Value:
(bo)[n] = fl_tab[0][byte((bi)[n],0)] ^ \
fl_tab[1][byte((bi)[((n) + 1) & 3],1)] ^ \
fl_tab[2][byte((bi)[((n) + 2) & 3],2)] ^ \
fl_tab[3][byte((bi)[((n) + 3) & 3],3)] ^ *((k) + (n))
#define f_rn (   bo,
  bi,
  n,
 
)
Value:
(bo)[n] = ft_tab[0][byte((bi)[n],0)] ^ \
ft_tab[1][byte((bi)[((n) + 1) & 3],1)] ^ \
ft_tab[2][byte((bi)[((n) + 2) & 3],2)] ^ \
ft_tab[3][byte((bi)[((n) + 3) & 3],3)] ^ *((k) + (n))
#define ff_mult (   a,
 
)    ((a) && (b) ? pow_tab[(log_tab[a] + log_tab[b]) % 255] : 0)
#define i_lround (   bo,
  bi,
 
)
Value:
do { \
i_rl(bo, bi, 0, k); \
i_rl(bo, bi, 1, k); \
i_rl(bo, bi, 2, k); \
i_rl(bo, bi, 3, k); \
} while (0)
#define i_nround (   bo,
  bi,
 
)
Value:
do { \
i_rn(bo, bi, 0, k); \
i_rn(bo, bi, 1, k); \
i_rn(bo, bi, 2, k); \
i_rn(bo, bi, 3, k); \
k -= 4; \
} while (0)
#define i_rl (   bo,
  bi,
  n,
 
)
Value:
(bo)[n] = il_tab[0][byte((bi)[n],0)] ^ \
il_tab[1][byte((bi)[((n) + 3) & 3],1)] ^ \
il_tab[2][byte((bi)[((n) + 2) & 3],2)] ^ \
il_tab[3][byte((bi)[((n) + 1) & 3],3)] ^ *((k) + (n))
#define i_rn (   bo,
  bi,
  n,
 
)
Value:
(bo)[n] = it_tab[0][byte((bi)[n],0)] ^ \
it_tab[1][byte((bi)[((n) + 3) & 3],1)] ^ \
it_tab[2][byte((bi)[((n) + 2) & 3],2)] ^ \
it_tab[3][byte((bi)[((n) + 1) & 3],3)] ^ *((k) + (n))
#define imix_col (   y,
 
)
Value:
do { \
u = star_x(x); \
v = star_x(u); \
w = star_x(v); \
t = w ^ (x); \
(y) = u ^ v ^ w; \
(y) ^= rotr(u ^ t, 8) ^ \
rotr(v ^ t, 16) ^ \
rotr(t,24); \
} while (0)
#define io_swap (   x)    (x)
#define LARGE_TABLES
#define loop4 (   i)
Value:
do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
t ^= e_key[4 * i]; e_key[4 * i + 4] = t; \
t ^= e_key[4 * i + 1]; e_key[4 * i + 5] = t; \
t ^= e_key[4 * i + 2]; e_key[4 * i + 6] = t; \
t ^= e_key[4 * i + 3]; e_key[4 * i + 7] = t; \
} while (0)
#define loop6 (   i)
Value:
do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
t ^= e_key[6 * (i)]; e_key[6 * (i) + 6] = t; \
t ^= e_key[6 * (i) + 1]; e_key[6 * (i) + 7] = t; \
t ^= e_key[6 * (i) + 2]; e_key[6 * (i) + 8] = t; \
t ^= e_key[6 * (i) + 3]; e_key[6 * (i) + 9] = t; \
t ^= e_key[6 * (i) + 4]; e_key[6 * (i) + 10] = t; \
t ^= e_key[6 * (i) + 5]; e_key[6 * (i) + 11] = t; \
} while (0)
#define loop8 (   i)
Value:
do { t = ls_box(rotr(t, 8)) ^ rco_tab[i]; \
t ^= e_key[8 * (i)]; e_key[8 * (i) + 8] = t; \
t ^= e_key[8 * (i) + 1]; e_key[8 * (i) + 9] = t; \
t ^= e_key[8 * (i) + 2]; e_key[8 * (i) + 10] = t; \
t ^= e_key[8 * (i) + 3]; e_key[8 * (i) + 11] = t; \
t = e_key[8 * (i) + 4] ^ ls_box(t); \
e_key[8 * (i) + 12] = t; \
t ^= e_key[8 * (i) + 5]; e_key[8 * (i) + 13] = t; \
t ^= e_key[8 * (i) + 6]; e_key[8 * (i) + 14] = t; \
t ^= e_key[8 * (i) + 7]; e_key[8 * (i) + 15] = t; \
} while (0)
#define ls_box (   x)
Value:
( fl_tab[0][byte(x, 0)] ^ \
fl_tab[1][byte(x, 1)] ^ \
fl_tab[2][byte(x, 2)] ^ \
fl_tab[3][byte(x, 3)] )
#define PRE_CALC_TABLES
#define rotl (   x,
 
)    (((x) << ((int)(n))) | ((x) >> (32 - (int)(n))))
#define rotr (   x,
 
)    (((x) >> ((int)(n))) | ((x) << (32 - (int)(n))))
#define star_x (   x)    (((x) & 0x7f7f7f7f) << 1) ^ ((((x) & 0x80808080) >> 7) * 0x1b)
#define tab_gen   1

Function Documentation

void aes_cbc_decrypt ( rijndael_ctx ctx,
uint8 iva,
uint8 data,
unsigned  len 
)
void aes_cbc_encrypt ( rijndael_ctx ctx,
uint8 iva,
uint8 data,
unsigned  len 
)
void aes_ecb_decrypt ( rijndael_ctx ctx,
uint8 data,
unsigned  len 
)
void aes_ecb_encrypt ( rijndael_ctx ctx,
uint8 data,
unsigned  len 
)
void aes_set_key ( rijndael_ctx ctx,
const uint8 key,
unsigned  keybits,
int  enc 
)
void gen_tabs ( void  )
void rijndael_decrypt ( rijndael_ctx ctx,
const u4byte in_blk,
u4byte out_blk 
)
void rijndael_encrypt ( rijndael_ctx ctx,
const u4byte in_blk,
u4byte out_blk 
)
rijndael_ctx* rijndael_set_key ( rijndael_ctx ctx,
const u4byte in_key,
const u4byte  key_len,
int  encrypt 
)