1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * SHA2-256: https://csrc.nist.gov/pubs/fips/180-2/upd1/final
4  */
5 #ifndef XEN_SHA2_H
6 #define XEN_SHA2_H
7 
8 #include <xen/types.h>
9 
10 #define SHA2_256_DIGEST_SIZE 32
11 
12 void sha2_256_digest(uint8_t digest[SHA2_256_DIGEST_SIZE],
13                      const void *msg, size_t len);
14 
15 struct sha2_256_state {
16     uint32_t state[SHA2_256_DIGEST_SIZE / sizeof(uint32_t)];
17     uint8_t buf[64];
18     size_t count; /* Byte count. */
19 };
20 
21 void sha2_256_init(struct sha2_256_state *s);
22 void sha2_256_update(struct sha2_256_state *s, const void *msg, size_t len);
23 void sha2_256_final(struct sha2_256_state *s,
24                     uint8_t digest[SHA2_256_DIGEST_SIZE]);
25 
26 #endif /* XEN_SHA2_H */
27