diff vendor/pear/crypt_gpg/tests/ImportKeyTest.php @ 0:1e000243b222

vanilla 1.3.3 distro, I hope
author Charlie Root
date Thu, 04 Jan 2018 15:50:29 -0500
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/pear/crypt_gpg/tests/ImportKeyTest.php	Thu Jan 04 15:50:29 2018 -0500
@@ -0,0 +1,522 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Key import tests for the Crypt_GPG package.
+ *
+ * These tests require the PHPUnit 3.6 or greater package to be installed.
+ * PHPUnit is installable using PEAR. See the
+ * {@link http://www.phpunit.de/manual/3.6/en/installation.html manual}
+ * for detailed installation instructions.
+ *
+ * To run these tests, use:
+ * <code>
+ * $ phpunit ImportKeyTestCase
+ * </code>
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see
+ * <http://www.gnu.org/licenses/>
+ *
+ * @category  Encryption
+ * @package   Crypt_GPG
+ * @author    Michael Gauthier <mike@silverorange.com>
+ * @copyright 2005-2008 silverorange
+ * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version   CVS: $Id$
+ * @link      http://pear.php.net/package/Crypt_GPG
+ */
+
+/**
+ * Base test case.
+ */
+require_once 'TestCase.php';
+
+/**
+ * Tests key import abilities of Crypt_GPG.
+ *
+ * @category  Encryption
+ * @package   Crypt_GPG
+ * @author    Michael Gauthier <mike@silverorange.com>
+ * @copyright 2005-2008 silverorange
+ * @license   http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link      http://pear.php.net/package/Crypt_GPG
+ */
+class ImportKeyTestCase extends Crypt_GPG_TestCase
+{
+    // set up
+    // {{{ setUp()
+
+    public function setUp()
+    {
+        parent::setUp();
+
+        // In GnuPG 2.1 first operation on a keyring in v1 format
+        // will cause format update and several IMPORT_OK responses
+        // This way we clean the state first
+        $this->gpg->getKeys();
+    }
+
+    // }}}
+    // {{{ testImportKey_private()
+
+    /**
+     * @group string
+     */
+    public function testImportKey_private()
+    {
+        // Note: Some of GnuPG 2.1.x versions return different private_imported
+        // and private_uchanged values, bug? GnuPG 2.1.15 returns 1 as expected.
+
+        $expectedResult = array(
+            'fingerprint'       => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
+            'fingerprints'      => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
+            'public_imported'   => 0,
+            'public_unchanged'  => 1,
+            'private_imported'  => 1,
+            'private_unchanged' => 0
+        );
+
+        // {{{ private key data
+        $privateKeyData = <<<TEXT
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+lQHhBEjS+OIRBACPl023p+jInWiUtc7zSBU1D4mv42zSOwPdC37Pn/4x9FyhIOXE
+LCRTpsnAw9rT6R3BvAC4uO68fxjxFCwTpsa60RsHw4bwpSAYuf0t5Xg+GQIritlm
+XHVYwku3Hkh4Svv0quemooGuJ9lLwIHacL/4W1dTHLB2rzon0T4kx7ExZwCg/XKl
+RD9zbbnQOgjn0EaS8fcSm+ED/1IMfkCz5ac9Y3jBUlcArOZcOlTrzxst+iMZm4f0
+fh8dFCCaRN0iaVLSdCNaFvbKbJYZad1w3jFAMU9bX83flqgV1wMPO/NenfMidBIq
+sKzgttaQo5VmjWPtwyOJXODR2lHKQR2hFCkIKlHMPLV3awCGV8iTyiTZMJirdtvf
+s26oA/9STYro+yB9yrHufdfjM1u8SbSIhK6jUoq2ajLPHaLF2nRZZyv1gnkzRFd+
+/Vxcx6cwp8Qd6L4z+0sU3pMS4X8rt2vqilK2msg1VrHnjGgFIfmfIvY5EmrhNzEx
+6X82fbR9f8lwLy5N/gPm326e0xSw1rWdR15VukJPbmK6nf/pL/4DAwIZF3WLmXaM
+DGCHa6b36T1VZ+bgYYcoQUanh3OSfLO0NwJ5ywFiML26DYZ7M3aivlfXj/8lOKy0
+8tcg/rRcUHVibGljIE9ubHkgVGVzdCBLZXkgKGRvIG5vdCBlbmNyeXB0IGltcG9y
+dGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxwdWJsaWMtb25seUBleGFtcGxlLmNv
+bT6IYAQTEQIAIAUCSNL44gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKuo
+HvVOjA3r8DYAn1/DrF5jw31P3L6MlWdelLuR4POnAJ9It7IynfJalYIHoAWtY2xk
+kTsT+p0CYgRI0vjoEAgAp65R578Es8qtASDAgIbYfJlJTwMovEnA4KJ69mpVt3mz
+cFWMtJCvuilvwSQQ+VfKxjemtbe/IbMe9ssj4nTSLw/mweUB89tRj8ZzaS+/9312
+AS8ra/xIDr6kTSfKcRKjXgMzkJ+A13rYwG5LFWnyumg36xglmzXKhecEkRVPfWn3
+ISoq3zirZlQOWcKYdyA2Z685SKJC/N+3nUqKOJ7qrA7eT608LFksytBHeOfNf5m7
+CC4wAE3RAz+ZkJvWRbE2G5pUalZktq8uKMT5WQgvuFP3hnvku5yilpo2ELTnYkO3
+ltc3NHCc9v+jhikayPr7RvUdVPbaITT80yYKBPygCwADBggApzR1vW/fvzmrO5pW
+zAvd4umVh/Yp34n3vWyXMu+JIHA7s08rkTzlMXzamICQmkjwAuCwJt0t7BA28Lny
+goh2joxo8tE/OowFk+IzbeA2Vrz71d/T5SMDtC2mePE0m3bmCOLBscu5aJIfgi1X
+/fzr44f4i+6hqVDCuOOmnVtbL4xBBnS6KXdcWP7QbVhxG3SpH9Agd/QXvSQm0Obz
+9iKZ11FEXzgnVZGXaCM0GBsFE9JuNY5+hi6A72rccjhC0V1Cy43veeIhOE+v3pK0
+a/BGUlgDSdgVopE9zUSQwzuo87UbY3EoDWBqDRSRCRMfmv8S2b9VJIRPdCOHZGCI
+R49/0f4DAwIZF3WLmXaMDGCvSMKxFAt3zGZVEsfwS67ilWw0kq9wgmDpTmbrz1pe
+8tUgmHxgiVc3Xo86ItXGr69udzSODYw2wO6JGdgOKsZDKAv7zJHi+3GISAQYEQIA
+CQUCSNL46AIbDAAKCRCrqB71TowN6zbAAJ4qBrdmAYuAbY5txsc+Tmv9quOpzwCW
+NN5B7Vl2JdxBuwWJrdfUb9UQzw==
+=51qc
+-----END PGP PRIVATE KEY BLOCK-----
+
+TEXT;
+        // }}}
+
+        $result = $this->gpg->importKey($privateKeyData);
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKey_public()
+
+    /**
+     * @group string
+     */
+    public function testImportKey_public()
+    {
+        $expectedResult = array(
+            'fingerprint'       => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
+            'fingerprints'      => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
+            'public_imported'   => 1,
+            'public_unchanged'  => 0,
+            'private_imported'  => 0,
+            'private_unchanged' => 0
+        );
+
+        // {{{ public key data
+        $publicKeyData = <<<TEXT
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+mQGiBEjS+PgRBADbDdRN9iwESSyJvjnfgk7ZWUYKdHdSER7yJ0aM4LQjVDdw9y/f
+QGidipXxVD2lW28gRtzcmLufxv3DzjZp83VaXvlJs9jbTtHDIYFyDW9kH1HTRbZT
+WKWfuInd0AXzHy5o77qQ+mW0AIXbyke5suSHdvcmv1hiWI9OnXcIHpmavwCgt4Hm
++j3FpRo9qs4fJM887c796qUD/iPkStU9sM/0KCJFZNaPCGBaamCEi7UoAHNlim+B
+dv3rfSQ2VcDRq9/3GoCEJ2c62XpgQxt79mojJLdWZsTWvr6ESnWOm7W6GIjv/Zc3
++OXgi7QdH5nwpZl6kBMkuzZxczFuwh9dqlXml+bND0JawS38MvQpDUkwMb592v5U
+i9WIBADBacg6nixiTR+4kaHFE1Ww8QxT+vQ4S1SOx47cm8R6FxTRQA7FvK+vMxCt
+Ps9GOzhjrCgIoF/6X10IZ7qB5jCYIH+kvHrp90ZbNwJ4pIa7phCPhqUF9mEyMbC2
+AEIGp/Aw26yXKskQJJ3vFji+VaeCui21sXjg5EHfoayt79xT8bRfRXh0ZXJuYWwg
+UHVibGljIEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEgd2l0aCB0
+aGlzIGtleSkgPGV4dGVybmFsLXB1YmxpY0BleGFtcGxlLmNvbT6IYAQTEQIAIAUC
+SNL4+AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECaKtxA0NeZdqHwAn3AF
+EEhX1Tyba0ovCV2DwUytKM0CAKCnu6VzRy1Y8jp9fiy3ScwmaCI3FbkCDQRI0vj8
+EAgArBRh0YpPhE1vvKoPuhGDa//96YqrYt9rmBo3AR1WmF3CKtspjXdOK2bCqdJh
+H6kaoNi+0Ors00n2NfPj9Am2cTV3h2/KpAWOxQGfkmpzU3xXTVCUo/HoKDXIfWqk
+/TPXRqbwFV489GRBtVov4IoZM0KqZXhaFD6cXBsEl/BVSvVdBqmBzUoJ2bOzYiSW
+eg/ml65jbtxjDYMbxTLi7xRcTSAsareoN6/PcbAvcCE5UeCMu8p52wxHOTrAkI4/
+6elpziVpIGn07zJb//4qIoZdhIzwfsMl73tPfdoL9jEC66SiWAN+BEDxceGR5E15
+2WsT5tkxuz/pQUC1L3JW4WCC/wADBwf8CsevcPsk2XxT2XZj0lfmAOuhXxuqBczW
+TXCimnRxvC8+uAacv1RgVRH6emW3BVjt0dr9vwRT0n54JA+7ZwXVMOo4/tqNwmJs
+C6SThBXGBQxEaZwv19WC58DjblbvYa81cUaXrUdHi1OyoHwgalx0xZQ57IUXW6+7
+qdLRfzyqbDBph9ogB0ta3AhSikAqqYImTrI650v/KWBLjrI+N925r0TvnfSOsru7
+JrftccY2LntVnQUcXjuaFViZ7y8ocW8f92zmGj2zUN8z2GsMKiGQtNNmoX51TcQl
+sJPsZF0RKduVkNUQa9cfzSIMjjhUSzspA2qHLUKafrS3e38s2Y4CNIhJBBgRAgAJ
+BQJI0vj8AhsMAAoJECaKtxA0NeZdOFQAn15X+eYzFgVERrFkddsHvAE00OnSAJ9h
+A7Lcv7M+9WeZ6cjeHkZfLB6LLA==
+=AV/P
+-----END PGP PUBLIC KEY BLOCK-----
+
+TEXT;
+        // }}}
+
+        $result = $this->gpg->importKey($publicKeyData);
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyAlreadyImported_private()
+
+    /**
+     * @group string
+     */
+    public function testImportKeyAlreadyImported_private()
+    {
+        // {{{ private key data
+        $privateKeyData = <<<TEXT
+-----BEGIN PGP PRIVATE KEY BLOCK-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+lQHhBEjS+OIRBACPl023p+jInWiUtc7zSBU1D4mv42zSOwPdC37Pn/4x9FyhIOXE
+LCRTpsnAw9rT6R3BvAC4uO68fxjxFCwTpsa60RsHw4bwpSAYuf0t5Xg+GQIritlm
+XHVYwku3Hkh4Svv0quemooGuJ9lLwIHacL/4W1dTHLB2rzon0T4kx7ExZwCg/XKl
+RD9zbbnQOgjn0EaS8fcSm+ED/1IMfkCz5ac9Y3jBUlcArOZcOlTrzxst+iMZm4f0
+fh8dFCCaRN0iaVLSdCNaFvbKbJYZad1w3jFAMU9bX83flqgV1wMPO/NenfMidBIq
+sKzgttaQo5VmjWPtwyOJXODR2lHKQR2hFCkIKlHMPLV3awCGV8iTyiTZMJirdtvf
+s26oA/9STYro+yB9yrHufdfjM1u8SbSIhK6jUoq2ajLPHaLF2nRZZyv1gnkzRFd+
+/Vxcx6cwp8Qd6L4z+0sU3pMS4X8rt2vqilK2msg1VrHnjGgFIfmfIvY5EmrhNzEx
+6X82fbR9f8lwLy5N/gPm326e0xSw1rWdR15VukJPbmK6nf/pL/4DAwIZF3WLmXaM
+DGCHa6b36T1VZ+bgYYcoQUanh3OSfLO0NwJ5ywFiML26DYZ7M3aivlfXj/8lOKy0
+8tcg/rRcUHVibGljIE9ubHkgVGVzdCBLZXkgKGRvIG5vdCBlbmNyeXB0IGltcG9y
+dGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxwdWJsaWMtb25seUBleGFtcGxlLmNv
+bT6IYAQTEQIAIAUCSNL44gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKuo
+HvVOjA3r8DYAn1/DrF5jw31P3L6MlWdelLuR4POnAJ9It7IynfJalYIHoAWtY2xk
+kTsT+p0CYgRI0vjoEAgAp65R578Es8qtASDAgIbYfJlJTwMovEnA4KJ69mpVt3mz
+cFWMtJCvuilvwSQQ+VfKxjemtbe/IbMe9ssj4nTSLw/mweUB89tRj8ZzaS+/9312
+AS8ra/xIDr6kTSfKcRKjXgMzkJ+A13rYwG5LFWnyumg36xglmzXKhecEkRVPfWn3
+ISoq3zirZlQOWcKYdyA2Z685SKJC/N+3nUqKOJ7qrA7eT608LFksytBHeOfNf5m7
+CC4wAE3RAz+ZkJvWRbE2G5pUalZktq8uKMT5WQgvuFP3hnvku5yilpo2ELTnYkO3
+ltc3NHCc9v+jhikayPr7RvUdVPbaITT80yYKBPygCwADBggApzR1vW/fvzmrO5pW
+zAvd4umVh/Yp34n3vWyXMu+JIHA7s08rkTzlMXzamICQmkjwAuCwJt0t7BA28Lny
+goh2joxo8tE/OowFk+IzbeA2Vrz71d/T5SMDtC2mePE0m3bmCOLBscu5aJIfgi1X
+/fzr44f4i+6hqVDCuOOmnVtbL4xBBnS6KXdcWP7QbVhxG3SpH9Agd/QXvSQm0Obz
+9iKZ11FEXzgnVZGXaCM0GBsFE9JuNY5+hi6A72rccjhC0V1Cy43veeIhOE+v3pK0
+a/BGUlgDSdgVopE9zUSQwzuo87UbY3EoDWBqDRSRCRMfmv8S2b9VJIRPdCOHZGCI
+R49/0f4DAwIZF3WLmXaMDGCvSMKxFAt3zGZVEsfwS67ilWw0kq9wgmDpTmbrz1pe
+8tUgmHxgiVc3Xo86ItXGr69udzSODYw2wO6JGdgOKsZDKAv7zJHi+3GISAQYEQIA
+CQUCSNL46AIbDAAKCRCrqB71TowN6zbAAJ4qBrdmAYuAbY5txsc+Tmv9quOpzwCW
+NN5B7Vl2JdxBuwWJrdfUb9UQzw==
+=51qc
+-----END PGP PRIVATE KEY BLOCK-----
+
+TEXT;
+        // }}}
+
+        $result = $this->gpg->importKey($privateKeyData);
+
+        $expectedResult = array(
+            'fingerprint'       => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
+            'fingerprints'      => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
+            'public_imported'   => 0,
+            'public_unchanged'  => 1,
+            'private_imported'  => 1,
+            'private_unchanged' => 0
+        );
+
+        $this->assertEquals($expectedResult, $result);
+
+        $result = $this->gpg->importKey($privateKeyData);
+
+        $expectedResult = array(
+            'fingerprint'       => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
+            'fingerprints'      => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
+            'public_imported'   => 0,
+            'public_unchanged'  => version_compare($this->gpg->getVersion(), '2.1.0', 'ge') ? 1 : 0,
+            'private_imported'  => 0,
+            'private_unchanged'  => 1,
+        );
+
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyAlreadyImported_public()
+
+    /**
+     * @group string
+     */
+    public function testImportKeyAlreadyImported_public()
+    {
+        // {{{ public key data
+        $publicKeyData = <<<TEXT
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.4.6 (GNU/Linux)
+
+mQGiBEjS+PgRBADbDdRN9iwESSyJvjnfgk7ZWUYKdHdSER7yJ0aM4LQjVDdw9y/f
+QGidipXxVD2lW28gRtzcmLufxv3DzjZp83VaXvlJs9jbTtHDIYFyDW9kH1HTRbZT
+WKWfuInd0AXzHy5o77qQ+mW0AIXbyke5suSHdvcmv1hiWI9OnXcIHpmavwCgt4Hm
++j3FpRo9qs4fJM887c796qUD/iPkStU9sM/0KCJFZNaPCGBaamCEi7UoAHNlim+B
+dv3rfSQ2VcDRq9/3GoCEJ2c62XpgQxt79mojJLdWZsTWvr6ESnWOm7W6GIjv/Zc3
++OXgi7QdH5nwpZl6kBMkuzZxczFuwh9dqlXml+bND0JawS38MvQpDUkwMb592v5U
+i9WIBADBacg6nixiTR+4kaHFE1Ww8QxT+vQ4S1SOx47cm8R6FxTRQA7FvK+vMxCt
+Ps9GOzhjrCgIoF/6X10IZ7qB5jCYIH+kvHrp90ZbNwJ4pIa7phCPhqUF9mEyMbC2
+AEIGp/Aw26yXKskQJJ3vFji+VaeCui21sXjg5EHfoayt79xT8bRfRXh0ZXJuYWwg
+UHVibGljIEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEgd2l0aCB0
+aGlzIGtleSkgPGV4dGVybmFsLXB1YmxpY0BleGFtcGxlLmNvbT6IYAQTEQIAIAUC
+SNL4+AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECaKtxA0NeZdqHwAn3AF
+EEhX1Tyba0ovCV2DwUytKM0CAKCnu6VzRy1Y8jp9fiy3ScwmaCI3FbkCDQRI0vj8
+EAgArBRh0YpPhE1vvKoPuhGDa//96YqrYt9rmBo3AR1WmF3CKtspjXdOK2bCqdJh
+H6kaoNi+0Ors00n2NfPj9Am2cTV3h2/KpAWOxQGfkmpzU3xXTVCUo/HoKDXIfWqk
+/TPXRqbwFV489GRBtVov4IoZM0KqZXhaFD6cXBsEl/BVSvVdBqmBzUoJ2bOzYiSW
+eg/ml65jbtxjDYMbxTLi7xRcTSAsareoN6/PcbAvcCE5UeCMu8p52wxHOTrAkI4/
+6elpziVpIGn07zJb//4qIoZdhIzwfsMl73tPfdoL9jEC66SiWAN+BEDxceGR5E15
+2WsT5tkxuz/pQUC1L3JW4WCC/wADBwf8CsevcPsk2XxT2XZj0lfmAOuhXxuqBczW
+TXCimnRxvC8+uAacv1RgVRH6emW3BVjt0dr9vwRT0n54JA+7ZwXVMOo4/tqNwmJs
+C6SThBXGBQxEaZwv19WC58DjblbvYa81cUaXrUdHi1OyoHwgalx0xZQ57IUXW6+7
+qdLRfzyqbDBph9ogB0ta3AhSikAqqYImTrI650v/KWBLjrI+N925r0TvnfSOsru7
+JrftccY2LntVnQUcXjuaFViZ7y8ocW8f92zmGj2zUN8z2GsMKiGQtNNmoX51TcQl
+sJPsZF0RKduVkNUQa9cfzSIMjjhUSzspA2qHLUKafrS3e38s2Y4CNIhJBBgRAgAJ
+BQJI0vj8AhsMAAoJECaKtxA0NeZdOFQAn15X+eYzFgVERrFkddsHvAE00OnSAJ9h
+A7Lcv7M+9WeZ6cjeHkZfLB6LLA==
+=AV/P
+-----END PGP PUBLIC KEY BLOCK-----
+
+TEXT;
+        // }}}
+
+        $result = $this->gpg->importKey($publicKeyData);
+
+        $expectedResult = array(
+            'fingerprint'       => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
+            'fingerprints'      => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
+            'public_imported'   => 1,
+            'public_unchanged'  => 0,
+            'private_imported'  => 0,
+            'private_unchanged' => 0
+        );
+
+        $this->assertEquals($expectedResult, $result);
+
+        $result = $this->gpg->importKey($publicKeyData);
+
+        $expectedResult = array(
+            'fingerprint'       => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
+            'fingerprints'      => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
+            'public_imported'   => 0,
+            'public_unchanged'  => 1,
+            'private_imported'  => 0,
+            'private_unchanged' => 0
+        );
+
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyNoDataException_invalid()
+
+    /**
+     * @expectedException Crypt_GPG_NoDataException
+     *
+     * @group string
+     */
+    public function testImportKeyNoDataException_invalid()
+    {
+        $keyData = 'Invalid OpenPGP data.';
+        $this->gpg->importKey($keyData);
+    }
+
+    // }}}
+    // {{{ testImportKeyNoDataException_empty()
+
+    /**
+     * @expectedException Crypt_GPG_NoDataException
+     *
+     * @group string
+     */
+    public function testImportKeyNoDataException_empty()
+    {
+        $keyData = '';
+        $this->gpg->importKey($keyData);
+    }
+
+    // }}}
+    // {{{ testImportKeyFile_private()
+
+    /**
+     * @group file
+     */
+    public function testImportKeyFile_private()
+    {
+        $expectedResult = array(
+            'fingerprint'       => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
+            'fingerprints'      => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
+            'public_imported'   => 0,
+            'public_unchanged'  => 1,
+            'private_imported'  => 1,
+            'private_unchanged' => 0
+        );
+
+        $filename = $this->getDataFilename('testImportKeyFile_private.asc');
+        $result   = $this->gpg->importKeyFile($filename);
+
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyFile_public()
+
+    /**
+     * @group file
+     */
+    public function testImportKeyFile_public()
+    {
+        $expectedResult = array(
+            'fingerprint'       => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
+            'fingerprints'      => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
+            'public_imported'   => 1,
+            'public_unchanged'  => 0,
+            'private_imported'  => 0,
+            'private_unchanged' => 0
+        );
+
+        $filename = $this->getDataFilename('testImportKeyFile_public.asc');
+        $result   = $this->gpg->importKeyFile($filename);
+
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyFileAlreadyImported_private()
+
+    /**
+     * @group file
+     */
+    public function testImportKeyFileAlreadyImported_private()
+    {
+        $filename = $this->getDataFilename('testImportKeyFile_private.asc');
+        $result   = $this->gpg->importKeyFile($filename);
+
+        $expectedResult = array(
+            'fingerprint'       => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
+            'fingerprints'      => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
+            'public_imported'   => 0,
+            'public_unchanged'  => 1,
+            'private_imported'  => 1,
+            'private_unchanged' => 0
+        );
+
+        $this->assertEquals($expectedResult, $result);
+
+        $result = $this->gpg->importKeyFile($filename);
+
+        $expectedResult = array(
+            'fingerprint'       => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
+            'fingerprints'      => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
+            'public_imported'   => 0,
+            'public_unchanged'  => version_compare($this->gpg->getVersion(), '2.1.0', 'ge') ? 1 : 0,
+            'private_imported'  => 0,
+            'private_unchanged'  => 1,
+        );
+
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyFileAlreadyImported_public()
+
+    /**
+     * @group file
+     */
+    public function testImportKeyFileAlreadyImported_public()
+    {
+        $filename = $this->getDataFilename('testImportKeyFile_public.asc');
+        $result = $this->gpg->importKeyFile($filename);
+
+        $expectedResult = array(
+            'fingerprint'       => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
+            'fingerprints'      => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
+            'public_imported'   => 1,
+            'public_unchanged'  => 0,
+            'private_imported'  => 0,
+            'private_unchanged' => 0
+        );
+
+        $this->assertEquals($expectedResult, $result);
+
+        $result = $this->gpg->importKeyFile($filename);
+
+        $expectedResult = array(
+            'fingerprint'       => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
+            'fingerprints'      => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
+            'public_imported'   => 0,
+            'public_unchanged'  => 1,
+            'private_imported'  => 0,
+            'private_unchanged' => 0
+        );
+
+        $this->assertEquals($expectedResult, $result);
+    }
+
+    // }}}
+    // {{{ testImportKeyFileFileException()
+
+    /**
+     * @expectedException Crypt_GPG_FileException
+     *
+     * @group file
+     */
+    public function testImportKeyFileFileException()
+    {
+        // input file does not exist
+        $filename =
+            $this->getDataFilename('testImportKeyFileFileException.asc');
+
+        $this->gpg->importKeyFile($filename);
+    }
+
+    // }}}
+    // {{{ testImportKeyFileNoDataException()
+
+    /**
+     * @expectedException Crypt_GPG_NoDataException
+     *
+     * @group file
+     */
+    public function testImportKeyFileNoDataException()
+    {
+        $filename = $this->getDataFilename('testFileEmpty.plain');
+        $this->gpg->importKeyFile($filename);
+    }
+
+    // }}}
+}
+
+?>