mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
use platform-dependent byteswap
This commit is contained in:
parent
05c1565a83
commit
28cee5f14b
|
@ -36,6 +36,31 @@ extern void sha512_hash(const uint8_t *message, size_t len, uint64_t hash[8]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
inline std::uint32_t byteswap(std::uint32_t i)
|
||||||
|
{
|
||||||
|
return _byteswap_ulong(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::uint64_t byteswap(std::uint64_t i)
|
||||||
|
{
|
||||||
|
return _byteswap_uint64(i);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
inline std::uint32_t byteswap(std::uint32_t i)
|
||||||
|
{
|
||||||
|
return __builtin_bswap32(i);
|
||||||
|
}
|
||||||
|
|
||||||
|
inline std::uint64_t byteswap(std::uint64_t i)
|
||||||
|
{
|
||||||
|
return __builtin_bswap64(i);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
namespace xlnt {
|
namespace xlnt {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|
||||||
|
@ -49,7 +74,7 @@ std::vector<std::uint8_t> sha1(const std::vector<std::uint8_t> &data)
|
||||||
|
|
||||||
for (auto i : hash)
|
for (auto i : hash)
|
||||||
{
|
{
|
||||||
auto swapped = _byteswap_ulong(i);
|
auto swapped = byteswap(i);
|
||||||
std::copy(
|
std::copy(
|
||||||
reinterpret_cast<std::uint8_t *>(&swapped),
|
reinterpret_cast<std::uint8_t *>(&swapped),
|
||||||
reinterpret_cast<std::uint8_t *>(&swapped + 1),
|
reinterpret_cast<std::uint8_t *>(&swapped + 1),
|
||||||
|
@ -70,7 +95,7 @@ std::vector<std::uint8_t> sha512(const std::vector<std::uint8_t> &data)
|
||||||
|
|
||||||
for (auto i : hash)
|
for (auto i : hash)
|
||||||
{
|
{
|
||||||
auto swapped = _byteswap_uint64(i);
|
auto swapped = byteswap(i);
|
||||||
std::copy(
|
std::copy(
|
||||||
reinterpret_cast<std::uint8_t *>(&swapped),
|
reinterpret_cast<std::uint8_t *>(&swapped),
|
||||||
reinterpret_cast<std::uint8_t *>(&swapped + 1),
|
reinterpret_cast<std::uint8_t *>(&swapped + 1),
|
||||||
|
|
Loading…
Reference in New Issue
Block a user