1<?php 2 3/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ 4 5/** 6 * Key import tests for the Crypt_GPG package. 7 * 8 * These tests require the PHPUnit 3.6 or greater package to be installed. 9 * PHPUnit is installable using PEAR. See the 10 * {@link http://www.phpunit.de/manual/3.6/en/installation.html manual} 11 * for detailed installation instructions. 12 * 13 * To run these tests, use: 14 * <code> 15 * $ phpunit ImportKeyTestCase 16 * </code> 17 * 18 * LICENSE: 19 * 20 * This library is free software; you can redistribute it and/or modify 21 * it under the terms of the GNU Lesser General Public License as 22 * published by the Free Software Foundation; either version 2.1 of the 23 * License, or (at your option) any later version. 24 * 25 * This library is distributed in the hope that it will be useful, 26 * but WITHOUT ANY WARRANTY; without even the implied warranty of 27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 28 * Lesser General Public License for more details. 29 * 30 * You should have received a copy of the GNU Lesser General Public 31 * License along with this library; if not, see 32 * <http://www.gnu.org/licenses/> 33 * 34 * @category Encryption 35 * @package Crypt_GPG 36 * @author Michael Gauthier <mike@silverorange.com> 37 * @copyright 2005-2008 silverorange 38 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 39 * @version CVS: $Id$ 40 * @link http://pear.php.net/package/Crypt_GPG 41 */ 42 43/** 44 * Base test case. 45 */ 46require_once 'TestCase.php'; 47 48/** 49 * Tests key import abilities of Crypt_GPG. 50 * 51 * @category Encryption 52 * @package Crypt_GPG 53 * @author Michael Gauthier <mike@silverorange.com> 54 * @copyright 2005-2008 silverorange 55 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 56 * @link http://pear.php.net/package/Crypt_GPG 57 */ 58class ImportKeyTest extends Crypt_GPG_TestCase 59{ 60 public function setUp(): void 61 { 62 parent::setUp(); 63 64 // In GnuPG 2.1 first operation on a keyring in v1 format 65 // will cause format update and several IMPORT_OK responses 66 // This way we clean the state first 67 $this->gpg->getKeys(); 68 } 69 70 /** 71 * @group string 72 */ 73 public function testImportKey_private() 74 { 75 // Note: Some of GnuPG 2.1.x versions return different private_imported 76 // and private_uchanged values, bug? GnuPG 2.1.15 returns 1 as expected. 77 78 $expectedResult = array( 79 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB', 80 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'), 81 'public_imported' => 0, 82 'public_unchanged' => 1, 83 'private_imported' => 1, 84 'private_unchanged' => 0 85 ); 86 87 // {{{ private key data 88 $privateKeyData = <<<TEXT 89-----BEGIN PGP PRIVATE KEY BLOCK----- 90Version: GnuPG v1.4.6 (GNU/Linux) 91 92lQHhBEjS+OIRBACPl023p+jInWiUtc7zSBU1D4mv42zSOwPdC37Pn/4x9FyhIOXE 93LCRTpsnAw9rT6R3BvAC4uO68fxjxFCwTpsa60RsHw4bwpSAYuf0t5Xg+GQIritlm 94XHVYwku3Hkh4Svv0quemooGuJ9lLwIHacL/4W1dTHLB2rzon0T4kx7ExZwCg/XKl 95RD9zbbnQOgjn0EaS8fcSm+ED/1IMfkCz5ac9Y3jBUlcArOZcOlTrzxst+iMZm4f0 96fh8dFCCaRN0iaVLSdCNaFvbKbJYZad1w3jFAMU9bX83flqgV1wMPO/NenfMidBIq 97sKzgttaQo5VmjWPtwyOJXODR2lHKQR2hFCkIKlHMPLV3awCGV8iTyiTZMJirdtvf 98s26oA/9STYro+yB9yrHufdfjM1u8SbSIhK6jUoq2ajLPHaLF2nRZZyv1gnkzRFd+ 99/Vxcx6cwp8Qd6L4z+0sU3pMS4X8rt2vqilK2msg1VrHnjGgFIfmfIvY5EmrhNzEx 1006X82fbR9f8lwLy5N/gPm326e0xSw1rWdR15VukJPbmK6nf/pL/4DAwIZF3WLmXaM 101DGCHa6b36T1VZ+bgYYcoQUanh3OSfLO0NwJ5ywFiML26DYZ7M3aivlfXj/8lOKy0 1028tcg/rRcUHVibGljIE9ubHkgVGVzdCBLZXkgKGRvIG5vdCBlbmNyeXB0IGltcG9y 103dGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxwdWJsaWMtb25seUBleGFtcGxlLmNv 104bT6IYAQTEQIAIAUCSNL44gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKuo 105HvVOjA3r8DYAn1/DrF5jw31P3L6MlWdelLuR4POnAJ9It7IynfJalYIHoAWtY2xk 106kTsT+p0CYgRI0vjoEAgAp65R578Es8qtASDAgIbYfJlJTwMovEnA4KJ69mpVt3mz 107cFWMtJCvuilvwSQQ+VfKxjemtbe/IbMe9ssj4nTSLw/mweUB89tRj8ZzaS+/9312 108AS8ra/xIDr6kTSfKcRKjXgMzkJ+A13rYwG5LFWnyumg36xglmzXKhecEkRVPfWn3 109ISoq3zirZlQOWcKYdyA2Z685SKJC/N+3nUqKOJ7qrA7eT608LFksytBHeOfNf5m7 110CC4wAE3RAz+ZkJvWRbE2G5pUalZktq8uKMT5WQgvuFP3hnvku5yilpo2ELTnYkO3 111ltc3NHCc9v+jhikayPr7RvUdVPbaITT80yYKBPygCwADBggApzR1vW/fvzmrO5pW 112zAvd4umVh/Yp34n3vWyXMu+JIHA7s08rkTzlMXzamICQmkjwAuCwJt0t7BA28Lny 113goh2joxo8tE/OowFk+IzbeA2Vrz71d/T5SMDtC2mePE0m3bmCOLBscu5aJIfgi1X 114/fzr44f4i+6hqVDCuOOmnVtbL4xBBnS6KXdcWP7QbVhxG3SpH9Agd/QXvSQm0Obz 1159iKZ11FEXzgnVZGXaCM0GBsFE9JuNY5+hi6A72rccjhC0V1Cy43veeIhOE+v3pK0 116a/BGUlgDSdgVopE9zUSQwzuo87UbY3EoDWBqDRSRCRMfmv8S2b9VJIRPdCOHZGCI 117R49/0f4DAwIZF3WLmXaMDGCvSMKxFAt3zGZVEsfwS67ilWw0kq9wgmDpTmbrz1pe 1188tUgmHxgiVc3Xo86ItXGr69udzSODYw2wO6JGdgOKsZDKAv7zJHi+3GISAQYEQIA 119CQUCSNL46AIbDAAKCRCrqB71TowN6zbAAJ4qBrdmAYuAbY5txsc+Tmv9quOpzwCW 120NN5B7Vl2JdxBuwWJrdfUb9UQzw== 121=51qc 122-----END PGP PRIVATE KEY BLOCK----- 123 124TEXT; 125 // }}} 126 127 $result = $this->gpg->importKey($privateKeyData); 128 $this->assertEquals($expectedResult, $result); 129 } 130 131 /** 132 * @group string 133 */ 134 public function testImportKey_public() 135 { 136 $expectedResult = array( 137 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D', 138 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'), 139 'public_imported' => 1, 140 'public_unchanged' => 0, 141 'private_imported' => 0, 142 'private_unchanged' => 0 143 ); 144 145 // {{{ public key data 146 $publicKeyData = <<<TEXT 147-----BEGIN PGP PUBLIC KEY BLOCK----- 148Version: GnuPG v1.4.6 (GNU/Linux) 149 150mQGiBEjS+PgRBADbDdRN9iwESSyJvjnfgk7ZWUYKdHdSER7yJ0aM4LQjVDdw9y/f 151QGidipXxVD2lW28gRtzcmLufxv3DzjZp83VaXvlJs9jbTtHDIYFyDW9kH1HTRbZT 152WKWfuInd0AXzHy5o77qQ+mW0AIXbyke5suSHdvcmv1hiWI9OnXcIHpmavwCgt4Hm 153+j3FpRo9qs4fJM887c796qUD/iPkStU9sM/0KCJFZNaPCGBaamCEi7UoAHNlim+B 154dv3rfSQ2VcDRq9/3GoCEJ2c62XpgQxt79mojJLdWZsTWvr6ESnWOm7W6GIjv/Zc3 155+OXgi7QdH5nwpZl6kBMkuzZxczFuwh9dqlXml+bND0JawS38MvQpDUkwMb592v5U 156i9WIBADBacg6nixiTR+4kaHFE1Ww8QxT+vQ4S1SOx47cm8R6FxTRQA7FvK+vMxCt 157Ps9GOzhjrCgIoF/6X10IZ7qB5jCYIH+kvHrp90ZbNwJ4pIa7phCPhqUF9mEyMbC2 158AEIGp/Aw26yXKskQJJ3vFji+VaeCui21sXjg5EHfoayt79xT8bRfRXh0ZXJuYWwg 159UHVibGljIEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEgd2l0aCB0 160aGlzIGtleSkgPGV4dGVybmFsLXB1YmxpY0BleGFtcGxlLmNvbT6IYAQTEQIAIAUC 161SNL4+AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECaKtxA0NeZdqHwAn3AF 162EEhX1Tyba0ovCV2DwUytKM0CAKCnu6VzRy1Y8jp9fiy3ScwmaCI3FbkCDQRI0vj8 163EAgArBRh0YpPhE1vvKoPuhGDa//96YqrYt9rmBo3AR1WmF3CKtspjXdOK2bCqdJh 164H6kaoNi+0Ors00n2NfPj9Am2cTV3h2/KpAWOxQGfkmpzU3xXTVCUo/HoKDXIfWqk 165/TPXRqbwFV489GRBtVov4IoZM0KqZXhaFD6cXBsEl/BVSvVdBqmBzUoJ2bOzYiSW 166eg/ml65jbtxjDYMbxTLi7xRcTSAsareoN6/PcbAvcCE5UeCMu8p52wxHOTrAkI4/ 1676elpziVpIGn07zJb//4qIoZdhIzwfsMl73tPfdoL9jEC66SiWAN+BEDxceGR5E15 1682WsT5tkxuz/pQUC1L3JW4WCC/wADBwf8CsevcPsk2XxT2XZj0lfmAOuhXxuqBczW 169TXCimnRxvC8+uAacv1RgVRH6emW3BVjt0dr9vwRT0n54JA+7ZwXVMOo4/tqNwmJs 170C6SThBXGBQxEaZwv19WC58DjblbvYa81cUaXrUdHi1OyoHwgalx0xZQ57IUXW6+7 171qdLRfzyqbDBph9ogB0ta3AhSikAqqYImTrI650v/KWBLjrI+N925r0TvnfSOsru7 172JrftccY2LntVnQUcXjuaFViZ7y8ocW8f92zmGj2zUN8z2GsMKiGQtNNmoX51TcQl 173sJPsZF0RKduVkNUQa9cfzSIMjjhUSzspA2qHLUKafrS3e38s2Y4CNIhJBBgRAgAJ 174BQJI0vj8AhsMAAoJECaKtxA0NeZdOFQAn15X+eYzFgVERrFkddsHvAE00OnSAJ9h 175A7Lcv7M+9WeZ6cjeHkZfLB6LLA== 176=AV/P 177-----END PGP PUBLIC KEY BLOCK----- 178 179TEXT; 180 // }}} 181 182 $result = $this->gpg->importKey($publicKeyData); 183 $this->assertEquals($expectedResult, $result); 184 } 185 186 /** 187 * @group string 188 */ 189 public function testImportKeyAlreadyImported_private() 190 { 191 // {{{ private key data 192 $privateKeyData = <<<TEXT 193-----BEGIN PGP PRIVATE KEY BLOCK----- 194Version: GnuPG v1.4.6 (GNU/Linux) 195 196lQHhBEjS+OIRBACPl023p+jInWiUtc7zSBU1D4mv42zSOwPdC37Pn/4x9FyhIOXE 197LCRTpsnAw9rT6R3BvAC4uO68fxjxFCwTpsa60RsHw4bwpSAYuf0t5Xg+GQIritlm 198XHVYwku3Hkh4Svv0quemooGuJ9lLwIHacL/4W1dTHLB2rzon0T4kx7ExZwCg/XKl 199RD9zbbnQOgjn0EaS8fcSm+ED/1IMfkCz5ac9Y3jBUlcArOZcOlTrzxst+iMZm4f0 200fh8dFCCaRN0iaVLSdCNaFvbKbJYZad1w3jFAMU9bX83flqgV1wMPO/NenfMidBIq 201sKzgttaQo5VmjWPtwyOJXODR2lHKQR2hFCkIKlHMPLV3awCGV8iTyiTZMJirdtvf 202s26oA/9STYro+yB9yrHufdfjM1u8SbSIhK6jUoq2ajLPHaLF2nRZZyv1gnkzRFd+ 203/Vxcx6cwp8Qd6L4z+0sU3pMS4X8rt2vqilK2msg1VrHnjGgFIfmfIvY5EmrhNzEx 2046X82fbR9f8lwLy5N/gPm326e0xSw1rWdR15VukJPbmK6nf/pL/4DAwIZF3WLmXaM 205DGCHa6b36T1VZ+bgYYcoQUanh3OSfLO0NwJ5ywFiML26DYZ7M3aivlfXj/8lOKy0 2068tcg/rRcUHVibGljIE9ubHkgVGVzdCBLZXkgKGRvIG5vdCBlbmNyeXB0IGltcG9y 207dGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxwdWJsaWMtb25seUBleGFtcGxlLmNv 208bT6IYAQTEQIAIAUCSNL44gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKuo 209HvVOjA3r8DYAn1/DrF5jw31P3L6MlWdelLuR4POnAJ9It7IynfJalYIHoAWtY2xk 210kTsT+p0CYgRI0vjoEAgAp65R578Es8qtASDAgIbYfJlJTwMovEnA4KJ69mpVt3mz 211cFWMtJCvuilvwSQQ+VfKxjemtbe/IbMe9ssj4nTSLw/mweUB89tRj8ZzaS+/9312 212AS8ra/xIDr6kTSfKcRKjXgMzkJ+A13rYwG5LFWnyumg36xglmzXKhecEkRVPfWn3 213ISoq3zirZlQOWcKYdyA2Z685SKJC/N+3nUqKOJ7qrA7eT608LFksytBHeOfNf5m7 214CC4wAE3RAz+ZkJvWRbE2G5pUalZktq8uKMT5WQgvuFP3hnvku5yilpo2ELTnYkO3 215ltc3NHCc9v+jhikayPr7RvUdVPbaITT80yYKBPygCwADBggApzR1vW/fvzmrO5pW 216zAvd4umVh/Yp34n3vWyXMu+JIHA7s08rkTzlMXzamICQmkjwAuCwJt0t7BA28Lny 217goh2joxo8tE/OowFk+IzbeA2Vrz71d/T5SMDtC2mePE0m3bmCOLBscu5aJIfgi1X 218/fzr44f4i+6hqVDCuOOmnVtbL4xBBnS6KXdcWP7QbVhxG3SpH9Agd/QXvSQm0Obz 2199iKZ11FEXzgnVZGXaCM0GBsFE9JuNY5+hi6A72rccjhC0V1Cy43veeIhOE+v3pK0 220a/BGUlgDSdgVopE9zUSQwzuo87UbY3EoDWBqDRSRCRMfmv8S2b9VJIRPdCOHZGCI 221R49/0f4DAwIZF3WLmXaMDGCvSMKxFAt3zGZVEsfwS67ilWw0kq9wgmDpTmbrz1pe 2228tUgmHxgiVc3Xo86ItXGr69udzSODYw2wO6JGdgOKsZDKAv7zJHi+3GISAQYEQIA 223CQUCSNL46AIbDAAKCRCrqB71TowN6zbAAJ4qBrdmAYuAbY5txsc+Tmv9quOpzwCW 224NN5B7Vl2JdxBuwWJrdfUb9UQzw== 225=51qc 226-----END PGP PRIVATE KEY BLOCK----- 227 228TEXT; 229 // }}} 230 231 $result = $this->gpg->importKey($privateKeyData); 232 233 $expectedResult = array( 234 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB', 235 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'), 236 'public_imported' => 0, 237 'public_unchanged' => 1, 238 'private_imported' => 1, 239 'private_unchanged' => 0 240 ); 241 242 $this->assertEquals($expectedResult, $result); 243 244 $result = $this->gpg->importKey($privateKeyData); 245 246 $expectedResult = array( 247 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB', 248 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'), 249 'public_imported' => 0, 250 'public_unchanged' => version_compare($this->gpg->getVersion(), '2.1.0', 'ge') ? 1 : 0, 251 'private_imported' => 0, 252 'private_unchanged' => 1, 253 ); 254 255 $this->assertEquals($expectedResult, $result); 256 } 257 258 /** 259 * @group string 260 */ 261 public function testImportKeyAlreadyImported_public() 262 { 263 // {{{ public key data 264 $publicKeyData = <<<TEXT 265-----BEGIN PGP PUBLIC KEY BLOCK----- 266Version: GnuPG v1.4.6 (GNU/Linux) 267 268mQGiBEjS+PgRBADbDdRN9iwESSyJvjnfgk7ZWUYKdHdSER7yJ0aM4LQjVDdw9y/f 269QGidipXxVD2lW28gRtzcmLufxv3DzjZp83VaXvlJs9jbTtHDIYFyDW9kH1HTRbZT 270WKWfuInd0AXzHy5o77qQ+mW0AIXbyke5suSHdvcmv1hiWI9OnXcIHpmavwCgt4Hm 271+j3FpRo9qs4fJM887c796qUD/iPkStU9sM/0KCJFZNaPCGBaamCEi7UoAHNlim+B 272dv3rfSQ2VcDRq9/3GoCEJ2c62XpgQxt79mojJLdWZsTWvr6ESnWOm7W6GIjv/Zc3 273+OXgi7QdH5nwpZl6kBMkuzZxczFuwh9dqlXml+bND0JawS38MvQpDUkwMb592v5U 274i9WIBADBacg6nixiTR+4kaHFE1Ww8QxT+vQ4S1SOx47cm8R6FxTRQA7FvK+vMxCt 275Ps9GOzhjrCgIoF/6X10IZ7qB5jCYIH+kvHrp90ZbNwJ4pIa7phCPhqUF9mEyMbC2 276AEIGp/Aw26yXKskQJJ3vFji+VaeCui21sXjg5EHfoayt79xT8bRfRXh0ZXJuYWwg 277UHVibGljIEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEgd2l0aCB0 278aGlzIGtleSkgPGV4dGVybmFsLXB1YmxpY0BleGFtcGxlLmNvbT6IYAQTEQIAIAUC 279SNL4+AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECaKtxA0NeZdqHwAn3AF 280EEhX1Tyba0ovCV2DwUytKM0CAKCnu6VzRy1Y8jp9fiy3ScwmaCI3FbkCDQRI0vj8 281EAgArBRh0YpPhE1vvKoPuhGDa//96YqrYt9rmBo3AR1WmF3CKtspjXdOK2bCqdJh 282H6kaoNi+0Ors00n2NfPj9Am2cTV3h2/KpAWOxQGfkmpzU3xXTVCUo/HoKDXIfWqk 283/TPXRqbwFV489GRBtVov4IoZM0KqZXhaFD6cXBsEl/BVSvVdBqmBzUoJ2bOzYiSW 284eg/ml65jbtxjDYMbxTLi7xRcTSAsareoN6/PcbAvcCE5UeCMu8p52wxHOTrAkI4/ 2856elpziVpIGn07zJb//4qIoZdhIzwfsMl73tPfdoL9jEC66SiWAN+BEDxceGR5E15 2862WsT5tkxuz/pQUC1L3JW4WCC/wADBwf8CsevcPsk2XxT2XZj0lfmAOuhXxuqBczW 287TXCimnRxvC8+uAacv1RgVRH6emW3BVjt0dr9vwRT0n54JA+7ZwXVMOo4/tqNwmJs 288C6SThBXGBQxEaZwv19WC58DjblbvYa81cUaXrUdHi1OyoHwgalx0xZQ57IUXW6+7 289qdLRfzyqbDBph9ogB0ta3AhSikAqqYImTrI650v/KWBLjrI+N925r0TvnfSOsru7 290JrftccY2LntVnQUcXjuaFViZ7y8ocW8f92zmGj2zUN8z2GsMKiGQtNNmoX51TcQl 291sJPsZF0RKduVkNUQa9cfzSIMjjhUSzspA2qHLUKafrS3e38s2Y4CNIhJBBgRAgAJ 292BQJI0vj8AhsMAAoJECaKtxA0NeZdOFQAn15X+eYzFgVERrFkddsHvAE00OnSAJ9h 293A7Lcv7M+9WeZ6cjeHkZfLB6LLA== 294=AV/P 295-----END PGP PUBLIC KEY BLOCK----- 296 297TEXT; 298 // }}} 299 300 $result = $this->gpg->importKey($publicKeyData); 301 302 $expectedResult = array( 303 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D', 304 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'), 305 'public_imported' => 1, 306 'public_unchanged' => 0, 307 'private_imported' => 0, 308 'private_unchanged' => 0 309 ); 310 311 $this->assertEquals($expectedResult, $result); 312 313 $result = $this->gpg->importKey($publicKeyData); 314 315 $expectedResult = array( 316 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D', 317 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'), 318 'public_imported' => 0, 319 'public_unchanged' => 1, 320 'private_imported' => 0, 321 'private_unchanged' => 0 322 ); 323 324 $this->assertEquals($expectedResult, $result); 325 } 326 327 /** 328 * @group string 329 */ 330 public function testImportKeyNoDataException_invalid() 331 { 332 $this->expectException('Crypt_GPG_NoDataException'); 333 334 $keyData = 'Invalid OpenPGP data.'; 335 $this->gpg->importKey($keyData); 336 } 337 338 /** 339 * @group string 340 */ 341 public function testImportKeyNoDataException_empty() 342 { 343 $this->expectException('Crypt_GPG_NoDataException'); 344 345 $keyData = ''; 346 $this->gpg->importKey($keyData); 347 } 348 349 /** 350 * @group file 351 */ 352 public function testImportKeyFile_private() 353 { 354 $expectedResult = array( 355 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB', 356 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'), 357 'public_imported' => 0, 358 'public_unchanged' => 1, 359 'private_imported' => 1, 360 'private_unchanged' => 0 361 ); 362 363 $filename = $this->getDataFilename('testImportKeyFile_private.asc'); 364 $result = $this->gpg->importKeyFile($filename); 365 366 $this->assertEquals($expectedResult, $result); 367 } 368 369 /** 370 * @group file 371 */ 372 public function testImportKeyFile_public() 373 { 374 $expectedResult = array( 375 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D', 376 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'), 377 'public_imported' => 1, 378 'public_unchanged' => 0, 379 'private_imported' => 0, 380 'private_unchanged' => 0 381 ); 382 383 $filename = $this->getDataFilename('testImportKeyFile_public.asc'); 384 $result = $this->gpg->importKeyFile($filename); 385 386 $this->assertEquals($expectedResult, $result); 387 } 388 389 /** 390 * @group file 391 */ 392 public function testImportKeyFileAlreadyImported_private() 393 { 394 $filename = $this->getDataFilename('testImportKeyFile_private.asc'); 395 $result = $this->gpg->importKeyFile($filename); 396 397 $expectedResult = array( 398 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB', 399 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'), 400 'public_imported' => 0, 401 'public_unchanged' => 1, 402 'private_imported' => 1, 403 'private_unchanged' => 0 404 ); 405 406 $this->assertEquals($expectedResult, $result); 407 408 $result = $this->gpg->importKeyFile($filename); 409 410 $expectedResult = array( 411 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB', 412 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'), 413 'public_imported' => 0, 414 'public_unchanged' => version_compare($this->gpg->getVersion(), '2.1.0', 'ge') ? 1 : 0, 415 'private_imported' => 0, 416 'private_unchanged' => 1, 417 ); 418 419 $this->assertEquals($expectedResult, $result); 420 } 421 422 /** 423 * @group file 424 */ 425 public function testImportKeyFileAlreadyImported_public() 426 { 427 $filename = $this->getDataFilename('testImportKeyFile_public.asc'); 428 $result = $this->gpg->importKeyFile($filename); 429 430 $expectedResult = array( 431 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D', 432 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'), 433 'public_imported' => 1, 434 'public_unchanged' => 0, 435 'private_imported' => 0, 436 'private_unchanged' => 0 437 ); 438 439 $this->assertEquals($expectedResult, $result); 440 441 $result = $this->gpg->importKeyFile($filename); 442 443 $expectedResult = array( 444 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D', 445 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'), 446 'public_imported' => 0, 447 'public_unchanged' => 1, 448 'private_imported' => 0, 449 'private_unchanged' => 0 450 ); 451 452 $this->assertEquals($expectedResult, $result); 453 } 454 455 /** 456 * @group file 457 */ 458 public function testImportKeyFileFileException() 459 { 460 $this->expectException('Crypt_GPG_FileException'); 461 462 // input file does not exist 463 $filename = 464 $this->getDataFilename('testImportKeyFileFileException.asc'); 465 466 $this->gpg->importKeyFile($filename); 467 } 468 469 /** 470 * @group file 471 */ 472 public function testImportKeyFileNoDataException() 473 { 474 $this->expectException('Crypt_GPG_NoDataException'); 475 476 $filename = $this->getDataFilename('testFileEmpty.plain'); 477 $this->gpg->importKeyFile($filename); 478 } 479} 480