0
|
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 ?>
|