diff options
author | Stephane Peter <megastep@megastep.org> | 2021-04-29 05:15:07 -0700 |
---|---|---|
committer | Stephane Peter <megastep@megastep.org> | 2021-04-29 05:15:07 -0700 |
commit | b83f6965615896d6dc714e578dd6cf027fee67ee (patch) | |
tree | d1a4b021276c6e2d4fb8145e1436aca84c486208 | |
parent | fbfbedf681f424ce0562c9df32d2f68379391106 (diff) | |
download | makeself-b83f6965615896d6dc714e578dd6cf027fee67ee.tar.gz |
GPG signature improvements for compatibility
-rwxr-xr-x | makeself-header.sh | 21 | ||||
-rwxr-xr-x | makeself.sh | 8 | ||||
-rwxr-xr-x | test/signtest | 25 |
3 files changed, 27 insertions, 27 deletions
diff --git a/makeself-header.sh b/makeself-header.sh index eaf5d2f..1edc4ac 100755 --- a/makeself-header.sh +++ b/makeself-header.sh @@ -198,20 +198,21 @@ MS_Verify_Sig() MKTEMP_PATH=\`exec <&- 2>&-; which mktemp || command -v mktemp || type mktemp\` test -x "\$GPG_PATH" || GPG_PATH=\`exec <&- 2>&-; which gpg || command -v gpg || type gpg\` test -x "\$MKTEMP_PATH" || MKTEMP_PATH=\`exec <&- 2>&-; which mktemp || command -v mktemp || type mktemp\` - skip_lines=\`expr \$(cat \$1 | wc -l) - \$skip + 1 | tr -d " "\` - temp_dir=\`mktemp -d -t XXXXX\` - echo \$SIGNATURE | base64 --decode > \$temp_dir/tmp_sig.gpg - gpg_result=\`tail -n \$skip_lines \$1 | $GPG_PATH --verify \$temp_dir/tmp_sig.gpg - 2>&1\` - rm -rf \$temp_dir - if [ "\$(echo \$gpg_result | grep -c Good)" -eq "1" ];then - if [ "\$(echo \$gpg_result | grep -c \$sig_key)" -eq "1" ];then - echo "Signature is good" + offset=\`head -n "\$skip" "\$1" | wc -c | tr -d " "\` + temp_sig=\`mktemp -t XXXXX\` + echo \$SIGNATURE | base64 --decode > "\$temp_sig" + gpg_output=\`MS_dd "\$1" \$offset \$totalsize | LC_ALL=C "\$GPG_PATH" --verify "\$temp_sig" - 2>&1\` + gpg_res=\$? + rm -f "\$temp_sig" + if test \$gpg_res -eq 0 && test \`echo \$gpg_output | grep -c Good\` -eq 1; then + if test \`echo \$gpg_output | grep -c \$sig_key\` -eq 1; then + test x"\$quiet" = xn && echo "GPG signature is good" >&2 else - echo "Signature key does not match" >&2 + echo "GPG Signature key does not match" >&2 exit 2 fi else - echo "Signature is bad" >&2 + test x"\$quiet" = xn && echo "GPG signature failed to verify" >&2 exit 2 fi } diff --git a/makeself.sh b/makeself.sh index adc1a77..77c0c37 100755 --- a/makeself.sh +++ b/makeself.sh @@ -752,13 +752,11 @@ if test "$SIGN" = y; then GPG_PATH=`exec <&- 2>&-; which gpg || command -v gpg || type gpg` if test -x "$GPG_PATH"; then SIGNATURE=`$GPG_PATH --pinentry-mode=loopback --batch --yes --passphrase "$GPG_PASSPHRASE" --output - --detach-sig $tmpfile | base64 | tr -d \\\\n` - fi - if test "$QUIET" = "n"; then - if test -x "$GPG_PATH"; then + if test "$QUIET" = "n"; then echo "Signature: $SIGNATURE" - else - echo "Signature: gpg couldn't sign the tmp file" fi + else + echo "Missing gpg command" >&2 fi fi diff --git a/test/signtest b/test/signtest index 02d73de..9ba9ded 100755 --- a/test/signtest +++ b/test/signtest @@ -6,6 +6,7 @@ GPG_SECRET_KEY="secret_key.gpg" GPG_KEY_ID="64F66800CCC556CB7E8FE108EE8CE9E55B602BD9" BAD_GPG_KEY_ID="64F66800CCC556CB7E8FE108EE8CE9E55B602BD8" GPG_KEY_PASSPHRASE="123123" +ARCHIVE="makeself-test.run" ################################################################################ setupGPGKey() @@ -20,22 +21,22 @@ deleteGPGKey() testCreateSingedArchive() { - setupGPGKey - mkdir archive - touch archive/file - output=$($SUT --sign $GPG_KEY_PASSPHRASE archive makeself-test.run "Test" id) - assertReturn "$output" 0 - assertEqual "$(echo $output | grep -c Signature:)" "1" - deleteGPGKey + setupGPGKey + mkdir archive + touch archive/file + output=$($SUT --sign "$GPG_KEY_PASSPHRASE" archive $ARCHIVE "Test" id) + assertReturn $? 0 + assertEqual "$(echo $output | grep -c Signature:)" "1" } testVerifySingedArchive() { - setupGPGKey - assertReturn "$(./makeself-test.run --verify-sig $GPG_KEY_ID --quiet)" 0 - assertReturn "$(./makeself-test.run --verify-sig $BAD_GPG_KEY_ID --quiet)" 2 - deleteGPGKey - rm -rf archive + ./$ARCHIVE --verify-sig $GPG_KEY_ID + assertReturn $? 0 + ./$ARCHIVE --verify-sig $BAD_GPG_KEY_ID + assertReturn $? 2 + deleteGPGKey + rm -rf archive $ARCHIVE } ################################################################################ |