Add gpg-zip, a la PGP Zip.
[gnupg.git] / tools / gpg-zip.in
1 #!/bin/sh
2
3 # gpg-archive - gpg-ized tar using the same format as PGP's PGP Zip.
4 # Copyright (C) 2005 Free Software Foundation, Inc.
5 #
6 # This file is part of GnuPG.
7 #
8 # GnuPG is free software; you can redistribute it and/or modify
9 # it under the terms of the GNU General Public License as published by
10 # the Free Software Foundation; either version 2 of the License, or
11 # (at your option) any later version.
12 #
13 # GnuPG is distributed in the hope that it will be useful,
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 # GNU General Public License for more details.
17 #
18 # You should have received a copy of the GNU General Public License
19 # along with this program; if not, write to the Free Software
20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
21
22 # Despite the name, PGP Zip format is actually an OpenPGP-wrapped tar
23 # file.  To be compatible with PGP itself, this must be a USTAR format
24 # tar file.  Unclear on whether there is a distinction here between
25 # the GNU or POSIX variant of USTAR.
26
27 VERSION=@VERSION@
28 TAR=@TAR@
29 GPG=gpg
30
31 usage="\
32 Usage: gpg-zip [--help] [--version] [--encrypt] [--symmetric]
33        [--list-archive] [--output FILE] [--gpg GPG] [--gpg-args ARGS]
34        [--tar TAR] [--tar-args ARGS] filename1 [filename2, ...]
35        directory1 [directory2, ...]
36
37 Encrypt or sign files into an archive."
38
39 while test $# -gt 0 ; do
40   case $1 in
41     -h | --help | --h*)
42       echo "$usage"
43       exit 0
44       ;;
45     --list-archive)
46       list=yes
47       create=no
48       shift
49       ;;
50     --encrypt | -e)
51       gpg_args="$gpg_args --encrypt"
52       list=no
53       create=yes
54       shift
55       ;;
56     --symmetric | -c)
57       gpg_args="$gpg_args --symmetric"
58       list=no
59       create=yes
60       shift
61       ;;
62     --sign | -s)
63       gpg_args="$gpg_args --sign"
64       list=no
65       create=yes
66       shift
67       ;;
68     --recipient | -r)
69       gpg_args="$gpg_args --recipient $2"
70       shift
71       shift
72       ;;
73     --local-user | -u)
74       gpg_args="$gpg_args --local-user $2"
75       shift
76       shift
77       ;;
78     --output | -o)
79       gpg_args="$gpg_args --output $2"
80       shift
81       shift
82       ;;
83     --version)
84       echo "gpg-zip (GnuPG) $VERSION"
85       exit 0
86       ;;
87     --gpg)
88       GPG=$1
89       shift
90       ;;
91     --gpg-args)
92       gpg_args="$gpg_args $2"
93       shift
94       shift
95       ;;
96     --tar)
97       TAR=$1
98       shift
99       ;;
100     --tar-args)
101       tar_args="$tar_args $2"
102       shift
103       shift
104       ;;
105     --)
106       shift
107       break
108       ;;
109     -*)
110       echo "$usage" 1>&2
111       exit 1
112       ;;
113     *)
114       break
115       ;;
116   esac
117 done
118
119 if test x$create = xyes ; then
120 #   echo "$TAR -cf - $* | $GPG --set-filename x.tar $gpg_args" >&2
121    $TAR -cf - $* | $GPG --set-filename x.tar $gpg_args
122 elif test x$list = xyes ; then
123 #   echo "cat $1 | $GPG $gpg_args | $TAR $tar_args -tf -" >&2
124    cat $1 | $GPG $gpg_args | $TAR $tar_args -tf -
125 else
126    echo "$usage" 1>&2
127    exit 1
128 fi