summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Peter <megastep@megastep.org>2021-04-29 05:15:07 -0700
committerStephane Peter <megastep@megastep.org>2021-04-29 05:15:07 -0700
commitb83f6965615896d6dc714e578dd6cf027fee67ee (patch)
treed1a4b021276c6e2d4fb8145e1436aca84c486208
parentfbfbedf681f424ce0562c9df32d2f68379391106 (diff)
downloadmakeself-b83f6965615896d6dc714e578dd6cf027fee67ee.tar.gz
GPG signature improvements for compatibility
-rwxr-xr-xmakeself-header.sh21
-rwxr-xr-xmakeself.sh8
-rwxr-xr-xtest/signtest25
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
}
################################################################################