tools/gpgtar: Implement symmetric encryption.
[gnupg.git] / tests / openpgp / gpgtar.test
1 #!/bin/sh
2
3 #set -x
4
5 # Make sure $srcdir is set.
6 if test "x$srcdir" = x
7 then
8     echo srcdir environment variable not set!
9     exit 1
10 fi
11
12 . $srcdir/defs.inc || exit 3
13
14 set -e
15
16 # Make sure $GNUPGHOME is set.
17 if test "x$GNUPGHOME" = x
18 then
19     echo "GNUPGHOME not set."
20     exit 1
21 fi
22
23 TESTFILES="$plain_files $data_files"
24
25 TESTDIR=gpgtar.d
26 FILELIST="${TESTDIR}/filelist"
27 PPFILE="${TESTDIR}/passphrase"
28 GPG=../../g10/gpg2
29 GPGARGS="$opt_always --no-permission-warning"
30
31 GPGTAR="../../tools/gpgtar"
32 GPGZIP="sh ../../tools/gpg-zip"
33
34 # Create, inspect, and extract an archive with the given options.
35 #
36 # $1 the tool to test
37 # $2 options used to create the archive
38 # $3 options used to inspect the archive
39 # $4 options used to extract the archive
40 do_test()
41 {
42   (
43     TOOL="$1"
44     CREATE_FLAGS="$2"
45     INSPECT_FLAGS="$3"
46     EXTRACT_FLAGS="$4"
47
48     rm -rf -- "${TESTDIR}"
49     mkdir "${TESTDIR}"
50     echo frob >"$PPFILE"
51
52     $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $CREATE_FLAGS \
53           --output "${TESTDIR}/test.tar.pgp" $TESTFILES
54
55     $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $INSPECT_FLAGS \
56           "${TESTDIR}/test.tar.pgp" \
57           >"$FILELIST"
58     for F in $TESTFILES
59     do
60         grep -qe "\\b${F}\\b" "$FILELIST"
61     done
62
63     $TOOL --gpg "$GPG"  --gpg-args "$GPGARGS" $EXTRACT_FLAGS \
64           --tar-args --directory="${TESTDIR}" \
65           "${TESTDIR}/test.tar.pgp"
66     for F in $TESTFILES
67     do
68         diff -q "$F" "${TESTDIR}/$F"
69     done
70   )
71 }
72
73 for TOOL in "$GPGTAR" "$GPGZIP"
74 #for TOOL in "$GPGZIP"
75 do
76     do_test "$TOOL" \
77             "--encrypt --recipient $usrname2" \
78             "--list-archive" \
79             "--decrypt"
80
81     do_test "$TOOL" \
82             "--encrypt --recipient $usrname2 --sign --local-user $usrname3" \
83             "--list-archive" \
84             "--decrypt"
85
86     do_test "$TOOL" \
87             "--sign --local-user $usrname3" \
88             "--list-archive" \
89             "--decrypt"
90
91     do_test "$TOOL" \
92             "--gpg-args --passphrase-file=$PPFILE --symmetric" \
93             "--gpg-args --passphrase-file=$PPFILE --list-archive" \
94             "--gpg-args --passphrase-file=$PPFILE --decrypt"
95 done
96
97 # Success!
98
99 exit 0