[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 1/4] xen/lib: Export additional sha256 functions
From: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> In future, some code needs to generate a digest over several separate buffers so export the necessary functions to do so. Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx> --- xen/include/xen/sha2.h | 12 ++++++++++++ xen/lib/sha2-256.c | 17 ++++++----------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/xen/include/xen/sha2.h b/xen/include/xen/sha2.h index 47d97fbf01..cb30e8f8d7 100644 --- a/xen/include/xen/sha2.h +++ b/xen/include/xen/sha2.h @@ -12,4 +12,16 @@ void sha2_256_digest(uint8_t digest[SHA2_256_DIGEST_SIZE], const void *msg, size_t len); +struct sha2_256_state { + uint32_t state[SHA2_256_DIGEST_SIZE / sizeof(uint32_t)]; + uint8_t buf[64]; + size_t count; /* Byte count. */ +}; + +void sha2_256_init(struct sha2_256_state *s); +void sha2_256_update(struct sha2_256_state *s, const void *msg, + size_t len); +void sha2_256_final(struct sha2_256_state *s, + uint8_t digest[SHA2_256_DIGEST_SIZE]); + #endif /* XEN_SHA2_H */ diff --git a/xen/lib/sha2-256.c b/xen/lib/sha2-256.c index 19e8252188..e55e297eff 100644 --- a/xen/lib/sha2-256.c +++ b/xen/lib/sha2-256.c @@ -10,12 +10,6 @@ #include <xen/string.h> #include <xen/unaligned.h> -struct sha2_256_state { - uint32_t state[SHA2_256_DIGEST_SIZE / sizeof(uint32_t)]; - uint8_t buf[64]; - size_t count; /* Byte count. */ -}; - static uint32_t choose(uint32_t x, uint32_t y, uint32_t z) { return z ^ (x & (y ^ z)); @@ -131,7 +125,7 @@ static void sha2_256_transform(uint32_t *state, const void *_input) state[4] += e; state[5] += f; state[6] += g; state[7] += h; } -static void sha2_256_init(struct sha2_256_state *s) +void sha2_256_init(struct sha2_256_state *s) { *s = (struct sha2_256_state){ .state = { @@ -147,8 +141,8 @@ static void sha2_256_init(struct sha2_256_state *s) }; } -static void sha2_256_update(struct sha2_256_state *s, const void *msg, - size_t len) +void sha2_256_update(struct sha2_256_state *s, const void *msg, + size_t len) { unsigned int partial = s->count & 63; @@ -177,9 +171,10 @@ static void sha2_256_update(struct sha2_256_state *s, const void *msg, memcpy(s->buf + partial, msg, len); } -static void sha2_256_final(struct sha2_256_state *s, void *_dst) +void sha2_256_final(struct sha2_256_state *s, + uint8_t digest[SHA2_256_DIGEST_SIZE]) { - uint32_t *dst = _dst; + uint32_t *dst = (uint32_t *)digest; unsigned int i, partial = s->count & 63; /* Start padding */ -- 2.43.0
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |