diff --git a/src/util/mesa-sha1.c b/src/util/mesa-sha1.c index fa9284627b1..410e82c7104 100644 --- a/src/util/mesa-sha1.c +++ b/src/util/mesa-sha1.c @@ -49,3 +49,18 @@ _mesa_sha1_format(char *buf, const unsigned char *sha1) } buf[i] = '\0'; } + +/* Convert a hashs string hexidecimal representation into its more compact + * form. + */ +void +_mesa_sha1_hex_to_sha1(unsigned char *buf, const char *hex) +{ + for (unsigned i = 0; i < 20; i++) { + char tmp[3]; + tmp[0] = hex[i * 2]; + tmp[1] = hex[(i * 2) + 1]; + tmp[2] = '\0'; + buf[i] = strtol(tmp, NULL, 16); + } +} diff --git a/src/util/mesa-sha1.h b/src/util/mesa-sha1.h index bde50ba1eb4..9842bbb1e2d 100644 --- a/src/util/mesa-sha1.h +++ b/src/util/mesa-sha1.h @@ -54,6 +54,9 @@ _mesa_sha1_final(struct mesa_sha1 *ctx, unsigned char result[20]) void _mesa_sha1_format(char *buf, const unsigned char *sha1); +void +_mesa_sha1_hex_to_sha1(unsigned char *buf, const char *hex); + void _mesa_sha1_compute(const void *data, size_t size, unsigned char result[20]);