From 56f4fca657f6e81241edfc6bdff7300998b45b1e Mon Sep 17 00:00:00 2001 From: Pol Henarejos Date: Thu, 29 Jan 2026 16:02:44 +0100 Subject: [PATCH] Move crc to crypto utils. Signed-off-by: Pol Henarejos --- src/crypto_utils.c | 13 +++++++++++++ src/crypto_utils.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/crypto_utils.c b/src/crypto_utils.c index 7adba39..84a3213 100644 --- a/src/crypto_utils.c +++ b/src/crypto_utils.c @@ -278,3 +278,16 @@ mbedtls_ecp_group_id ec_get_curve_from_prime(const uint8_t *prime, size_t prime_ } return MBEDTLS_ECP_DP_NONE; } + +#define POLY 0xedb88320 + +uint32_t crc32c(const uint8_t *buf, size_t len) { + uint32_t crc = 0xffffffff; + while (len--) { + crc ^= *buf++; + for (int k = 0; k < 8; k++) { + crc = (crc >> 1) ^ (POLY & (0 - (crc & 1))); + } + } + return ~crc; +} diff --git a/src/crypto_utils.h b/src/crypto_utils.h index 83631fb..c2952b9 100644 --- a/src/crypto_utils.h +++ b/src/crypto_utils.h @@ -56,5 +56,6 @@ extern int aes_decrypt(const uint8_t *key, const uint8_t *iv, uint16_t key_size, extern int aes_encrypt_cfb_256(const uint8_t *key, const uint8_t *iv, uint8_t *data, uint16_t len); extern int aes_decrypt_cfb_256(const uint8_t *key, const uint8_t *iv, uint8_t *data, uint16_t len); extern mbedtls_ecp_group_id ec_get_curve_from_prime(const uint8_t *prime, size_t prime_len); +extern uint32_t crc32c(const uint8_t *buf, size_t len); #endif