tests: Add export test.
[gnupg.git] / tests / openpgp / export.test
1 #!/bin/sh
2
3 . $srcdir/defs.inc || exit 3
4
5 check_exported_public_key()
6 {
7     $GPG --list-packets $1 >$1.packets
8     grep '^:public key packet:' $1.packets >/dev/null
9     grep "^     keyid: .*$KEY$" $1.packets >/dev/null
10     grep '^:user ID packet:' $1.packets >/dev/null
11     grep "^:signature packet:.*keyid.*$KEY" $1.packets >/dev/null
12     rm $1.packets
13 }
14
15 check_armored_public_key()
16 {
17     grep '^-----BEGIN PGP PUBLIC KEY BLOCK-----$' $1 >/dev/null
18     grep '^-----END PGP PUBLIC KEY BLOCK-----$' $1 >/dev/null
19     check_exported_public_key $1
20 }
21
22 check_exported_private_key()
23 {
24     $GPG --list-packets $1 >$1.packets
25     grep '^:secret key packet:' $1.packets >/dev/null
26     grep "^     keyid: .*$KEY$" $1.packets >/dev/null
27     grep '^:user ID packet:' $1.packets >/dev/null
28     grep "^:signature packet:.*keyid.*$KEY" $1.packets >/dev/null
29     rm $1.packets
30 }
31
32 check_armored_private_key()
33 {
34     grep '^-----BEGIN PGP PRIVATE KEY BLOCK-----$' $1 >/dev/null
35     grep '^-----END PGP PRIVATE KEY BLOCK-----$' $1 >/dev/null
36     check_exported_private_key $1
37 }
38
39 # XXX: Currently, gpg does not allow one to export private keys
40 # without a passphrase (issue2070, issue2324), and our fake pinentry
41 # only allows us to specify one passphrase.  We therefore use the
42 # passphrase of our first key to unlock it (the other keys are not
43 # protected), and also use the same passphrase for the exported keys.
44 export PINENTRY_USER_DATA="$usrpass1"
45
46 info "Checking key export."
47 for KEY in D74C5F22 C40FDECF ECABF51D
48 do
49     progress $KEY
50
51     $GPG --export $KEY >$KEY.public
52     check_exported_public_key $KEY.public
53     rm $KEY.public
54
55     $GPG --armor --export $KEY >$KEY.public
56     check_armored_public_key $KEY.public
57     rm $KEY.public
58
59     $GPG --export-secret-keys $KEY >$KEY.private
60     check_exported_private_key $KEY.private
61     rm $KEY.private
62
63     $GPG --armor --export-secret-keys $KEY >$KEY.private
64     check_armored_private_key $KEY.private
65     rm $KEY.private
66 done
67
68 progress_end