ReactOS 0.4.17-dev-1005-g171e1de
sha3_256.c
Go to the documentation of this file.
1//
2// Sha3_256.c
3//
4// Copyright (c) Microsoft Corporation. Licensed under the MIT license.
5//
6
7#include "precomp.h"
8
9//
10// See the symcrypt.h file for documentation on what the various functions do.
11//
12
13
18 NULL, // AppendBlocks function is not implemented for SHA-3
25};
26
28
29
30//
31// SymCryptSha3_256
32//
33#define ALG SHA3_256
34#define Alg Sha3_256
35#include "hash_pattern.c"
36#undef ALG
37#undef Alg
38
39
40//
41// SymCryptSha3_256Init
42//
43VOID
46{
50
52}
53
54
55//
56// SymCryptSha3_256Append
57//
58VOID
64{
66}
67
68
69//
70// SymCryptSha3_256Result
71//
72VOID
77{
79}
80
81
82//
83// SymCryptSha3_256StateExport
84//
85VOID
90{
93}
94
95
96//
97// SymCryptSha3_256StateImport
98//
104{
106
107 if (scError == SYMCRYPT_NO_ERROR)
108 {
110 }
111
112 return scError;
113}
114
115
116//
117// Simple test vector for FIPS module testing
118//
119
120static const BYTE sha3_256KATAnswer[32] = {
121 0x3a, 0x98, 0x5d, 0xa7, 0x4f, 0xe2, 0x25, 0xb2,
122 0x04, 0x5c, 0x17, 0x2d, 0x6b, 0xd3, 0x90, 0xbd,
123 0x85, 0x5f, 0x08, 0x6e, 0x3e, 0x9d, 0x52, 0x5b,
124 0x46, 0xbf, 0xe2, 0x45, 0x11, 0x43, 0x15, 0x32
125};
126
127VOID
130{
132
134
136
137 if (memcmp(result, sha3_256KATAnswer, sizeof(result)) != 0)
138 {
139 SymCryptFatal('SHA3');
140 }
141}
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
_ACRTIMP int __cdecl memcmp(const void *, const void *, size_t)
Definition: string.c:2807
GLuint64EXT * result
Definition: glext.h:11304
#define _In_reads_bytes_(s)
Definition: no_sal2.h:170
#define _In_reads_(s)
Definition: no_sal2.h:168
#define _Inout_
Definition: no_sal2.h:162
#define _Out_writes_(s)
Definition: no_sal2.h:176
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _Out_writes_bytes_(s)
Definition: no_sal2.h:178
BYTE * PBYTE
Definition: pedump.c:66
VOID SYMCRYPT_CALL SymCryptKeccakInit(_Out_ PSYMCRYPT_KECCAK_STATE pState, UINT32 inputBlockSize, UINT8 padding)
Definition: sha3.c:174
@ SymCryptBlobTypeSha3_256State
Definition: sc_lib.h:1068
VOID SYMCRYPT_CALL SymCryptInjectError(PBYTE pbData, SIZE_T cbData)
VOID SYMCRYPT_CALL SymCryptKeccakAppend(_Inout_ PSYMCRYPT_KECCAK_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
Definition: sha3.c:285
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptKeccakStateImport(SYMCRYPT_BLOB_TYPE type, _Out_ PSYMCRYPT_KECCAK_STATE pState, _In_reads_bytes_(SYMCRYPT_KECCAK_STATE_EXPORT_SIZE) PCBYTE pbBlob)
Definition: sha3.c:518
#define SYMCRYPT_SHA3_PADDING_VALUE
Definition: sc_lib.h:1808
const BYTE SymCryptTestMsg3[3]
Definition: selftest.c:8
VOID SYMCRYPT_CALL SymCryptKeccakStateExport(SYMCRYPT_BLOB_TYPE type, _In_ PCSYMCRYPT_KECCAK_STATE pState, _Out_writes_bytes_(SYMCRYPT_KECCAK_STATE_EXPORT_SIZE) PBYTE pbBlob)
Definition: sha3.c:479
VOID SYMCRYPT_CALL SymCryptKeccakExtract(_Inout_ PSYMCRYPT_KECCAK_STATE pState, _Out_writes_(cbResult) PBYTE pbResult, SIZE_T cbResult, BOOLEAN bWipe)
Definition: sha3.c:411
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha3_256StateImport(_Out_ PSYMCRYPT_SHA3_256_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA3_256_STATE_EXPORT_SIZE) PCBYTE pbBlob)
Definition: sha3_256.c:101
VOID SYMCRYPT_CALL SymCryptSha3_256Init(_Out_ PSYMCRYPT_SHA3_256_STATE pState)
Definition: sha3_256.c:45
const PCSYMCRYPT_HASH SymCryptSha3_256Algorithm
Definition: sha3_256.c:27
VOID SYMCRYPT_CALL SymCryptSha3_256Selftest(void)
Definition: sha3_256.c:129
VOID SYMCRYPT_CALL SymCryptSha3_256Result(_Inout_ PSYMCRYPT_SHA3_256_STATE pState, _Out_writes_(SYMCRYPT_SHA3_256_RESULT_SIZE) PBYTE pbResult)
Definition: sha3_256.c:74
static const BYTE sha3_256KATAnswer[32]
Definition: sha3_256.c:120
const SYMCRYPT_HASH SymCryptSha3_256Algorithm_default
Definition: sha3_256.c:14
VOID SYMCRYPT_CALL SymCryptSha3_256StateExport(_In_ PCSYMCRYPT_SHA3_256_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA3_256_STATE_EXPORT_SIZE) PBYTE pbBlob)
Definition: sha3_256.c:87
VOID SYMCRYPT_CALL SymCryptSha3_256Append(_Inout_ PSYMCRYPT_SHA3_256_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
Definition: sha3_256.c:60
static const BYTE pbResult[]
#define SYMCRYPT_SHA3_256_INPUT_BLOCK_SIZE
Definition: symcrypt.h:1615
#define SYMCRYPT_SHA3_256_RESULT_SIZE
Definition: symcrypt.h:1614
_Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatal(UINT32 fatalCode)
VOID SYMCRYPT_CALL SymCryptSha3_256(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA3_256_RESULT_SIZE) PBYTE pbResult)
SYMCRYPT_ERROR
Definition: symcrypt.h:227
VOID SYMCRYPT_CALL SymCryptSha3_256StateCopy(_In_ PCSYMCRYPT_SHA3_256_STATE pSrc, _Out_ PSYMCRYPT_SHA3_256_STATE pDst)
#define SYMCRYPT_CALL
struct _SYMCRYPT_HASH SYMCRYPT_HASH
#define SYMCRYPT_FIELD_SIZE(type, field)
const SYMCRYPT_SHA3_256_STATE * PCSYMCRYPT_SHA3_256_STATE
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHA3_256_STATE
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
PCBYTE PBYTE SIZE_T cbData
#define SYMCRYPT_SET_MAGIC(p)
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_256_STATE
#define SYMCRYPT_FIELD_OFFSET(type, field)
#define SYMCRYPT_SHA3_256_STATE_EXPORT_SIZE
PSYMCRYPT_COMMON_HASH_STATE pState
const BYTE * PCBYTE
PCBYTE pbData
#define SYMCRYPT_CHECK_MAGIC(p)
ULONG_PTR SIZE_T
Definition: typedefs.h:80
unsigned char BYTE
Definition: xxhash.c:193