/* | |
--------------------------------------------------------------------------- | |
Copyright (c) 2002, Dr Brian Gladman, Worcester, UK. All rights reserved. | |
LICENSE TERMS | |
The free distribution and use of this software in both source and binary | |
form is allowed (with or without changes) provided that: | |
1. distributions of this source code include the above copyright | |
notice, this list of conditions and the following disclaimer; | |
2. distributions in binary form include the above copyright | |
notice, this list of conditions and the following disclaimer | |
in the documentation and/or other associated materials; | |
3. the copyright holder's name is not used to endorse products | |
built using this software without specific written permission. | |
ALTERNATIVELY, provided that this notice is retained in full, this product | |
may be distributed under the terms of the GNU General Public License (GPL), | |
in which case the provisions of the GPL apply INSTEAD OF those given above. | |
DISCLAIMER | |
This software is provided 'as is' with no explicit or implied warranties | |
in respect of its properties, including, but not limited to, correctness | |
and/or fitness for purpose. | |
--------------------------------------------------------------------------- | |
Issue 28/01/2004 | |
*/ | |
// The following definitions are required for testing only, They are not needed | |
// for AES (Rijndael) implementation. They are used to allow C, C++ and DLL | |
// data access and subroutine calls to be expressed in the same form in the | |
// testing code. | |
#define ref_path "..\\testvals\\" // path for test vector files | |
#define out_path "..\\outvals\\" // path for output files | |
#define dll_path "..\\aes_dll\\release\\aes" // path for DLL | |
#if defined(AES_CPP) | |
#define f_ectx AESencrypt | |
#define f_enc_key128(a,b) (a)->key128((b)) | |
#define f_enc_key192(a,b) (a)->key192((b)) | |
#define f_enc_key256(a,b) (a)->key256((b)) | |
#define f_enc_key(a,b,c) (a)->key((b),(c)) | |
#define f_enc_blk(a,b,c) (a)->encrypt((b),(c)) | |
#define f_dctx AESdecrypt | |
#define f_dec_key128(a,b) (a)->key128((b)) | |
#define f_dec_key192(a,b) (a)->key192((b)) | |
#define f_dec_key256(a,b) (a)->key256((b)) | |
#define f_dec_key(a,b,c) (a)->key((b),(c)) | |
#define f_dec_blk(a,b,c) (a)->decrypt((b),(c)) | |
#elif !defined(AES_DLL) | |
#define f_ectx aes_encrypt_ctx | |
#define f_enc_key128(a,b) aes_encrypt_key128((b),(a)) | |
#define f_enc_key192(a,b) aes_encrypt_key192((b),(a)) | |
#define f_enc_key256(a,b) aes_encrypt_key256((b),(a)) | |
#define f_enc_key(a,b,c) aes_encrypt_key((b),(c),(a)) | |
#define f_enc_blk(a,b,c) aes_encrypt((b),(c),(a)) | |
#define f_dctx aes_decrypt_ctx | |
#define f_dec_key128(a,b) aes_decrypt_key128((b),(a)) | |
#define f_dec_key192(a,b) aes_decrypt_key192((b),(a)) | |
#define f_dec_key256(a,b) aes_decrypt_key256((b),(a)) | |
#define f_dec_key(a,b,c) aes_decrypt_key((b),(c),(a)) | |
#define f_dec_blk(a,b,c) aes_decrypt((b),(c),(a)) | |
#define ek_name128 "aes_encrypt_key128" | |
#define ek_name192 "aes_encrypt_key192" | |
#define ek_name256 "aes_encrypt_key256" | |
#define ek_name "aes_encrypt_key" | |
#define ec_name "aes_encrypt" | |
#define dk_name128 "aes_decrypt_key128" | |
#define dk_name192 "aes_decrypt_key192" | |
#define dk_name256 "aes_decrypt_key256" | |
#define dk_name "aes_decrypt_key" | |
#define dc_name "aes_decrypt" | |
#else | |
#define f_ectx aes_encrypt_ctx | |
#define f_dctx aes_decrypt_ctx | |
typedef aes_rval g_enc_key(const unsigned char*, aes_encrypt_ctx[1]); | |
typedef aes_rval g_dec_key(const unsigned char*, aes_decrypt_ctx[1]); | |
typedef aes_rval g_enc_keyv(const unsigned char*, int, aes_encrypt_ctx[1]); | |
typedef aes_rval g_dec_keyv(const unsigned char*, int, aes_decrypt_ctx[1]); | |
typedef aes_rval g_enc_blk(const unsigned char*, unsigned char*, const aes_encrypt_ctx[1]); | |
typedef aes_rval g_dec_blk(const unsigned char*, unsigned char*, const aes_decrypt_ctx[1]); | |
typedef struct // initialised with subroutine addresses when the DLL is loaded | |
{ | |
g_enc_key *fn_enc_key128; | |
g_enc_key *fn_enc_key192; | |
g_enc_key *fn_enc_key256; | |
g_enc_keyv *fn_enc_key; | |
g_enc_blk *fn_enc_blk; | |
g_dec_key *fn_dec_key128; | |
g_dec_key *fn_dec_key192; | |
g_dec_key *fn_dec_key256; | |
g_dec_keyv *fn_dec_key; | |
g_dec_blk *fn_dec_blk; | |
} fn_ptrs; | |
#define f_dat(a,b) (a->b) | |
#define f_enc_key128(a,b) (fn.fn_enc_key128)((b),(a)) | |
#define f_enc_key192(a,b) (fn.fn_enc_key192)((b),(a)) | |
#define f_enc_key256(a,b) (fn.fn_enc_key256)((b),(a)) | |
#define f_enc_key(a,b,c) (fn.fn_enc_key)((b),(c),(a)) | |
#define f_enc_blk(a,b,c) (fn.fn_enc_blk)((b),(c),(a)) | |
#define f_dec_key128(a,b) (fn.fn_dec_key128)((b),(a)) | |
#define f_dec_key192(a,b) (fn.fn_dec_key192)((b),(a)) | |
#define f_dec_key256(a,b) (fn.fn_dec_key256)((b),(a)) | |
#define f_dec_key(a,b,c) (fn.fn_dec_key)((b),(c),(a)) | |
#define f_dec_blk(a,b,c) (fn.fn_dec_blk)((b),(c),(a)) | |
#define ek_name128 "_aes_encrypt_key128@8" | |
#define ek_name192 "_aes_encrypt_key192@8" | |
#define ek_name256 "_aes_encrypt_key256@8" | |
#define ek_name "_aes_encrypt_key@12" | |
#define ec_name "_aes_encrypt@12" | |
#define dk_name128 "_aes_decrypt_key128@8" | |
#define dk_name192 "_aes_decrypt_key192@8" | |
#define dk_name256 "_aes_decrypt_key256@8" | |
#define dk_name "_aes_decrypt_key@12" | |
#define dc_name "_aes_decrypt@12" | |
#endif |