Mercurial > hg > rc1
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 ?> |