ReactOS 0.4.17-dev-1005-g171e1de
sha3_384.c
Go to the documentation of this file.
1//
2// Sha3_384.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_384
32//
33#define ALG SHA3_384
34#define Alg Sha3_384
35#include "hash_pattern.c"
36#undef ALG
37#undef Alg
38
39
40//
41// SymCryptSha3_384Init
42//
43VOID
46{
50
52}
53
54
55//
56// SymCryptSha3_384Append
57//
58VOID
64{
66}
67
68
69//
70// SymCryptSha3_384Result
71//
72VOID
77{
79}
80
81
82//
83// SymCryptSha3_384StateExport
84//
85VOID
90{
93}
94
95
96//
97// SymCryptSha3_384StateImport
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_384KATAnswer[48] = {
121 0xec, 0x01, 0x49, 0x82, 0x88, 0x51, 0x6f, 0xc9,
122 0x26, 0x45, 0x9f, 0x58, 0xe2, 0xc6, 0xad, 0x8d,
123 0xf9, 0xb4, 0x73, 0xcb, 0x0f, 0xc0, 0x8c, 0x25,
124 0x96, 0xda, 0x7c, 0xf0, 0xe4, 0x9b, 0xe4, 0xb2,
125 0x98, 0xd8, 0x8c, 0xea, 0x92, 0x7a, 0xc7, 0xf5,
126 0x39, 0xf1, 0xed, 0xf2, 0x28, 0x37, 0x6d, 0x25
127};
128
129VOID
132{
134
136
138
139 if (memcmp(result, sha3_384KATAnswer, sizeof(result)) != 0)
140 {
141 SymCryptFatal('SHA3');
142 }
143}
#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_384State
Definition: sc_lib.h:1069
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
const SYMCRYPT_HASH SymCryptSha3_384Algorithm_default
Definition: sha3_384.c:14
static const BYTE sha3_384KATAnswer[48]
Definition: sha3_384.c:120
const PCSYMCRYPT_HASH SymCryptSha3_384Algorithm
Definition: sha3_384.c:27
VOID SYMCRYPT_CALL SymCryptSha3_384Result(_Inout_ PSYMCRYPT_SHA3_384_STATE pState, _Out_writes_(SYMCRYPT_SHA3_384_RESULT_SIZE) PBYTE pbResult)
Definition: sha3_384.c:74
SYMCRYPT_ERROR SYMCRYPT_CALL SymCryptSha3_384StateImport(_Out_ PSYMCRYPT_SHA3_384_STATE pState, _In_reads_bytes_(SYMCRYPT_SHA3_384_STATE_EXPORT_SIZE) PCBYTE pbBlob)
Definition: sha3_384.c:101
VOID SYMCRYPT_CALL SymCryptSha3_384Selftest(void)
Definition: sha3_384.c:131
VOID SYMCRYPT_CALL SymCryptSha3_384Append(_Inout_ PSYMCRYPT_SHA3_384_STATE pState, _In_reads_(cbData) PCBYTE pbData, SIZE_T cbData)
Definition: sha3_384.c:60
VOID SYMCRYPT_CALL SymCryptSha3_384Init(_Out_ PSYMCRYPT_SHA3_384_STATE pState)
Definition: sha3_384.c:45
VOID SYMCRYPT_CALL SymCryptSha3_384StateExport(_In_ PCSYMCRYPT_SHA3_384_STATE pState, _Out_writes_bytes_(SYMCRYPT_SHA3_384_STATE_EXPORT_SIZE) PBYTE pbBlob)
Definition: sha3_384.c:87
static const BYTE pbResult[]
#define SYMCRYPT_SHA3_384_RESULT_SIZE
Definition: symcrypt.h:1668
_Analysis_noreturn_ VOID SYMCRYPT_CALL SymCryptFatal(UINT32 fatalCode)
VOID SYMCRYPT_CALL SymCryptSha3_384(_In_reads_(cbData) PCBYTE pbData, SIZE_T cbData, _Out_writes_(SYMCRYPT_SHA3_384_RESULT_SIZE) PBYTE pbResult)
VOID SYMCRYPT_CALL SymCryptSha3_384StateCopy(_In_ PCSYMCRYPT_SHA3_384_STATE pSrc, _Out_ PSYMCRYPT_SHA3_384_STATE pDst)
#define SYMCRYPT_SHA3_384_INPUT_BLOCK_SIZE
Definition: symcrypt.h:1669
SYMCRYPT_ERROR
Definition: symcrypt.h:227
SYMCRYPT_MAGIC_FIELD SYMCRYPT_SHA3_384_STATE
#define SYMCRYPT_CALL
struct _SYMCRYPT_HASH SYMCRYPT_HASH
#define SYMCRYPT_FIELD_SIZE(type, field)
#define SYMCRYPT_SHA3_384_STATE_EXPORT_SIZE
SYMCRYPT_MAGIC_FIELD * PSYMCRYPT_SHA3_384_STATE
const SYMCRYPT_HASH * PCSYMCRYPT_HASH
PCBYTE PBYTE SIZE_T cbData
#define SYMCRYPT_SET_MAGIC(p)
#define SYMCRYPT_FIELD_OFFSET(type, field)
PSYMCRYPT_COMMON_HASH_STATE pState
const BYTE * PCBYTE
PCBYTE pbData
const SYMCRYPT_SHA3_384_STATE * PCSYMCRYPT_SHA3_384_STATE
#define SYMCRYPT_CHECK_MAGIC(p)
ULONG_PTR SIZE_T
Definition: typedefs.h:80
unsigned char BYTE
Definition: xxhash.c:193