Signed-off-by: Denys Vlasenko dvlasenk@redhat.com --- src/include/internal_libreport.h | 6 ++++++ src/lib/hash_sha1.c | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+)
diff --git a/src/include/internal_libreport.h b/src/include/internal_libreport.h index ae46ad4..0f335a3 100644 --- a/src/include/internal_libreport.h +++ b/src/include/internal_libreport.h @@ -208,6 +208,12 @@ void sha1_hash(sha1_ctx_t *ctx, const void *buffer, size_t len); #define sha1_end libreport_sha1_end void sha1_end(sha1_ctx_t *ctx, void *resbuf);
+/* Helpers to hash a string: */ +#define str_to_sha1 libreport_str_to_sha1 +const uint8_t *str_to_sha1(uint8_t result[SHA1_RESULT_LEN], const char *str); +#define str_to_sha1str libreport_str_to_sha1str +const char *str_to_sha1str(char result[SHA1_RESULT_LEN*2 + 1], const char *str); +
#define xatou libreport_xatou unsigned xatou(const char *numstr); diff --git a/src/lib/hash_sha1.c b/src/lib/hash_sha1.c index f8f85d1..4a604c0 100644 --- a/src/lib/hash_sha1.c +++ b/src/lib/hash_sha1.c @@ -224,3 +224,22 @@ static void common64_end(sha1_ctx_t *ctx, int swap_needed) bufpos = 0; } } + +/* Utility helpers */ + +const uint8_t *str_to_sha1(uint8_t hash_bytes[SHA1_RESULT_LEN], const char *str) +{ + sha1_ctx_t sha1ctx; + sha1_begin(&sha1ctx); + sha1_hash(&sha1ctx, str, strlen(str)); + sha1_end(&sha1ctx, hash_bytes); + return hash_bytes; +} + +const char *str_to_sha1str(char result[SHA1_RESULT_LEN*2 + 1], const char *str) +{ + uint8_t hash_bytes[SHA1_RESULT_LEN]; + str_to_sha1(hash_bytes, str); + bin2hex(result, (void*)hash_bytes, SHA1_RESULT_LEN)[0] = '\0'; + return result; +}
crash-catcher@lists.fedorahosted.org