Parolin 0.7.9 6796
Console (soon DLLs) to do a tar like job
Loading...
Searching...
No Matches
Aes.h
Go to the documentation of this file.
1/* Aes.h -- AES encryption / decryption
22023-04-02 : Igor Pavlov : Public domain */
3
4#ifndef ZIP7_INC_AES_H
5#define ZIP7_INC_AES_H
6
7#include "7zTypes.h"
8
10
11#define AES_BLOCK_SIZE 16
12
13/* Call AesGenTables one time before other AES functions */
14void AesGenTables(void);
15
16/* UInt32 pointers must be 16-byte aligned */
17
18/* 16-byte (4 * 32-bit words) blocks: 1 (IV) + 1 (keyMode) + 15 (AES-256 roundKeys) */
19#define AES_NUM_IVMRK_WORDS ((1 + 1 + 15) * 4)
20
21/* aes - 16-byte aligned pointer to keyMode+roundKeys sequence */
22/* keySize = 16 or 24 or 32 (bytes) */
23typedef void (Z7_FASTCALL *AES_SET_KEY_FUNC)(UInt32 *aes, const Byte *key, unsigned keySize);
24void Z7_FASTCALL Aes_SetKey_Enc(UInt32 *aes, const Byte *key, unsigned keySize);
25void Z7_FASTCALL Aes_SetKey_Dec(UInt32 *aes, const Byte *key, unsigned keySize);
26
27/* ivAes - 16-byte aligned pointer to iv+keyMode+roundKeys sequence: UInt32[AES_NUM_IVMRK_WORDS] */
28void AesCbc_Init(UInt32 *ivAes, const Byte *iv); /* iv size is AES_BLOCK_SIZE */
29
30/* data - 16-byte aligned pointer to data */
31/* numBlocks - the number of 16-byte blocks in data array */
32typedef void (Z7_FASTCALL *AES_CODE_FUNC)(UInt32 *ivAes, Byte *data, size_t numBlocks);
33
35#ifndef Z7_SFX
38#define k_Aes_SupportedFunctions_HW (1 << 2)
39#define k_Aes_SupportedFunctions_HW_256 (1 << 3)
41#endif
42
43
44#define Z7_DECLARE_AES_CODE_FUNC(funcName) \
45 void Z7_FASTCALL funcName(UInt32 *ivAes, Byte *data, size_t numBlocks);
46
50
51Z7_DECLARE_AES_CODE_FUNC (AesCbc_Encode_HW)
52Z7_DECLARE_AES_CODE_FUNC (AesCbc_Decode_HW)
53Z7_DECLARE_AES_CODE_FUNC (AesCtr_Code_HW)
54
55Z7_DECLARE_AES_CODE_FUNC (AesCbc_Decode_HW_256)
56Z7_DECLARE_AES_CODE_FUNC (AesCtr_Code_HW_256)
57
59
60#endif
#define EXTERN_C_BEGIN
Definition 7zTypes.h:20
#define Z7_FASTCALL
Definition 7zTypes.h:308
#define EXTERN_C_END
Definition 7zTypes.h:21
void Z7_FASTCALL AesCbc_Encode(UInt32 *p, Byte *data, size_t numBlocks)
Definition Aes.c:349
void Z7_FASTCALL AesCtr_Code(UInt32 *p, Byte *data, size_t numBlocks)
Definition Aes.c:391
void Z7_FASTCALL AesCbc_Decode(UInt32 *p, Byte *data, size_t numBlocks)
Definition Aes.c:367
AES_CODE_FUNC g_AesCtr_Code
Definition Aes.c:12
AES_CODE_FUNC g_AesCbc_Encode
Definition Aes.c:11
void Z7_FASTCALL Aes_SetKey_Enc(UInt32 *aes, const Byte *key, unsigned keySize)
Definition Aes.c:233
void AesGenTables(void)
Definition Aes.c:118
#define Z7_DECLARE_AES_CODE_FUNC(funcName)
Definition Aes.h:44
void(Z7_FASTCALL * AES_SET_KEY_FUNC)(UInt32 *aes, const Byte *key, unsigned keySize)
Definition Aes.h:23
void(Z7_FASTCALL * AES_CODE_FUNC)(UInt32 *ivAes, Byte *data, size_t numBlocks)
Definition Aes.h:32
AES_CODE_FUNC g_AesCbc_Decode
Definition Aes.c:9
UInt32 g_Aes_SupportedFunctions_Flags
Definition Aes.c:13
void AesCbc_Init(UInt32 *ivAes, const Byte *iv)
Definition Aes.c:342
void Z7_FASTCALL Aes_SetKey_Dec(UInt32 *aes, const Byte *key, unsigned keySize)
Definition Aes.c:269
static const void * data
Definition XzCrc64.c:50
unsigned int UInt32
Definition bzlib_private.h:45
unsigned char Byte
Definition zconf.h:391