Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
aes.h
Abstract:
This module contains the public data structures and API definitions needed to utilize the low-level AES encryption routines
Author:
Scott Field (SField) 09-October-2000
Revision History:
--*/
#ifndef __AES_H__
#define __AES_H__
#ifndef RSA32API
#define RSA32API __stdcall
#endif
#ifdef __cplusplus
extern "C" { #endif
#define AES_ROUNDS_128 (10)
#define AES_ROUNDS_192 (12)
#define AES_ROUNDS_256 (14)
#define AES_MAXROUNDS AES_ROUNDS_256
typedef struct { int rounds; // keytab data ends up padded.
unsigned char keytabenc[AES_MAXROUNDS+1][4][4]; unsigned char keytabdec[AES_MAXROUNDS+1][4][4]; } AESTable;
typedef struct { int rounds; // keytab data ends up padded.
unsigned char keytabenc[AES_ROUNDS_128+1][4][4]; unsigned char keytabdec[AES_ROUNDS_128+1][4][4]; } AESTable_128;
typedef struct { int rounds; // keytab data ends up padded.
unsigned char keytabenc[AES_ROUNDS_192+1][4][4]; unsigned char keytabdec[AES_ROUNDS_192+1][4][4]; } AESTable_192;
typedef struct { int rounds; // keytab data ends up padded.
unsigned char keytabenc[AES_ROUNDS_256+1][4][4]; unsigned char keytabdec[AES_ROUNDS_256+1][4][4]; } AESTable_256;
#define AES_TABLESIZE (sizeof(AESTable))
#define AES_TABLESIZE_128 (sizeof(AESTable_128))
#define AES_TABLESIZE_192 (sizeof(AESTable_192))
#define AES_TABLESIZE_256 (sizeof(AESTable_256))
#define AES_BLOCKLEN (16)
#define AES_KEYSIZE (32)
#define AES_KEYSIZE_128 (16)
#define AES_KEYSIZE_192 (24)
#define AES_KEYSIZE_256 (32)
void RSA32API aeskey( AESTable *KeyTable, BYTE *Key, int rounds );
//
// generic AES crypt function -- caller can pass in keyin corresponding
// to any valid keysize.
//
void RSA32API aes( BYTE *pbOut, BYTE *pbIn, void *keyin, int op );
//
// AES crypt functions that can be used by a caller that passes in a keyin
// corresponding to a known keysize.
//
void RSA32API aes128( BYTE *pbOut, BYTE *pbIn, void *keyin, int op );
void RSA32API aes256( BYTE *pbOut, BYTE *pbIn, void *keyin, int op );
#ifdef __cplusplus
} #endif
#endif // __AES_H__
|