update libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / lzma-22.01 / include / Sha256.h
CommitLineData
9e052883 1/* Sha256.h -- SHA-256 Hash\r
22021-01-01 : Igor Pavlov : Public domain */\r
3\r
4#ifndef __7Z_SHA256_H\r
5#define __7Z_SHA256_H\r
6\r
7#include "7zTypes.h"\r
8\r
9EXTERN_C_BEGIN\r
10\r
11#define SHA256_NUM_BLOCK_WORDS 16\r
12#define SHA256_NUM_DIGEST_WORDS 8\r
13\r
14#define SHA256_BLOCK_SIZE (SHA256_NUM_BLOCK_WORDS * 4)\r
15#define SHA256_DIGEST_SIZE (SHA256_NUM_DIGEST_WORDS * 4)\r
16\r
17typedef void (MY_FAST_CALL *SHA256_FUNC_UPDATE_BLOCKS)(UInt32 state[8], const Byte *data, size_t numBlocks);\r
18\r
19/*\r
20 if (the system supports different SHA256 code implementations)\r
21 {\r
22 (CSha256::func_UpdateBlocks) will be used\r
23 (CSha256::func_UpdateBlocks) can be set by\r
24 Sha256_Init() - to default (fastest)\r
25 Sha256_SetFunction() - to any algo\r
26 }\r
27 else\r
28 {\r
29 (CSha256::func_UpdateBlocks) is ignored.\r
30 }\r
31*/\r
32\r
33typedef struct\r
34{\r
35 SHA256_FUNC_UPDATE_BLOCKS func_UpdateBlocks;\r
36 UInt64 count;\r
37 UInt64 __pad_2[2];\r
38 UInt32 state[SHA256_NUM_DIGEST_WORDS];\r
39\r
40 Byte buffer[SHA256_BLOCK_SIZE];\r
41} CSha256;\r
42\r
43\r
44#define SHA256_ALGO_DEFAULT 0\r
45#define SHA256_ALGO_SW 1\r
46#define SHA256_ALGO_HW 2\r
47\r
48/*\r
49Sha256_SetFunction()\r
50return:\r
51 0 - (algo) value is not supported, and func_UpdateBlocks was not changed\r
52 1 - func_UpdateBlocks was set according (algo) value.\r
53*/\r
54\r
55BoolInt Sha256_SetFunction(CSha256 *p, unsigned algo);\r
56\r
57void Sha256_InitState(CSha256 *p);\r
58void Sha256_Init(CSha256 *p);\r
59void Sha256_Update(CSha256 *p, const Byte *data, size_t size);\r
60void Sha256_Final(CSha256 *p, Byte *digest);\r
61\r
62\r
63\r
64\r
65// void MY_FAST_CALL Sha256_UpdateBlocks(UInt32 state[8], const Byte *data, size_t numBlocks);\r
66\r
67/*\r
68call Sha256Prepare() once at program start.\r
69It prepares all supported implementations, and detects the fastest implementation.\r
70*/\r
71\r
72void Sha256Prepare(void);\r
73\r
74EXTERN_C_END\r
75\r
76#endif\r