63 lines
2.0 KiB
C
63 lines
2.0 KiB
C
/* mvAes.h v2.0 August '99
|
|
* Reference ANSI C code
|
|
*/
|
|
|
|
/* AES Cipher header file for ANSI C Submissions
|
|
Lawrence E. Bassham III
|
|
Computer Security Division
|
|
National Institute of Standards and Technology
|
|
|
|
April 15, 1998
|
|
|
|
This sample is to assist implementers developing to the Cryptographic
|
|
API Profile for AES Candidate Algorithm Submissions. Please consult this
|
|
document as a cross-reference.
|
|
|
|
ANY CHANGES, WHERE APPROPRIATE, TO INFORMATION PROVIDED IN THIS FILE
|
|
MUST BE DOCUMENTED. CHANGES ARE ONLY APPROPRIATE WHERE SPECIFIED WITH
|
|
THE STRING "CHANGE POSSIBLE". FUNCTION CALLS AND THEIR PARAMETERS CANNOT
|
|
BE CHANGED. STRUCTURES CAN BE ALTERED TO ALLOW IMPLEMENTERS TO INCLUDE
|
|
IMPLEMENTATION SPECIFIC INFORMATION.
|
|
*/
|
|
|
|
/* Includes:
|
|
Standard include files
|
|
*/
|
|
|
|
#include "mvOs.h"
|
|
|
|
|
|
/* Error Codes - CHANGE POSSIBLE: inclusion of additional error codes */
|
|
|
|
/* Key direction is invalid, e.g., unknown value */
|
|
#define AES_BAD_KEY_DIR -1
|
|
|
|
/* Key material not of correct length */
|
|
#define AES_BAD_KEY_MAT -2
|
|
|
|
/* Key passed is not valid */
|
|
#define AES_BAD_KEY_INSTANCE -3
|
|
|
|
/* Params struct passed to cipherInit invalid */
|
|
#define AES_BAD_CIPHER_MODE -4
|
|
|
|
/* Cipher in wrong state (e.g., not initialized) */
|
|
#define AES_BAD_CIPHER_STATE -5
|
|
|
|
#define AES_BAD_CIPHER_INSTANCE -7
|
|
|
|
|
|
/* Function protoypes */
|
|
/* CHANGED: makeKey(): parameter blockLen added
|
|
this parameter is absolutely necessary if you want to
|
|
setup the round keys in a variable block length setting
|
|
cipherInit(): parameter blockLen added (for obvious reasons)
|
|
*/
|
|
int aesMakeKey(MV_U8 *expandedKey, MV_U8 *keyMaterial, int keyLen, int blockLen);
|
|
int aesBlockEncrypt128(MV_U8 mode, MV_U8 *IV, MV_U8 *expandedKey, int keyLen,
|
|
MV_U32 *plain, int numBlocks, MV_U32 *cipher);
|
|
int aesBlockDecrypt128(MV_U8 mode, MV_U8 *IV, MV_U8 *expandedKey, int keyLen,
|
|
MV_U32 *plain, int numBlocks, MV_U32 *cipher);
|
|
|
|
|