mirror of
https://github.com/Xevion/easy7zip.git
synced 2026-01-31 10:24:13 -06:00
Add BLAKE3 hash function
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
COMMON_OBJS = \
|
||||
$O\Blake3Reg.obj \
|
||||
$O\CRC.obj \
|
||||
$O\CrcReg.obj \
|
||||
$O\DynLimBuf.obj \
|
||||
@@ -257,6 +258,7 @@ CRYPTO_OBJS = \
|
||||
$O\ZipStrong.obj \
|
||||
|
||||
HASHES_OBJS = \
|
||||
$O\blake3.obj \
|
||||
$O\md2.obj \
|
||||
$O\md4.obj \
|
||||
$O\md5.obj \
|
||||
|
||||
@@ -237,6 +237,7 @@ static const CHashCommand g_HashCommands[] =
|
||||
{ CZipContextMenu::kHash_SHA384, "SHA-384", "SHA384" },
|
||||
{ CZipContextMenu::kHash_SHA512, "SHA-512", "SHA512" },
|
||||
{ CZipContextMenu::kHash_BLAKE2sp, "BLAKE2sp", "BLAKE2sp" },
|
||||
{ CZipContextMenu::kHash_BLAKE3, "BLAKE3", "BLAKE3" },
|
||||
{ CZipContextMenu::kHash_All, "*", "*" }
|
||||
};
|
||||
|
||||
@@ -951,6 +952,7 @@ STDMETHODIMP CZipContextMenu::InvokeCommand(LPCMINVOKECOMMANDINFO commandInfo)
|
||||
case kHash_SHA384:
|
||||
case kHash_SHA512:
|
||||
case kHash_BLAKE2sp:
|
||||
case kHash_BLAKE3:
|
||||
case kHash_All:
|
||||
{
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(g_HashCommands); i++)
|
||||
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
kHash_SHA384,
|
||||
kHash_SHA512,
|
||||
kHash_BLAKE2sp,
|
||||
kHash_BLAKE3,
|
||||
kHash_All
|
||||
};
|
||||
|
||||
|
||||
@@ -588,7 +588,8 @@ bool ExecuteFileCommand(int id)
|
||||
case IDM_SHA384: g_App.CalculateCrc("SHA384"); break;
|
||||
case IDM_SHA512: g_App.CalculateCrc("SHA512"); break;
|
||||
case IDM_BLAKE2sp: g_App.CalculateCrc("BLAKE2sp"); break;
|
||||
|
||||
case IDM_BLAKE3: g_App.CalculateCrc("BLAKE3"); break;
|
||||
|
||||
case IDM_DIFF: g_App.DiffFiles(); break;
|
||||
case IDM_SPLIT: g_App.Split(); break;
|
||||
case IDM_COMBINE: g_App.Combine(); break;
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#define IDM_SHA384 111
|
||||
#define IDM_SHA512 112
|
||||
#define IDM_BLAKE2sp 113
|
||||
#define IDM_BLAKE3 114
|
||||
|
||||
#define IDM_OPEN 540
|
||||
#define IDM_OPEN_INSIDE 541
|
||||
|
||||
@@ -50,6 +50,7 @@ BEGIN
|
||||
MENUITEM "SHA-384", IDM_SHA384
|
||||
MENUITEM "SHA-512", IDM_SHA512
|
||||
MENUITEM "Blake2sp", IDM_BLAKE2sp
|
||||
MENUITEM "Blake3", IDM_BLAKE3
|
||||
MENUITEM "*", IDM_HASH_ALL
|
||||
END
|
||||
MENUITEM "Di&ff", IDM_DIFF
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
// Blake3Reg.cpp /TR 2021-04-06
|
||||
|
||||
#include "StdAfx.h"
|
||||
|
||||
#include "../../C/CpuArch.h"
|
||||
|
||||
EXTERN_C_BEGIN
|
||||
#include "../../C/hashes/blake3.h"
|
||||
EXTERN_C_END
|
||||
|
||||
#include "../Common/MyCom.h"
|
||||
#include "../7zip/Common/RegisterCodec.h"
|
||||
|
||||
// BLAKE3
|
||||
class CBLAKE3Hasher:
|
||||
public IHasher,
|
||||
public CMyUnknownImp
|
||||
{
|
||||
blake3_hasher _ctx;
|
||||
Byte mtDummy[1 << 7];
|
||||
|
||||
public:
|
||||
CBLAKE3Hasher() { blake3_hasher_init(&_ctx); }
|
||||
|
||||
MY_UNKNOWN_IMP1(IHasher)
|
||||
INTERFACE_IHasher(;)
|
||||
};
|
||||
|
||||
STDMETHODIMP_(void) CBLAKE3Hasher::Init() throw()
|
||||
{
|
||||
blake3_hasher_init(&_ctx);
|
||||
}
|
||||
|
||||
STDMETHODIMP_(void) CBLAKE3Hasher::Update(const void *data, UInt32 size) throw()
|
||||
{
|
||||
blake3_hasher_update(&_ctx, data, size);
|
||||
}
|
||||
|
||||
STDMETHODIMP_(void) CBLAKE3Hasher::Final(Byte *digest) throw()
|
||||
{
|
||||
blake3_hasher_finalize(&_ctx, digest, BLAKE3_OUT_LEN);
|
||||
}
|
||||
REGISTER_HASHER(CBLAKE3Hasher, 0x20a, "BLAKE3", BLAKE3_OUT_LEN)
|
||||
Reference in New Issue
Block a user