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