Imported Upstream version 2.1.12
[platform/upstream/gpg2.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 PPFLAGS="--gpg-args --passphrase-file=$PPFILE"
29
30 GPG=../../g10/gpg
31 GPGARGS="$opt_always --no-permission-warning"
32
33 GPGTAR="../../tools/gpgtar"
34 GPGZIP="sh ../../tools/gpg-zip"
35
36 # Skip test if gpgtar has not been built.
37 if ! test -x "$GPGTAR"
38 then
39     exit 77
40 fi
41
42 # Create, inspect, and extract an archive with the given options.
43 #
44 # $1 the tool to test
45 # $2 options used to create the archive
46 # $3 options used to inspect the archive
47 # $4 options used to extract the archive
48 do_test()
49 {
50   (
51     TOOL="$1"
52     CREATE_FLAGS="$2"
53     INSPECT_FLAGS="$3"
54     EXTRACT_FLAGS="$4"
55
56     rm -rf -- "${TESTDIR}"
57     mkdir "${TESTDIR}"
58     echo frob >"$PPFILE"
59
60     $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $CREATE_FLAGS \
61           --output "${TESTDIR}/test.tar.pgp" $TESTFILES
62
63     $TOOL --gpg "$GPG" --gpg-args "$GPGARGS" $INSPECT_FLAGS \
64           "${TESTDIR}/test.tar.pgp" \
65           >"$FILELIST"
66     for F in $TESTFILES
67     do
68         awk '{print $NF}' "$FILELIST" | grep "^${F}$" >/dev/null
69     done
70
71     $TOOL --gpg "$GPG"  --gpg-args "$GPGARGS" $EXTRACT_FLAGS --quiet \
72           --tar-args --directory="${TESTDIR}" \
73           "${TESTDIR}/test.tar.pgp"
74     for F in $TESTFILES
75     do
76         cmp "$F" "${TESTDIR}/$F"
77     done
78   )
79 }
80
81 for TOOL in "$GPGTAR" "$GPGZIP"
82 #for TOOL in "$GPGZIP"
83 do
84     # Asymmetric encryption.
85     do_test "$TOOL" \
86             "--encrypt --recipient $usrname2" \
87             "--list-archive" \
88             "--decrypt"
89
90     # Asymmetric encryption and signing.
91     do_test "$TOOL" \
92             "--encrypt --recipient $usrname2 --sign --local-user $usrname3" \
93             "--list-archive" \
94             "--decrypt"
95
96     # Signing only.
97     do_test "$TOOL" \
98             "--sign --local-user $usrname3" \
99             "--list-archive" \
100             "--decrypt"
101
102     # Symmetric encryption.
103     do_test "$TOOL" \
104             "${PPFLAGS} --symmetric" \
105             "${PPFLAGS} --list-archive" \
106             "${PPFLAGS} --decrypt"
107
108     # Symmetric encryption, explicitly choose cipher.
109     for a in `all_cipher_algos`; do
110         do_test "$TOOL" \
111                 "${PPFLAGS} --gpg-args --cipher=$a --symmetric" \
112                 "${PPFLAGS} --list-archive" \
113                 "${PPFLAGS} --decrypt"
114         break
115     done
116
117     # Asymmetric and symmetric encryption, and signing.
118     do_test "$TOOL" \
119             "${PPFLAGS} --encrypt --symmetric --recipient $usrname2 --sign --local-user $usrname3" \
120             "${PPFLAGS} --list-archive" \
121             "${PPFLAGS} --decrypt"
122 done
123
124 # Success!
125
126 exit 0