summaryrefslogtreecommitdiffstats
path: root/tests/openpgp/export.test
diff options
context:
space:
mode:
authorJustus Winter <justus@g10code.com>2016-04-19 13:40:46 +0200
committerJustus Winter <justus@g10code.com>2016-05-23 16:06:53 +0200
commita54e89a58576108fcae10ceeb4fc65822aecc170 (patch)
tree2ea73369c3b3113037954e13a4ab6971f9bea5e5 /tests/openpgp/export.test
parentg10: Fix typo in comment. (diff)
downloadgnupg2-a54e89a58576108fcae10ceeb4fc65822aecc170.tar.xz
gnupg2-a54e89a58576108fcae10ceeb4fc65822aecc170.zip
tests: Add export test.
* tests/openpgp/Makefile.am (TESTS): Add new file. * tests/openpgp/export.test: New file. Signed-off-by: Justus Winter <justus@g10code.com>
Diffstat (limited to '')
-rwxr-xr-xtests/openpgp/export.test68
1 files changed, 68 insertions, 0 deletions
diff --git a/tests/openpgp/export.test b/tests/openpgp/export.test
new file mode 100755
index 000000000..08b827219
--- /dev/null
+++ b/tests/openpgp/export.test
@@ -0,0 +1,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