From bcd23ff585a798a88bb7abebf8e0feb17f176e3c Mon Sep 17 00:00:00 2001 From: LuK1337 Date: Sun, 24 Sep 2023 21:36:11 +0200 Subject: [PATCH] core: fix TOTP moving factor on big-endian systems --- src/core/wee-crypto.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/wee-crypto.c b/src/core/wee-crypto.c index e91233495..090449271 100644 --- a/src/core/wee-crypto.c +++ b/src/core/wee-crypto.c @@ -524,6 +524,10 @@ weecrypto_totp_generate_internal (const char *secret, int length_secret, int rc, offset, length; unsigned long bin_code; +#if __BYTE_ORDER == __BIG_ENDIAN + /* Big endian does not need to swap bytes here! */ + moving_factor_swapped = moving_factor; +#else moving_factor_swapped = (moving_factor >> 56) | ((moving_factor << 40) & 0x00FF000000000000) | ((moving_factor << 24) & 0x0000FF0000000000) @@ -532,6 +536,7 @@ weecrypto_totp_generate_internal (const char *secret, int length_secret, | ((moving_factor >> 24) & 0x0000000000FF0000) | ((moving_factor >> 40) & 0x000000000000FF00) | (moving_factor << 56); +#endif rc = weecrypto_hmac (secret, length_secret, &moving_factor_swapped, sizeof (moving_factor_swapped),