mirror of
https://github.com/rvtr/TwlIPL.git
synced 2025-10-31 06:01:12 -04:00
git-svn-id: file:///Users/lillianskinner/Downloads/platinum/twl/TwlIPL/trunk@1 b08762b0-b915-fc4b-9d8c-17b2551a87ff
140 lines
5.7 KiB
C
140 lines
5.7 KiB
C
/* $Id$ */
|
|
/*
|
|
* Copyright (C) 1998-2003 RSA Security Inc. All rights reserved.
|
|
*
|
|
* This work contains proprietary information of RSA Security.
|
|
* Distribution is limited to authorized licensees of RSA
|
|
* Security. Any unauthorized reproduction, distribution or
|
|
* modification of this work is strictly prohibited.
|
|
*/
|
|
|
|
#ifndef HEADER_COMMON_AES_H
|
|
#define HEADER_COMMON_AES_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define AES_ecb_encrypt(key, out, in) \
|
|
AES_ecb_encrypt_com((key), (out), (in), AES_encrypt)
|
|
#define AES_ecb_encrypt_m(key, out, in) \
|
|
AES_ecb_encrypt_com((key), (out), (in), AES_encrypt_m)
|
|
#define AES_ecb_encrypt_s(key, out, in) \
|
|
AES_ecb_encrypt_com((key), (out), (in), AES_encrypt_s)
|
|
|
|
#define AES_ecb_decrypt(key, out, in) \
|
|
AES_ecb_decrypt_com((key), (out), (in), AES_decrypt)
|
|
#define AES_ecb_decrypt_m(key, out, in) \
|
|
AES_ecb_decrypt_com((key), (out), (in), AES_decrypt_m)
|
|
#define AES_ecb_decrypt_s(key, out, in) \
|
|
AES_ecb_decrypt_com((key), (out), (in), AES_decrypt_s)
|
|
|
|
#define AES_cbc_encrypt(ctx, out, in, len, iv) \
|
|
AES_cbc_encrypt_com((ctx), (out), (in), (len), (iv), AES_encrypt)
|
|
#define AES_cbc_encrypt_m(ctx, out, in, len, iv) \
|
|
AES_cbc_encrypt_com((ctx), (out), (in), (len), (iv), AES_encrypt_m)
|
|
#define AES_cbc_encrypt_s(ctx, out, in, len, iv) \
|
|
AES_cbc_encrypt_com((ctx), (out), (in), (len), (iv), AES_encrypt_s)
|
|
|
|
#define AES_cbc_decrypt(ctx, out, in, len, iv) \
|
|
AES_cbc_decrypt_com((ctx), (out), (in), (len), (iv), AES_decrypt)
|
|
#define AES_cbc_decrypt_m(ctx, out, in, len, iv) \
|
|
AES_cbc_decrypt_com((ctx), (out), (in), (len), (iv), AES_decrypt_m)
|
|
#define AES_cbc_decrypt_s(ctx, out, in, len, iv) \
|
|
AES_cbc_decrypt_com((ctx), (out), (in), (len), (iv), AES_decrypt_s)
|
|
|
|
#define AES_cfb128_encrypt(ks, out, in, len, iv, num) \
|
|
AES_cfb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt)
|
|
#define AES_cfb128_encrypt_m(ks, out, in, len, iv, num) \
|
|
AES_cfb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt_m)
|
|
#define AES_cfb128_encrypt_s(ks, out, in, len, iv, num) \
|
|
AES_cfb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt_s)
|
|
|
|
#define AES_cfb128_decrypt(ks, out, in, len, iv, num) \
|
|
AES_cfb128_decrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_decrypt)
|
|
#define AES_cfb128_decrypt_m(ks, out, in, len, iv, num) \
|
|
AES_cfb128_decrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_decrypt_m)
|
|
#define AES_cfb128_decrypt_s(ks, out, in, len, iv, num) \
|
|
AES_cfb128_decrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_decrypt_s)
|
|
|
|
/** Note. OFB encryption is also used for decryption */
|
|
#define AES_ofb128_encrypt(ks, out, in, len, iv, num) \
|
|
AES_ofb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt)
|
|
#define AES_ofb128_encrypt_m(ks, out, in, len, iv, num) \
|
|
AES_ofb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt_m)
|
|
#define AES_ofb128_encrypt_s(ks, out, in, len, iv, num) \
|
|
AES_ofb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt_s)
|
|
|
|
#define AES_ofb128_decrypt(ks, out, in, len, iv, num) \
|
|
AES_ofb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt)
|
|
#define AES_ofb128_decrypt_m(ks, out, in, len, iv, num) \
|
|
AES_ofb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt_m)
|
|
#define AES_ofb128_decrypt_s(ks, out, in, len, iv, num) \
|
|
AES_ofb128_encrypt_com((ks), (out), (in), (len), (iv), (num), \
|
|
AES_encrypt_s)
|
|
|
|
|
|
#define AES_MAXROUNDS 14
|
|
|
|
#define AES_ENCRYPT 1
|
|
#define AES_DECRYPT 0
|
|
|
|
typedef unsigned int AES_INT4;
|
|
|
|
typedef struct aes_key_st {
|
|
unsigned int rounds;
|
|
unsigned int key_size;
|
|
AES_INT4 ks[(AES_MAXROUNDS+1)*8];
|
|
} AES_KEY;
|
|
|
|
typedef void (* AES_ENC_DEC_FN)(AES_KEY *, AES_INT4 *);
|
|
|
|
void AES_encrypt(AES_KEY *ctx,AES_INT4 *data);
|
|
void AES_encrypt_m(AES_KEY *ctx,AES_INT4 *data);
|
|
void AES_encrypt_s(AES_KEY *ctx,AES_INT4 *data);
|
|
void AES_decrypt(AES_KEY *ctx,AES_INT4 *data);
|
|
void AES_decrypt_m(AES_KEY *ctx,AES_INT4 *data);
|
|
void AES_decrypt_s(AES_KEY *ctx,AES_INT4 *data);
|
|
|
|
void AES_ecb_encrypt_com(AES_KEY *key, unsigned char *out,
|
|
const unsigned char *in, AES_ENC_DEC_FN enc_fn);
|
|
void AES_ecb_decrypt_com(AES_KEY *key, unsigned char *out,
|
|
const unsigned char *in, AES_ENC_DEC_FN dec_fn);
|
|
void AES_cbc_encrypt_com(AES_KEY *ctx, unsigned char *out,
|
|
const unsigned char *in, long length, unsigned char *iv,
|
|
AES_ENC_DEC_FN enc_fn);
|
|
void AES_cbc_decrypt_com(AES_KEY *ctx, unsigned char *out,
|
|
const unsigned char *in, long length, unsigned char *iv,
|
|
AES_ENC_DEC_FN dec_fn);
|
|
void AES_ofb128_encrypt_com(AES_KEY *ks,const unsigned char *in,
|
|
unsigned char *out, long length, unsigned char *ivec, int *num,
|
|
AES_ENC_DEC_FN enc_fn);
|
|
void AES_cfb128_encrypt_com(AES_KEY *ks, const unsigned char *in,
|
|
unsigned char *out, long length, unsigned char *ivec, int *num,
|
|
AES_ENC_DEC_FN enc_fn);
|
|
void AES_cfb128_decrypt_com(AES_KEY *ks, const unsigned char *in,
|
|
unsigned char *out, long length, unsigned char *ivec, int *num,
|
|
AES_ENC_DEC_FN dec_fn);
|
|
|
|
int AES_set_key(AES_KEY *ctx, const unsigned char *key, int len);
|
|
void AES_convert_key(AES_KEY *ctx);
|
|
AES_INT4 AES_rotate(AES_INT4 u);
|
|
unsigned char AES_xtime(AES_INT4 x);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* HEADER_COMMON_AES_H */
|