Skip to content

Commit

Permalink
Fix the XXH3_128bits printable results with wrong byte order. (Thanks…
Browse files Browse the repository at this point in the history
… to fuchanghao.)
  • Loading branch information
MouriNaruto committed Feb 14, 2025
1 parent a9c6c3e commit ea472db
Show file tree
Hide file tree
Showing 5 changed files with 11 additions and 1 deletion.
4 changes: 3 additions & 1 deletion NanaZip.Codecs/NanaZip.Codecs.Hash.Xxh3128.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,9 +55,11 @@ namespace NanaZip::Codecs::Hash
{
XXH128_hash_t FinalDigest = ::XXH3_128bits_digest(
this->Context);
XXH128_canonical_t CanonicalDigest = { 0 };
::XXH128_canonicalFromHash(&CanonicalDigest, FinalDigest);
std::memcpy(
Digest,
&FinalDigest,
&CanonicalDigest.digest,
this->GetDigestSize());
}

Expand Down
2 changes: 2 additions & 0 deletions NanaZip.Codecs/NanaZip.Codecs.Hash.Xxh32.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ namespace NanaZip::Codecs::Hash
{
XXH32_hash_t FinalDigest = ::XXH32_digest(
this->Context);
// Warning: The 7-Zip Plugin Host will use little-endian for digest
// not longer than 8 bytes.
std::memcpy(
Digest,
&FinalDigest,
Expand Down
2 changes: 2 additions & 0 deletions NanaZip.Codecs/NanaZip.Codecs.Hash.Xxh364.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ namespace NanaZip::Codecs::Hash
{
XXH64_hash_t FinalDigest = ::XXH3_64bits_digest(
this->Context);
// Warning: The 7-Zip Plugin Host will use little-endian for digest
// not longer than 8 bytes.
std::memcpy(
Digest,
&FinalDigest,
Expand Down
2 changes: 2 additions & 0 deletions NanaZip.Codecs/NanaZip.Codecs.Hash.Xxh64.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@ namespace NanaZip::Codecs::Hash
{
XXH64_hash_t FinalDigest = ::XXH64_digest(
this->Context);
// Warning: The 7-Zip Plugin Host will use little-endian for digest
// not longer than 8 bytes.
std::memcpy(
Digest,
&FinalDigest,
Expand Down
2 changes: 2 additions & 0 deletions NanaZip.Specification/NanaZip.Specification.SevenZip.h
Original file line number Diff line number Diff line change
Expand Up @@ -337,6 +337,8 @@ IHasher : public IUnknown
_In_ LPCVOID Data,
_In_ UINT32 Size) = 0;

// Warning: The 7-Zip Plugin Host will use little-endian for digest not
// longer than 8 bytes.
virtual void STDMETHODCALLTYPE Final(
_Out_ PBYTE Digest) = 0;

Expand Down

0 comments on commit ea472db

Please sign in to comment.