ReadMe.txt   [plain text]


This directory contains a hybrid AES implementation.  The core AES routines
(the actual encryption, decryption, and key expansion) are in:

	AES.s
	Data.mk
	Data.s
	EncryptDecrypt.s
	ExpandKeyForDecryption.s
	ExpandKeyForEncryption.s
	MakeData.c

Although the above files do not explicitly include aes.h, they confirm to
certain things defined in it, notably the aes_rval type and the layout of the
aes_encrypt_ctx and aes_decrypt_ctx structures.  These must be kept
compatibility; the definitions of ContextKey and ContextKeyLength in AES.s must
match the offsets of the key ("ks") and key_length ("inf") members of
aes_encrypt_ctx and aes_decrypt_ctx.  (For some reason, aes_inf is a union that
is written as a 32-bit integer and read as an 8-bit integer.  I do not know
why but have reproduced that behavior in the new implementation.)

aes_modes.c extends the API, most notably by implementing CBC mode using the
basic AES block encryption.  It uses aesopt.h and edefs.h.