From d2e60b08cecfd3cc44bda29136e0a914c6a42b24 Mon Sep 17 00:00:00 2001 From: Lucas Gabriel Vuotto Date: Sat, 13 Jul 2024 13:56:18 +0000 Subject: [PATCH] color-hash.ksh: add SHA-[12] family --- utils/scripts/color-hash.ksh | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/utils/scripts/color-hash.ksh b/utils/scripts/color-hash.ksh index a692c43..0c87f63 100644 --- a/utils/scripts/color-hash.ksh +++ b/utils/scripts/color-hash.ksh @@ -43,6 +43,37 @@ function _color_hash_fnv1a print -nr -- $(( ($h >> 16) ^ ($h & 0xffff) )) } +function _color_hash_sha +{ + local c h s p + p=$1 + shift + s=$(printf "%08x%s" "${2:-0}" "$1") + h=$("$p" -qs "$s") + c=$((0x${h#${h%?}})) + while (( $c > 0 )); do + h=${h#??} + c=$(($c - 1)) + done + h=$((0x${h%${h#????}})) + print -nr -- $h +} + +function _color_hash_sha1 +{ + _color_hash_sha sha1 "$@" +} + +function _color_hash_sha256 +{ + _color_hash_sha sha256 "$@" +} + +function _color_hash_sha512 +{ + _color_hash_sha sha512 "$@" +} + function color_hash { local bright impl flag h n s @@ -52,7 +83,7 @@ function color_hash while getopts bi: flag; do case $flag in b) bright=true ;; - i) if [[ $OPTARG != @(djb2|fnv1|fnv1a) ]]; then + i) if [[ $OPTARG != @(djb2|fnv1|fnv1a|sha1|sha256|sha512) ]]; then return 1 fi impl=_color_hash_$OPTARG