aboutsummaryrefslogtreecommitdiffstats
path: root/tests/openpgp/export.test
blob: 08b82721963189cd463dd9f6804041f058b49189 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/sh

. $srcdir/defs.inc || exit 3

check_exported_public_key()
{
    $GPG --list-packets $1 >$1.packets
    grep '^:public key packet:' $1.packets >/dev/null
    grep "^	keyid: .*$KEY$" $1.packets >/dev/null
    grep '^:user ID packet:' $1.packets >/dev/null
    grep "^:signature packet:.*keyid.*$KEY" $1.packets >/dev/null
    rm $1.packets
}

check_armored_public_key()
{
    grep '^-----BEGIN PGP PUBLIC KEY BLOCK-----$' $1 >/dev/null
    grep '^-----END PGP PUBLIC KEY BLOCK-----$' $1 >/dev/null
    check_exported_public_key $1
}

check_exported_private_key()
{
    $GPG --list-packets $1 >$1.packets
    grep '^:secret key packet:' $1.packets >/dev/null
    grep "^	keyid: .*$KEY$" $1.packets >/dev/null
    grep '^:user ID packet:' $1.packets >/dev/null
    grep "^:signature packet:.*keyid.*$KEY" $1.packets >/dev/null
    rm $1.packets
}

check_armored_private_key()
{
    grep '^-----BEGIN PGP PRIVATE KEY BLOCK-----$' $1 >/dev/null
    grep '^-----END PGP PRIVATE KEY BLOCK-----$' $1 >/dev/null
    check_exported_private_key $1
}

# XXX: Currently, gpg does not allow one to export private keys
# without a passphrase (issue2070, issue2324), and our fake pinentry
# only allows us to specify one passphrase.  We therefore use the
# passphrase of our first key to unlock it (the other keys are not
# protected), and also use the same passphrase for the exported keys.
export PINENTRY_USER_DATA="$usrpass1"

info "Checking key export."
for KEY in D74C5F22 C40FDECF ECABF51D
do
    progress $KEY

    $GPG --export $KEY >$KEY.public
    check_exported_public_key $KEY.public
    rm $KEY.public

    $GPG --armor --export $KEY >$KEY.public
    check_armored_public_key $KEY.public
    rm $KEY.public

    $GPG --export-secret-keys $KEY >$KEY.private
    check_exported_private_key $KEY.private
    rm $KEY.private

    $GPG --armor --export-secret-keys $KEY >$KEY.private
    check_armored_private_key $KEY.private
    rm $KEY.private
done

progress_end