// SPDX-License-Identifier: GPL-2.0+ /* * FIPS-180-2 compliant SHA-256 implementation * * Copyright (C) 2001-2003 Christophe Devine */ #ifndef USE_HOSTCC #include #endif /* USE_HOSTCC */ #include #include #include /* * Output = SHA-256( input buffer ). Trigger the watchdog every 'chunk_sz' * bytes of input processed. */ void sha256_csum_wd(const unsigned char *input, unsigned int ilen, unsigned char *output, unsigned int chunk_sz) { sha256_context ctx; #if !defined(USE_HOSTCC) && \ (defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)) const unsigned char *end; unsigned char *curr; int chunk; #endif sha256_starts(&ctx); #if !defined(USE_HOSTCC) && \ (defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)) curr = (unsigned char *)input; end = input + ilen; while (curr < end) { chunk = end - curr; if (chunk > chunk_sz) chunk = chunk_sz; sha256_update(&ctx, curr, chunk); curr += chunk; schedule(); } #else sha256_update(&ctx, input, ilen); #endif sha256_finish(&ctx, output); }