| #!/bin/sh |
| # |
| # Sign an arbitrary number of files using a transient GPG agent |
| # |
| |
| unset GPG_AGENT_INFO |
| eval $(gpg-agent --daemon --quiet --no-use-standard-socket --keep-tty --keep-display --sh) |
| for f; do |
| fbare=$(echo "$f" | sed -e 's/\.[^./]*$//') |
| case "$f" in |
| *.gz) |
| gzip -cd -- "$f" | gpg --use-agent -a -b -o "$fbare".sign \ |
| --set-filename "$(basename "$fbare")" - |
| ;; |
| *.bz2) |
| bzip2 -cd -- "$f" | gpg --use-agent -a -b -o "$fbare".sign \ |
| --set-filename "$(basename "$fbare")" - |
| ;; |
| *.xz) |
| xz -cd -- "$f" | gpg --use-agent -a -b -o "$fbare".sign \ |
| --set-filename "$(basename "$fbare")" - |
| ;; |
| *) |
| gpg --use-agent -a -b -o "$f".sign \ |
| --set-filename "$(basename "$f")" - < "$f" |
| ;; |
| esac |
| done |
| # Kill the agent |
| kill $(gpg-connect-agent /subst /serverpid '/echo ${get serverpid}' /bye) |