]> Git Repo - J-u-boot.git/blob - lib/sha256_common.c
Merge tag 'u-boot-imx-master-20250127' of https://gitlab.denx.de/u-boot/custodians...
[J-u-boot.git] / lib / sha256_common.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * FIPS-180-2 compliant SHA-256 implementation
4  *
5  * Copyright (C) 2001-2003  Christophe Devine
6  */
7
8 #ifndef USE_HOSTCC
9 #include <u-boot/schedule.h>
10 #endif /* USE_HOSTCC */
11 #include <string.h>
12 #include <u-boot/sha256.h>
13
14 #include <linux/compiler_attributes.h>
15
16 /*
17  * Output = SHA-256( input buffer ). Trigger the watchdog every 'chunk_sz'
18  * bytes of input processed.
19  */
20 void sha256_csum_wd(const unsigned char *input, unsigned int ilen,
21                     unsigned char *output, unsigned int chunk_sz)
22 {
23         sha256_context ctx;
24 #if !defined(USE_HOSTCC) && \
25         (defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG))
26         const unsigned char *end;
27         unsigned char *curr;
28         int chunk;
29 #endif
30
31         sha256_starts(&ctx);
32
33 #if !defined(USE_HOSTCC) && \
34         (defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG))
35         curr = (unsigned char *)input;
36         end = input + ilen;
37         while (curr < end) {
38                 chunk = end - curr;
39                 if (chunk > chunk_sz)
40                         chunk = chunk_sz;
41                 sha256_update(&ctx, curr, chunk);
42                 curr += chunk;
43                 schedule();
44         }
45 #else
46         sha256_update(&ctx, input, ilen);
47 #endif
48
49         sha256_finish(&ctx, output);
50 }
This page took 0.035899 seconds and 4 git commands to generate.