comparison vendor/pear/crypt_gpg/tests/DecryptTest.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 * Decryption 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 DecryptTestCase
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-2009 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 decryption 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 DecryptTestCase extends Crypt_GPG_TestCase
59 {
60 // string
61 // {{{ testDecrypt()
62
63 /**
64 * @group string
65 */
66 public function testDecrypt()
67 {
68 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
69
70 // encrypted with first-keypair@example.com
71 // {{{ encrypted data
72 $encryptedData = <<<TEXT
73 -----BEGIN PGP MESSAGE-----
74 Version: GnuPG v1.4.6 (GNU/Linux)
75
76 hQIOA5+T+RFnKO8SEAf/Z0WsgibKGysYfti9lfb2aY7vmAwCXnkrI8wZhqBAtfmB
77 oe16PinT47AtnXl4CUgB5jBJq32uzaZKFd/dyCzOog1P/87OB6aa2w5mfxJKIIXc
78 OevQgasWVSQw/1Ro90Fd/F9Q9fcHgHqCG2Q2BwkHG7IZ+V3zHlQpjj5flVTb7Te+
79 K5LM85t7kVEzc5vVzhMvoZluMA48YNL+g7qdA3oZDQ0rXRA1DnTVsQ74/RbIQaxZ
80 LUR7v05TVNrcwK/p2NFzLOJcYSkOYGUpks1qvfUlnsuh346SLHXmebif4GLkBB37
81 WWy69+2OwJhlE0qakEJZu2EMFRwRTOrplm9YPs8Z6QgAlqKh5+KoSZTGyzBI8dHv
82 lJJnlxBkzhrAj8g2kiUX5HfM+55jqtrdOo+PEd/nH56wTXaHqc7R0QE8ZdTyhmtd
83 hlyzhdu/bHm09Q5WVAWkaA5nVldEtwIhss+YiWc+Ieu+rd5QkQiW9OAc4B7ZvPCO
84 iDPpzT5rNe2hI4K9VkAKhcBDED+iCHkC4AZs3Rr/6tUCH+dY/roB0K1GtX2eYff6
85 UeeSRsyuYbwQkKZN6pC4JQFWW7z9semrTsHsQzE38EW0IxN8nGCiaAE5cxjtW7Pg
86 k9slzsranQ+n7teucg/+qlArY11LJmvPc7aoZoRCa76hzzDOHskA0/9GRcBQJlTd
87 ctJWAd9/Bk9NJkwWO+II22IQTWZZrRUN8FT6pnr/WxpWM8LL5nq1Lxf3SQX+H2Jq
88 JspFzixPnaDl16sE082GSg0VctFMkCZhb/jghMIQYJ2131DoGXJ4QDU=
89 =sjPP
90 -----END PGP MESSAGE-----
91
92 TEXT;
93 // }}}
94
95 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
96
97 $decryptedData = $this->gpg->decrypt($encryptedData);
98 $this->assertEquals($expectedDecryptedData, $decryptedData);
99 }
100
101 // }}}
102 // {{{ testDecryptNoPassphrase()
103
104 /**
105 * @group string
106 */
107 public function testDecryptNoPassphrase()
108 {
109 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
110
111 // encrypted with no-passphrase@example.com
112 // {{{ encrypted data no passphrase
113 $encryptedData = <<<TEXT
114 -----BEGIN PGP MESSAGE-----
115 Version: GnuPG v1.4.6 (GNU/Linux)
116
117 hQIOAyS/OAcAwUtPEAf/cBqf/6najldCQzu5NNmuoyuujm2xpFESS4tljGhC7Hok
118 gqiUnknDJMwNjb80OhsHIQuWjUqaryktKH0Y+Q5s+oDwRQKVKxqeF8v4hYRq8tXc
119 a5gffr6lALBhpOHLcWM/oHQmPJgYAkdLDF1hoOwqlWGk5WklzjrRaJF2DwvvpvpL
120 8yEU1fuO9t7cnD27L466cGMrK473NdiO/Bsml4CL9biNzth5yMia6HmgRQ1VDPQ6
121 Q+plGSjTpCaXtq9fyK1Q+d9x/SeRqEVgo/R5n2w3YVZZxjNFPZ0wzMW0YtT7hTBc
122 AKPt5IEwVFlFkOUT+1Xq/wj5fOFzgV+n1EFMJyTaOgf9HSAm0/L2lymIkK0qEZZK
123 o0D0KBPQZrs47zj7qGnrmXlxkBydlwrCL6fULBVjK12ej4tdsYVROXfgkKohkEh4
124 OxEAX9OsQuf/pSJU6TIYF39TcfKB0FqbmsD6F0DN1hZ5wVdXl+8q92MyZu5a44zD
125 4fwKVlie+aENjiM0ePrDnFOK70KJVWoBlCXgouc3D6E7Rz4hC19WnWadOZF+2sHm
126 s7kI5xlIivsftziItjEqqQt74RYpo+TLHTwE3cKc9rXGgtEyD8xykugzHEwetbfd
127 fMdw+PvHv6jxBPdfz3/Xwe6kgqs1SrlOhQ/6tAf2uRD2C4LckXkc9Y4oC2T4iNlN
128 FNJWAepBEH0MkQvukbwwR9SQw2oTK2YyWFhLEFXcS61NCQP+du6IPLBNpeE1m+Mc
129 7lYaqPAkuwDq4wbJLEEVUyPNBnGRGD/al4cMowcGowGUEtn1kXR8lF4=
130 =aHiA
131 -----END PGP MESSAGE-----
132
133 TEXT;
134 // }}}
135
136 $decryptedData = $this->gpg->decrypt($encryptedData);
137 $this->assertEquals($expectedDecryptedData, $decryptedData);
138 }
139
140 // }}}
141 // {{{ testDecryptKeyNotFoundException()
142
143 /**
144 * @expectedException Crypt_GPG_KeyNotFoundException
145 *
146 * @group string
147 */
148 public function testDecryptKeyNotFoundException()
149 {
150 // was encrypted with missing-key@example.com
151 // {{{ encrypted data
152 $encryptedData = <<<TEXT
153 -----BEGIN PGP MESSAGE-----
154 Version: GnuPG v1.4.6 (GNU/Linux)
155
156 hQIOA0l79YQdiRYDEAgAk66FL4HUw7X5PPL4wjDbt4Q68GRAeIdkQutLuGvnlCJ0
157 +LHt050deDhQd6FHmfT5K6Hp3eWApl87L5p0eQZhdaSguLZZxykFfhKENWua2YT4
158 Kb+EpOsZA3R8UTT9H/HHJ/K5DUl/Zyog+G7ddrKP7CMa9wyYxD6DOJ12b2Yn1cuA
159 u9am9eKmFZEwvoInF0WPdXeUyhMPY4QU43OUoIbF2fXjAq+WczqLbn0dDKH8CTqD
160 hVSFRxyqia+w5nCSnzzyAcICYFOKUWzn6EiBW95gfJNvi6KzMXI7XvaSHhEkYXKA
161 99WPLrHb95yRHjutXays+LDW00mjBttx40FhcQKdFgf/X8EhPdY+4F8hKctZ42FN
162 bw57qxV7dbalA4jC7lOaqcfvMa/y/pR3ewPN7CM5GWqXo0xrpB9uYlC+f3L2tQbI
163 5J/rYkCjQXZvOrpKaSCdp/7fhPp5NiFCy+VHakUfIou5O4KDm6h5lvFdFZtIFR9N
164 +9rL/C2WjBj6evbiBuGWjR9CrwvI57zYTjJgVSggwozwKwnse8R/8gUDyFLb26Dh
165 S/VKGm36N48kIuJ4UDUubLSJgwnU/Jiapx3M13GLsb/k+mjllwcc6/XlC0YN/7w4
166 ZvemnGWt6/ivt8NhRM7pRY4joJBtJNrAUsoijmscdWhhqnMqx8liUeEfSlrPStk0
167 INJWAaFpzdpNupyNLJI0pO0SAXX28yeNaDkJwzDZf8kU4U5T1zT+BabHVixmCB6/
168 CNl9/GMhmvFD5un2+hMDVfFjZ2FHSH5QgMF50Ws10+jpXan7PTDdNMw=
169 =Qe7y
170 -----END PGP MESSAGE-----
171
172 TEXT;
173 // }}}
174
175 $this->gpg->decrypt($encryptedData);
176 }
177
178 // }}}
179 // {{{ testDecryptNoDataException_invalid()
180
181 /**
182 * @expectedException Crypt_GPG_NoDataException
183 *
184 * @group string
185 */
186 public function testDecryptNoDataException_invalid()
187 {
188 $encryptedData = 'Invalid OpenPGP data.';
189 $this->gpg->decrypt($encryptedData);
190 }
191
192 // }}}
193 // {{{ testDecryptNoDataException_empty()
194
195 /**
196 * @expectedException Crypt_GPG_NoDataException
197 *
198 * @group string
199 */
200 public function testDecryptNoDataException_empty()
201 {
202 $encryptedData = '';
203 $this->gpg->decrypt($encryptedData);
204 }
205
206 // }}}
207 // {{{ testDecryptBadPassphraseException_missing()
208
209 /**
210 * @expectedException Crypt_GPG_BadPassphraseException
211 *
212 * @group string
213 */
214 public function testDecryptBadPassphraseException_missing()
215 {
216 // encrypted with first-keypair@example.com
217 // {{{ encrypted data
218 $encryptedData = <<<TEXT
219 -----BEGIN PGP MESSAGE-----
220 Version: GnuPG v1.4.6 (GNU/Linux)
221
222 hQIOA5+T+RFnKO8SEAf/Z0WsgibKGysYfti9lfb2aY7vmAwCXnkrI8wZhqBAtfmB
223 oe16PinT47AtnXl4CUgB5jBJq32uzaZKFd/dyCzOog1P/87OB6aa2w5mfxJKIIXc
224 OevQgasWVSQw/1Ro90Fd/F9Q9fcHgHqCG2Q2BwkHG7IZ+V3zHlQpjj5flVTb7Te+
225 K5LM85t7kVEzc5vVzhMvoZluMA48YNL+g7qdA3oZDQ0rXRA1DnTVsQ74/RbIQaxZ
226 LUR7v05TVNrcwK/p2NFzLOJcYSkOYGUpks1qvfUlnsuh346SLHXmebif4GLkBB37
227 WWy69+2OwJhlE0qakEJZu2EMFRwRTOrplm9YPs8Z6QgAlqKh5+KoSZTGyzBI8dHv
228 lJJnlxBkzhrAj8g2kiUX5HfM+55jqtrdOo+PEd/nH56wTXaHqc7R0QE8ZdTyhmtd
229 hlyzhdu/bHm09Q5WVAWkaA5nVldEtwIhss+YiWc+Ieu+rd5QkQiW9OAc4B7ZvPCO
230 iDPpzT5rNe2hI4K9VkAKhcBDED+iCHkC4AZs3Rr/6tUCH+dY/roB0K1GtX2eYff6
231 UeeSRsyuYbwQkKZN6pC4JQFWW7z9semrTsHsQzE38EW0IxN8nGCiaAE5cxjtW7Pg
232 k9slzsranQ+n7teucg/+qlArY11LJmvPc7aoZoRCa76hzzDOHskA0/9GRcBQJlTd
233 ctJWAd9/Bk9NJkwWO+II22IQTWZZrRUN8FT6pnr/WxpWM8LL5nq1Lxf3SQX+H2Jq
234 JspFzixPnaDl16sE082GSg0VctFMkCZhb/jghMIQYJ2131DoGXJ4QDU=
235 =sjPP
236 -----END PGP MESSAGE-----
237
238 TEXT;
239 // }}}
240
241 $this->gpg->decrypt($encryptedData);
242 }
243
244 // }}}
245 // {{{ testDecryptBadPassphraseException_bad()
246
247 /**
248 * @expectedException Crypt_GPG_BadPassphraseException
249 *
250 * @group string
251 */
252 public function testDecryptBadPassphraseException_bad()
253 {
254 // encrypted with first-keypair@example.com
255 // {{{ encrypted data
256 $encryptedData = <<<TEXT
257 -----BEGIN PGP MESSAGE-----
258 Version: GnuPG v1.4.6 (GNU/Linux)
259
260 hQIOA5+T+RFnKO8SEAf/Z0WsgibKGysYfti9lfb2aY7vmAwCXnkrI8wZhqBAtfmB
261 oe16PinT47AtnXl4CUgB5jBJq32uzaZKFd/dyCzOog1P/87OB6aa2w5mfxJKIIXc
262 OevQgasWVSQw/1Ro90Fd/F9Q9fcHgHqCG2Q2BwkHG7IZ+V3zHlQpjj5flVTb7Te+
263 K5LM85t7kVEzc5vVzhMvoZluMA48YNL+g7qdA3oZDQ0rXRA1DnTVsQ74/RbIQaxZ
264 LUR7v05TVNrcwK/p2NFzLOJcYSkOYGUpks1qvfUlnsuh346SLHXmebif4GLkBB37
265 WWy69+2OwJhlE0qakEJZu2EMFRwRTOrplm9YPs8Z6QgAlqKh5+KoSZTGyzBI8dHv
266 lJJnlxBkzhrAj8g2kiUX5HfM+55jqtrdOo+PEd/nH56wTXaHqc7R0QE8ZdTyhmtd
267 hlyzhdu/bHm09Q5WVAWkaA5nVldEtwIhss+YiWc+Ieu+rd5QkQiW9OAc4B7ZvPCO
268 iDPpzT5rNe2hI4K9VkAKhcBDED+iCHkC4AZs3Rr/6tUCH+dY/roB0K1GtX2eYff6
269 UeeSRsyuYbwQkKZN6pC4JQFWW7z9semrTsHsQzE38EW0IxN8nGCiaAE5cxjtW7Pg
270 k9slzsranQ+n7teucg/+qlArY11LJmvPc7aoZoRCa76hzzDOHskA0/9GRcBQJlTd
271 ctJWAd9/Bk9NJkwWO+II22IQTWZZrRUN8FT6pnr/WxpWM8LL5nq1Lxf3SQX+H2Jq
272 JspFzixPnaDl16sE082GSg0VctFMkCZhb/jghMIQYJ2131DoGXJ4QDU=
273 =sjPP
274 -----END PGP MESSAGE-----
275
276 TEXT;
277 // }}}
278
279 $this->gpg->addDecryptKey('first-keypair@example.com', 'incorrect');
280 $this->gpg->decrypt($encryptedData);
281 }
282
283 // }}}
284 // {{{ testDecryptDual()
285
286 /**
287 * @group string
288 */
289 public function testDecryptDual()
290 {
291 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
292
293 // encrypted with both first-keypair@example.com and
294 // second-keypair@example.com
295 // {{{ dual encrypted data
296 $encryptedData = <<<TEXT
297 -----BEGIN PGP MESSAGE-----
298 Version: GnuPG v1.4.6 (GNU/Linux)
299
300 hQIOA5+T+RFnKO8SEAf7BO/zLK6gDt5epMOEnHc9ESdSTy8yExdoSxHhvTFxWfwi
301 AwMtBEur8sotSVt+Q87xYzjzE77+FQYS9oYCivlK/Nedblj3MiRuUWhM+Q9tbP3b
302 KbwEwaQlrpNphQsKZOWkliZWmFJWnQ1s1Pm6lPlhwTNhcwkapm8EXuWFExJnY9yW
303 EZjUOhVmnkitKykKup8Brvfm2QpGXoFZtHFKXTi162Lue9N0tDm6s3JnCIhMFQgI
304 fyAikcsJKpbUgeGmzlWJO8QkH81QMuKpqfUb8R1dswhDp6RKXhoXS43zkhH8QSbM
305 Cp9AWdv3qsWBUqzWavCxjtIsogYO+gFLl/Vuw5Y87Af/b7OQgLP1v6xKZcrTvFCF
306 hxGxn+5M8E2GyJaKpQ1GZ+Wv+IzPGetm7rWf6q71hchAkxFMczIPSK7aARm9CNVo
307 7tCdcUmUTgLhG1/0OfmkbwJUjdSpOtz8+TvIZa20Jj9a1G8WT3KTeivKMqBPhgk4
308 sD7OJPDCYQNSQEw6pAn4oBrhJlDUkpCK6wIbUhzeq3MUwtM1e+qpCr/k4In4NVq6
309 cmoC7W//9J69ecuxmiUHRhZ4CALRxQMAsSxMRnNJ26JY4ko82Rfvbrz8QEmKcIyT
310 bTdAMsZ18m9XXrnc2ACDDMQyUkneQDUZSt7V67ZiN4Upi295CynIbNEMmcH/13Aa
311 aoUCDgOy9U5HV+IkUBAIALGICOFzyfquWZ0ZhPGVdDWx1yNcApnzIgZx1JbBpMyc
312 2jb9aQHwGId26gv/ym/M/3FJ0lv+IAcktMjO4dwYLnUuBa6BOFFybZi3gYvXtSuy
313 iW4ygVjIsYixhvbsyaVCoB/MsNBFrQAHEShaxALBkI/dv+yyD8BifU4Yj9LFcAZO
314 mFDraOgYfHsur5eevYTXozf5wU7phu9v6zo5bk8zgZSqs8AgyscstZWCqCtR/cG0
315 t9lAIovGPsIcA12qvkm/A0WiBMEWhGryzHTv9oRsFztOFtqH+MmLdlvWjElw8hKt
316 fFJB+bhHNO9BUIrwnuH79cA4aXOy1+xG+ECs7oJbcisIANqJKalQLgBYEjbucpDg
317 O8i/c4RmV9J7VczpZp7ZREMpTmv9nV849OFXT1strsb/+vXOXOyLToG1gOxRfJr2
318 q9jFjpyMAtrr/aHhXMKK1OMhhcdkQMEKuHTvon5KleZOQoVmIqa3kUtWNW1vFBIP
319 UfJFH202EJLOLC25rXCtzRsJE0HWiYDyLqKMQcSQhTcngLBLmeDLH3DeGUIDwcZe
320 oWgUg8wB/oSoU4AchShzO+yM6bcmffcaHFqwll9gdu9walnJAAOb8+r6LGGlsGTV
321 qhnR0LM3Khp+HOFdaxcQT6BV1aw/D6Z5hIi+Am0VTi0HlFr/gwleyYaP+742Z6K0
322 s8bSVgFT2Pjik+byARWzRwWjmi0jT7QsgITM73aBKPDXiArEPkv8YtC9HzUj0lCY
323 gX7Eg2ZqISULFydBckMJ6drojMMQiqZBeEc09GupSBL1zldnKHfiXBTw
324 =QYjj
325 -----END PGP MESSAGE-----
326
327 TEXT;
328 // }}}
329
330 // decrypt with first key
331 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
332 $decryptedData = $this->gpg->decrypt($encryptedData);
333 $this->gpg->clearDecryptKeys();
334 $this->assertEquals($expectedDecryptedData, $decryptedData);
335
336 // decrypt with second key
337 $this->gpg->addDecryptKey('second-keypair@example.com', 'test2');
338 $decryptedData = $this->gpg->decrypt($encryptedData);
339 $this->gpg->clearDecryptKeys();
340 $this->assertEquals($expectedDecryptedData, $decryptedData);
341 }
342
343 // }}}
344 // {{{ testDecryptDualOnePassphrase()
345
346 /**
347 * @group string
348 */
349 public function testDecryptDualOnePassphrase()
350 {
351 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
352
353 // encrypted with both first-keypair@example.com and
354 // no-passphrase@example.com
355 // {{{ dual encrypted data one passphrase
356 $encryptedData = <<<TEXT
357 -----BEGIN PGP MESSAGE-----
358 Version: GnuPG v1.4.6 (GNU/Linux)
359
360 hQIOA5+T+RFnKO8SEAgAkvANavo5eEeJ/C0njcciAh/ELcgqynhwM4R3texCA9HF
361 043Z5kd4nMr2NUFBFG+UAzFSoB2zO5FZWsESMi71aIgzjX+CG754vw4j1I6Elsa8
362 An1Tldb4vPJqEWdp9ynu/i90wqYUc6DNp8MLilTfFk16GdPv2L8wjOUFlJqV3OdA
363 LJ68ppg3Qr8H0R81HSLPkSMc+o6GpljVShcejLeG14EpoW16ryZHXQk9T9bZzj1L
364 VQT/t8jgj5h2ocEtUCXixNBpFoRdMGMZB4SWXH4Aw3GiSCNSz/xQOgOSu9c/FdVD
365 WE1KCds4DGo5Za6rpDHxBCa8OhUNfhFiOAIcffz4MwgA07vc9jiAU7kGaR86AQuu
366 UlzYe0ZZd6hALVxUAfnBF2aG5Jjhm3muwOEu7e3zk3hd/xVPzT5BQ+1/mt+vlS8E
367 Ffjr13q/nKdoGTW7+orFjcwOmhpsJJcrTU+6TynkpmjNLyHhZix/roNbEPij7JJu
368 StO+vbyu22xWc2mp56AbhO8MLwBC6Vxc2h2ZJXjXcaCLkntnOEPxx653sC55KqHm
369 6gY4Ycwh+cnF9z+dWZBPak/LlHP4pmrSaeIc+8pS9Q6zFdVtrppzjTPCH0/FPxA2
370 QTwBMXrClF8iYNfvJ8a+Se3ZqzmPbpvbbdtTGm49Bo4FNrdHVkC+MMgBEQiJKkbq
371 /4UCDgMkvzgHAMFLTxAH/3a9Et2b3u61MMd0iag7haurrRsMwd6E9VD2SC6gbscF
372 efInr202g78bbyf0AnISnWBjZC8lfmiyoe6Ic7NO5HGzddJ2UPyeiA9ggNPlARlZ
373 OQngAaFzvP8NyMhYMIz5tUxxhYA9U8yjgEuhr/lq+olZwk6iiSaD3lP0q715XkLC
374 uVJ6uxZoBjRaKsVnNLcXvXY6C0IcrGzSr6wKvJm4kQ3RjahRjJvUJG8yeKtbUmHz
375 KBeorg4HQADXcK5Bcp9NCMatds1jvR/Zf8DakAO4G1T8Yb09xEQCVFqFIk7g1NDB
376 T/vHtAdYolvyeS7wlF1TMFuYfuMOi0kVdlbx/PlhpN4H/Recs7EMcl/9gUwUktOl
377 6xyDvA36QvO9RN0D504Ck+ZZjMNFId6fdU/ngSjq9AAteLRLUFgapbMTN2calf1J
378 0ehPzMINegvnVB2dR+xcc67QpxmR5uIA2jK1fSkhvOohE7UxE7xqp4SIMw6E92zy
379 ZvmhQVIqN6/s4k8KxrZKe/uhtDj963m7rsdR7v9wQsc1jJ/f+KZxy73r2Oz7BdTf
380 cpKaMKY/CHiy0NQ3jPrY3oVOIEzu15q4raOhIT5FQoH0pWgmBID3aQsEMjAdeCTy
381 JGHa4ZhQn9LSI+1XQmT3h8tWNYtAm9u3eqFsSm7ENMj3fY2Bd9wKlwTuTzsNhsdw
382 hvHSVgFkfzy/xAiLNPzXydzWJ3bm6ZetguDA/lNgfSaNVR4zSiPSbmV9ipJtrPpB
383 S6stCnUnw33F2IUOsEufvLFfEWtXY8qbBCULYC+no3GOwJhMyJQEI+xw
384 =1ZwO
385 -----END PGP MESSAGE-----
386
387 TEXT;
388 // }}}
389
390 // decrypt with no passphrase
391 $decryptedData = $this->gpg->decrypt($encryptedData);
392 $this->assertEquals($expectedDecryptedData, $decryptedData);
393
394 // decrypt with first key
395 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
396 $decryptedData = $this->gpg->decrypt($encryptedData);
397 $this->gpg->clearDecryptKeys();
398 $this->assertEquals($expectedDecryptedData, $decryptedData);
399 }
400
401 // }}}
402 // {{{ testDecryptDualNoPassphraseKeyMissing()
403
404 /**
405 * @expectedException Crypt_GPG_BadPassphraseException
406 *
407 * @group string
408 */
409 public function testDecryptDualNoPassphraseKeyMissing()
410 {
411 // encrypted with both first-keypair@example.com and
412 // second-keypair@example.com
413 // {{{ dual encrypted data
414 $encryptedData = <<<TEXT
415 -----BEGIN PGP MESSAGE-----
416 Version: GnuPG v1.4.6 (GNU/Linux)
417
418 hQIOA5+T+RFnKO8SEAf7BO/zLK6gDt5epMOEnHc9ESdSTy8yExdoSxHhvTFxWfwi
419 AwMtBEur8sotSVt+Q87xYzjzE77+FQYS9oYCivlK/Nedblj3MiRuUWhM+Q9tbP3b
420 KbwEwaQlrpNphQsKZOWkliZWmFJWnQ1s1Pm6lPlhwTNhcwkapm8EXuWFExJnY9yW
421 EZjUOhVmnkitKykKup8Brvfm2QpGXoFZtHFKXTi162Lue9N0tDm6s3JnCIhMFQgI
422 fyAikcsJKpbUgeGmzlWJO8QkH81QMuKpqfUb8R1dswhDp6RKXhoXS43zkhH8QSbM
423 Cp9AWdv3qsWBUqzWavCxjtIsogYO+gFLl/Vuw5Y87Af/b7OQgLP1v6xKZcrTvFCF
424 hxGxn+5M8E2GyJaKpQ1GZ+Wv+IzPGetm7rWf6q71hchAkxFMczIPSK7aARm9CNVo
425 7tCdcUmUTgLhG1/0OfmkbwJUjdSpOtz8+TvIZa20Jj9a1G8WT3KTeivKMqBPhgk4
426 sD7OJPDCYQNSQEw6pAn4oBrhJlDUkpCK6wIbUhzeq3MUwtM1e+qpCr/k4In4NVq6
427 cmoC7W//9J69ecuxmiUHRhZ4CALRxQMAsSxMRnNJ26JY4ko82Rfvbrz8QEmKcIyT
428 bTdAMsZ18m9XXrnc2ACDDMQyUkneQDUZSt7V67ZiN4Upi295CynIbNEMmcH/13Aa
429 aoUCDgOy9U5HV+IkUBAIALGICOFzyfquWZ0ZhPGVdDWx1yNcApnzIgZx1JbBpMyc
430 2jb9aQHwGId26gv/ym/M/3FJ0lv+IAcktMjO4dwYLnUuBa6BOFFybZi3gYvXtSuy
431 iW4ygVjIsYixhvbsyaVCoB/MsNBFrQAHEShaxALBkI/dv+yyD8BifU4Yj9LFcAZO
432 mFDraOgYfHsur5eevYTXozf5wU7phu9v6zo5bk8zgZSqs8AgyscstZWCqCtR/cG0
433 t9lAIovGPsIcA12qvkm/A0WiBMEWhGryzHTv9oRsFztOFtqH+MmLdlvWjElw8hKt
434 fFJB+bhHNO9BUIrwnuH79cA4aXOy1+xG+ECs7oJbcisIANqJKalQLgBYEjbucpDg
435 O8i/c4RmV9J7VczpZp7ZREMpTmv9nV849OFXT1strsb/+vXOXOyLToG1gOxRfJr2
436 q9jFjpyMAtrr/aHhXMKK1OMhhcdkQMEKuHTvon5KleZOQoVmIqa3kUtWNW1vFBIP
437 UfJFH202EJLOLC25rXCtzRsJE0HWiYDyLqKMQcSQhTcngLBLmeDLH3DeGUIDwcZe
438 oWgUg8wB/oSoU4AchShzO+yM6bcmffcaHFqwll9gdu9walnJAAOb8+r6LGGlsGTV
439 qhnR0LM3Khp+HOFdaxcQT6BV1aw/D6Z5hIi+Am0VTi0HlFr/gwleyYaP+742Z6K0
440 s8bSVgFT2Pjik+byARWzRwWjmi0jT7QsgITM73aBKPDXiArEPkv8YtC9HzUj0lCY
441 gX7Eg2ZqISULFydBckMJ6drojMMQiqZBeEc09GupSBL1zldnKHfiXBTw
442 =QYjj
443 -----END PGP MESSAGE-----
444
445 TEXT;
446 // }}}
447
448 // #21148: Make sure that proper exception is thrown
449 // when decrypting without specyfying a passphrase
450
451 // in this case we remove one of private keys to make
452 // sure proper exception is thrown also in this case
453 $this->gpg->deletePrivateKey('first-keypair@example.com');
454
455 $this->gpg->decrypt($encryptedData);
456 }
457
458 // }}}
459 // {{{ testDecryptSignedData()
460
461 /**
462 * @group string
463 */
464 public function testDecryptSignedData()
465 {
466 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
467
468 // signed with first-keypair@example.com
469 // {{{ signed data
470 $signedData = <<<TEXT
471 -----BEGIN PGP MESSAGE-----
472 Version: GnuPG v1.4.6 (GNU/Linux)
473
474 owGbwMvMwCR4YPrNN1MOJCczrjFOEsrLL8pNzNEtzkzPS03RTUksSfS49JPJIzUn
475 J19HwTEnMzlVUcE9Pz8lqTJVR8EpP0mxw56ZlQGkBmaMIJO9GsOCo2L3pk5y2DNT
476 yiFKb0X03YSJqscaGRb0BKjZ3P+6SvjG160/WOa9vpey4QUDAA==
477 =wtCB
478 -----END PGP MESSAGE-----
479
480 TEXT;
481 // }}}
482
483 $decryptedData = $this->gpg->decrypt($signedData);
484 $this->assertEquals($expectedDecryptedData, $decryptedData);
485 }
486
487 // }}}
488 // {{{ testDecryptFirstSubKey()
489
490 /**
491 * @group string
492 */
493 public function testDecryptFirstSubKey()
494 {
495 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
496
497 // encrypted with first subkey (ELG-E) of multiple-subkeys@example.com
498 // {{{ encrypted data
499 $encryptedData = <<<TEXT
500 -----BEGIN PGP MESSAGE-----
501 Version: GnuPG v1.4.6 (GNU/Linux)
502
503 hQIOA2+UGsw2JFPaEAf/TQ5We9V090WikWJTnpLwIZVgJSU1aCcG6R9h3wBOPFHi
504 RLQ4jBSL8EvXk4VwVJ0tuqpcB10+W1OugWbHTOxWnpbioEaUJk8jRu3MZvnyJe/d
505 3FcLlqXE0SocZR1Okxbp64tDvBzs4jjniQYfoMEM1j/VVlkQ02nufOLy6uvxPZjf
506 KkSeCVSy0HIaT0U5e3R28fT+dYN8i2RhT8AckjWeovJAMbHxCCsKdinI45u7O1QA
507 t9zZxMBaUvo/ikLM1/fyw7E8QaGCh4LlH8WrgBXneAgOPtlkHGziS/I54RSvGe07
508 yWrYkNzFch0l9RnGjAMqqzY9kXn+HxMr3bOFKeSzVQgAssvhcx6OjD+ZzRnVb8D+
509 i5KYFTrVih377e5cBhayWEEIdNeV/QTH9ooZxEVqxC10J5P6UgwNewOYhGJxr1yN
510 Nn2+KlgfoXuqa5RtLhShjDduPF5FS3v7HKGXuyXBQ+W9FcVeytayo8QRqbMqxWZe
511 dNlgjfbNsXJtUjm/48fYdmIiBkb5lf+2LPBhX9JHekVbzJdqx3kigcyXnh7VefKZ
512 fWnOmDdAd3hqeeagXUVGmtH+z6+XDGSKDuoBbwreHxr0ZIpW8mm6I6nx9kBF+LoE
513 OapSuua9s7ddcBxaOVUGECiH4owhHnfFQSz58XsRNIbkZL8R4YewrCmCoscN6/qN
514 adJWAY877iMazlpAzZWr6IZNvKqsET8yQbCllR0olqgh/VOmYUrnj31XtVFgP+47
515 kjHVkhz76aEUtquqMmWsR8r8p42TqR0u1KoW2dGysFzdPreXPORf3tQ=
516 =i9lR
517 -----END PGP MESSAGE-----
518
519 TEXT;
520 // }}}
521
522 $this->gpg->addDecryptKey('multiple-subkeys@example.com', 'test');
523
524 $decryptedData = $this->gpg->decrypt($encryptedData);
525 $this->assertEquals($expectedDecryptedData, $decryptedData);
526 }
527
528 // }}}
529 // {{{ testDecryptSecondSubKey()
530
531 /**
532 * @group string
533 */
534 public function testDecryptSecondSubKey()
535 {
536 $expectedDecryptedData = 'Hello, Alice! Goodbye, Bob!';
537
538 // encrypted with second subkey (RSA) of multiple-subkeys@example.com
539 // {{{ encrypted data
540 $encryptedData = <<<TEXT
541 -----BEGIN PGP MESSAGE-----
542 Version: GnuPG v1.4.6 (GNU/Linux)
543
544 hQEMAykh4NP/Ww9KAQf9HLxeXIXDMXEyJaCsfulZodSavNBP0IuZrXVkxrMPPart
545 fOf2N0Snnq3vA3MjPL9vEfD5sZLlA2bYMZmilyCh+lryYccME+Qa1gQ5xak1Cra1
546 y5ckZ7UNOTdHnhH5VvXk+bwm4KDbdeJJPLOxBJ/j6pf03vxeDEyoBPeeMzzzkXqH
547 +XZ9j7BHZcsLkY7j7iEw1DwcB4TdbOzkcVVBYwovCmhdY0i0m48mkqGVB0mKNUu+
548 YbJuOqiqjACIwXBelB4h/xEXGeEPk+ij1UMt74QhNM2OaQ2HUhIKYMWvAHYuGAvx
549 +ETuFiJo5OqCa4jW4Nqczw4FYLSDOVHdzKw7+dqeddJWAVST6k4823HSprJVFJ+i
550 pY9Bijx3ziDr14+IPxspoJTOInBFYihbwmLFL2RYsf0+pDFmngRhskWIyl4ann4/
551 w7YcziO6EF7lbOqYdn+rBA8e46kgbBQ=
552 =7fzo
553 -----END PGP MESSAGE-----
554
555 TEXT;
556 // }}}
557
558 $this->gpg->addDecryptKey('multiple-subkeys@example.com', 'test');
559
560 $decryptedData = $this->gpg->decrypt($encryptedData);
561 $this->assertEquals($expectedDecryptedData, $decryptedData);
562 }
563
564 // }}}
565 // {{{ testDecryptFile()
566
567 /**
568 * @group file
569 */
570 public function testDecryptFile()
571 {
572 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
573 $inputFilename = $this->getDataFilename('testDecryptFile.asc');
574 $outputFilename = $this->getTempFilename('testDecryptFile.plain');
575
576 // file is encrypted with first-keypair@example.com
577 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
578 $this->gpg->decryptFile($inputFilename, $outputFilename);
579
580 $md5Sum = $this->getMd5Sum($outputFilename);
581 $this->assertEquals($expectedMd5Sum, $md5Sum);
582 }
583
584 // }}}
585 // {{{ testDecryptFileToString()
586
587 /**
588 * @group file
589 */
590 public function testDecryptFileToString()
591 {
592 $expectedData = 'Hello, Alice! Goodbye, Bob!';
593 $inputFilename = $this->getDataFilename('testDecryptFileToString.asc');
594
595 // file is encrypted with first-keypair@example.com
596 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
597 $decryptedData = $this->gpg->decryptFile($inputFilename);
598
599 $this->assertEquals($expectedData, $decryptedData);
600 }
601
602 // }}}
603 // {{{ testDecryptFileNoPassphrase()
604
605 /**
606 * @group file
607 */
608 public function testDecryptFileNoPassphrase()
609 {
610 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
611
612 $inputFilename =
613 $this->getDataFilename('testDecryptFileNoPassphrase.asc');
614
615 $outputFilename =
616 $this->getTempFilename('testDecryptFileNoPassphrase.plain');
617
618 // file is encrypted with no-passphrase@example.com
619 $this->gpg->decryptFile($inputFilename, $outputFilename);
620
621 $md5Sum = $this->getMd5Sum($outputFilename);
622 $this->assertEquals($expectedMd5Sum, $md5Sum);
623 }
624
625 // }}}
626 // {{{ testDecryptFileFileException_input()
627
628 /**
629 * @expectedException Crypt_GPG_FileException
630 *
631 * @group file
632 */
633 public function testDecryptFileFileException_input()
634 {
635 // input file does not exist
636 $inputFilename =
637 $this->getDataFilename('testDecryptFileFileException_input.asc');
638
639 $this->gpg->decryptFile($inputFilename);
640 }
641
642 // }}}
643 // {{{ testDecryptFileFileException_output()
644
645 /**
646 * @expectedException Crypt_GPG_FileException
647 *
648 * @group file
649 */
650 public function testDecryptFileFileException_output()
651 {
652 // input file is encrypted with first-keypair@example.com
653 // output file does not exist
654 $inputFilename = $this->getDataFilename('testDecryptFile.asc');
655 $outputFilename = './non-existent' .
656 '/testDecryptFileFileException_output.plain';
657
658 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
659 $this->gpg->decryptFile($inputFilename, $outputFilename);
660 }
661
662 // }}}
663 // {{{ testDecryptFileKeyNotFoundException()
664
665 /**
666 * @expectedException Crypt_GPG_KeyNotFoundException
667 *
668 * @group file
669 */
670 public function testDecryptFileKeyNotFoundException()
671 {
672 // file is encrypted with missing-key@example.com
673 $inputFilename =
674 $this->getDataFilename('testDecryptFileKeyNotFoundException.asc');
675
676 $outputFilename =
677 $this->getTempFilename('testDecryptFileKeyNotFoundException.plain');
678
679 $this->gpg->decryptFile($inputFilename, $outputFilename);
680 }
681
682 // }}}
683 // {{{ testDecryptFileDual()
684
685 /**
686 * @group file
687 */
688 public function testDecryptFileDual()
689 {
690 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
691 $inputFilename = $this->getDataFilename('testDecryptFileDual.asc');
692 $outputFilename = $this->getTempFilename('testDecryptFileDual.plain');
693
694 // decrypt with first key
695 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
696 $this->gpg->decryptFile($inputFilename, $outputFilename);
697 $this->gpg->clearDecryptKeys();
698 $md5Sum = $this->getMd5Sum($outputFilename);
699 $this->assertEquals($expectedMd5Sum, $md5Sum);
700
701 // decrypt with second key
702 $this->gpg->addDecryptKey('second-keypair@example.com', 'test2');
703 $this->gpg->decryptFile($inputFilename, $outputFilename);
704 $this->gpg->clearDecryptKeys();
705 $md5Sum = $this->getMd5Sum($outputFilename);
706 $this->assertEquals($expectedMd5Sum, $md5Sum);
707 }
708
709 // }}}
710 // {{{ testDecryptFileDualOnePassphrase()
711
712 /**
713 * @group file
714 */
715 public function testDecryptFileDualOnePassphrase()
716 {
717 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
718
719 $inputFilename =
720 $this->getDataFilename('testDecryptFileDualOnePassphrase.asc');
721
722 $outputFilename =
723 $this->getTempFilename('testDecryptFileDualOnePassphrase.plain');
724
725 // decrypt with no-passphrase
726 $this->gpg->decryptFile($inputFilename, $outputFilename);
727 $md5Sum = $this->getMd5Sum($outputFilename);
728 $this->assertEquals($expectedMd5Sum, $md5Sum);
729
730 // decrypt with first key
731 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
732 $this->gpg->decryptFile($inputFilename, $outputFilename);
733 $this->gpg->clearDecryptKeys();
734 $md5Sum = $this->getMd5Sum($outputFilename);
735 $this->assertEquals($expectedMd5Sum, $md5Sum);
736 }
737
738 // }}}
739 // {{{ testDecryptFileNoDataException()
740
741 /**
742 * @expectedException Crypt_GPG_NoDataException
743 *
744 * @group file
745 */
746 public function testDecryptFileNoDataException()
747 {
748 $filename = $this->getDataFilename('testFileEmpty.plain');
749 $this->gpg->decryptFile($filename);
750 }
751
752 // }}}
753 // {{{ testDecryptFileSignedData()
754
755 /**
756 * @group string
757 */
758 public function testDecryptFileSignedData()
759 {
760 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
761
762 $inputFilename =
763 $this->getDataFilename('testVerifyFileNormalSignedData.asc');
764
765 $outputFilename =
766 $this->getTempFilename('testDecryptFileSignedData.plain');
767
768 $this->gpg->decryptFile($inputFilename, $outputFilename);
769
770 $md5Sum = $this->getMd5Sum($outputFilename);
771 $this->assertEquals($expectedMd5Sum, $md5Sum);
772 }
773
774 // }}}
775 }
776
777 ?>