| #!/bin/sh |
| |
| # gpg-archive - gpg-ized tar using the same format as PGP's PGP Zip. |
| # Copyright (C) 2005 Free Software Foundation, Inc. |
| # |
| # This file is part of GnuPG. |
| # |
| # GnuPG is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # GnuPG is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| # GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA |
| |
| # Despite the name, PGP Zip format is actually an OpenPGP-wrapped tar |
| # file. To be compatible with PGP itself, this must be a USTAR format |
| # tar file. Unclear on whether there is a distinction here between |
| # the GNU or POSIX variant of USTAR. |
| |
| VERSION=1.4.7 |
| TAR=/bin/tar |
| GPG=gpg |
| |
| usage="\ |
| Usage: gpg-zip [--help] [--version] [--encrypt] [--decrypt] [--symmetric] |
| [--list-archive] [--output FILE] [--gpg GPG] [--gpg-args ARGS] |
| [--tar TAR] [--tar-args ARGS] filename1 [filename2, ...] |
| directory1 [directory2, ...] |
| |
| Encrypt or sign files into an archive." |
| |
| while test $# -gt 0 ; do |
| case $1 in |
| -h | --help | --h*) |
| echo "$usage" |
| exit 0 |
| ;; |
| --list-archive) |
| list=yes |
| create=no |
| unpack=no |
| shift |
| ;; |
| --encrypt | -e) |
| gpg_args="$gpg_args --encrypt" |
| list=no |
| create=yes |
| unpack=no |
| shift |
| ;; |
| --decrypt | -d) |
| gpg_args="$gpg_args --decrypt" |
| list=no |
| create=no |
| unpack=yes |
| shift |
| ;; |
| --symmetric | -c) |
| gpg_args="$gpg_args --symmetric" |
| list=no |
| create=yes |
| unpack=no |
| shift |
| ;; |
| --sign | -s) |
| gpg_args="$gpg_args --sign" |
| list=no |
| create=yes |
| unpack=no |
| shift |
| ;; |
| --recipient | -r) |
| gpg_args="$gpg_args --recipient $2" |
| shift |
| shift |
| ;; |
| --local-user | -u) |
| gpg_args="$gpg_args --local-user $2" |
| shift |
| shift |
| ;; |
| --output | -o) |
| gpg_args="$gpg_args --output $2" |
| shift |
| shift |
| ;; |
| --version) |
| echo "gpg-zip (GnuPG) $VERSION" |
| exit 0 |
| ;; |
| --gpg) |
| GPG=$1 |
| shift |
| ;; |
| --gpg-args) |
| gpg_args="$gpg_args $2" |
| shift |
| shift |
| ;; |
| --tar) |
| TAR=$1 |
| shift |
| ;; |
| --tar-args) |
| tar_args="$tar_args $2" |
| shift |
| shift |
| ;; |
| --) |
| shift |
| break |
| ;; |
| -*) |
| echo "$usage" 1>&2 |
| exit 1 |
| ;; |
| *) |
| break |
| ;; |
| esac |
| done |
| |
| if test x$create = xyes ; then |
| # echo "$TAR -cf - "$@" | $GPG --set-filename x.tar $gpg_args" 1>&2 |
| $TAR -cf - "$@" | $GPG --set-filename x.tar $gpg_args |
| elif test x$list = xyes ; then |
| # echo "cat \"$1\" | $GPG $gpg_args | $TAR $tar_args -tf -" 1>&2 |
| cat "$1" | $GPG $gpg_args | $TAR $tar_args -tf - |
| elif test x$unpack = xyes ; then |
| # echo "cat \"$1\" | $GPG $gpg_args | $TAR $tar_args -xvf -" 1>&2 |
| cat "$1" | $GPG $gpg_args | $TAR $tar_args -xvf - |
| else |
| echo "$usage" 1>&2 |
| exit 1 |
| fi |