diff --git a/nx/include/switch/crypto/crc.h b/nx/include/switch/crypto/crc.h index c51ed1f7..b8a8fa4c 100644 --- a/nx/include/switch/crypto/crc.h +++ b/nx/include/switch/crypto/crc.h @@ -25,10 +25,10 @@ do { \ } while (0) /// Calculate a CRC32 over data. -static inline u32 crc32Calculate(const void *src, size_t size) { +static inline u32 crc32Calculate(u32 cur_crc, const void *src, size_t size) { const u8 *src_u8 = (const u8 *)src; - u32 crc = 0xFFFFFFFF; + u32 crc = ~cur_crc; s64 len = size; _CRC_ALIGN(u8, b); @@ -44,14 +44,14 @@ static inline u32 crc32Calculate(const void *src, size_t size) { _CRC_REMAINDER(u16, h); _CRC_REMAINDER(u8, b); - return crc ^ 0xFFFFFFFF; + return ~crc; } /// Calculate a CRC32C over data. -static inline u32 crc32cCalculate(const void *src, size_t size) { +static inline u32 crc32cCalculate(u32 cur_crc, const void *src, size_t size) { const u8 *src_u8 = (const u8 *)src; - u32 crc = 0xFFFFFFFF; + u32 crc = ~cur_crc; s64 len = size; _CRC_ALIGN(u8, cb); @@ -67,7 +67,7 @@ static inline u32 crc32cCalculate(const void *src, size_t size) { _CRC_REMAINDER(u16, ch); _CRC_REMAINDER(u8, cb); - return crc ^ 0xFFFFFFFF; + return ~crc; } #undef _CRC_REMAINDER