comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:1e000243b222
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 */
46 require_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 */
58 class ImportKeyTestCase extends Crypt_GPG_TestCase
59 {
60 // set up
61 // {{{ setUp()
62
63 public function setUp()
64 {
65 parent::setUp();
66
67 // In GnuPG 2.1 first operation on a keyring in v1 format
68 // will cause format update and several IMPORT_OK responses
69 // This way we clean the state first
70 $this->gpg->getKeys();
71 }
72
73 // }}}
74 // {{{ testImportKey_private()
75
76 /**
77 * @group string
78 */
79 public function testImportKey_private()
80 {
81 // Note: Some of GnuPG 2.1.x versions return different private_imported
82 // and private_uchanged values, bug? GnuPG 2.1.15 returns 1 as expected.
83
84 $expectedResult = array(
85 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
86 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
87 'public_imported' => 0,
88 'public_unchanged' => 1,
89 'private_imported' => 1,
90 'private_unchanged' => 0
91 );
92
93 // {{{ private key data
94 $privateKeyData = <<<TEXT
95 -----BEGIN PGP PRIVATE KEY BLOCK-----
96 Version: GnuPG v1.4.6 (GNU/Linux)
97
98 lQHhBEjS+OIRBACPl023p+jInWiUtc7zSBU1D4mv42zSOwPdC37Pn/4x9FyhIOXE
99 LCRTpsnAw9rT6R3BvAC4uO68fxjxFCwTpsa60RsHw4bwpSAYuf0t5Xg+GQIritlm
100 XHVYwku3Hkh4Svv0quemooGuJ9lLwIHacL/4W1dTHLB2rzon0T4kx7ExZwCg/XKl
101 RD9zbbnQOgjn0EaS8fcSm+ED/1IMfkCz5ac9Y3jBUlcArOZcOlTrzxst+iMZm4f0
102 fh8dFCCaRN0iaVLSdCNaFvbKbJYZad1w3jFAMU9bX83flqgV1wMPO/NenfMidBIq
103 sKzgttaQo5VmjWPtwyOJXODR2lHKQR2hFCkIKlHMPLV3awCGV8iTyiTZMJirdtvf
104 s26oA/9STYro+yB9yrHufdfjM1u8SbSIhK6jUoq2ajLPHaLF2nRZZyv1gnkzRFd+
105 /Vxcx6cwp8Qd6L4z+0sU3pMS4X8rt2vqilK2msg1VrHnjGgFIfmfIvY5EmrhNzEx
106 6X82fbR9f8lwLy5N/gPm326e0xSw1rWdR15VukJPbmK6nf/pL/4DAwIZF3WLmXaM
107 DGCHa6b36T1VZ+bgYYcoQUanh3OSfLO0NwJ5ywFiML26DYZ7M3aivlfXj/8lOKy0
108 8tcg/rRcUHVibGljIE9ubHkgVGVzdCBLZXkgKGRvIG5vdCBlbmNyeXB0IGltcG9y
109 dGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxwdWJsaWMtb25seUBleGFtcGxlLmNv
110 bT6IYAQTEQIAIAUCSNL44gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKuo
111 HvVOjA3r8DYAn1/DrF5jw31P3L6MlWdelLuR4POnAJ9It7IynfJalYIHoAWtY2xk
112 kTsT+p0CYgRI0vjoEAgAp65R578Es8qtASDAgIbYfJlJTwMovEnA4KJ69mpVt3mz
113 cFWMtJCvuilvwSQQ+VfKxjemtbe/IbMe9ssj4nTSLw/mweUB89tRj8ZzaS+/9312
114 AS8ra/xIDr6kTSfKcRKjXgMzkJ+A13rYwG5LFWnyumg36xglmzXKhecEkRVPfWn3
115 ISoq3zirZlQOWcKYdyA2Z685SKJC/N+3nUqKOJ7qrA7eT608LFksytBHeOfNf5m7
116 CC4wAE3RAz+ZkJvWRbE2G5pUalZktq8uKMT5WQgvuFP3hnvku5yilpo2ELTnYkO3
117 ltc3NHCc9v+jhikayPr7RvUdVPbaITT80yYKBPygCwADBggApzR1vW/fvzmrO5pW
118 zAvd4umVh/Yp34n3vWyXMu+JIHA7s08rkTzlMXzamICQmkjwAuCwJt0t7BA28Lny
119 goh2joxo8tE/OowFk+IzbeA2Vrz71d/T5SMDtC2mePE0m3bmCOLBscu5aJIfgi1X
120 /fzr44f4i+6hqVDCuOOmnVtbL4xBBnS6KXdcWP7QbVhxG3SpH9Agd/QXvSQm0Obz
121 9iKZ11FEXzgnVZGXaCM0GBsFE9JuNY5+hi6A72rccjhC0V1Cy43veeIhOE+v3pK0
122 a/BGUlgDSdgVopE9zUSQwzuo87UbY3EoDWBqDRSRCRMfmv8S2b9VJIRPdCOHZGCI
123 R49/0f4DAwIZF3WLmXaMDGCvSMKxFAt3zGZVEsfwS67ilWw0kq9wgmDpTmbrz1pe
124 8tUgmHxgiVc3Xo86ItXGr69udzSODYw2wO6JGdgOKsZDKAv7zJHi+3GISAQYEQIA
125 CQUCSNL46AIbDAAKCRCrqB71TowN6zbAAJ4qBrdmAYuAbY5txsc+Tmv9quOpzwCW
126 NN5B7Vl2JdxBuwWJrdfUb9UQzw==
127 =51qc
128 -----END PGP PRIVATE KEY BLOCK-----
129
130 TEXT;
131 // }}}
132
133 $result = $this->gpg->importKey($privateKeyData);
134 $this->assertEquals($expectedResult, $result);
135 }
136
137 // }}}
138 // {{{ testImportKey_public()
139
140 /**
141 * @group string
142 */
143 public function testImportKey_public()
144 {
145 $expectedResult = array(
146 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
147 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
148 'public_imported' => 1,
149 'public_unchanged' => 0,
150 'private_imported' => 0,
151 'private_unchanged' => 0
152 );
153
154 // {{{ public key data
155 $publicKeyData = <<<TEXT
156 -----BEGIN PGP PUBLIC KEY BLOCK-----
157 Version: GnuPG v1.4.6 (GNU/Linux)
158
159 mQGiBEjS+PgRBADbDdRN9iwESSyJvjnfgk7ZWUYKdHdSER7yJ0aM4LQjVDdw9y/f
160 QGidipXxVD2lW28gRtzcmLufxv3DzjZp83VaXvlJs9jbTtHDIYFyDW9kH1HTRbZT
161 WKWfuInd0AXzHy5o77qQ+mW0AIXbyke5suSHdvcmv1hiWI9OnXcIHpmavwCgt4Hm
162 +j3FpRo9qs4fJM887c796qUD/iPkStU9sM/0KCJFZNaPCGBaamCEi7UoAHNlim+B
163 dv3rfSQ2VcDRq9/3GoCEJ2c62XpgQxt79mojJLdWZsTWvr6ESnWOm7W6GIjv/Zc3
164 +OXgi7QdH5nwpZl6kBMkuzZxczFuwh9dqlXml+bND0JawS38MvQpDUkwMb592v5U
165 i9WIBADBacg6nixiTR+4kaHFE1Ww8QxT+vQ4S1SOx47cm8R6FxTRQA7FvK+vMxCt
166 Ps9GOzhjrCgIoF/6X10IZ7qB5jCYIH+kvHrp90ZbNwJ4pIa7phCPhqUF9mEyMbC2
167 AEIGp/Aw26yXKskQJJ3vFji+VaeCui21sXjg5EHfoayt79xT8bRfRXh0ZXJuYWwg
168 UHVibGljIEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEgd2l0aCB0
169 aGlzIGtleSkgPGV4dGVybmFsLXB1YmxpY0BleGFtcGxlLmNvbT6IYAQTEQIAIAUC
170 SNL4+AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECaKtxA0NeZdqHwAn3AF
171 EEhX1Tyba0ovCV2DwUytKM0CAKCnu6VzRy1Y8jp9fiy3ScwmaCI3FbkCDQRI0vj8
172 EAgArBRh0YpPhE1vvKoPuhGDa//96YqrYt9rmBo3AR1WmF3CKtspjXdOK2bCqdJh
173 H6kaoNi+0Ors00n2NfPj9Am2cTV3h2/KpAWOxQGfkmpzU3xXTVCUo/HoKDXIfWqk
174 /TPXRqbwFV489GRBtVov4IoZM0KqZXhaFD6cXBsEl/BVSvVdBqmBzUoJ2bOzYiSW
175 eg/ml65jbtxjDYMbxTLi7xRcTSAsareoN6/PcbAvcCE5UeCMu8p52wxHOTrAkI4/
176 6elpziVpIGn07zJb//4qIoZdhIzwfsMl73tPfdoL9jEC66SiWAN+BEDxceGR5E15
177 2WsT5tkxuz/pQUC1L3JW4WCC/wADBwf8CsevcPsk2XxT2XZj0lfmAOuhXxuqBczW
178 TXCimnRxvC8+uAacv1RgVRH6emW3BVjt0dr9vwRT0n54JA+7ZwXVMOo4/tqNwmJs
179 C6SThBXGBQxEaZwv19WC58DjblbvYa81cUaXrUdHi1OyoHwgalx0xZQ57IUXW6+7
180 qdLRfzyqbDBph9ogB0ta3AhSikAqqYImTrI650v/KWBLjrI+N925r0TvnfSOsru7
181 JrftccY2LntVnQUcXjuaFViZ7y8ocW8f92zmGj2zUN8z2GsMKiGQtNNmoX51TcQl
182 sJPsZF0RKduVkNUQa9cfzSIMjjhUSzspA2qHLUKafrS3e38s2Y4CNIhJBBgRAgAJ
183 BQJI0vj8AhsMAAoJECaKtxA0NeZdOFQAn15X+eYzFgVERrFkddsHvAE00OnSAJ9h
184 A7Lcv7M+9WeZ6cjeHkZfLB6LLA==
185 =AV/P
186 -----END PGP PUBLIC KEY BLOCK-----
187
188 TEXT;
189 // }}}
190
191 $result = $this->gpg->importKey($publicKeyData);
192 $this->assertEquals($expectedResult, $result);
193 }
194
195 // }}}
196 // {{{ testImportKeyAlreadyImported_private()
197
198 /**
199 * @group string
200 */
201 public function testImportKeyAlreadyImported_private()
202 {
203 // {{{ private key data
204 $privateKeyData = <<<TEXT
205 -----BEGIN PGP PRIVATE KEY BLOCK-----
206 Version: GnuPG v1.4.6 (GNU/Linux)
207
208 lQHhBEjS+OIRBACPl023p+jInWiUtc7zSBU1D4mv42zSOwPdC37Pn/4x9FyhIOXE
209 LCRTpsnAw9rT6R3BvAC4uO68fxjxFCwTpsa60RsHw4bwpSAYuf0t5Xg+GQIritlm
210 XHVYwku3Hkh4Svv0quemooGuJ9lLwIHacL/4W1dTHLB2rzon0T4kx7ExZwCg/XKl
211 RD9zbbnQOgjn0EaS8fcSm+ED/1IMfkCz5ac9Y3jBUlcArOZcOlTrzxst+iMZm4f0
212 fh8dFCCaRN0iaVLSdCNaFvbKbJYZad1w3jFAMU9bX83flqgV1wMPO/NenfMidBIq
213 sKzgttaQo5VmjWPtwyOJXODR2lHKQR2hFCkIKlHMPLV3awCGV8iTyiTZMJirdtvf
214 s26oA/9STYro+yB9yrHufdfjM1u8SbSIhK6jUoq2ajLPHaLF2nRZZyv1gnkzRFd+
215 /Vxcx6cwp8Qd6L4z+0sU3pMS4X8rt2vqilK2msg1VrHnjGgFIfmfIvY5EmrhNzEx
216 6X82fbR9f8lwLy5N/gPm326e0xSw1rWdR15VukJPbmK6nf/pL/4DAwIZF3WLmXaM
217 DGCHa6b36T1VZ+bgYYcoQUanh3OSfLO0NwJ5ywFiML26DYZ7M3aivlfXj/8lOKy0
218 8tcg/rRcUHVibGljIE9ubHkgVGVzdCBLZXkgKGRvIG5vdCBlbmNyeXB0IGltcG9y
219 dGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxwdWJsaWMtb25seUBleGFtcGxlLmNv
220 bT6IYAQTEQIAIAUCSNL44gIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEKuo
221 HvVOjA3r8DYAn1/DrF5jw31P3L6MlWdelLuR4POnAJ9It7IynfJalYIHoAWtY2xk
222 kTsT+p0CYgRI0vjoEAgAp65R578Es8qtASDAgIbYfJlJTwMovEnA4KJ69mpVt3mz
223 cFWMtJCvuilvwSQQ+VfKxjemtbe/IbMe9ssj4nTSLw/mweUB89tRj8ZzaS+/9312
224 AS8ra/xIDr6kTSfKcRKjXgMzkJ+A13rYwG5LFWnyumg36xglmzXKhecEkRVPfWn3
225 ISoq3zirZlQOWcKYdyA2Z685SKJC/N+3nUqKOJ7qrA7eT608LFksytBHeOfNf5m7
226 CC4wAE3RAz+ZkJvWRbE2G5pUalZktq8uKMT5WQgvuFP3hnvku5yilpo2ELTnYkO3
227 ltc3NHCc9v+jhikayPr7RvUdVPbaITT80yYKBPygCwADBggApzR1vW/fvzmrO5pW
228 zAvd4umVh/Yp34n3vWyXMu+JIHA7s08rkTzlMXzamICQmkjwAuCwJt0t7BA28Lny
229 goh2joxo8tE/OowFk+IzbeA2Vrz71d/T5SMDtC2mePE0m3bmCOLBscu5aJIfgi1X
230 /fzr44f4i+6hqVDCuOOmnVtbL4xBBnS6KXdcWP7QbVhxG3SpH9Agd/QXvSQm0Obz
231 9iKZ11FEXzgnVZGXaCM0GBsFE9JuNY5+hi6A72rccjhC0V1Cy43veeIhOE+v3pK0
232 a/BGUlgDSdgVopE9zUSQwzuo87UbY3EoDWBqDRSRCRMfmv8S2b9VJIRPdCOHZGCI
233 R49/0f4DAwIZF3WLmXaMDGCvSMKxFAt3zGZVEsfwS67ilWw0kq9wgmDpTmbrz1pe
234 8tUgmHxgiVc3Xo86ItXGr69udzSODYw2wO6JGdgOKsZDKAv7zJHi+3GISAQYEQIA
235 CQUCSNL46AIbDAAKCRCrqB71TowN6zbAAJ4qBrdmAYuAbY5txsc+Tmv9quOpzwCW
236 NN5B7Vl2JdxBuwWJrdfUb9UQzw==
237 =51qc
238 -----END PGP PRIVATE KEY BLOCK-----
239
240 TEXT;
241 // }}}
242
243 $result = $this->gpg->importKey($privateKeyData);
244
245 $expectedResult = array(
246 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
247 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
248 'public_imported' => 0,
249 'public_unchanged' => 1,
250 'private_imported' => 1,
251 'private_unchanged' => 0
252 );
253
254 $this->assertEquals($expectedResult, $result);
255
256 $result = $this->gpg->importKey($privateKeyData);
257
258 $expectedResult = array(
259 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
260 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
261 'public_imported' => 0,
262 'public_unchanged' => version_compare($this->gpg->getVersion(), '2.1.0', 'ge') ? 1 : 0,
263 'private_imported' => 0,
264 'private_unchanged' => 1,
265 );
266
267 $this->assertEquals($expectedResult, $result);
268 }
269
270 // }}}
271 // {{{ testImportKeyAlreadyImported_public()
272
273 /**
274 * @group string
275 */
276 public function testImportKeyAlreadyImported_public()
277 {
278 // {{{ public key data
279 $publicKeyData = <<<TEXT
280 -----BEGIN PGP PUBLIC KEY BLOCK-----
281 Version: GnuPG v1.4.6 (GNU/Linux)
282
283 mQGiBEjS+PgRBADbDdRN9iwESSyJvjnfgk7ZWUYKdHdSER7yJ0aM4LQjVDdw9y/f
284 QGidipXxVD2lW28gRtzcmLufxv3DzjZp83VaXvlJs9jbTtHDIYFyDW9kH1HTRbZT
285 WKWfuInd0AXzHy5o77qQ+mW0AIXbyke5suSHdvcmv1hiWI9OnXcIHpmavwCgt4Hm
286 +j3FpRo9qs4fJM887c796qUD/iPkStU9sM/0KCJFZNaPCGBaamCEi7UoAHNlim+B
287 dv3rfSQ2VcDRq9/3GoCEJ2c62XpgQxt79mojJLdWZsTWvr6ESnWOm7W6GIjv/Zc3
288 +OXgi7QdH5nwpZl6kBMkuzZxczFuwh9dqlXml+bND0JawS38MvQpDUkwMb592v5U
289 i9WIBADBacg6nixiTR+4kaHFE1Ww8QxT+vQ4S1SOx47cm8R6FxTRQA7FvK+vMxCt
290 Ps9GOzhjrCgIoF/6X10IZ7qB5jCYIH+kvHrp90ZbNwJ4pIa7phCPhqUF9mEyMbC2
291 AEIGp/Aw26yXKskQJJ3vFji+VaeCui21sXjg5EHfoayt79xT8bRfRXh0ZXJuYWwg
292 UHVibGljIEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEgd2l0aCB0
293 aGlzIGtleSkgPGV4dGVybmFsLXB1YmxpY0BleGFtcGxlLmNvbT6IYAQTEQIAIAUC
294 SNL4+AIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJECaKtxA0NeZdqHwAn3AF
295 EEhX1Tyba0ovCV2DwUytKM0CAKCnu6VzRy1Y8jp9fiy3ScwmaCI3FbkCDQRI0vj8
296 EAgArBRh0YpPhE1vvKoPuhGDa//96YqrYt9rmBo3AR1WmF3CKtspjXdOK2bCqdJh
297 H6kaoNi+0Ors00n2NfPj9Am2cTV3h2/KpAWOxQGfkmpzU3xXTVCUo/HoKDXIfWqk
298 /TPXRqbwFV489GRBtVov4IoZM0KqZXhaFD6cXBsEl/BVSvVdBqmBzUoJ2bOzYiSW
299 eg/ml65jbtxjDYMbxTLi7xRcTSAsareoN6/PcbAvcCE5UeCMu8p52wxHOTrAkI4/
300 6elpziVpIGn07zJb//4qIoZdhIzwfsMl73tPfdoL9jEC66SiWAN+BEDxceGR5E15
301 2WsT5tkxuz/pQUC1L3JW4WCC/wADBwf8CsevcPsk2XxT2XZj0lfmAOuhXxuqBczW
302 TXCimnRxvC8+uAacv1RgVRH6emW3BVjt0dr9vwRT0n54JA+7ZwXVMOo4/tqNwmJs
303 C6SThBXGBQxEaZwv19WC58DjblbvYa81cUaXrUdHi1OyoHwgalx0xZQ57IUXW6+7
304 qdLRfzyqbDBph9ogB0ta3AhSikAqqYImTrI650v/KWBLjrI+N925r0TvnfSOsru7
305 JrftccY2LntVnQUcXjuaFViZ7y8ocW8f92zmGj2zUN8z2GsMKiGQtNNmoX51TcQl
306 sJPsZF0RKduVkNUQa9cfzSIMjjhUSzspA2qHLUKafrS3e38s2Y4CNIhJBBgRAgAJ
307 BQJI0vj8AhsMAAoJECaKtxA0NeZdOFQAn15X+eYzFgVERrFkddsHvAE00OnSAJ9h
308 A7Lcv7M+9WeZ6cjeHkZfLB6LLA==
309 =AV/P
310 -----END PGP PUBLIC KEY BLOCK-----
311
312 TEXT;
313 // }}}
314
315 $result = $this->gpg->importKey($publicKeyData);
316
317 $expectedResult = array(
318 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
319 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
320 'public_imported' => 1,
321 'public_unchanged' => 0,
322 'private_imported' => 0,
323 'private_unchanged' => 0
324 );
325
326 $this->assertEquals($expectedResult, $result);
327
328 $result = $this->gpg->importKey($publicKeyData);
329
330 $expectedResult = array(
331 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
332 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
333 'public_imported' => 0,
334 'public_unchanged' => 1,
335 'private_imported' => 0,
336 'private_unchanged' => 0
337 );
338
339 $this->assertEquals($expectedResult, $result);
340 }
341
342 // }}}
343 // {{{ testImportKeyNoDataException_invalid()
344
345 /**
346 * @expectedException Crypt_GPG_NoDataException
347 *
348 * @group string
349 */
350 public function testImportKeyNoDataException_invalid()
351 {
352 $keyData = 'Invalid OpenPGP data.';
353 $this->gpg->importKey($keyData);
354 }
355
356 // }}}
357 // {{{ testImportKeyNoDataException_empty()
358
359 /**
360 * @expectedException Crypt_GPG_NoDataException
361 *
362 * @group string
363 */
364 public function testImportKeyNoDataException_empty()
365 {
366 $keyData = '';
367 $this->gpg->importKey($keyData);
368 }
369
370 // }}}
371 // {{{ testImportKeyFile_private()
372
373 /**
374 * @group file
375 */
376 public function testImportKeyFile_private()
377 {
378 $expectedResult = array(
379 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
380 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
381 'public_imported' => 0,
382 'public_unchanged' => 1,
383 'private_imported' => 1,
384 'private_unchanged' => 0
385 );
386
387 $filename = $this->getDataFilename('testImportKeyFile_private.asc');
388 $result = $this->gpg->importKeyFile($filename);
389
390 $this->assertEquals($expectedResult, $result);
391 }
392
393 // }}}
394 // {{{ testImportKeyFile_public()
395
396 /**
397 * @group file
398 */
399 public function testImportKeyFile_public()
400 {
401 $expectedResult = array(
402 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
403 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
404 'public_imported' => 1,
405 'public_unchanged' => 0,
406 'private_imported' => 0,
407 'private_unchanged' => 0
408 );
409
410 $filename = $this->getDataFilename('testImportKeyFile_public.asc');
411 $result = $this->gpg->importKeyFile($filename);
412
413 $this->assertEquals($expectedResult, $result);
414 }
415
416 // }}}
417 // {{{ testImportKeyFileAlreadyImported_private()
418
419 /**
420 * @group file
421 */
422 public function testImportKeyFileAlreadyImported_private()
423 {
424 $filename = $this->getDataFilename('testImportKeyFile_private.asc');
425 $result = $this->gpg->importKeyFile($filename);
426
427 $expectedResult = array(
428 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
429 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
430 'public_imported' => 0,
431 'public_unchanged' => 1,
432 'private_imported' => 1,
433 'private_unchanged' => 0
434 );
435
436 $this->assertEquals($expectedResult, $result);
437
438 $result = $this->gpg->importKeyFile($filename);
439
440 $expectedResult = array(
441 'fingerprint' => 'F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB',
442 'fingerprints' => array('F83118CB6F5892DC1C3E936DABA81EF54E8C0DEB'),
443 'public_imported' => 0,
444 'public_unchanged' => version_compare($this->gpg->getVersion(), '2.1.0', 'ge') ? 1 : 0,
445 'private_imported' => 0,
446 'private_unchanged' => 1,
447 );
448
449 $this->assertEquals($expectedResult, $result);
450 }
451
452 // }}}
453 // {{{ testImportKeyFileAlreadyImported_public()
454
455 /**
456 * @group file
457 */
458 public function testImportKeyFileAlreadyImported_public()
459 {
460 $filename = $this->getDataFilename('testImportKeyFile_public.asc');
461 $result = $this->gpg->importKeyFile($filename);
462
463 $expectedResult = array(
464 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
465 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
466 'public_imported' => 1,
467 'public_unchanged' => 0,
468 'private_imported' => 0,
469 'private_unchanged' => 0
470 );
471
472 $this->assertEquals($expectedResult, $result);
473
474 $result = $this->gpg->importKeyFile($filename);
475
476 $expectedResult = array(
477 'fingerprint' => '948F9835FF09F5F91CFF2AC1268AB7103435E65D',
478 'fingerprints' => array('948F9835FF09F5F91CFF2AC1268AB7103435E65D'),
479 'public_imported' => 0,
480 'public_unchanged' => 1,
481 'private_imported' => 0,
482 'private_unchanged' => 0
483 );
484
485 $this->assertEquals($expectedResult, $result);
486 }
487
488 // }}}
489 // {{{ testImportKeyFileFileException()
490
491 /**
492 * @expectedException Crypt_GPG_FileException
493 *
494 * @group file
495 */
496 public function testImportKeyFileFileException()
497 {
498 // input file does not exist
499 $filename =
500 $this->getDataFilename('testImportKeyFileFileException.asc');
501
502 $this->gpg->importKeyFile($filename);
503 }
504
505 // }}}
506 // {{{ testImportKeyFileNoDataException()
507
508 /**
509 * @expectedException Crypt_GPG_NoDataException
510 *
511 * @group file
512 */
513 public function testImportKeyFileNoDataException()
514 {
515 $filename = $this->getDataFilename('testFileEmpty.plain');
516 $this->gpg->importKeyFile($filename);
517 }
518
519 // }}}
520 }
521
522 ?>