/* Blake2.h -- BLAKE2 Hash 2023-03-04 : Igor Pavlov : Public domain 2015 : Samuel Neves : Public domain */ #ifndef ZIP7_INC_BLAKE2_H #define ZIP7_INC_BLAKE2_H #include "7zTypes.h" EXTERN_C_BEGIN #define BLAKE2S_BLOCK_SIZE 64 #define BLAKE2S_DIGEST_SIZE 32 #define BLAKE2SP_PARALLEL_DEGREE 8 typedef struct { UInt32 h[8]; UInt32 t[2]; UInt32 f[2]; Byte buf[BLAKE2S_BLOCK_SIZE]; UInt32 bufPos; UInt32 lastNode_f1; UInt32 dummy[2]; /* for sizeof(CBlake2s) alignment */ } CBlake2s; /* You need to xor CBlake2s::h[i] with input parameter block after Blake2s_Init0() */ /* void Blake2s_Init0(CBlake2s *p); void Blake2s_Update(CBlake2s *p, const Byte *data, size_t size); void Blake2s_Final(CBlake2s *p, Byte *digest); */ typedef struct { CBlake2s S[BLAKE2SP_PARALLEL_DEGREE]; unsigned bufPos; } CBlake2sp; void Blake2sp_Init(CBlake2sp *p); void Blake2sp_Update(CBlake2sp *p, const Byte *data, size_t size); void Blake2sp_Final(CBlake2sp *p, Byte *digest); EXTERN_C_END #endif