spu: don't leave garbage in capture buffers
[pcsx_rearmed.git] / deps / libchdr / deps / lzma-22.01 / include / Aes.h
1 /* Aes.h -- AES encryption / decryption\r
2 2018-04-28 : Igor Pavlov : Public domain */\r
3 \r
4 #ifndef __AES_H\r
5 #define __AES_H\r
6 \r
7 #include "7zTypes.h"\r
8 \r
9 EXTERN_C_BEGIN\r
10 \r
11 #define AES_BLOCK_SIZE 16\r
12 \r
13 /* Call AesGenTables one time before other AES functions */\r
14 void AesGenTables(void);\r
15 \r
16 /* UInt32 pointers must be 16-byte aligned */\r
17 \r
18 /* 16-byte (4 * 32-bit words) blocks: 1 (IV) + 1 (keyMode) + 15 (AES-256 roundKeys) */\r
19 #define AES_NUM_IVMRK_WORDS ((1 + 1 + 15) * 4)\r
20 \r
21 /* aes - 16-byte aligned pointer to keyMode+roundKeys sequence */\r
22 /* keySize = 16 or 24 or 32 (bytes) */\r
23 typedef void (MY_FAST_CALL *AES_SET_KEY_FUNC)(UInt32 *aes, const Byte *key, unsigned keySize);\r
24 void MY_FAST_CALL Aes_SetKey_Enc(UInt32 *aes, const Byte *key, unsigned keySize);\r
25 void MY_FAST_CALL Aes_SetKey_Dec(UInt32 *aes, const Byte *key, unsigned keySize);\r
26 \r
27 /* ivAes - 16-byte aligned pointer to iv+keyMode+roundKeys sequence: UInt32[AES_NUM_IVMRK_WORDS] */\r
28 void AesCbc_Init(UInt32 *ivAes, const Byte *iv); /* iv size is AES_BLOCK_SIZE */\r
29 \r
30 /* data - 16-byte aligned pointer to data */\r
31 /* numBlocks - the number of 16-byte blocks in data array */\r
32 typedef void (MY_FAST_CALL *AES_CODE_FUNC)(UInt32 *ivAes, Byte *data, size_t numBlocks);\r
33 \r
34 extern AES_CODE_FUNC g_AesCbc_Decode;\r
35 #ifndef _SFX\r
36 extern AES_CODE_FUNC g_AesCbc_Encode;\r
37 extern AES_CODE_FUNC g_AesCtr_Code;\r
38 #define k_Aes_SupportedFunctions_HW     (1 << 2)\r
39 #define k_Aes_SupportedFunctions_HW_256 (1 << 3)\r
40 extern UInt32 g_Aes_SupportedFunctions_Flags;\r
41 #endif\r
42 \r
43 \r
44 #define DECLARE__AES_CODE_FUNC(funcName) \\r
45     void MY_FAST_CALL funcName(UInt32 *ivAes, Byte *data, size_t numBlocks);\r
46 \r
47 DECLARE__AES_CODE_FUNC (AesCbc_Encode)\r
48 DECLARE__AES_CODE_FUNC (AesCbc_Decode)\r
49 DECLARE__AES_CODE_FUNC (AesCtr_Code)\r
50 \r
51 DECLARE__AES_CODE_FUNC (AesCbc_Encode_HW)\r
52 DECLARE__AES_CODE_FUNC (AesCbc_Decode_HW)\r
53 DECLARE__AES_CODE_FUNC (AesCtr_Code_HW)\r
54 \r
55 DECLARE__AES_CODE_FUNC (AesCbc_Decode_HW_256)\r
56 DECLARE__AES_CODE_FUNC (AesCtr_Code_HW_256)\r
57 \r
58 EXTERN_C_END\r
59 \r
60 #endif\r