0
|
1 <?php
|
|
2
|
|
3 /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
|
4
|
|
5 /**
|
|
6 * PHPUnit AllTests suite 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 * LICENSE:
|
|
14 *
|
|
15 * This library is free software; you can redistribute it and/or modify
|
|
16 * it under the terms of the GNU Lesser General Public License as
|
|
17 * published by the Free Software Foundation; either version 2.1 of the
|
|
18 * License, or (at your option) any later version.
|
|
19 *
|
|
20 * This library is distributed in the hope that it will be useful,
|
|
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
23 * Lesser General Public License for more details.
|
|
24 *
|
|
25 * You should have received a copy of the GNU Lesser General Public
|
|
26 * License along with this library; if not, see
|
|
27 * <http://www.gnu.org/licenses/>
|
|
28 *
|
|
29 * @category Encryption
|
|
30 * @package Crypt_GPG
|
|
31 * @author Michael Gauthier <mike@silverorange.com>
|
|
32 * @copyright 2005-2013 silverorange
|
|
33 * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
|
|
34 * @link http://pear.php.net/package/Crypt_GPG
|
|
35 */
|
|
36
|
|
37 /**
|
|
38 * The Crypt_GPG class to test
|
|
39 */
|
|
40 require_once 'Crypt/GPG.php';
|
|
41
|
|
42 /**
|
|
43 * Key class definition
|
|
44 */
|
|
45 require_once 'Crypt/GPG/Key.php';
|
|
46
|
|
47 /**
|
|
48 * Signature class definition
|
|
49 */
|
|
50 require_once 'Crypt/GPG/Signature.php';
|
|
51
|
|
52 /**
|
|
53 * Abstract base class for testing Crypt_GPG.
|
|
54 *
|
|
55 * Test keyring contains:
|
|
56 *
|
|
57 * 1) first-keypair@example.com - passphrase 'test1'
|
|
58 * A public-private key pair that can be used to both encrypt and decrypt.
|
|
59 *
|
|
60 * 2) second-keypair@example.com - passphrase 'test2'
|
|
61 * A public-private key pair that can be used to both encrypt and decrypt.
|
|
62 *
|
|
63 * 3) public-only@example.com - passphrase 'test'
|
|
64 * A public key with no private key. Used for testing private key import.
|
|
65 *
|
|
66 * 4) no-passphrase@example.com - no passphrase
|
|
67 * A public-private key pair that can be used to both encrypt and decrypt
|
|
68 * with no passphrase.
|
|
69 *
|
|
70 * 5) external-public@example.com - passphrase 'test'
|
|
71 * A public key that does not initially exist in the keyring that can be
|
|
72 * imported.
|
|
73 *
|
|
74 * 6) multiple-subkeys@example.com - passphrases 'test1' and 'test2'
|
|
75 * A public-private key pair that has multiple encrypting subkeys. The
|
|
76 * first subkey is an ELG-E key. The second is an RSA key.
|
|
77 */
|
|
78 abstract class Crypt_GPG_TestCase extends PHPUnit_Framework_TestCase
|
|
79 {
|
|
80 // {{{ class constants
|
|
81
|
|
82 const HOMEDIR = 'test-keychain';
|
|
83
|
|
84 const TEMPDIR = 'temp-files';
|
|
85
|
|
86 const DATADIR = 'data-files';
|
|
87
|
|
88 // }}}
|
|
89 // {{{ protected properties
|
|
90
|
|
91 protected $gpg;
|
|
92
|
|
93 // }}}
|
|
94 // {{{ getOptions()
|
|
95
|
|
96 protected function getOptions()
|
|
97 {
|
|
98 return array(
|
|
99 'homedir' => __DIR__ . '/' . self::HOMEDIR,
|
|
100 // 'binary' => '/usr/bin/gpg2',
|
|
101 // 'binary' => '/usr/local/bin/gpg2',
|
|
102 // 'agent' => '/usr/local/bin/gpg-agent',
|
|
103 // 'gpgconf' => '/usr/local/bin/gpgconf',
|
|
104 // 'cipher-algo' => 'AES256',
|
|
105 // 'digest-algo' => 'SHA512',
|
|
106 // 'debug' => true
|
|
107 );
|
|
108 }
|
|
109
|
|
110 // }}}
|
|
111
|
|
112 // set up
|
|
113 // {{{ setUp()
|
|
114
|
|
115 public function setUp()
|
|
116 {
|
|
117 // load test configuration file if it exists
|
|
118 $configFilename = __DIR__ . '/config.php';
|
|
119 if (file_exists($configFilename)) {
|
|
120 include $configFilename;
|
|
121
|
|
122 if ( !isset($GLOBALS['Crypt_GPG_Unittest_Config'])
|
|
123 || !is_array($GLOBALS['Crypt_GPG_Unittest_Config'])
|
|
124 ) {
|
|
125 $this->markTestSkipped(
|
|
126 'Unit test configuration is incorrect. Please read the '
|
|
127 . 'documentation in TestCase.php and fix the '
|
|
128 . 'configuration file. See the configuration in '
|
|
129 . '\'config.php.dist\' for an example.'
|
|
130 );
|
|
131 }
|
|
132
|
|
133 $this->config = $GLOBALS['Crypt_GPG_Unittest_Config'];
|
|
134 } else {
|
|
135 $this->config = array();
|
|
136 }
|
|
137
|
|
138 // default test config values
|
|
139 if (!isset($this->config['enable-key-generation'])) {
|
|
140 $this->config['enable-key-generation'] = false;
|
|
141 }
|
|
142
|
|
143 $this->_setUpKeyring();
|
|
144 $this->_setUpTempdir();
|
|
145
|
|
146 $this->gpg = new Crypt_GPG($this->getOptions());
|
|
147 }
|
|
148
|
|
149 // }}}
|
|
150 // {{{ _setUpKeyring()
|
|
151
|
|
152 private function _setUpKeyring()
|
|
153 {
|
|
154 // {{{ pubring data
|
|
155 $pubringData = <<<TEXT
|
|
156 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
|
|
246 w0XT86mhdeZzGqoCKIDiDi+Y/cCOsEaTLCQcRG7bVkf/SuAV4Qa4sIPar+L2
|
|
247 psMxTNLdry20c05vIFBhc3NwaHJhc2UgUHVibGljIGFuZCBQcml2YXRlIFRl
|
|
248 c3QgS2V5IChkbyBub3QgZW5jcnlwdCBpbXBvcnRhbnQgZGF0YSB3aXRoIHRo
|
|
249 aXMga2V5KSA8bm8tcGFzc3BocmFzZUBleGFtcGxlLmNvbT6IYAQTEQIAIAUC
|
|
250 SNL46QIbAwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEJRWP7OYraayJmcA
|
|
251 oMNHBJD2jyN3z33NoeWeo+E8rh0mAJ9GYB60jPdeAy8QI8HecG15bd7kAbAC
|
|
252 AAO5Ag0ESNL49RAIAIXsIpwvcwlLHQ6umozXTM7ZEysroWbjQf+2tMQVrktr
|
|
253 oFKGwBFOePXOwblGMPAfaqVtZK2+WQzmv7M1jehZFqMicChujzqd/GwEgmdC
|
|
254 S90C3K0hBDY3ZqrI1oIEBMHxWk3m9eTyxDyUFtZuVoA99Qn+RwgUUJjzILCN
|
|
255 q/Vw4ixSZvAXSeiU7VfVB8AmzP5AO1N0ay99LlX63iWIT3qUL45H1OumcxwA
|
|
256 45qbtnfIjHntSO3efNTXnGBvVPOy2X9l6/a9puGJohjucP6ClcjF7iXzQIDE
|
|
257 jLvRCBfsIQRXUI5WdpxH8H9CtaFPxKHdZSk0QBWHKQ5cITuTNfKSHHOICPsA
|
|
258 AwUH/3eSEg0w7oq4JMhTotbCcZP2rw9dDTb5ml2MXNoE2BezWrZKtE9Mdm3o
|
|
259 VsDWztw4WTha2apY/ppIPS0cf0NFzL4mnNV9IpbNtDHUtj0mvMJIPAQvtkVW
|
|
260 1eg6zQMhfhNvvaXpxrpU4CrDyMm59GswYFZH6EQY6U7vA/MRR/gEmmVLfvOd
|
|
261 KMpxZQ5gF1n6lOaXEzFRJ8viq2Otkukwx9syxHyCSive6EblPRfOgFGwCJ+e
|
|
262 +X1ByZ84BKHpcSiU1lpQwh/SD6t+2a0rTXjgalEYM7bbzGi+/84XFTyBMPVh
|
|
263 YBvEwhKWDToPsdIKhExzNqyEQXRn44GkmO0/X16MYopL9+yISQQYEQIACQUC
|
|
264 SNL49QIbDAAKCRCUVj+zmK2mssJkAJ4w2M8MHaIPkYpvqR90/MxdVu2//QCg
|
|
265 p2ZC6a2/GIe2BP5mS6M9tDGfHluwAgADmQGiBEl4ENcRBADgb5JDz1lPibkg
|
|
266 MZST2QY+PFwmcC3efMofGvWcn5u1aJLEfFpXn1uWKfkzNX+Jh7cZeAeNAR8o
|
|
267 YBW0CfKyajuH0AX7l5T4CU2cNpG4Q5spuJH39BCdY273uWwurPuVaHPD7Eip
|
|
268 tNQ32VbybtewywlzXMSA0BbaM5VKuxuSlvBRcwCg03MvTxS/jIGWUb2XV2xQ
|
|
269 ZLTvFKkEAM1tE1xfw29L0IWWZTD9peI/4SqBuxd9qDigVMrsVidDsYN9T6c6
|
|
270 k5xUVtMspULtSoH0t2upBXuJ6ZlQKt1QdWo1UVFuF9ynQ2qlH3MxHNivDG9o
|
|
271 8FFgmheuILJHx5uYFxrWrMwNIk2t2ehv3PteoDnKNDr7uNg+mt/olD6c6CUJ
|
|
272 BACLI8kzNsYIrB8RFxA3lWf0uOFrSO08EQZ0DcqQ0KjTcdu4WAqfOW/ZOOWw
|
|
273 mfHN5xoqiP84u3pltvMUWp+wCSlJABRmFqqvWubuC5Sd62UVk/jBl8foARcA
|
|
274 tIm834sdbXDeMyn7eRELncVCnO3AxGt0XYYzHNK9O1LQIY+AEZAQO7QvTXVs
|
|
275 dGlwbGUgU3Via2V5cyA8bXVsdGlwbGUtc3Via2V5c0BleGFtcGxlLmNvbT6I
|
|
276 XwQTEQIAIAUCSXgQ1wIbIwYLCQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJELB6
|
|
277 Yh3JKVdlxsIAl32oUkCLg7uFrEdeHj3G71wzsBQAn1EBu2ZgIJKZl3nEZgpE
|
|
278 Vw27r+HWsAIAA7kCDQRJeBDfEAgA9Q7WE6GIdFw823k3JjB93ssF+3iyOUZK
|
|
279 Fd9F/lDa/v5OCOVWwNYNZmgWnsB0xvoB81/Y+NcnV3IlSZExhLiPSJg+FI6h
|
|
280 kuMAWPP+y0Cjh8Vg70Udu7agZewV9PyJozVZxgTmOWQ+f4I5tihykFRGrvIg
|
|
281 iKqBnJRoF9sjoVRrOsLYwP4evEaaBoIwGBULS3B40LhjIn1e6klIFCfVb71j
|
|
282 W3Zor6q3x1tr0zodXLPhi5c82JFeriiq4+h5epeBZ8qr3FJAW1u17IRJFVge
|
|
283 iabxn85My9y0aLJOC98VvwF0BQFWxZLdzxUtopEbCHusFDImdknRkydFcABa
|
|
284 NsQLBKAWmwADBggAsW+T1T10ZF6+pFX3JTwE7U1GERLDljnyuya0ptsB+e9j
|
|
285 OiEUqDjQKq2x6vaQzpTi1c/3luGtKBQd/6h4387wgkvXNzjM0lzHPsiKFeLK
|
|
286 L3z+6th9ympMF7ZwTFSBHNrbVKsQ4jAX5AJZSDjT/f4mN8+2qfp78N6wrJtg
|
|
287 HCmLTRw/9TJLk/dAxb70pm38lydA9O5PJE9aelQFBZZWUzINdvWr+nw92lsr
|
|
288 ArNw+wwxXkYPe0iM+c2PA4xqICN6BxOCbeDyI9UYLwpv2sapHb5J3FBf1DYw
|
|
289 KgVV4hZ5Hh2NVaz9Dy2Cip/W4zgsZFitI8DrtA2lDylPW2EcEF/Gp6OopohJ
|
|
290 BBgRAgAJBQJJeBDfAhsMAAoJELB6Yh3JKVdlZ84An2qFE/2pd5tumLcpUhAo
|
|
291 x60IFPixAJ9Ipx0+I2OkodCugEjPRoWgArRboLACAAO5AQ0ESXgQ/QEIANHU
|
|
292 Y6CyM/Ramnnf+ojElJ+qpSpeZs0qomUBe2MV+JUHaSRPmv1LwUiyqWV/S2+o
|
|
293 5se5VldqJ9teImtUhuDNpO7LX4TSgJ7jIPiS/W/+JTilx+AGA/1P7XBt4eei
|
|
294 3ofyGOjCcGaEwZbG8ZoC319PGXMIKwecGRUXiAxaCnbb+CSYMRMnU7ELmOFJ
|
|
295 ziGSaW8kMp0VK9X1vX2bB/SayAjsDYQKNZNbP70FCIylnLXpyRkmNsWHSngZ
|
|
296 va3N7vEkg3CYejZtcNTruXULj74qPny7Ko0EvCNP14wsFCAoCWugCCrrl4a9
|
|
297 4MYCeYdGOC3qANgyhwJizQuH+BpnZtN5iQ3uznMAEQEAAYhJBBgRAgAJBQJJ
|
|
298 eBD9AhsMAAoJELB6Yh3JKVdl8sEAn1VZCySU0jAD1g/gSck9wpdhcHxBAKCi
|
|
299 2SXgmRBMkfID6VoR87RDD/RHSbACAAM=
|
|
300
|
|
301 TEXT;
|
|
302 // }}}
|
|
303 // {{{ secring data
|
|
304 $secringData = <<<TEXT
|
|
305 lQHhBEjS+M0RBADIuG1okbW2FPjlx1MKYthiN0rRcoN0P3H1G+0x6vMIV0YE
|
|
306 frHAJ7PQUo+cOYr1tAW8EquhUar/cAZSwRysMrYsQRggljxQKstToh36mcwt
|
|
307 dItIatGPSafkP7Y8tfPg/OG4n1LWvU/qc5qW0eUsrbtek3j3Ot96blZPPOki
|
|
308 +1p49wCg/NPaBcQz6fK6EwcI4M9icarEQJ0EAJdaVeJ1MOsBphcKkCQHtmId
|
|
309 uMQgmaJLidVJOl8tIXgAr6Hu2pGQkk7urGAzzzJ24jWzHJLqiEx/ex86sH1R
|
|
310 sHQctqcQhJU8YyYlO6e4R5nCdRiDYOAj1+rzogTTUpyngyQamTyAh7LnA/CC
|
|
311 MUOdwdduB4uCYsFF6VprJFy1FYx5A/9V/hpfeILigh/XVb3sWYdUyBRbxUoh
|
|
312 z25ItI7jkDLMlxN00w+IdUYEwl9bA8mmBf+q2BryLuoStg25krbC/KgEZbAT
|
|
313 EWhk+/A0j8nuEPn8A/Z8KqcLxFsCUwF690w7an/3WxAwVOumXhOKKEHosXkw
|
|
314 rS8AnfuIFq/atqy4EslP5f4DAwLxwn+n9mf1u2ArwjYd9+YzD/wWsQPS7Ia/
|
|
315 bH1duvwY/yIa2m2SVCsfoLLkpTRJmIbqjrA+0htB6IshuLRgRmlyc3QgS2V5
|
|
316 cGFpciBUZXN0IEtleSAoZG8gbm90IGVuY3J5cHQgaW1wb3J0YW50IGRhdGEg
|
|
317 d2l0aCB0aGlzIGtleSkgPGZpcnN0LWtleXBhaXJAZXhhbXBsZS5jb20+iGAE
|
|
318 ExECACAFAkjS+M0CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRDAl9ns
|
|
319 lMBjY2Y5AJ9vqmYB60lHF053EC+ChvLNqrbxqwCfd7nMcmun0yeA7wt1KKdZ
|
|
320 ExHz/niwAgAAnQJjBEjS+N0QCAD0p6PxTdTGFbABAA/KO8CkEqFYKfzu5gjB
|
|
321 5jTK/awyrKYEp4KciexxnxGbvVEg5M+C1Pg9NNFFwPDTl/HagLWqH8lMcKoF
|
|
322 aXcz+Xfgwayuunu64/BXRsuKAlQi0L6VzjUOaei3xCcEVv/ZqLQxM2uyOfyA
|
|
323 ysMVDT2BFIwf6qma09ttg0bpL8eMt+dXBjBSyDWz5WC5gbgLX5B+VfQpnLL+
|
|
324 DUvvh0qeHY9qmLYAca+qQnoj956QRihzlNSjrlNrlyCYdXtFGfku91mA2PQg
|
|
325 hb5S7ifREiKH+6Iqk4FtioMqrRko34u54yWMhfClRGtcmDb1ebp7yKIikljp
|
|
326 Qj6hkw9DAAMFB/4p8yiZuNwoRFgJpRbLvOytac9iIlZs2mASMbABouqcUBLE
|
|
327 LqM+mOfmRgcJH2xFrmBJoIqBICUAkau3DR05oNkVTuFbtzIvNhxd5ES/2T45
|
|
328 bAtqyHRDIvjwnr4ruN49h4FF6jAeW+zFAnGeXXOOhdmWxxz7VGYXfmNHi5x1
|
|
329 csx5KM4qEt+kiQ+KYPN7vsSEPnuuO3OqyZ/pqZ2UQMtQAZ1bnLocgQ7GtBnS
|
|
330 XCk2QgIg/sMgJoQVX5h8OhvuCOCNkskBKmNzY7vfiG4JvGPG9RjyUpTJj2ew
|
|
331 y0MoKYURhUXtnW7uMZ1T8OeB/XtpBRRxGmmsm1aqabMi4MiXgh9lwikg/gMD
|
|
332 AvHCf6f2Z/W7YB9YTXxKPJp6zbmhmsBCAQIHNuufQtJKmUtVc3IZC06Ip8pa
|
|
333 19eytbzqRG7JkectW2YtFpdi7g61Aw4RynmsNoScsEsolN5WhsGISQQYEQIA
|
|
334 CQUCSNL43QIbDAAKCRDAl9nslMBjY15lAKCMiOSsamO0x8emnFVM3EVS4XUa
|
|
335 9ACfbJ9okoKrn7a/uEOVWfxWTvdeQxGwAgAAlQHhBEjS+N0RBADqa44MuljB
|
|
336 O69Hd2yLNgdVfvpv7n+6J5OrCiC38/sjv8qXRRqQC7zOfB1mPZMykJk7BWKK
|
|
337 LctFgVIN5IktecZ6fakL2csgZrq99fQfhQ02GZAXmNvFBv30PLqPU29L4JvA
|
|
338 JZ9+0px9udOuIMYbXISjfvpH/DoKkEBirwAcV+51wwCgmTle1xH7pEOAo8fO
|
|
339 yY5FJHVXm4UD/2xUHZUpyOCKc0qff2PrLYkeohI2so/cBSyte3FcVXtl9htK
|
|
340 /Y736DXEqrNiw4wnlVT96Jwkj8evzUcukmPSj0hMJS5addpqgdCqUtRSugQP
|
|
341 BBSMjWEmRYTZYrbE1NBxuEOPwkbMpKUL/PgjGoqj/SuVcddhThvAvyISQ5V5
|
|
342 MQ45A/48u6pCx6XJCvqJrYsdx9w+JxmBrAJEDRLS+gPyDH9cUE+y8ws5yzr+
|
|
343 WuQyeGFUKHCgkkNr7Znf8auCZWp+t6U49+P1W1BkWOxl6rMjiFnoIW/YX3Oh
|
|
344 mv5VdB7ohi1MbgIXy1pH/nLwkk/Lyk1Isslk6i9WqdaGoupcAeFe2Hp3cv4D
|
|
345 AwLv5LBCOJTgDGCxp17xpdBgHR0gEyiAn0M+oX2mbSUGjJLJ0FHlt4V4mvY4
|
|
346 sj+zEuh0y7jOnVnhAK/ny7RiU2Vjb25kIEtleXBhaXIgVGVzdCBLZXkgKGRv
|
|
347 IG5vdCBlbmNyeXB0IGltcG9ydGFudCBkYXRhIHdpdGggdGhpcyBrZXkpIDxz
|
|
348 ZWNvbmQta2V5cGFpckBleGFtcGxlLmNvbT6IYAQTEQIAIAUCSNL43QIbAwYL
|
|
349 CQgHAwIEFQIIAwQWAgMBAh4BAheAAAoJEAPMiQr6Ha1LoAEAn2/+fh/OQz6P
|
|
350 XG9zBLcrJFf3P8xmAKCCfBjWSB+HPeJr5Fn5MJF4uCnjfbACAACdAmMESNL4
|
|
351 4RAIAOSLYQiKvFjlNQjrParMESl5JMtbJmyUQKBqQlMTJuvomKddA4REq6qX
|
|
352 a24Of+WUqIKxh/jAwgfXs58D3YYWgv2aX6q6lUgKhcLqAIVTZfRFDn6R+JCO
|
|
353 isq178se5UMP2g91/UR9mSuM/HKm4ogcS+hXPd4yD+AhHbzUZgPnWZbyJ/HR
|
|
354 t7XWU+Cy69L94nHDMQbfYpBi6d1a4dO683NG3YJXtrlI4K/Q09euXfFHeqoc
|
|
355 yHnh4eJRSOHXyJqarwlNM/YTj1dWmgFbJ68NySONOrUEL4jyd4ubb4oNmQnT
|
|
356 GpQvmJKocQtRvTxKAFZ7aB5veVKVTJNzyjO5vPRJWgw1EzsAAwUH/1S9DkTg
|
|
357 FctOb0YsOeOtKmYnFzVxjQNGbBjaMhNHDTXvgxHGdWY6h7uyl/+cnPNoCcc+
|
|
358 sUl4Ob5ogE3BNLAOsg4TyuvnYAF8GEk9EenCTDngepd+L4K5L4lq8Be+cWgF
|
|
359 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
|
|
448 Q/q3S7ACAAA=
|
|
449
|
|
450 TEXT;
|
|
451 // }}}
|
|
452 // {{{ trustdb data
|
|
453 $trustdbData = <<<TEXT
|
|
454 AWdwZwMDAQUBAAAASXgQ5QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQoAAAAA
|
|
455 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAA
|
|
456 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAA
|
|
457 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAJAAA
|
|
458 AAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAqAAAAAAAAAAAAAAAAAAAA
|
|
459 AAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
460 AAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
461 AAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
462 CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAA
|
|
463 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAA
|
|
464 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAA
|
|
465 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
466 AAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
467 AAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
468 AAAAAAAAAAAAAAoAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAAA
|
|
469 AAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAAAAAAAAAAAAAAAAAAAA
|
|
470 CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAA
|
|
471 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAAAAAAAA
|
|
472 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAA
|
|
473 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
474 AAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
475 AAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
476 AAAAAAAAAAAAAAoAAAAAAAAAACwAAAAAAAAAAAAAAAAAAAAxAAAAAAAAAAAA
|
|
477 AAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
|
478 CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAA
|
|
479 AAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAMwAAAAAAAAAAAAAKAAAAAAAAAAAA
|
|
480 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADACNIpnZxcIREosyu7DA
|
|
481 l9nslMBjYwYAAAAAAAAfAAAAAAAAAAAAAA0ASuRA053T81XR0YsL9GQz36zO
|
|
482 so8GAAAAAAAAAAAAAAAAAAAAAAAMAIgJItvqcz6QZpPkqQPMiQr6Ha1LBgAA
|
|
483 AAAAACEAAAAAAAAAAAAADQDkLyWSxvRVinJea5Y3Sc4dh3lKQQYAAAAAAAAA
|
|
484 AAAAAAAAAAAAAAwA+DEYy29YktwcPpNtq6ge9U6MDesGAAAAAAAAIwAAAAAA
|
|
485 AAAAAAANAMR3BlsMercywmS8VQx+WBRwzSxrBgAAAAAAAAAAAAAAAAAAAAAA
|
|
486 DAAeycXb8jndCjpPzQ2UVj+zmK2msgYAAAAAAAAlAAAAAAAAAAAAAA0A+Xih
|
|
487 okzxb5YYF2H8zt6XjTHnb5oGAAAAAAAAAAAAAAAAAAAAAAAMAJSPmDX/CfX5
|
|
488 HP8qwSaKtxA0NeZdAAAAAAAAACcAAAAAAAAAAAAADQB1TeCPc5cRDuwveD0X
|
|
489 xhsm64ZrYAAAAAAAAAAAAAAAAAAAAAAAAAwAxo3/oHXKbdbf3Wfe8oOFM8Yg
|
|
490 1NUAAAAAAAAAKQAAAAAAAAAAAAANAOQflEprmQfxXYoQ4ziqhrc8pjZDAAAA
|
|
491 AAAAAAAAAAAAAAAAAAAADAAlEjmrDfswlGd8hOOp7mR+yD1FcwAAAAAAAAAr
|
|
492 AAAAAAAAAAAAAA0A5B+USmuZB/FdihDjOKqGtzymNkMAAAAAAAAAAAAAAAAA
|
|
493 AAAAAAAMANk0YYDRuuh0Qo8Qx/Ye3VqwpH+AAAAAAAAAAC0AAAAAAAAAAAAA
|
|
494 DQDkH5RKa5kH8V2KEOM4qoa3PKY2QwAAAAAAAAAAAAAAAAAAAAAAAAwAjfos
|
|
495 sg2v7kfmnu1bCuJ9bDb23VAAAAAAAAAAMAAAAAAAAAAAAAALAAAAAAAAAAAe
|
|
496 AAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQDkH5RKa5kH8V2KEOM4
|
|
497 qoa3PKY2QwAAAAAAAAAAAAAAAAAAAAAAAAwA3Z5wduQspEtWG5gn+7R5kNtT
|
|
498 j/cAAAAAAAAAMgAAAAAAAAAAAAANADPMTOwYcVpigI8JYuYIOyOWVB6sAAAA
|
|
499 AAAAAAAAAAAAAAAAAAAADAD53yG10t0C0992AnCwemIdySlXZQYAAAAAAAA0
|
|
500 AAAAAAAAAAAAAA0AM8xM7BhxWmKAjwli5gg7I5ZUHqwGAAAAAAAAAAAAAAAA
|
|
501 AAAAAAA=
|
|
502
|
|
503 TEXT;
|
|
504 // }}}
|
|
505 // {{{ random_seed data
|
|
506 $randomSeedData = <<<TEXT
|
|
507 neyWWNvenulSaxVyMeIGkfDEfjYOk/fWdXdVziAlyCuTOaA3TQ3CKgFyUMCl
|
|
508 56z9k4gvoAVk4UKpspxvt0yvPh10wejwkb7MrFQ58f9mqSdhSxnP06dmxPaA
|
|
509 pmjTVaHQ74o7U/sitSM9DgCR/sKwmm7SFqP8LhELgHaIfx1AWbHNuTCSYdxH
|
|
510 z4SMMzTAiMq6cMKv86cpjAWMLABM5TFFKZzYtj+lpSowcuNkHWBU6qv7Y8Iw
|
|
511 ZMvcXX8cCvFWLVY9JNfQPvbb3WONrWmkqfExqAe2zKRyYUVP9mY9szAWwP0k
|
|
512 HqR1fICVuGVzJEzz//7AukOJ1TNiokgPoSW7KayJ1YjTuGyQc4JOOxvEdZAR
|
|
513 uXdEmD8V3yhQ/bN86OocZi/gT5+2Qorbk19hlHVAd4xw6HhFgBiqM0snhnQq
|
|
514 2YJOeVWuciAlnyetCV5DaOI5mUKhNOqT2EUo1qQ6vI9uZ8n+aJxD4DPH+AHo
|
|
515 wOzWzzsQujmaLmzulJtZnvHpwm/Sbi0qG9sohnxAD8INhnbRSviwROBgAR1r
|
|
516 HzticUERCJ6C+RGSUqa0YktAzNY5yZiyWEhPJfl16zC4vNFOdJmjWlf01ugJ
|
|
517 l7FlURvzHb3BkLJVlNCYNBRvW0yz2xXrhOzc1Nl5cpYGl3IWxopQDpHLHXYl
|
|
518 DVEKIlTgEQHq8FEU24xYX+GpvN1dZ9FjAuPjzNqAPEDzBQ4LB6JevUPL/hHN
|
|
519 ySy97NgZrauxTMC+SNrxl+Vab4JA9BgPCMXISmdQzzkZUFE5GV3Dq0O4OCiI
|
|
520 NfH1l4n9va0EcqKEwb25
|
|
521
|
|
522 TEXT;
|
|
523 // }}}
|
|
524
|
|
525 $directoryName = __DIR__ . '/' . self::HOMEDIR;
|
|
526 if (!file_exists($directoryName)) {
|
|
527 mkdir($directoryName);
|
|
528 }
|
|
529
|
|
530 $pubring = fopen($this->getKeyringFilename('pubring.gpg'), 'wb');
|
|
531 fwrite($pubring, base64_decode(str_replace("\n", '', $pubringData)));
|
|
532 fclose($pubring);
|
|
533
|
|
534 $secring = fopen($this->getKeyringFilename('secring.gpg'), 'wb');
|
|
535 fwrite($secring, base64_decode(str_replace("\n", '', $secringData)));
|
|
536 fclose($secring);
|
|
537
|
|
538 $trustdb = fopen($this->getKeyringFilename('trustdb.gpg'), 'wb');
|
|
539 fwrite($trustdb, base64_decode(str_replace("\n", '', $trustdbData)));
|
|
540 fclose($trustdb);
|
|
541
|
|
542 $randomSeed = fopen($this->getKeyringFilename('random_seed'), 'wb');
|
|
543 fwrite($randomSeed, base64_decode(
|
|
544 str_replace("\n", '', $randomSeedData)));
|
|
545
|
|
546 fclose($randomSeed);
|
|
547 }
|
|
548
|
|
549 // }}}
|
|
550 // {{{ _setUpTempdir()
|
|
551
|
|
552 private function _setUpTempdir()
|
|
553 {
|
|
554 $directoryName = __DIR__ . '/' . self::TEMPDIR;
|
|
555 if (!file_exists($directoryName)) {
|
|
556 mkdir($directoryName);
|
|
557 }
|
|
558 }
|
|
559
|
|
560 // }}}
|
|
561 // {{{ tearDown()
|
|
562
|
|
563 public function tearDown()
|
|
564 {
|
|
565 unset($this->gpg);
|
|
566
|
|
567 $this->_tearDownKeyring();
|
|
568 $this->_tearDownTempdir();
|
|
569 }
|
|
570
|
|
571 // }}}
|
|
572 // {{{ _tearDownKeyring()
|
|
573
|
|
574 private function _tearDownKeyring()
|
|
575 {
|
|
576 $dirnames = array(
|
|
577 $this->getKeyringFilename('private-keys-v1.d'),
|
|
578 $this->getKeyringFilename('openpgp-revocs.d')
|
|
579 );
|
|
580
|
|
581 foreach ($dirnames as $dirname) {
|
|
582 if (file_exists($dirname)) {
|
|
583 $iterator = new DirectoryIterator($dirname);
|
|
584 foreach ($iterator as $file) {
|
|
585 if (!$file->isDot()) {
|
|
586 unlink($dirname . '/' . $file->getFilename());
|
|
587 }
|
|
588 }
|
|
589 rmdir($dirname);
|
|
590 }
|
|
591 }
|
|
592
|
|
593 $homedir = __DIR__ . '/' . self::HOMEDIR;
|
|
594 $iterator = new DirectoryIterator($homedir);
|
|
595
|
|
596 foreach ($iterator as $file) {
|
|
597 if (!$file->isDot()) {
|
|
598 unlink($homedir . '/' . $file->getFilename());
|
|
599 }
|
|
600 }
|
|
601
|
|
602 rmdir($homedir);
|
|
603 }
|
|
604
|
|
605 // }}}
|
|
606 // {{{ _tearDownTempdir()
|
|
607
|
|
608 private function _tearDownTempdir()
|
|
609 {
|
|
610 $directoryName = __DIR__ . '/' . self::TEMPDIR;
|
|
611
|
|
612 // remove temporary files and temporary directory
|
|
613 $iterator = new DirectoryIterator($directoryName);
|
|
614 foreach ($iterator as $file) {
|
|
615 if (!$file->isDot()) {
|
|
616 $filename = $this->getTempFilename($file->getFilename());
|
|
617 if (is_dir($filename)) {
|
|
618 rmdir($filename);
|
|
619 } else {
|
|
620 unlink($filename);
|
|
621 }
|
|
622 }
|
|
623 }
|
|
624
|
|
625 rmdir($directoryName);
|
|
626 }
|
|
627
|
|
628 // }}}
|
|
629 // {{{ getMd5Sum()
|
|
630
|
|
631 protected function getMd5Sum($filename)
|
|
632 {
|
|
633 if (`which md5sum` == '') {
|
|
634 $this->markTestSkipped('md5sum not available. Cannot verify ' .
|
|
635 'files for file tests.');
|
|
636 }
|
|
637
|
|
638 $sum = explode(' ', `md5sum $filename`);
|
|
639 $sum = $sum[0];
|
|
640 return $sum;
|
|
641 }
|
|
642
|
|
643 // }}}
|
|
644 // {{{ getKeyringFilename()
|
|
645
|
|
646 protected function getKeyringFilename($filename)
|
|
647 {
|
|
648 return __DIR__ . '/'. self::HOMEDIR . '/' . $filename;
|
|
649 }
|
|
650
|
|
651 // }}}
|
|
652 // {{{ getDataFilename()
|
|
653
|
|
654 protected function getDataFilename($filename)
|
|
655 {
|
|
656 return __DIR__ . '/'. self::DATADIR . '/' . $filename;
|
|
657 }
|
|
658
|
|
659 // }}}
|
|
660 // {{{ getTempFilename()
|
|
661
|
|
662 protected function getTempFilename($filename)
|
|
663 {
|
|
664 return __DIR__ . '/' . self::TEMPDIR . '/' . $filename;
|
|
665 }
|
|
666
|
|
667 // }}}
|
|
668 // {{{ assertDecryptAndVerifyResultsEquals()
|
|
669
|
|
670 protected function assertDecryptAndVerifyResultsEquals(
|
|
671 array $expected,
|
|
672 array $actual
|
|
673 ) {
|
|
674 $this->assertEquals(
|
|
675 count($expected),
|
|
676 count($actual),
|
|
677 'Result counts are different.'
|
|
678 );
|
|
679
|
|
680 $this->assertArrayHasKey(
|
|
681 'data',
|
|
682 $expected,
|
|
683 'Expected result does not include data.'
|
|
684 );
|
|
685
|
|
686 $this->assertArrayHasKey(
|
|
687 'data',
|
|
688 $actual,
|
|
689 'Actual result does not include data.'
|
|
690 );
|
|
691
|
|
692 $this->assertArrayHasKey(
|
|
693 'signatures',
|
|
694 $expected,
|
|
695 'Expected result does not include signatures.'
|
|
696 );
|
|
697
|
|
698 $this->assertArrayHasKey(
|
|
699 'signatures',
|
|
700 $actual,
|
|
701 'Actual result does not include signatures.'
|
|
702 );
|
|
703
|
|
704 $this->assertEquals(
|
|
705 $expected['data'],
|
|
706 $actual['data'],
|
|
707 'Decrypted data does not match.'
|
|
708 );
|
|
709
|
|
710 $this->assertSignaturesEquals(
|
|
711 $expected['signatures'],
|
|
712 $actual['signatures']
|
|
713 );
|
|
714 }
|
|
715
|
|
716 // }}}
|
|
717 // {{{ assertSignaturesEquals()
|
|
718
|
|
719 protected function assertSignaturesEquals(
|
|
720 array $expected,
|
|
721 array $actual
|
|
722 ) {
|
|
723 $this->assertEquals(
|
|
724 count($expected),
|
|
725 count($actual),
|
|
726 'Signature counts are different.'
|
|
727 );
|
|
728
|
|
729 for ($i = 0; $i < count($expected); $i++) {
|
|
730 $this->assertSignatureEquals($expected[$i], $actual[$i]);
|
|
731 }
|
|
732 }
|
|
733
|
|
734 // }}}
|
|
735 // {{{ assertSignatureEquals()
|
|
736
|
|
737 protected function assertSignatureEquals(
|
|
738 Crypt_GPG_Signature $expected,
|
|
739 Crypt_GPG_Signature $actual
|
|
740 ) {
|
|
741 $expectedUserId = $expected->getUserId();
|
|
742 $actualUserId = $actual->getUserId();
|
|
743
|
|
744 $this->assertEquals($expectedUserId, $actualUserId,
|
|
745 'Signature user ids do not match.'
|
|
746 );
|
|
747
|
|
748 $expectedId = $expected->getId();
|
|
749 $actualId = $actual->getId();
|
|
750
|
|
751 $this->assertEquals(
|
|
752 strlen($expectedId),
|
|
753 strlen($actualId),
|
|
754 'Signature IDs are of different length.'
|
|
755 );
|
|
756
|
|
757 $this->assertEquals(
|
|
758 $expected->getKeyFingerprint(),
|
|
759 $actual->getKeyFingerprint(),
|
|
760 'Signature key fingerprints do not match.'
|
|
761 );
|
|
762
|
|
763 $this->assertEquals(
|
|
764 $expected->getKeyId(),
|
|
765 $actual->getKeyId(),
|
|
766 'Signature key IDs do not match.'
|
|
767 );
|
|
768
|
|
769 $this->assertEquals(
|
|
770 $expected->getCreationDate(),
|
|
771 $actual->getCreationDate(),
|
|
772 'Signature creation dates do not match.'
|
|
773 );
|
|
774
|
|
775 $this->assertEquals(
|
|
776 $expected->getExpirationDate(),
|
|
777 $actual->getExpirationDate(),
|
|
778 'Signature expiration dates do not match.'
|
|
779 );
|
|
780
|
|
781 $this->assertEquals(
|
|
782 $expected->isValid(),
|
|
783 $actual->isValid(),
|
|
784 'Signature validity does match.'
|
|
785 );
|
|
786 }
|
|
787
|
|
788 // }}}
|
|
789 }
|
|
790
|
|
791 ?>
|