From 20e73c7cecd3dcff8ea8626e0673286b44628ef8 Mon Sep 17 00:00:00 2001 From: "Lance R. Vick" Date: Wed, 29 Mar 2023 09:36:39 -0700 Subject: [PATCH] Sigh and switch to git tree-hash due to needing .gitignore handling. --- sig | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/sig b/sig index c7a232d..20f61a8 100755 --- a/sig +++ b/sig @@ -209,19 +209,7 @@ group_check_fp(){ tree_hash() { local -r ref="${1:-HEAD}" - local -r target=$(git rev-parse "$ref") - local -r current=$(git rev-parse HEAD) - [ "$target" == "$current" ] || git checkout "$target" >/dev/null 2>&1 - mkdir -p ".${PROGRAM}" - printf "%s" "$( \ - find . -type f -not -path "./.git/*" \ - -exec openssl sha256 -r {} \;\ - )" \ - | sed -e 's/ \*/ /g' -e 's/ \.\// /g' \ - | LC_ALL=C sort -k2 \ - | openssl sha256 -r \ - | sed -e 's/ .*//g' - [ "$target" == "$current" ] || git checkout "$current" >/dev/null 2>&1 + git rev-parse "${ref}^{tree}" } sig_generate(){ @@ -387,7 +375,7 @@ verify(){ echo "Error: $error"; return 1; } - echo "Verified signed git note commit by \"${uid}\"" + echo "Verified signed git note by \"${uid}\"" if [[ "${seen_fps}" != *"${fp}"* ]]; then seen_fps+=" ${fp}" fi @@ -461,9 +449,12 @@ sign_note() { [[ "$push" -eq "0" ]] || $PROGRAM push } - ## Public Commands +cmd_remove() { + git notes --ref signatures remove +} + cmd_verify() { local opts threshold=1 group="" method="" diff="" opts="$(getopt -o t:g:m:d:: -l threshold:,group:,ref:,diff:: -n "$PROGRAM" -- "$@")" @@ -580,6 +571,8 @@ cmd_usage() { Usage: $PROGRAM add [-m,--method=] [-p,--push] Add signature for this repository + $PROGRAM remove + Remove all signatures on current ref $PROGRAM verify [-g,--group=] [-t,--threshold=] [d,--diff=] Verify m-of-n signatures by given group are present for directory. $PROGRAM fetch [-g,--group=] @@ -601,8 +594,9 @@ readonly PROGRAM="${0##*/}" case "$1" in verify) shift; cmd_verify "$@" ;; add) shift; cmd_add "$@" ;; + remove) shift; cmd_remove "$@" ;; fetch) shift; cmd_fetch "$@" ;; - push) shift; cmd_push "$@" ;; + push) shift; cmd_push "$@" ;; version|--version) shift; cmd_version "$@" ;; help|--help) shift; cmd_usage "$@" ;; *) cmd_usage "$@" ;;