comparison vendor/pear/crypt_gpg/tests/DecryptAndVerifyTest.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 * Decrypt verify 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 DecryptAndVefifyTestCase
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-2010 silverorange
38 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
39 * @version $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 decrypt verify abilities of Crypt_GPG.
50 *
51 * @category Encryption
52 * @package Crypt_GPG
53 * @author Michael Gauthier <mike@silverorange.com>
54 * @copyright 2005-2010 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 DecryptAndVerifyTestCase extends Crypt_GPG_TestCase
59 {
60 // string
61 // {{{ testDecryptVerify()
62
63 /**
64 * @group string
65 */
66 public function testDecryptVerify()
67 {
68 // {{{ signature
69 $signature = new Crypt_GPG_Signature();
70 $signature->setId('5dGf4//0CqBmlexYjyS7agt4Zn4');
71 $signature->setKeyFingerprint(
72 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
73
74 $signature->setKeyId('C097D9EC94C06363');
75 $signature->setCreationDate(1258956392);
76 $signature->setExpirationDate(0);
77 $signature->setValid(true);
78
79 $userId = new Crypt_GPG_UserId();
80 $userId->setName('First Keypair Test Key');
81 $userId->setComment('do not encrypt important data with this key');
82 $userId->setEmail('first-keypair@example.com');
83 $signature->setUserId($userId);
84 // }}}
85
86 $expectedResults = array(
87 'data' => 'Hello, Alice! Goodbye, Bob!',
88 'signatures' => array($signature)
89 );
90
91 // encrypted with first-keypair@example.com, signed with
92 // first-keypair@example.com
93 // {{{ encrypted data no passphrase
94 $encryptedData = <<<TEXT
95 -----BEGIN PGP MESSAGE-----
96 Version: GnuPG v1.4.9 (GNU/Linux)
97
98 hQIOA5+T+RFnKO8SEAf+M1KnzLUvmJMtRTMpy3G2C8iJN1oQPznWDlL6NqxNeS6N
99 8ie5dXmaG9csQUx1Ys8QRaPDg6ElVIrJOXQ0CIW3mqxZS7+5X5akH5DQ0Ye4Rggx
100 yqADpE2z99tlYiNlpEqtG4oAUXzJjWiw8Y6MFg/xAHQUYMhEhZRB4OaSQGVPpxYs
101 s6YBfRGmWdNrGgPgcwoEmoHvmVKtVOfBNzO9cpl7k2pV12p6eG6jZ1qcCQkSJZlY
102 z2WsnDYZ9wbXuLM4XanGiJiBau0f+nJqDozmOVvc5Avz1qrQD3Dd5C5cy/e+XPdn
103 wzTgg3myMrwudAeJZzwMrpcrGwvdzAKE8/7TbNO+3Qf+NqfrApMVUrsFQBdzlLp9
104 7cV8nD0uF8ioQjPg0lzJajJdqjEkKB7h9i9fQgL/SBZ29HupsUqDoqmpCVU/B6M0
105 YzphMp1qWDRkk5dmpcTppTBsVx1KXCqLQFBIy+Fhc31NZRs1ccaVF3uxaOyMzFhb
106 FaWlUq03SjU9SlkYiFwyfyDysK3uoGeLfFh5yhH6ly5kthwLo2ov/GANF3pL0cxv
107 mGUcnZbkhk+MWjmz83loedhh2XpTLqRGuhzWPTQlOUQzf6xbj5zCkzWdnbqFQu19
108 Et5O3whgv+ufNvD5LGc/lGQeV8wV7EXcde0ISUa8LKyU+eseS+W6IHsQLPupkCQG
109 u9KoAQUL3Q3vX1C7WmzS2sudcAulSR8bRYfr6lJ5udRvek7M7tYdLbE1ZLua23T8
110 NId1euFhWftuaFjGDRvY37ab+M+zTnMtogSZDkCVyFrM2n4/hFfX9eKX6ljPxPmk
111 lEmn966i8e4K0jL0Ydvf7qWEVc5uov7xorYnkwvIbaW8SyUPowenfN3qODv7C0Yj
112 0kOgiJnRxZq+MYOR1b1L6fS0y7jDPI+er8ft
113 =pycC
114 -----END PGP MESSAGE-----
115
116 TEXT;
117 // }}}
118
119 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
120 $results = $this->gpg->decryptAndVerify($encryptedData);
121 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
122 }
123
124 // }}}
125 // {{{ testDecryptVerifyNoPassphrase()
126
127 /**
128 * @group string
129 */
130 public function testDecryptVerifyNoPassphrase()
131 {
132 // {{{ signature
133 $signature = new Crypt_GPG_Signature();
134 $signature->setId('0YWPoUQhN5G4uTi45QLy3GG3RWg');
135 $signature->setKeyFingerprint(
136 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
137
138 $signature->setKeyId('C097D9EC94C06363');
139 $signature->setCreationDate(1258956262);
140 $signature->setExpirationDate(0);
141 $signature->setValid(true);
142
143 $userId = new Crypt_GPG_UserId();
144 $userId->setName('First Keypair Test Key');
145 $userId->setComment('do not encrypt important data with this key');
146 $userId->setEmail('first-keypair@example.com');
147 $signature->setUserId($userId);
148 // }}}
149
150 $expectedResults = array(
151 'data' => 'Hello, Alice! Goodbye, Bob!',
152 'signatures' => array($signature)
153 );
154
155 // encrypted with no-passphrase@example.com, signed with
156 // first-keypair@example.com
157 // {{{ encrypted data no passphrase
158 $encryptedData = <<<TEXT
159 -----BEGIN PGP MESSAGE-----
160 Version: GnuPG v1.4.9 (GNU/Linux)
161
162 hQIOAyS/OAcAwUtPEAf+KCytTYgKglBxxU9jAr2i0WVXhBcfyVyFq0N4or4HGMSz
163 zBw3eXw/JI77PY4pBxtBDCzPgSox8T8abh6OU3LDu3Zy9kvKcbQxYCSOeJkPBDpK
164 OtJ2Sw7CJ7QIvoSyqmRmCjrji9OU3k9ulQQ/5GauAP4QnUnt6lNkz+FOWVl5wzqc
165 yjXkRgfmKNBzYVscgdH+YDEUTM+edN+NflzqLk8HLU98TmINbbVJwnPvpCCvRGh4
166 SDDaF7WmiIjSqI15Bn7F/l+8ScxvC8EH6wxR9gqS+B9DlqVpjIoYa57SPXLcshvQ
167 r02OjC8d8u2oyW9TLqnTirsf347Dzo7rRwm3GbdSrgf9FoQjymAzSx6izx9BsMg+
168 6XJV0jSHW+jDjiJRoMAYXKc/s/y8MWRo/irCTPjReLEHWvKmISXynXqxHy1Dw5SN
169 1VQAPIH1ftqEVZvGtA11vLPjPYenCRCkkwz8AHqLmqZt6V2A49zPen4+H+Tp/5xr
170 s7TQhygo9vmTTzniBqV4lYbOyshcUTVlUErba+ffivKQPNnM+oCZXyUbJTsMlGv+
171 elZqUKlNEBXivHnmIbwP/vpZ1WMMewCeij1/Z6OGbbT51dh9qeqPRj96dF351Lbk
172 GPxLw5uP2bIzGQjGIBeKHrl2kkRxKk/MX6QPrMHR4KlUpPRfKcQLC0TGPTEPu6ya
173 5tKoAdoBuKYNoFk2txsseRQTI/3v5pudNsdh5R/s+PMs+HpxyaFemI3eJb05E4Jx
174 zGJX5UiMIb/Yr0zCvlOaDx0NjPwIoUDqtZw6YqA59/BKmaRyqGoXk0UJMK2hAJKN
175 yTrj0nUDWFgoKzLHu3EQtYffLUrrjVc6BB8pUmrZKBisGnXFBQvShkzdWmzUT655
176 JQfVfeZmgq+UAsfqIlrWBfDcqfyvWeAAZ7qH
177 =1oh0
178 -----END PGP MESSAGE-----
179
180 TEXT;
181 // }}}
182
183 $results = $this->gpg->decryptAndVerify($encryptedData);
184 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
185 }
186
187 // }}}
188 // {{{ testDecryptVerifyKeyNotFoundException_decrypt()
189
190 /**
191 * @expectedException Crypt_GPG_KeyNotFoundException
192 *
193 * @group string
194 */
195 public function testDecryptVerifyKeyNotFoundException_decrypt()
196 {
197 // was encrypted with missing-key@example.com, signed with
198 // first-keypair@example.com
199 // {{{ encrypted data
200 $encryptedData = <<<TEXT
201 -----BEGIN PGP MESSAGE-----
202 Version: GnuPG v1.4.9 (GNU/Linux)
203
204 hQIOA82wFXJyxZnNEAgAwSoWLKDj/dyotGwYCT60IHC7vPGKbcbd9LMEQ8hOobKS
205 21aHeUBft9vlAnZabzPSqeQGYoD0BugONncV45HWlA3QD0KGcVuE6FaWIkexRNsK
206 S8MwVpcCgTuVkmSBgZbAS9jl7ODGGNdfGCb20fpgWFx8rv6q14aPUrD1bw5VVWeS
207 vLGuRGA+pcBwFlDTRvYtM0UnggfPMn6uH0CKI8uZsKkyHCu2zSCBLYsuo87sY6zJ
208 2UwEDyuYvr38HmcNZkb8vk7gpLCeJvFLeLYwpRrQcQy0Q+iElNPFXl5HzlwTNDq5
209 5IIiQNlaCV6vUKeX5VhU4i6h4yUWegVoIro4h7KwYQf8CxTrKUnI6WfDuvttU5Z7
210 q+7WCTDEnmOT7C2AvOKyfNXlERQnDtY1LHjJe6AEyP2RHnTrHR6Nbi4zQfl4BSZX
211 hH+ojM/001ir5/m8cOaMpQzHnMyUIi1HenpjJFo5fsMYg+K7j88X4KWlu3YFeB+O
212 xAp/mf7qUiiTKeDdGJE0u3NkFmXz/G/QDp8zwpqG+/UpiEjMm4OdFMwP68l9FWRX
213 d1ql5Rfeb50HPIjcmoa1iHq0IJCbT2xXxCm7QyGRy5PwSTMsQnrDUvj6zIBhqusZ
214 CTHqBXBH3jsDKTBJGQNwOGA418kcEpRsHY+C53rPhoUDnjzBY7dzIstQFsCy1bPZ
215 qNKoAfFsNjinvrwexRqkDypYLxEKs/nrMM4q+yz8n6Q2BqPT6YvOciHAkE0k4I46
216 STZqsFTwWxgWmhLlEFvYul3BWEp5Ow5J6+6TZrHCDIFhoQIHesxmsWVxxlgTG+0M
217 TS1210ua1nkP+DdWQUBzdDHFxAWWG2pUxzApIPBD2wyeLd1HMVpOjQGpFxMuO8Pd
218 ZcGqhMpjECMzc4DOAPFbdKwgWKXi95v4zeUf
219 =Ze0h
220 -----END PGP MESSAGE-----
221
222 TEXT;
223 // }}}
224
225 $this->gpg->decryptAndVerify($encryptedData);
226 }
227
228 // }}}
229 // {{{ testDecryptVerifyKeyNotFoundException_verify()
230
231 /**
232 * @expectedException Crypt_GPG_KeyNotFoundException
233 *
234 * @group string
235 */
236 public function testDecryptVerifyKeyNotFoundException_verify()
237 {
238 // was encrypted with first-keypair@example.com, signed with
239 // missing-key@example.com
240 // {{{ encrypted data
241 $encryptedData = <<<TEXT
242 -----BEGIN PGP MESSAGE-----
243 Version: GnuPG v1
244
245 hQIOA5+T+RFnKO8SEAgAnQrKNrq6O4F0tlex+I5aklo7ElBbSPfa0k4SvX80m+n3
246 raM84mpnUzpoXrRa6zSM2IxzF7oWLHHAkBkWaTYdFFWegPbQk4G5rlURZDsLtamb
247 y3tXcOMuSMhj3b9XrR2YzfREj0AnuEvYOsd++KpjcEYgcVZOb5tCn+9UKfjop/pZ
248 i9sAJMYbdavxoa8DUuIMT6v0C/zNiuSFlQ23kRWB+LUR0tTIoHpb+0U0ITFLSMIr
249 jc9K6Zz805Tbu6xX8UXRMIdfJTJkmVWTOD8u8OUPGBxhBuZmbVfH4x+fKybcSVJJ
250 akqX28LjaqI+WvD/zh9l78V7foMEWd7porUzBC7z+wgAzh3LBHb2naFg4CZSVlYa
251 uuQ64G1ct0uxwVr0p0/4jA5nEK+WgFABPu1YPnIO3md8dBnkfs92g+0msKgB3FOn
252 T5+FlgkR+p2Y4knNggSmJGErCMYAq17lCu3bAlHFKwaowCBFoXrFCGBH2qgXD+CM
253 Rgq5gWXPLrcqnGPefdV56i+8X+t7oHCzIxX836IQICWMpOdhWMzDz44ctC5IBTJp
254 bDgx2pmkU+i51Q+PfK7k8eBIvlrvBGCQcUiNjCoPKAM3OjGNAQF0JraWPG2q0OSM
255 aZXKg9aCrQRHceCjwTf8dYRDm6yqGNeVzOnkDibPT3ySYmXKaVDbB8AquS72wE1n
256 ktLAxwGOjaM4MSQOGT+8eggngFidGak7957SWZRaqsXdeh6HtxKWni+XTBmWAg2m
257 6MnCIiVxD5A75m75ncdbRgtx2Sl9B/kCTC6Ak6hQ3iFpJKuQSZcD2gyGRSE8Ly7u
258 cX4jPXcYQaWLi+wVpLaYr3hSsjx2WgVk4oz+X2Kt0qQw+yWIkRw7ErmMl0ML0L7j
259 YePAE6UbBSR131nDKmXDUlLsV4GavAclENL5Kp6Yd8ia3h1Jdtl0waH5cCLswhf3
260 oi0u0bIalnZwDkFSDGiWgDQyJ8XgPFcUx8fp3dC8FVxXbd3quMxZU6/5K/dQ0LIh
261 +Ldlz797sLtl1lHmlaLEzTzJZriLiEiOCZeOrhbgqcGMLurzfsCWYH+BZFzH8iFJ
262 yDoUVsWLlvY+6gelAE9Dlzdq9m8rIALwf0Udlsdn/NBaFxarT0nl68u5fSJo8UA2
263 MuZd2EB/BKXWvAo5Ea9CQ3DrrDkbwlE3PKrWlMos6dFb/SWxtmKfEeNYhYJsbwsv
264 x5MBl/I2kBCHeH4=
265 =hojs
266 -----END PGP MESSAGE-----
267
268 TEXT;
269 // }}}
270
271 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
272 $this->gpg->decryptAndVerify($encryptedData);
273 }
274
275 // }}}
276 // {{{ testDecryptVerifyKeyNotFoundException_both()
277
278 /**
279 * @expectedException Crypt_GPG_KeyNotFoundException
280 *
281 * @group string
282 */
283 public function testDecryptVerifyKeyNotFoundException_both()
284 {
285 // was encrypted and signed with missing-key@example.com
286 // {{{ encrypted data
287 $encryptedData = <<<TEXT
288 -----BEGIN PGP MESSAGE-----
289 Version: GnuPG v1.4.9 (GNU/Linux)
290
291 hQIOA82wFXJyxZnNEAgA0oz13vLInSM0GlhLyIQ5fRXlttY6jOO6xgUH3MhCqExN
292 KWLBp9VE+iAzdsnF8hjP+u48qNjYj7Jvyiu8vf1SD9ScYoEiKar0EhZVLfCxX7PC
293 4ZWCSEWD5h5nBSabdL00f3vL//GrQtMAwcKP4p+pEyxTEoSg7xp10+F0JqnhlIqh
294 vsOeP4vAeYi1v7x0UyoNxzHbfGb3gjwNaWEixBPMekoEnZ8SOORL5yrOctOjcFxz
295 hKQFIcJv5vG/Ozs6Wm5q+uvzkZDc2X2dOnb1SpCP5cxNC0g37CiwPIL8ArBcu+yP
296 5HSC8YhyyVcQTuIdb0a9t/IK0HNfEOF5gCBCQ462Xwf/X3PQgKvvK76DQ8xvukB8
297 6yKwaHv2K8NWFyTuPppiiRztVI13zPt/Jjw/YPNE/qUzONiggqWM0tGtVkbNRzic
298 dMEaAfwmZSix0alMPnDuVNyq9AnCUEjkXKTByWDL4pejvB541dA+rtU1D8pV1/8X
299 P+oQ+j1EnJitYSTdsnD4YC88/q2RnQTmibmyMclVVk3el6OvZN0Gj0Y2bd9c4LC+
300 1reFYZHrX0FcsGIVuHEK/VikTqoWhFOTYUFXFGSE/AGvotfHj2QG3sd297IaSbVi
301 C1LwWGvpdZ2yw4RV4Zgrqvg8WOL9maj/mX8aE9/gzs9XH2vuucDBOC0RrQPsM6wb
302 ANKoAdExlp+92b69YSNjP2bRQFjN3gFKaGfBm4ULUhRTFnlfBGIIa+2KHUNB7dYk
303 obUon363/o/8wdmlXewIwPLK8nQsYXhAyxJcf9o90tqv1L83ZMMLU7FqBkUCmT4a
304 9EPXbxnaeO3sa8ZuGm0ilGuIFsK24pBOXtYESZ4ix6y7PZOXCJDun4+dFKcfMG+0
305 t8TnSlDaIKEuve9kUGwmO8Z3LsYJEsRCsHyN
306 =YNhC
307 -----END PGP MESSAGE-----
308
309 TEXT;
310 // }}}
311
312 $this->gpg->decryptAndVerify($encryptedData);
313 }
314
315 // }}}
316 // {{{ testDecryptVerifyKeyNotFoundVerifyIgnoreErrors()
317
318 /**
319 * @group string
320 */
321 public function testDecryptVerifyKeyNotFoundIgnoreVerifyErrors()
322 {
323 $signature = new Crypt_GPG_Signature();
324 $signature->setKeyId('8E3D36B1EA5AC75E');
325
326 $expectedResults = array(
327 'data' => 'Hello, Alice! Goodbye, Bob!',
328 'signatures' => array($signature)
329 );
330
331 // was encrypted with first-keypair@example.com, signed with
332 // missing-key@example.com
333 // {{{ encrypted data
334 $encryptedData = <<<TEXT
335 -----BEGIN PGP MESSAGE-----
336 Version: GnuPG v1
337
338 hQIOA5+T+RFnKO8SEAgAnQrKNrq6O4F0tlex+I5aklo7ElBbSPfa0k4SvX80m+n3
339 raM84mpnUzpoXrRa6zSM2IxzF7oWLHHAkBkWaTYdFFWegPbQk4G5rlURZDsLtamb
340 y3tXcOMuSMhj3b9XrR2YzfREj0AnuEvYOsd++KpjcEYgcVZOb5tCn+9UKfjop/pZ
341 i9sAJMYbdavxoa8DUuIMT6v0C/zNiuSFlQ23kRWB+LUR0tTIoHpb+0U0ITFLSMIr
342 jc9K6Zz805Tbu6xX8UXRMIdfJTJkmVWTOD8u8OUPGBxhBuZmbVfH4x+fKybcSVJJ
343 akqX28LjaqI+WvD/zh9l78V7foMEWd7porUzBC7z+wgAzh3LBHb2naFg4CZSVlYa
344 uuQ64G1ct0uxwVr0p0/4jA5nEK+WgFABPu1YPnIO3md8dBnkfs92g+0msKgB3FOn
345 T5+FlgkR+p2Y4knNggSmJGErCMYAq17lCu3bAlHFKwaowCBFoXrFCGBH2qgXD+CM
346 Rgq5gWXPLrcqnGPefdV56i+8X+t7oHCzIxX836IQICWMpOdhWMzDz44ctC5IBTJp
347 bDgx2pmkU+i51Q+PfK7k8eBIvlrvBGCQcUiNjCoPKAM3OjGNAQF0JraWPG2q0OSM
348 aZXKg9aCrQRHceCjwTf8dYRDm6yqGNeVzOnkDibPT3ySYmXKaVDbB8AquS72wE1n
349 ktLAxwGOjaM4MSQOGT+8eggngFidGak7957SWZRaqsXdeh6HtxKWni+XTBmWAg2m
350 6MnCIiVxD5A75m75ncdbRgtx2Sl9B/kCTC6Ak6hQ3iFpJKuQSZcD2gyGRSE8Ly7u
351 cX4jPXcYQaWLi+wVpLaYr3hSsjx2WgVk4oz+X2Kt0qQw+yWIkRw7ErmMl0ML0L7j
352 YePAE6UbBSR131nDKmXDUlLsV4GavAclENL5Kp6Yd8ia3h1Jdtl0waH5cCLswhf3
353 oi0u0bIalnZwDkFSDGiWgDQyJ8XgPFcUx8fp3dC8FVxXbd3quMxZU6/5K/dQ0LIh
354 +Ldlz797sLtl1lHmlaLEzTzJZriLiEiOCZeOrhbgqcGMLurzfsCWYH+BZFzH8iFJ
355 yDoUVsWLlvY+6gelAE9Dlzdq9m8rIALwf0Udlsdn/NBaFxarT0nl68u5fSJo8UA2
356 MuZd2EB/BKXWvAo5Ea9CQ3DrrDkbwlE3PKrWlMos6dFb/SWxtmKfEeNYhYJsbwsv
357 x5MBl/I2kBCHeH4=
358 =hojs
359 -----END PGP MESSAGE-----
360
361 TEXT;
362 // }}}
363
364 $this->gpg = new Crypt_GPG(array_merge(array('ignoreVerifyKeyErrors' => true) + $this->getOptions()));
365
366 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
367 $results = $this->gpg->decryptAndVerify($encryptedData, true);
368
369 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
370 }
371
372 // }}}
373 // {{{ testDecryptVerifyNoDataException_invalid()
374
375 /**
376 * @expectedException Crypt_GPG_NoDataException
377 *
378 * @group string
379 */
380 public function testDecryptVerifyNoDataException_invalid()
381 {
382 $encryptedData = 'Invalid OpenPGP data.';
383 $this->gpg->decryptAndVerify($encryptedData);
384 }
385
386 // }}}
387 // {{{ testDecryptVerifyNoDataException_empty()
388
389 /**
390 * @expectedException Crypt_GPG_NoDataException
391 *
392 * @group string
393 */
394 public function testDecryptVerifyNoDataException_empty()
395 {
396 $encryptedData = '';
397 $this->gpg->decryptAndVerify($encryptedData);
398 }
399
400 // }}}
401 // {{{ testDecryptVerifyBadPassphraseException_missing()
402
403 /**
404 * @expectedException Crypt_GPG_BadPassphraseException
405 *
406 * @group string
407 */
408 public function testDecryptVerifyBadPassphraseException_missing()
409 {
410 // encrypted with first-keypair@example.com, signed with
411 // first-keypair@example.com
412 // {{{ encrypted data no passphrase
413 $encryptedData = <<<TEXT
414 -----BEGIN PGP MESSAGE-----
415 Version: GnuPG v1.4.9 (GNU/Linux)
416
417 hQIOA5+T+RFnKO8SEAf+M1KnzLUvmJMtRTMpy3G2C8iJN1oQPznWDlL6NqxNeS6N
418 8ie5dXmaG9csQUx1Ys8QRaPDg6ElVIrJOXQ0CIW3mqxZS7+5X5akH5DQ0Ye4Rggx
419 yqADpE2z99tlYiNlpEqtG4oAUXzJjWiw8Y6MFg/xAHQUYMhEhZRB4OaSQGVPpxYs
420 s6YBfRGmWdNrGgPgcwoEmoHvmVKtVOfBNzO9cpl7k2pV12p6eG6jZ1qcCQkSJZlY
421 z2WsnDYZ9wbXuLM4XanGiJiBau0f+nJqDozmOVvc5Avz1qrQD3Dd5C5cy/e+XPdn
422 wzTgg3myMrwudAeJZzwMrpcrGwvdzAKE8/7TbNO+3Qf+NqfrApMVUrsFQBdzlLp9
423 7cV8nD0uF8ioQjPg0lzJajJdqjEkKB7h9i9fQgL/SBZ29HupsUqDoqmpCVU/B6M0
424 YzphMp1qWDRkk5dmpcTppTBsVx1KXCqLQFBIy+Fhc31NZRs1ccaVF3uxaOyMzFhb
425 FaWlUq03SjU9SlkYiFwyfyDysK3uoGeLfFh5yhH6ly5kthwLo2ov/GANF3pL0cxv
426 mGUcnZbkhk+MWjmz83loedhh2XpTLqRGuhzWPTQlOUQzf6xbj5zCkzWdnbqFQu19
427 Et5O3whgv+ufNvD5LGc/lGQeV8wV7EXcde0ISUa8LKyU+eseS+W6IHsQLPupkCQG
428 u9KoAQUL3Q3vX1C7WmzS2sudcAulSR8bRYfr6lJ5udRvek7M7tYdLbE1ZLua23T8
429 NId1euFhWftuaFjGDRvY37ab+M+zTnMtogSZDkCVyFrM2n4/hFfX9eKX6ljPxPmk
430 lEmn966i8e4K0jL0Ydvf7qWEVc5uov7xorYnkwvIbaW8SyUPowenfN3qODv7C0Yj
431 0kOgiJnRxZq+MYOR1b1L6fS0y7jDPI+er8ft
432 =pycC
433 -----END PGP MESSAGE-----
434
435 TEXT;
436 // }}}
437
438 $this->gpg->decryptAndVerify($encryptedData);
439 }
440
441 // }}}
442 // {{{ testDecryptVerifyBadPassphraseException_bad()
443
444 /**
445 * @expectedException Crypt_GPG_BadPassphraseException
446 *
447 * @group string
448 */
449 public function testDecryptVerifyBadPassphraseException_bad()
450 {
451 // encrypted with first-keypair@example.com, signed with
452 // first-keypair@example.com
453 // {{{ encrypted data no passphrase
454 $encryptedData = <<<TEXT
455 -----BEGIN PGP MESSAGE-----
456 Version: GnuPG v1.4.9 (GNU/Linux)
457
458 hQIOA5+T+RFnKO8SEAf+M1KnzLUvmJMtRTMpy3G2C8iJN1oQPznWDlL6NqxNeS6N
459 8ie5dXmaG9csQUx1Ys8QRaPDg6ElVIrJOXQ0CIW3mqxZS7+5X5akH5DQ0Ye4Rggx
460 yqADpE2z99tlYiNlpEqtG4oAUXzJjWiw8Y6MFg/xAHQUYMhEhZRB4OaSQGVPpxYs
461 s6YBfRGmWdNrGgPgcwoEmoHvmVKtVOfBNzO9cpl7k2pV12p6eG6jZ1qcCQkSJZlY
462 z2WsnDYZ9wbXuLM4XanGiJiBau0f+nJqDozmOVvc5Avz1qrQD3Dd5C5cy/e+XPdn
463 wzTgg3myMrwudAeJZzwMrpcrGwvdzAKE8/7TbNO+3Qf+NqfrApMVUrsFQBdzlLp9
464 7cV8nD0uF8ioQjPg0lzJajJdqjEkKB7h9i9fQgL/SBZ29HupsUqDoqmpCVU/B6M0
465 YzphMp1qWDRkk5dmpcTppTBsVx1KXCqLQFBIy+Fhc31NZRs1ccaVF3uxaOyMzFhb
466 FaWlUq03SjU9SlkYiFwyfyDysK3uoGeLfFh5yhH6ly5kthwLo2ov/GANF3pL0cxv
467 mGUcnZbkhk+MWjmz83loedhh2XpTLqRGuhzWPTQlOUQzf6xbj5zCkzWdnbqFQu19
468 Et5O3whgv+ufNvD5LGc/lGQeV8wV7EXcde0ISUa8LKyU+eseS+W6IHsQLPupkCQG
469 u9KoAQUL3Q3vX1C7WmzS2sudcAulSR8bRYfr6lJ5udRvek7M7tYdLbE1ZLua23T8
470 NId1euFhWftuaFjGDRvY37ab+M+zTnMtogSZDkCVyFrM2n4/hFfX9eKX6ljPxPmk
471 lEmn966i8e4K0jL0Ydvf7qWEVc5uov7xorYnkwvIbaW8SyUPowenfN3qODv7C0Yj
472 0kOgiJnRxZq+MYOR1b1L6fS0y7jDPI+er8ft
473 =pycC
474 -----END PGP MESSAGE-----
475
476 TEXT;
477 // }}}
478
479 $this->gpg->addDecryptKey('first-keypair@example.com', 'incorrect');
480 $this->gpg->decryptAndVerify($encryptedData);
481 }
482
483 // }}}
484 // {{{ testDecryptVerifyDual()
485
486 /**
487 * @group string
488 */
489 public function testDecryptVerifyDual()
490 {
491 // {{{ signature
492 $signature = new Crypt_GPG_Signature();
493 $signature->setId('TAsI7RYUgZAud0wMZu3Iab3bZXo');
494 $signature->setKeyFingerprint(
495 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
496
497 $signature->setKeyId('C097D9EC94C06363');
498 $signature->setCreationDate(1258955651);
499 $signature->setExpirationDate(0);
500 $signature->setValid(true);
501
502 $userId = new Crypt_GPG_UserId();
503 $userId->setName('First Keypair Test Key');
504 $userId->setComment('do not encrypt important data with this key');
505 $userId->setEmail('first-keypair@example.com');
506 $signature->setUserId($userId);
507 // }}}
508
509 $expectedResults = array(
510 'data' => 'Hello, Alice! Goodbye, Bob!',
511 'signatures' => array($signature)
512 );
513
514 // encrypted with both first-keypair@example.com and
515 // second-keypair@example.com, signed with first-keypair@example.com
516 // {{{ dual encrypted, signed data
517 $encryptedData = <<<TEXT
518 -----BEGIN PGP MESSAGE-----
519 Version: GnuPG v1.4.9 (GNU/Linux)
520
521 hQIOA5+T+RFnKO8SEAgA2lVokiF7FeQvT0EjgH/X2mXNbz8ukKM7WdIAsIFumg1a
522 Skfsqn1plAHs3f3OhY16tBb1WW4J8WXEt6g3yHls92XpRUgRTUjVCr4HIvMwSB3A
523 V/ZQdGs3NK3wh0rMu6q/Ski10dEwP7SUE+w19AmiCQfmKYLUJmCgPLmVm4IapAad
524 lIpNalUHzXhHuuIzKut9H0n6+p0jUPW2JehFFGud66MS5PaGbDPZS2lKiPjytSzl
525 pYipuglregaaMR5KsBYxP4A6MnMaRaZriTeItROJ0PTBMaq93+IyrnwulqEsWk6t
526 8ahRM4FmC+U/Z9tgWxTEKU28zthjxKXW5JOceGxeBQgAoxRAhd75Ok406YG4VucC
527 rxLSLIKIt0TAlbTWncJq9qhLA86+RL4oqUYfDjq9o9lrfkPQO3xfHam/43j2yaF3
528 HeJwSDwU0V4YZ6R9ZVdHMYw7w7yynn2HmNesDUWRfI7IRwMFtgKGvv6qpdUOYmWN
529 MhQ+HxnwMgvHNaz6TRYpQzVvtpB6q9J3/xCM3+uKxDaJLbJux50s6FpnCRnLpGWs
530 1Tj8l9BSMlAGtP6dMR3MysZS/UnXwdTmDFR9ARS+HxsP89I95UAKLWaouShoo9dX
531 QIs0pLkQs+CWpjPVAp8TT0Vj1juThk4bJarti/BaZOyzUAOrleDWOO8VVsuM1Bw2
532 xIUCDgOy9U5HV+IkUBAIANU8DKkvHNzkx68XvxXXVsBsWTGNznrNGUjqSfhyS9pW
533 lRnq7qB2c2UgMvMTnMWyogQ/gKEotdeqKCXdMLBkataB1xkMbCvUZzdj2A/OPtDD
534 xT7ogqn82YaEjlfEqEbqBi1lvq2tuC/YsGti0c6zDUFoZax6QWL+NU3eCY6ZxBSx
535 NuZ4hiBJqPeHVP92SCnsC2BwqUy7W0rUuKnXo3VM1syd98TZjdM6SqBVQ61YX3u2
536 rS1YiphYd2WeNU/bSZ79bHMMPt3joQ+nCGKvGSIlCVxAy4EPWDb2KFw0yUmXUub1
537 tLnrKAOdufWC780LuhgINLb1PSmzogRmvk4ih687h9wH/0hx4olXvkUHZAcpnMHT
538 zGK8NQeoxfSmcJrYNa1TpQ8FjLad7eycnoIASC4qS7IsJ0xzedWd2eqLdc+9qIiv
539 68gW2MjZOqQ5PvcZk1eqOVUNH8Ua8Wfv82ljk1VE0L9zzrS8nGLq5prjaK400Vwh
540 MVh129jyjkpgGZhIHC4cNGBQl1zKDw9WWd1Rk92rpmsvb7JZVNDg0DjW3hrwc7v2
541 WbGqEXG5Sown6J1gX4wKIpn9roOE9ZSu1hvugPc28IZIne4rL05Pd4qVnp87SiUh
542 wHs82nXGhqcscZx2NiT2F///6j97+ccd+619iabKkpfwGunQZHfxit+7bfHuX+5O
543 tFHSqQEsRi3gNrRlMRDnPjLHXjR+x80anNOwxBfZP1qjdTsFucqmZ57KUdIpUGmi
544 uRgBZhuVRz8ryTcw5/nACkeKLkxOJLHGgNDilJtNO8tv+BbQDRZzsNYTM7ZNcAo4
545 JqkWrMb43BTbAbdgTyEkWhqw6cFQEePYqXcbeDh3c77U5joGZW+iPZQlJbBCMC6e
546 KBH+5iH8NzPpP6yZq5e5p1ZOkb2PY3EXtL8aemU=
547 =S/2J
548 -----END PGP MESSAGE-----
549
550 TEXT;
551 // }}}
552
553 // decrypt with first key
554 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
555 $results = $this->gpg->decryptAndVerify($encryptedData);
556 $this->gpg->clearDecryptKeys();
557 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
558
559 // decrypt with second key
560 $this->gpg->addDecryptKey('second-keypair@example.com', 'test2');
561 $results = $this->gpg->decryptAndVerify($encryptedData);
562 $this->gpg->clearDecryptKeys();
563 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
564 }
565
566 // }}}
567 // {{{ testDecryptVerifyDualOnePassphrase()
568
569 /**
570 * @group string
571 */
572 public function testDecryptVerifyDualOnePassphrase()
573 {
574 // {{{ signature
575 $signature = new Crypt_GPG_Signature();
576 $signature->setId('3OJnX+PqHI0YUCeFxICCxhPHY1Q');
577 $signature->setKeyFingerprint(
578 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
579
580 $signature->setKeyId('C097D9EC94C06363');
581 $signature->setCreationDate(1258955916);
582 $signature->setExpirationDate(0);
583 $signature->setValid(true);
584
585 $userId = new Crypt_GPG_UserId();
586 $userId->setName('First Keypair Test Key');
587 $userId->setComment('do not encrypt important data with this key');
588 $userId->setEmail('first-keypair@example.com');
589 $signature->setUserId($userId);
590 // }}}
591
592 $expectedResults = array(
593 'data' => 'Hello, Alice! Goodbye, Bob!',
594 'signatures' => array($signature)
595 );
596
597 // encrypted with both first-keypair@example.com and
598 // no-passhprase@example.com, signed with first-keypair@example.com
599 // {{{ dual encrypted, signed data
600 $encryptedData = <<<TEXT
601 -----BEGIN PGP MESSAGE-----
602 Version: GnuPG v1.4.9 (GNU/Linux)
603
604 hQIOA5+T+RFnKO8SEAgA7zHd9KH/C2GCM9H7pdMS76PXGfmhGPyQAtokBQgF8G1/
605 orldCnTUnxmZejbOwYhYVEh5zlnYshlCpUSsGBw+sH7XiC8eorCD0YJj5NDBp8W6
606 VtvGkMqqG9tDJk6TfKornFl+H7xpiwXox5T/swnpJcJ6qaTXBtLb7HViiwTTu5Zk
607 QbWqSvIOigIkiuTnv898/eeEIh9gg6ScRVZOyZ7P2usDaOWqVVNJmkaLIaWxOYck
608 Go3hnYAhkfjpMcgAMkqtXPWIS8OrfY8wOXxXNA4EjvrHs+5/yHbZmj/5bBA9CuGJ
609 UctQqF9ZtZsagSpK0WTJCt4RkX3jKqK9tJVQzBuKZgf/Up3Zi6Lfg6iINm4qsd1h
610 Dusuuxw0vgGoMc6P7QOMFmeSs3g/yYQKaHomWqEVg0LpC2FHOqceqZRZJd4XMcsz
611 uCF95lx7Tm1ozgEhBgQNSQVoAA5/MYXlKo3YQGEIyU9Gx4f2v/8XV3umYXjGfJY9
612 adBHLIvPFeeze1/f11ztZsgLr3DBP01/O6qLi91dwsqpzQXzjurVYIHJdCD+JviZ
613 2CjwkcpUTHx5vXNiobMcBjtogjP7d4W8DJ0La5+WVujV0nxHiE9mEXuct8TajCY6
614 /40UIdtHEPWc08ccXXjQaFKbJxYGDMOJzQ8LPdHqa3RubmMADqzH4W3/SSmRsibd
615 4YUCDgMkvzgHAMFLTxAH/R3ryj2BUP6C/aYfgGqi+FOVoHVR5kiz6Z2nBEKqntwZ
616 njdKD+pvuw9fxaNhNNZy3UlKnIdonNb/A3upEeR81opP+HWCgXUlcgucQ7VXiUPd
617 mnQAR+cTrFgTXf+B54VHwDED5RVDm4/e29casiNyULm6xWFYqfJMGBvEGrflq1BW
618 QSYlpc0ijqkER+VNy49Dy/qY1TRUBZ84+RmL2L/18zQbdekMoLUDxJOEoo0C65ER
619 5ReLlFN2nI0MC8O5ZU8PfjDXXQ7qnQhz/2kxorNiQl654V7ZsEWkVLF9yejZXSzU
620 ynWANJdCnWLMjOnrQPm1+b2Yi8pcgtpIPsBdTIHn4fAH/iW0Uxltx9ZrV7kvrDDj
621 Izc4/ocn3Z0c/47Rv62MTYcxVYzFdP+WxisMI2LV88g1Zu9rOKR1k7UkNGNlfklS
622 5CSApTnm3MC9/w54dacPohZ7SrQlTSHJxfRINH7H3DOuaH9awf+ntwUks73mXjT5
623 ikSJ2D05Kbf8++jLhRRKLPZS8bOmSw2KTaCbtk7LX4pEIu9d6kig6g8Wj3h9dlQs
624 QXCKL14/8cSGrxXXWHOuL9abnxZTwenbn5B5FqBPoiRKqSFToiLd/pBWjG/aieju
625 Rm+Uyyddl+ISJUnv0AAiOxfifJmTdUsT5LZLkYG4CUyX2T3JiZ2L4msF4S3U70wp
626 PtbSqAG3xVRFlZY2jLeW8btez7XkzB9fhvVd1Hee6EXRnF5/BcLkqy8sYvx1MHkT
627 eMzttOs1NRrjXy4+zUqo//59gQ46zwYd0NA/Ga6pl1kn8+xM76DCcI4LhdZN75rR
628 ZUcyEqBKX9RNefMD7cR6kYoljGfnT3Mjd+0eTdF/Glk0ElVjbMtQclG0o/7wlI7m
629 +b2E6/e0qZedOCq48+mIRv0tjRuoFiydM88aGg==
630 =IgJ0
631 -----END PGP MESSAGE-----
632
633 TEXT;
634 // }}}
635
636 // decrypt with no passphrase
637 $results = $this->gpg->decryptAndVerify($encryptedData);
638 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
639
640 // decrypt with first key
641 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
642 $results = $this->gpg->decryptAndVerify($encryptedData);
643 $this->gpg->clearDecryptKeys();
644 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
645 }
646
647 // }}}
648 // {{{ testDecryptAndVerifyDualNoPassphraseKeyMissing()
649
650 /**
651 * @expectedException Crypt_GPG_BadPassphraseException
652 *
653 * @group string
654 */
655 public function testDecryptAndVerifyDualNoPassphraseKeyMissing()
656 {
657 // encrypted with both first-keypair@example.com and
658 // second-keypair@example.com
659 // {{{ dual encrypted data
660 $encryptedData = <<<TEXT
661 -----BEGIN PGP MESSAGE-----
662 Version: GnuPG v1.4.6 (GNU/Linux)
663
664 hQIOA5+T+RFnKO8SEAf7BO/zLK6gDt5epMOEnHc9ESdSTy8yExdoSxHhvTFxWfwi
665 AwMtBEur8sotSVt+Q87xYzjzE77+FQYS9oYCivlK/Nedblj3MiRuUWhM+Q9tbP3b
666 KbwEwaQlrpNphQsKZOWkliZWmFJWnQ1s1Pm6lPlhwTNhcwkapm8EXuWFExJnY9yW
667 EZjUOhVmnkitKykKup8Brvfm2QpGXoFZtHFKXTi162Lue9N0tDm6s3JnCIhMFQgI
668 fyAikcsJKpbUgeGmzlWJO8QkH81QMuKpqfUb8R1dswhDp6RKXhoXS43zkhH8QSbM
669 Cp9AWdv3qsWBUqzWavCxjtIsogYO+gFLl/Vuw5Y87Af/b7OQgLP1v6xKZcrTvFCF
670 hxGxn+5M8E2GyJaKpQ1GZ+Wv+IzPGetm7rWf6q71hchAkxFMczIPSK7aARm9CNVo
671 7tCdcUmUTgLhG1/0OfmkbwJUjdSpOtz8+TvIZa20Jj9a1G8WT3KTeivKMqBPhgk4
672 sD7OJPDCYQNSQEw6pAn4oBrhJlDUkpCK6wIbUhzeq3MUwtM1e+qpCr/k4In4NVq6
673 cmoC7W//9J69ecuxmiUHRhZ4CALRxQMAsSxMRnNJ26JY4ko82Rfvbrz8QEmKcIyT
674 bTdAMsZ18m9XXrnc2ACDDMQyUkneQDUZSt7V67ZiN4Upi295CynIbNEMmcH/13Aa
675 aoUCDgOy9U5HV+IkUBAIALGICOFzyfquWZ0ZhPGVdDWx1yNcApnzIgZx1JbBpMyc
676 2jb9aQHwGId26gv/ym/M/3FJ0lv+IAcktMjO4dwYLnUuBa6BOFFybZi3gYvXtSuy
677 iW4ygVjIsYixhvbsyaVCoB/MsNBFrQAHEShaxALBkI/dv+yyD8BifU4Yj9LFcAZO
678 mFDraOgYfHsur5eevYTXozf5wU7phu9v6zo5bk8zgZSqs8AgyscstZWCqCtR/cG0
679 t9lAIovGPsIcA12qvkm/A0WiBMEWhGryzHTv9oRsFztOFtqH+MmLdlvWjElw8hKt
680 fFJB+bhHNO9BUIrwnuH79cA4aXOy1+xG+ECs7oJbcisIANqJKalQLgBYEjbucpDg
681 O8i/c4RmV9J7VczpZp7ZREMpTmv9nV849OFXT1strsb/+vXOXOyLToG1gOxRfJr2
682 q9jFjpyMAtrr/aHhXMKK1OMhhcdkQMEKuHTvon5KleZOQoVmIqa3kUtWNW1vFBIP
683 UfJFH202EJLOLC25rXCtzRsJE0HWiYDyLqKMQcSQhTcngLBLmeDLH3DeGUIDwcZe
684 oWgUg8wB/oSoU4AchShzO+yM6bcmffcaHFqwll9gdu9walnJAAOb8+r6LGGlsGTV
685 qhnR0LM3Khp+HOFdaxcQT6BV1aw/D6Z5hIi+Am0VTi0HlFr/gwleyYaP+742Z6K0
686 s8bSVgFT2Pjik+byARWzRwWjmi0jT7QsgITM73aBKPDXiArEPkv8YtC9HzUj0lCY
687 gX7Eg2ZqISULFydBckMJ6drojMMQiqZBeEc09GupSBL1zldnKHfiXBTw
688 =QYjj
689 -----END PGP MESSAGE-----
690
691 TEXT;
692 // }}}
693
694 // #21148: Make sure that proper exception is thrown
695 // when decrypting without specyfying a passphrase
696
697 // in this case we remove one of private keys to make
698 // sure proper exception is thrown also in this case
699 $this->gpg->deletePrivateKey('first-keypair@example.com');
700
701 $this->gpg->decryptAndVerify($encryptedData);
702 }
703
704 // }}}
705 // {{{ testDecryptVerifyDualSignatories()
706
707 /**
708 * @group string
709 */
710 public function testDecryptVerifyDualSignatories()
711 {
712 // {{{ signature1
713 $signature1 = new Crypt_GPG_Signature();
714 $signature1->setId('7PujVkx4qk28IejcD6BirrwBmRE');
715 $signature1->setKeyFingerprint(
716 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
717
718 $signature1->setKeyId('C097D9EC94C06363');
719 $signature1->setCreationDate(1258956025);
720 $signature1->setExpirationDate(0);
721 $signature1->setValid(true);
722
723 $userId1 = new Crypt_GPG_UserId();
724 $userId1->setName('First Keypair Test Key');
725 $userId1->setComment('do not encrypt important data with this key');
726 $userId1->setEmail('first-keypair@example.com');
727 $signature1->setUserId($userId1);
728 // }}}
729 // {{{ signature2
730 $signature2 = new Crypt_GPG_Signature();
731 $signature2->setId('AhrDdkdcBsEsOSQOYENhl5C7auc');
732 $signature2->setKeyFingerprint(
733 '880922DBEA733E906693E4A903CC890AFA1DAD4B');
734
735 $signature2->setKeyId('03CC890AFA1DAD4B');
736 $signature2->setCreationDate(1258956025);
737 $signature2->setExpirationDate(0);
738 $signature2->setValid(true);
739
740 $userId2 = new Crypt_GPG_UserId();
741 $userId2->setName('Second Keypair Test Key');
742 $userId2->setComment('do not encrypt important data with this key');
743 $userId2->setEmail('second-keypair@example.com');
744 $signature2->setUserId($userId2);
745 // }}}
746
747 $expectedResults = array(
748 'data' => 'Hello, Alice! Goodbye, Bob!',
749 'signatures' => array($signature1, $signature2)
750 );
751
752 // encrypted with first-keypair@example.com and signed with
753 // first-keypair@example.com and second-keypair@example.com
754 // {{{ encrypted, dual signed data
755 $encryptedData = <<<TEXT
756 -----BEGIN PGP MESSAGE-----
757 Version: GnuPG v1.4.9 (GNU/Linux)
758
759 hQIOA5+T+RFnKO8SEAgAzllqH/z2ThJcXteCxPJu97EmMpqdipbcSUAjGZJ5hQFe
760 YlKbrxL30W6VYgZIPqP5FubZkI8WHWqDZwbtphk5l+o8nfyNV4el/JHHEmf/mzIM
761 UmBXJFVa6g9CmS/SdhYhO/ovMeBsNVA1+Er+Cdyh9sTpX89I3zlehgwcXtv/di6W
762 fjzeg5Na/39KfYWEyXPB5EUkWG4hmnGo63GPUEsxfNXbKDafUtTwOFop+1+wMVyA
763 kJbOEaaiTSzvbpa+ruRisv34a6vX8u6QGqPSZ43vgmKeWfPEBS8p7bdRFGECLNvP
764 gK4tIwlBI0o13JJ/lnjL6dR2f7qls/0dxBGxhjFpjAf/bn5d8r7e2N1yJqh1C5T0
765 /n/ngN1bHDsQhrAPMJfJre7qJxZEiHa8dfagdDU6I/EC4w1ouUYKWrzf9sPKTxs+
766 QosiqrGKYUO1V46EzRXc72PZBKf5CZBBvRZv3GzzcVtroViiIshyAp3TBPk2GC+N
767 ilmEm72CWgQHKqg4vX1hbTCbOEu/YDmjF9Vb9a/zT5RAKDjBrcc9tkPdVMfDfI2Y
768 Ly6CvL2DSvBUNbAShl2TXdTdylYbopyiFhOBvJoeidFVwIFX303nFUBMUfbCT6WK
769 MGZGzXrNZlRyKfH9UCj+5pxom2TMpu+URfvXtByUGfNst+ZRi+ADOnbc51canwWc
770 M9LAKgG6SF2OhrDTTe+KASz3dFbpD4xnczl+686GGT76W55YKQNDff72bhx8lBnP
771 XiM+CsWGPLZdoOCQU+SEWD7lJ1I6fB+l/oFWC2PVlDjrCS1Nn/L9i5p+EqNzcUVB
772 JR62EaLPsOFOfNeHhltuz2aYkvQT4sDPeKkpBKJDp2ejMy3V9ZXia1D2ZTCfMp+J
773 GEu2SS68qlZV12gpSwY8BpS/nirx5aUQ9VhjlSN3GHF/r6j91VsHJhmU+nmWPWaF
774 mHfMGHS5sw6+gz3SyW6b4TlUnnx412nhFinanxBlwkuAcukgL8k+OesoDX2a1Q==
775 =TW+z
776 -----END PGP MESSAGE-----
777
778 TEXT;
779 // }}}
780
781 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
782 $results = $this->gpg->decryptAndVerify($encryptedData);
783 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
784 }
785
786 // }}}
787 // {{{ testDecryptVerifySignedOnly()
788
789 /**
790 * @group string
791 */
792 public function testDecryptVerifySignedOnly()
793 {
794 // {{{ signature
795 $signature = new Crypt_GPG_Signature();
796 $signature->setId('LS9EdhGLaEUllGk3Snc0Bk+Cn3E');
797 $signature->setKeyFingerprint(
798 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
799
800 $signature->setKeyId('C097D9EC94C06363');
801 $signature->setCreationDate(1258956761);
802 $signature->setExpirationDate(0);
803 $signature->setValid(true);
804
805 $userId = new Crypt_GPG_UserId();
806 $userId->setName('First Keypair Test Key');
807 $userId->setComment('do not encrypt important data with this key');
808 $userId->setEmail('first-keypair@example.com');
809 $signature->setUserId($userId);
810 // }}}
811
812 $expectedResults = array(
813 'data' => 'Hello, Alice! Goodbye, Bob!',
814 'signatures' => array($signature)
815 );
816
817 // signed with first-keypair@example.com
818 // {{{ signed data
819 $signedData = <<<TEXT
820 -----BEGIN PGP MESSAGE-----
821 Version: GnuPG v1.4.9 (GNU/Linux)
822
823 owGbwMvMwCR4YPrNN1MOJCcznlZMYvDmUr/pkZqTk6+j4JiTmZyqqOCen5+SVJmq
824 o+CUn6TY4cbCIMjEwMbKBFLIwMUpANNttphhwWm3a/VsLcc+u0x4/Xtyuk/Xiqd3
825 ZzMsuHZrvkPCHgUTgcXFLt6GVRlPYvT5AQ==
826 =ehgC
827 -----END PGP MESSAGE-----
828
829 TEXT;
830 // }}}
831
832 $results = $this->gpg->decryptAndVerify($signedData);
833 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
834 }
835
836 // }}}
837 // {{{ testDecryptVerifyFirstSubKey()
838
839 /**
840 * @group string
841 */
842 public function testDecryptVerifyFirstSubKey()
843 {
844 // {{{ signature
845 $signature = new Crypt_GPG_Signature();
846 $signature->setId('YUeHL9fEAK4hMokvXsNgUP5vaJ8');
847 $signature->setKeyFingerprint(
848 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
849
850 $signature->setKeyId('C097D9EC94C06363');
851 $signature->setCreationDate(1267228319);
852 $signature->setExpirationDate(0);
853 $signature->setValid(true);
854
855 $userId = new Crypt_GPG_UserId();
856 $userId->setName('First Keypair Test Key');
857 $userId->setComment('do not encrypt important data with this key');
858 $userId->setEmail('first-keypair@example.com');
859 $signature->setUserId($userId);
860 // }}}
861
862 $expectedResults = array(
863 'data' => 'Hello, Alice! Goodbye, Bob!',
864 'signatures' => array($signature)
865 );
866
867 // encrypted with first subkey (ELG-E) of multiple-subkeys@example.com,
868 // signed with first-keypair@example.com
869 // {{{ encrypted data
870 $encryptedData = <<<TEXT
871 -----BEGIN PGP MESSAGE-----
872 Version: GnuPG v1.4.9 (GNU/Linux)
873
874 hQEMAykh4NP/Ww9KAQgAhB2Ww2jNhy9ISQ/+S52eROzbN8ij65GoL9tTHK5TZp82
875 mv+ieGwobe5PGYdBEvQdsSrKyF3x25oaEyjaOa+39DtmF82OZKZ3tIO3EJ1qvn8q
876 SHxwiKYa4MOgwER9pT7i/YZOZuIdII/NeuVuGxbsa5qdISltKkE7WS7yWStcDJi1
877 goaPx3G1cZIVnTgSncK1YE4j2TZXBxI/zuuuH0pbZk7rK+K9zIeyYD1YZFagrjJh
878 REN5QbnT1v+1HXno1WRp4Obo072i3FjF505U1XLQ5p2/d55m73jfBJoqpb2NExdU
879 KimXnQZ+8/8ddzL3ZP4+g982dmLFvl2/h7KGtPOMbdKoAeMQYVolMDoQp6+nyQHP
880 CgpeFJY5+VnxNq1wEgJgXTo79xohN59wwad1ltcUGAVC49RMHbX+xBjR/HPCG9yt
881 QTwMes514uPYbNL6cGoKm7dt/zQL8YsjvfswGE06bj/rU3JCTDnR+iOUDHzUMDEn
882 jH7Vbs+9D1E9t5bSJs/8e7rzhZKF1AhunUdDmc4vPPJMV8xKF+o3h3nKQ6wEoOMz
883 f6XGFW8cvNAl
884 =vSGT
885 -----END PGP MESSAGE-----
886
887 TEXT;
888 // }}}
889
890 $this->gpg->addDecryptKey('multiple-subkeys@example.com', 'test');
891 $results = $this->gpg->decryptAndVerify($encryptedData);
892 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
893 }
894
895 // }}}
896 // {{{ testDecryptVerifySecondSubKey()
897
898 /**
899 * @group string
900 */
901 public function testDecryptVerifySecondSubKey()
902 {
903 // {{{ signature
904 $signature = new Crypt_GPG_Signature();
905 $signature->setId('ZLZFDxxO+zdCEklUu6eppBCPCsA');
906 $signature->setKeyFingerprint(
907 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
908
909 $signature->setKeyId('C097D9EC94C06363');
910 $signature->setCreationDate(1267229043);
911 $signature->setExpirationDate(0);
912 $signature->setValid(true);
913
914 $userId = new Crypt_GPG_UserId();
915 $userId->setName('First Keypair Test Key');
916 $userId->setComment('do not encrypt important data with this key');
917 $userId->setEmail('first-keypair@example.com');
918 $signature->setUserId($userId);
919 // }}}
920
921 $expectedResults = array(
922 'data' => 'Hello, Alice! Goodbye, Bob!',
923 'signatures' => array($signature)
924 );
925
926 // encrypted with second subkey (RSA) of multiple-subkeys@example.com,
927 // signed with first-keypair@example.com
928 // {{{ encrypted data
929 $encryptedData = <<<TEXT
930 -----BEGIN PGP MESSAGE-----
931 Version: GnuPG v1.4.9 (GNU/Linux)
932
933 hQEMAykh4NP/Ww9KAQgAs1xviSlaTTGXWNzT43giUSf7SnYoeoyYqZt/eo7c9eHu
934 sLGdhhpQeUiU5vW6UsOvs3QLx3hR9wYunUOKmDJmrrtVglsZIjuHU7oYlveozYwG
935 wlHNbesQlWyMNSQPDeGWAQAnOUU2jv/9nb93SLYlkDKr1qjn9qjZ4Kl2q1Yi4PSu
936 LaqI3r1LdJbFmEB6vQ8o6GiIpaFaZapK6vloPoq5xbaALAfAiSg58+IwV/Mn190L
937 T0tmFCUuTm/Px8fv5xe+mPW2pMUovhJhBrhBopEcWNHpxuNbxwac1T54COZxjC8W
938 L0XpYW7c3XVdO6VqS4pSnz+zo5EYcU2Sk6mfpN5ki9KoAdPZ4ICMe0OWIjMxgApI
939 AVHaKowZ6+xSW8vLRzWjJTZrlEoMjwJSOJwCsMcsu6MwJOFcVEl4Mc3TiAMsUHWf
940 6f/pHb7W2Am12CfJaaU0+nDQrlKOw5DfQG5YEG/LrpjXGugVWMQH/31MMKawSAP3
941 QgdXe417ZeMtsHVaz/W1Za5ZpRpcwoT5N31LfNV+SoIpajhmtr79aeg8d6OH8H+l
942 7kLEDVlh9DP0
943 =I21n
944 -----END PGP MESSAGE-----
945
946 TEXT;
947 // }}}
948
949 $this->gpg->addDecryptKey('multiple-subkeys@example.com', 'test');
950 $results = $this->gpg->decryptAndVerify($encryptedData);
951 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
952 }
953
954 // }}}
955 // {{{ testDecryptVerifySignedOnlyBadSignature()
956
957 /**
958 * @group string
959 */
960 public function testDecryptVerifySignedOnlyBadSignature()
961 {
962 // {{{ signature
963 $signature = new Crypt_GPG_Signature();
964 $signature->setValid(false);
965 $signature->setKeyId('C097D9EC94C06363');
966 $userId = new Crypt_GPG_UserId();
967 $userId->setName('First Keypair Test Key');
968 $userId->setComment('do not encrypt important data with this key');
969 $userId->setEmail('first-keypair@example.com');
970 $signature->setUserId($userId);
971 // }}}
972
973 $expectedResults = array(
974 'data' => "Hello, Bob! Goodbye, Alice!\n",
975 'signatures' => array($signature)
976 );
977
978 // {{{ clearsigned data
979 $clearsignedData = <<<TEXT
980 -----BEGIN PGP SIGNED MESSAGE-----
981 Hash: SHA1
982
983 Hello, Bob! Goodbye, Alice!
984 -----BEGIN PGP SIGNATURE-----
985 Version: GnuPG v1.4.6 (GNU/Linux)
986
987 iD8DBQFI0vkCwJfZ7JTAY2MRAgzTAKCRecYZsCS+PE46Fa2QLTEP8XGLwwCfQEAL
988 qO+KlKcldtYdMZH9AA+KOLQ=
989 =EO2G
990 -----END PGP SIGNATURE-----
991
992 TEXT;
993 // }}}
994
995 $results = $this->gpg->decryptAndVerify($clearsignedData);
996 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
997 }
998
999 // }}}
1000 // {{{ testDecryptVerifyFile()
1001
1002 /**
1003 * @group file
1004 */
1005 public function testDecryptVerifyFile()
1006 {
1007 // {{{ signature
1008 $signature = new Crypt_GPG_Signature();
1009 $signature->setId('kVwy2yYB0TlXyGd9FUvVYp5jCoI');
1010 $signature->setKeyFingerprint(
1011 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1012
1013 $signature->setKeyId('C097D9EC94C06363');
1014 $signature->setCreationDate(1258220197);
1015 $signature->setExpirationDate(0);
1016 $signature->setValid(true);
1017
1018 $userId = new Crypt_GPG_UserId();
1019 $userId->setName('First Keypair Test Key');
1020 $userId->setComment('do not encrypt important data with this key');
1021 $userId->setEmail('first-keypair@example.com');
1022 $signature->setUserId($userId);
1023 // }}}
1024
1025 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
1026 $expectedResults = array(
1027 'data' => null,
1028 'signatures' => array($signature)
1029 );
1030
1031 $inputFilename = $this->getDataFilename('testDecryptVerifyFile.asc');
1032 $outputFilename = $this->getTempFilename('testDecryptVerifyFile.plain');
1033
1034 // file is encrypted with first-keypair@example.com
1035 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
1036 $results = $this->gpg->decryptAndVerifyFile(
1037 $inputFilename,
1038 $outputFilename
1039 );
1040
1041 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1042
1043 $md5Sum = $this->getMd5Sum($outputFilename);
1044 $this->assertEquals($expectedMd5Sum, $md5Sum);
1045 }
1046
1047 // }}}
1048 // {{{ testDecryptVerifyFileToString()
1049
1050 /**
1051 * @group file
1052 */
1053 public function testDecryptVerifyFileToString()
1054 {
1055 // {{{ signature
1056 $signature = new Crypt_GPG_Signature();
1057 $signature->setId('GTvYFmQ5yfMM/UOffkYCx21Se2M');
1058 $signature->setKeyFingerprint(
1059 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1060
1061 $signature->setKeyId('C097D9EC94C06363');
1062 $signature->setCreationDate(1258221035);
1063 $signature->setExpirationDate(0);
1064 $signature->setValid(true);
1065
1066 $userId = new Crypt_GPG_UserId();
1067 $userId->setName('First Keypair Test Key');
1068 $userId->setComment('do not encrypt important data with this key');
1069 $userId->setEmail('first-keypair@example.com');
1070 $signature->setUserId($userId);
1071 // }}}
1072
1073 $expectedSignatures = array($signature);
1074 $expectedResults = array(
1075 'data' => 'Hello, Alice! Goodbye, Bob!',
1076 'signatures' => $expectedSignatures
1077 );
1078
1079 $inputFilename = $this->getDataFilename(
1080 'testDecryptVerifyFileToString.asc'
1081 );
1082
1083 // file is encrypted with first-keypair@example.com
1084 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
1085 $results = $this->gpg->decryptAndVerifyFile($inputFilename);
1086
1087 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1088 }
1089
1090 // }}}
1091 // {{{ testDecryptVerifyFileNoPassphrase()
1092
1093 /**
1094 * @group file
1095 */
1096 public function testDecryptVerifyFileNoPassphrase()
1097 {
1098 // {{{ signature
1099 $signature = new Crypt_GPG_Signature();
1100 $signature->setId('unMY9l/f9sFaMvMV0H1ZuNJRY6Q');
1101 $signature->setKeyFingerprint(
1102 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1103
1104 $signature->setKeyId('C097D9EC94C06363');
1105 $signature->setCreationDate(1258220226);
1106 $signature->setExpirationDate(0);
1107 $signature->setValid(true);
1108
1109 $userId = new Crypt_GPG_UserId();
1110 $userId->setName('First Keypair Test Key');
1111 $userId->setComment('do not encrypt important data with this key');
1112 $userId->setEmail('first-keypair@example.com');
1113 $signature->setUserId($userId);
1114 // }}}
1115
1116 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
1117 $expectedResults = array(
1118 'data' => null,
1119 'signatures' => array($signature)
1120 );
1121
1122 $inputFilename = $this->getDataFilename(
1123 'testDecryptVerifyFileNoPassphrase.asc'
1124 );
1125 $outputFilename = $this->getTempFilename(
1126 'testDecryptVerifyFileNoPassphrase.plain'
1127 );
1128
1129 // file is encrypted with no-passphrase@example.com
1130 $results = $this->gpg->decryptAndVerifyFile(
1131 $inputFilename,
1132 $outputFilename
1133 );
1134
1135 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1136
1137 $md5Sum = $this->getMd5Sum($outputFilename);
1138 $this->assertEquals($expectedMd5Sum, $md5Sum);
1139 }
1140
1141 // }}}
1142 // {{{ testDecryptVerifyFileFileException_input()
1143
1144 /**
1145 * @expectedException Crypt_GPG_FileException
1146 *
1147 * @group file
1148 */
1149 public function testDecryptVerifyFileFileException_input()
1150 {
1151 // input file does not exist
1152 $inputFilename = $this->getDataFilename(
1153 'testDecryptVerifyFileFileException_input.asc'
1154 );
1155
1156 $this->gpg->decryptAndVerifyFile($inputFilename);
1157 }
1158
1159 // }}}
1160 // {{{ testDecryptVerifyFileFileException_output()
1161
1162 /**
1163 * @expectedException Crypt_GPG_FileException
1164 *
1165 * @group file
1166 */
1167 public function testDecryptVerifyFileFileException_output()
1168 {
1169 // input file is encrypted with first-keypair@example.com
1170 // output file does not exist
1171 $inputFilename = $this->getDataFilename('testDecryptVerifyFile.asc');
1172 $outputFilename = './non-existent' .
1173 '/testDecryptVerifyFileFileException_output.plain';
1174
1175 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
1176 $this->gpg->decryptAndVerifyFile($inputFilename, $outputFilename);
1177 }
1178
1179 // }}}
1180 // {{{ testDecryptVerifyFileKeyNotFoundException_decrypt()
1181
1182 /**
1183 * @expectedException Crypt_GPG_KeyNotFoundException
1184 *
1185 * @group file
1186 */
1187 public function testDecryptVerifyFileKeyNotFoundException_decrypt()
1188 {
1189 // file is encrypted with missing-key@example.com, not signed
1190 $inputFilename = $this->getDataFilename(
1191 'testDecryptFileKeyNotFoundException.asc'
1192 );
1193
1194 $outputFilename = $this->getTempFilename(
1195 'testDecryptVerifyFileKeyNotFoundException.plain'
1196 );
1197
1198 $this->gpg->decryptAndVerifyFile($inputFilename, $outputFilename);
1199 }
1200
1201 // }}}
1202 // {{{ testDecryptVerifyFileDual()
1203
1204 /**
1205 * @group file
1206 */
1207 public function testDecryptVerifyFileDual()
1208 {
1209 // {{{ signature
1210 $signature = new Crypt_GPG_Signature();
1211 $signature->setId('7TYk0hpio90QZHHHb4UtgCWAEq4');
1212 $signature->setKeyFingerprint(
1213 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1214
1215 $signature->setKeyId('C097D9EC94C06363');
1216 $signature->setCreationDate(1258220362);
1217 $signature->setExpirationDate(0);
1218 $signature->setValid(true);
1219
1220 $userId = new Crypt_GPG_UserId();
1221 $userId->setName('First Keypair Test Key');
1222 $userId->setComment('do not encrypt important data with this key');
1223 $userId->setEmail('first-keypair@example.com');
1224 $signature->setUserId($userId);
1225 // }}}
1226
1227 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
1228 $expectedResults = array(
1229 'data' => null,
1230 'signatures' => array($signature)
1231 );
1232
1233 $inputFilename = $this->getDataFilename(
1234 'testDecryptVerifyFileDual.asc'
1235 );
1236 $outputFilename = $this->getTempFilename(
1237 'testDecryptVerifyFileDual.plain'
1238 );
1239
1240 // decrypt with first key
1241 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
1242 $results = $this->gpg->decryptAndVerifyFile(
1243 $inputFilename,
1244 $outputFilename
1245 );
1246 $this->gpg->clearDecryptKeys();
1247 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1248 $md5Sum = $this->getMd5Sum($outputFilename);
1249 $this->assertEquals($expectedMd5Sum, $md5Sum);
1250
1251 // decrypt with second key
1252 $this->gpg->addDecryptKey('second-keypair@example.com', 'test2');
1253 $results = $this->gpg->decryptAndVerifyFile(
1254 $inputFilename,
1255 $outputFilename
1256 );
1257 $this->gpg->clearDecryptKeys();
1258 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1259 $md5Sum = $this->getMd5Sum($outputFilename);
1260 $this->assertEquals($expectedMd5Sum, $md5Sum);
1261 }
1262
1263 // }}}
1264 // {{{ testDecryptVerifyFileDualSignatories()
1265
1266 /**
1267 * @group file
1268 */
1269 public function testDecryptVerifyFileDualSignatories()
1270 {
1271 // {{{ signature1
1272 $signature1 = new Crypt_GPG_Signature();
1273 $signature1->setId('MF8xqL325bs7KiokMHTnHirF4go');
1274 $signature1->setKeyFingerprint(
1275 '880922DBEA733E906693E4A903CC890AFA1DAD4B');
1276
1277 $signature1->setKeyId('03CC890AFA1DAD4B');
1278 $signature1->setCreationDate(1258220269);
1279 $signature1->setExpirationDate(0);
1280 $signature1->setValid(true);
1281
1282 $userId1 = new Crypt_GPG_UserId();
1283 $userId1->setName('Second Keypair Test Key');
1284 $userId1->setComment('do not encrypt important data with this key');
1285 $userId1->setEmail('second-keypair@example.com');
1286 $signature1->setUserId($userId1);
1287 // }}}
1288 // {{{ signature2
1289 $signature2 = new Crypt_GPG_Signature();
1290 $signature2->setId('d0q7jibZpJSLpGAhNWhpSkZZeUg');
1291 $signature2->setKeyFingerprint(
1292 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1293
1294 $signature2->setKeyId('C097D9EC94C06363');
1295 $signature2->setCreationDate(1258220269);
1296 $signature2->setExpirationDate(0);
1297 $signature2->setValid(true);
1298
1299 $userId2 = new Crypt_GPG_UserId();
1300 $userId2->setName('First Keypair Test Key');
1301 $userId2->setComment('do not encrypt important data with this key');
1302 $userId2->setEmail('first-keypair@example.com');
1303 $signature2->setUserId($userId2);
1304 // }}}
1305
1306 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
1307 $expectedResults = array(
1308 'data' => null,
1309 'signatures' => array($signature1, $signature2)
1310 );
1311
1312 $inputFilename = $this->getDataFilename(
1313 'testDecryptVerifyFileDualSignatories.asc'
1314 );
1315 $outputFilename = $this->getTempFilename(
1316 'testDecryptVerifyFileDualSignatories.plain'
1317 );
1318
1319 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
1320 $results = $this->gpg->decryptAndVerifyFile(
1321 $inputFilename,
1322 $outputFilename
1323 );
1324 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1325 $md5Sum = $this->getMd5Sum($outputFilename);
1326 $this->assertEquals($expectedMd5Sum, $md5Sum);
1327 }
1328
1329 // }}}
1330 // {{{ testDecryptVerifyFileDualOnePassphrase()
1331
1332 /**
1333 * @group file
1334 */
1335 public function testDecryptVerifyFileDualOnePassphrase()
1336 {
1337 // {{{ signature
1338 $signature = new Crypt_GPG_Signature();
1339 $signature->setId('kgyLjfFigxOrliyc8XlS6NaLJuw');
1340 $signature->setKeyFingerprint(
1341 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1342
1343 $signature->setKeyId('C097D9EC94C06363');
1344 $signature->setCreationDate(1258220334);
1345 $signature->setExpirationDate(0);
1346 $signature->setValid(true);
1347
1348 $userId = new Crypt_GPG_UserId();
1349 $userId->setName('First Keypair Test Key');
1350 $userId->setComment('do not encrypt important data with this key');
1351 $userId->setEmail('first-keypair@example.com');
1352 $signature->setUserId($userId);
1353 // }}}
1354
1355 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
1356 $expectedResults = array(
1357 'data' => null,
1358 'signatures' => array($signature)
1359 );
1360
1361 $inputFilename = $this->getDataFilename(
1362 'testDecryptVerifyFileDualOnePassphrase.asc'
1363 );
1364 $outputFilename = $this->getTempFilename(
1365 'testDecryptVerifyFileDualOnePassphrase.plain'
1366 );
1367
1368 // decrypt with no-passphrase
1369 $results = $this->gpg->decryptAndVerifyFile(
1370 $inputFilename,
1371 $outputFilename
1372 );
1373 $this->gpg->clearDecryptKeys();
1374 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1375 $md5Sum = $this->getMd5Sum($outputFilename);
1376 $this->assertEquals($expectedMd5Sum, $md5Sum);
1377
1378 // decrypt with second key
1379 $this->gpg->addDecryptKey('first-keypair@example.com', 'test1');
1380 $results = $this->gpg->decryptAndVerifyFile(
1381 $inputFilename,
1382 $outputFilename
1383 );
1384 $this->gpg->clearDecryptKeys();
1385 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1386 $md5Sum = $this->getMd5Sum($outputFilename);
1387 $this->assertEquals($expectedMd5Sum, $md5Sum);
1388 }
1389
1390 // }}}
1391 // {{{ testDecryptVerifyFileNoDataException()
1392
1393 /**
1394 * @expectedException Crypt_GPG_NoDataException
1395 *
1396 * @group file
1397 */
1398 public function testDecryptVerifyFileNoDataException()
1399 {
1400 $filename = $this->getDataFilename('testFileEmpty.plain');
1401 $this->gpg->decryptAndVerifyFile($filename);
1402 }
1403
1404 // }}}
1405 // {{{ testDecryptVerifyFileSignedOnly()
1406
1407 /**
1408 * @group file
1409 */
1410 public function testDecryptVerifyFileSignedOnly()
1411 {
1412 // {{{ signature
1413 $signature = new Crypt_GPG_Signature();
1414 $signature->setId('vctnI/HnsRYmqcVwCJcJhS60lKU');
1415 $signature->setKeyFingerprint(
1416 '8D2299D9C5C211128B32BBB0C097D9EC94C06363');
1417
1418 $signature->setKeyId('C097D9EC94C06363');
1419 $signature->setCreationDate(1221960707);
1420 $signature->setExpirationDate(0);
1421 $signature->setValid(true);
1422
1423 $userId = new Crypt_GPG_UserId();
1424 $userId->setName('First Keypair Test Key');
1425 $userId->setComment('do not encrypt important data with this key');
1426 $userId->setEmail('first-keypair@example.com');
1427 $signature->setUserId($userId);
1428 // }}}
1429
1430 $expectedMd5Sum = 'f96267d87551ee09bfcac16921e351c1';
1431 $expectedResults = array(
1432 'data' => null,
1433 'signatures' => array($signature)
1434 );
1435
1436 $inputFilename = $this->getDataFilename(
1437 'testVerifyFileNormalSignedData.asc'
1438 );
1439
1440 $outputFilename = $this->getTempFilename(
1441 'testDecryptVerifyFileSignedData.plain'
1442 );
1443
1444 $results = $this->gpg->decryptAndVerifyFile(
1445 $inputFilename,
1446 $outputFilename
1447 );
1448
1449 $this->assertDecryptAndVerifyResultsEquals($expectedResults, $results);
1450
1451 $md5Sum = $this->getMd5Sum($outputFilename);
1452 $this->assertEquals($expectedMd5Sum, $md5Sum);
1453 }
1454
1455 // }}}
1456 }
1457
1458 ?>