Mercurial > hg > rc1
diff vendor/pear/crypt_gpg/tests/VerifyTest.php @ 0:1e000243b222
vanilla 1.3.3 distro, I hope
author | Charlie Root |
---|---|
date | Thu, 04 Jan 2018 15:50:29 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/pear/crypt_gpg/tests/VerifyTest.php Thu Jan 04 15:50:29 2018 -0500 @@ -0,0 +1,851 @@ +<?php + +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ + +/** + * Verify tests for the Crypt_GPG package. + * + * These tests require the PHPUnit 3.6 or greater package to be installed. + * PHPUnit is installable using PEAR. See the + * {@link http://www.phpunit.de/manual/3.6/en/installation.html manual} + * for detailed installation instructions. + * + * To run these tests, use: + * <code> + * $ phpunit VerifyTestCase + * </code> + * + * LICENSE: + * + * This library is free software; you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as + * published by the Free Software Foundation; either version 2.1 of the + * License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see + * <http://www.gnu.org/licenses/> + * + * @category Encryption + * @package Crypt_GPG + * @author Michael Gauthier <mike@silverorange.com> + * @copyright 2005-2008 silverorange + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @version CVS: $Id$ + * @link http://pear.php.net/package/Crypt_GPG + */ + +/** + * Base test case. + */ +require_once 'TestCase.php'; + +/** + * Tests verification abilities of Crypt_GPG. + * + * @category Encryption + * @package Crypt_GPG + * @author Michael Gauthier <mike@silverorange.com> + * @copyright 2005-2008 silverorange + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @link http://pear.php.net/package/Crypt_GPG + */ +class VerifyTestCase extends Crypt_GPG_TestCase +{ + // string + // {{{ testVerifyNoDataException_invalid() + + /** + * @expectedException Crypt_GPG_NoDataException + * + * @group string + */ + public function testVerifyNoDataException_invalid() + { + $signedData = 'Invalid OpenPGP data.'; + $this->gpg->verify($signedData); + } + + // }}} + // {{{ testVerifyNoDataException_empty() + + /** + * @expectedException Crypt_GPG_NoDataException + * + * @group string + */ + public function testVerifyNoDataException_empty() + { + $signedData = ''; + $this->gpg->verify($signedData); + } + + // }}} + // {{{ testVerifyKeyNotFoundException() + + /** + * @expectedException Crypt_GPG_KeyNotFoundException + * + * @group string + */ + public function testVerifyKeyNotFoundException() + { + $data = 'Hello, Alice! Goodbye, Bob!'; + // {{{ detached signature + $detachedSignature = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI1xN9CuJ9bDb23VARAkKSAKCG5/jPq1H7+mpMEpDITFnAJhSqlwCggzRx +laNWOZOef2zfm1yANtWjPyU= +=fhME +-----END PGP SIGNATURE----- + +TEXT; + // }}} + $this->gpg->verify($data, $detachedSignature); + } + + // }}} + // {{{ testVerifyNormalSignedData() + + /** + * @group string + */ + public function testVerifyNormalSignedData() + { + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setId('KuhELanvhPRXozEjFWb2mam1q20'); + $signature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $signature->setKeyId('C097D9EC94C06363'); + $signature->setCreationDate(1221785858); + $signature->setExpirationDate(0); + $signature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + // {{{ normal signed data + $normalSignedData = <<<TEXT +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +owGbwMvMwCR4YPrNN1MOJCczrjFOEsrLL8pNzNEtzkzPS03RTUksSfS49JPJIzUn +J19HwTEnMzlVUcE9Pz8lqTJVR8EpP0mxw56ZlQGkBmaMIJO9GsOCo2L3pk5y2DNT +yiFKb0X03YSJqscaGRb0BKjZ3P+6SvjG160/WOa9vpey4QUDAA== +=wtCB +-----END PGP MESSAGE----- + +TEXT; + // }}} + + $expectedSignatures = array($signature); + + $signatures = $this->gpg->verify($normalSignedData); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyClearsignedData() + + /** + * @group string + */ + public function testVerifyClearsignedData() + { + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setId('wwm5gqNiFS+E/tmqbt1uXvVy3Ck'); + $signature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $signature->setKeyId('C097D9EC94C06363'); + $signature->setCreationDate(1221785858); + $signature->setExpirationDate(0); + $signature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + // {{{ clearsigned data + $clearsignedData = <<<TEXT +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Hello, Alice! Goodbye, Bob! +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQFI0vkCwJfZ7JTAY2MRAgzTAKCRecYZsCS+PE46Fa2QLTEP8XGLwwCfQEAL +qO+KlKcldtYdMZH9AA+KOLQ= +=EO2G +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($signature); + + $signatures = $this->gpg->verify($clearsignedData); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyDetachedSignature() + + /** + * @group string + */ + public function testVerifyDetachedSignature() + { + $data = 'Hello, Alice! Goodbye, Bob!'; + + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setId('E4HEDmMtecF457JFb88UAtPBVWY'); + $signature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $signature->setKeyId('C097D9EC94C06363'); + $signature->setCreationDate(1221785858); + $signature->setExpirationDate(0); + $signature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + // {{{ detached signature + $detachedSignature = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI0vkCwJfZ7JTAY2MRAj8mAKC4IN01tGaEtNxWYS5eQiNT4Fua9ACeKum3 +BdQ5rTOK2pp2X2vy/k2aCPo= +=upYI +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($signature); + + $signatures = $this->gpg->verify($data, $detachedSignature); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyDualNormalSignedData() + + /** + * @group string + */ + public function testVerifyDualNormalSignedData() + { + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setId('4BunvSK18HPx6Xt4tEzyAqcNVzY'); + $firstSignature->setKeyFingerprint( + '880922DBEA733E906693E4A903CC890AFA1DAD4B'); + + $firstSignature->setKeyId('03CC890AFA1DAD4B'); + $firstSignature->setCreationDate(1221785858); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setId('oAZ64v4sFarc7dssFOAJPB0D7zs'); + $secondSignature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $secondSignature->setKeyId('C097D9EC94C06363'); + $secondSignature->setCreationDate(1221785858); + $secondSignature->setExpirationDate(0); + $secondSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + // {{{ dual normal signed data + $dualNormalSignedData = <<<TEXT +-----BEGIN PGP MESSAGE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +owGbwMvMwCR4YPrNN1MOJCczTABzmc90cv2SXevNuMYiSTylNDFHNy+/KBdIFWem +56Wm6KYkliR6XPrJ5JGak5Ovo+CYk5mcqqjgnp+fklSZqqPglJ+k2GHPzMoAUgMz +S5DJXo1hns0D5bkxpVHbI8+1y866l6K4yE1vHcNcOS1T45mf+VMn1NxQnnVn3Uab +dx7z4AbA3AY2YMGDvnnpCe982TwPTGyZdn+fMbu0fQDDgn098wSP/O79+/aYgon9 +y/y/MVtYcwE= +=7EC6 +-----END PGP MESSAGE----- + +TEXT; + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $signatures = $this->gpg->verify($dualNormalSignedData); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyDualClearsignedData() + + /** + * @group string + */ + public function testVerifyDualClearsignedData() + { + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setId('MCn4/0Giq0njPh2smOs3Lrdc7yY'); + $firstSignature->setKeyFingerprint( + '880922DBEA733E906693E4A903CC890AFA1DAD4B'); + + $firstSignature->setKeyId('03CC890AFA1DAD4B'); + $firstSignature->setCreationDate(1221785858); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setId('O5tcpOAXJhd0v5TBxqhIixgphn8'); + $secondSignature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $secondSignature->setKeyId('C097D9EC94C06363'); + $secondSignature->setCreationDate(1221785858); + $secondSignature->setExpirationDate(0); + $secondSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + // {{{ dual clearsigned data + $dualClearsignedData = <<<TEXT +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA1 + +Hello, Alice! Goodbye, Bob! +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQFI0vkCA8yJCvodrUsRAgzTAJ9xSosvdq3fqaseRS6YV9VgnSGo2gCgiD+2 +TRUrY67ZzdfTjCd6cFZHqauIPwMFAUjS+QLAl9nslMBjYxECDNMAoKdQQAWe8EwG +kZ/cCDE/fgToHk+7AJ9sU0NweUfUP3KNe2UK808Epd0Avg== +=j0ot +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $signatures = $this->gpg->verify($dualClearsignedData); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyDualDetachedSignature() + + /** + * @group string + */ + public function testVerifyDualDetachedSignature() + { + $data = 'Hello, Alice! Goodbye, Bob!'; + + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setId('tejKd9+9OBUM+EsrbV3fVuOiBeE'); + $firstSignature->setKeyFingerprint( + '880922DBEA733E906693E4A903CC890AFA1DAD4B'); + + $firstSignature->setKeyId('03CC890AFA1DAD4B'); + $firstSignature->setCreationDate(1221785858); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setId('7oizks/aha+bSONesnWDu1x2jn8'); + $secondSignature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $secondSignature->setKeyId('C097D9EC94C06363'); + $secondSignature->setCreationDate(1221785858); + $secondSignature->setExpirationDate(0); + $secondSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + // {{{ dual detached signature + $dualDetachedSignature = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI0vkCA8yJCvodrUsRAj8mAKCJWz3ANeG9SPGUHMg04gH0rCOqKwCfaxUR +Dypdcanj3VE3inTxleaQtdqIPwMFAEjS+QLAl9nslMBjYxECPyYAoN+Y3tibHIg+ +9+fdvxAEvANir2RQAKCuD2BsKzSmyV3G4/i6oPNhOrwtPg== +=8P1D +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $signatures = $this->gpg->verify($data, $dualDetachedSignature); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyBadSignature() + + /** + * @group string + */ + public function testVerifyBadSignature() + { + $modifiedData = 'Hello, Bob! Goodbye, Alice!'; + + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setKeyId('C097D9EC94C06363'); + $signature->setValid(false); + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + // {{{ detached signature + $detachedSignature = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI0vkCwJfZ7JTAY2MRAj8mAKC4IN01tGaEtNxWYS5eQiNT4Fua9ACeKum3 +BdQ5rTOK2pp2X2vy/k2aCPo= +=upYI +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($signature); + + $signatures = $this->gpg->verify($modifiedData, $detachedSignature); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyDualBadSignatures() + + /** + * @group string + */ + public function testVerifyDualBadSignatures() + { + $modifiedData = 'Hello, Bob! Goodbye, Alice!'; + + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(false); + $firstSignature->setKeyId('03CC890AFA1DAD4B'); + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setValid(false); + $secondSignature->setKeyId('C097D9EC94C06363'); + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + // {{{ dual detached signature + $dualDetachedSignature = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI0vkCA8yJCvodrUsRAj8mAKCJWz3ANeG9SPGUHMg04gH0rCOqKwCfaxUR +Dypdcanj3VE3inTxleaQtdqIPwMFAEjS+QLAl9nslMBjYxECPyYAoN+Y3tibHIg+ +9+fdvxAEvANir2RQAKCuD2BsKzSmyV3G4/i6oPNhOrwtPg== +=8P1D +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $signatures = $this->gpg->verify($modifiedData, $dualDetachedSignature); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileNormalSignedData() + + /** + * @group file + */ + public function testVerifyFileNormalSignedData() + { + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setId('vctnI/HnsRYmqcVwCJcJhS60lKU'); + $signature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $signature->setKeyId('C097D9EC94C06363'); + $signature->setCreationDate(1221960707); + $signature->setExpirationDate(0); + $signature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + + $expectedSignatures = array($signature); + + $filename = + $this->getDataFilename('testVerifyFileNormalSignedData.asc'); + + $signatures = $this->gpg->verifyFile($filename); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileClearsignedData() + + /** + * @group file + */ + public function testVerifyFileClearsignedData() + { + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setId('6sXJXKZB5lvRSCXBAYl6R2EiDmw'); + $signature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $signature->setKeyId('C097D9EC94C06363'); + $signature->setCreationDate(1221960707); + $signature->setExpirationDate(0); + $signature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + + $expectedSignatures = array($signature); + + $filename = $this->getDataFilename('testVerifyFileClearsignedData.asc'); + + $signatures = $this->gpg->verifyFile($filename); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileDetachedSignature() + + /** + * @group file + */ + public function testVerifyFileDetachedSignature() + { + // {{{ signature + $signature = new Crypt_GPG_Signature(); + $signature->setId('tdsH/ulxOnoWEMPDamZTq7wzF/0'); + $signature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $signature->setKeyId('C097D9EC94C06363'); + $signature->setCreationDate(1221960707); + $signature->setExpirationDate(0); + $signature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $signature->setUserId($userId); + // }}} + // {{{ signatureData + $signatureData = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI1aQDwJfZ7JTAY2MRAvkzAJ0RAW0wtlfEgDccgq+N5IgbpA4BOQCfS8vV +Of32/RcteCLdt73awNJ0CwI= +=RVco +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($signature); + + $filename = $this->getDataFilename('testFileMedium.plain'); + + $signatures = $this->gpg->verifyFile($filename, $signatureData); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileDualNormalSignedData() + + /** + * @group file + */ + public function testVerifyFileDualNormalSignedData() + { + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setId('Kl3Mds4ABT9JyE3iqfPGpUHzKQs'); + $firstSignature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $firstSignature->setKeyId('C097D9EC94C06363'); + $firstSignature->setCreationDate(1221960707); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setId('KGrEm3hGqiKaLbjvOUO9kvUjRXc'); + $secondSignature->setKeyFingerprint( + '880922DBEA733E906693E4A903CC890AFA1DAD4B'); + + $secondSignature->setKeyId('03CC890AFA1DAD4B'); + $secondSignature->setCreationDate(1221960707); + $secondSignature->setExpirationDate(0); + $secondSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $filename = + $this->getDataFilename('testVerifyFileDualNormalSignedData.asc'); + + $signatures = $this->gpg->verifyFile($filename); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileDualClearsignedData() + + /** + * @group file + */ + public function testVerifyFileDualClearsignedData() + { + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setId('eRRcEecpFk0YK/iswddS/KBxEXI'); + $firstSignature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $firstSignature->setKeyId('C097D9EC94C06363'); + $firstSignature->setCreationDate(1221960707); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setId('jsWYGJe/0hmte7tYt8zuJd7rFMM'); + $secondSignature->setKeyFingerprint( + '880922DBEA733E906693E4A903CC890AFA1DAD4B'); + + $secondSignature->setKeyId('03CC890AFA1DAD4B'); + $secondSignature->setCreationDate(1221960707); + $secondSignature->setExpirationDate(0); + $secondSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $filename = + $this->getDataFilename('testVerifyFileDualClearsignedData.asc'); + + $signatures = $this->gpg->verifyFile($filename); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileDualDetachedSignature() + + /** + * @group file + */ + public function testVerifyFileDualDetachedSignature() + { + // {{{ first signature + $firstSignature = new Crypt_GPG_Signature(); + $firstSignature->setId('T7+toJbsFr8KMTWN+M7lF3xSmmA'); + $firstSignature->setKeyFingerprint( + '8D2299D9C5C211128B32BBB0C097D9EC94C06363'); + + $firstSignature->setKeyId('C097D9EC94C06363'); + $firstSignature->setCreationDate(1221960707); + $firstSignature->setExpirationDate(0); + $firstSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('First Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('first-keypair@example.com'); + $firstSignature->setUserId($userId); + // }}} + // {{{ second signature + $secondSignature = new Crypt_GPG_Signature(); + $secondSignature->setId('HJd1yvMbEbW5facuxkDtvwymKrw'); + $secondSignature->setKeyFingerprint( + '880922DBEA733E906693E4A903CC890AFA1DAD4B'); + + $secondSignature->setKeyId('03CC890AFA1DAD4B'); + $secondSignature->setCreationDate(1221960707); + $secondSignature->setExpirationDate(0); + $secondSignature->setValid(true); + + $userId = new Crypt_GPG_UserId(); + $userId->setName('Second Keypair Test Key'); + $userId->setComment('do not encrypt important data with this key'); + $userId->setEmail('second-keypair@example.com'); + $secondSignature->setUserId($userId); + // }}} + // {{{ signature data + $signatureData = <<<TEXT +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.6 (GNU/Linux) + +iD8DBQBI1aQDwJfZ7JTAY2MRAvkzAKDPnJ030GdYE15mE8smz2oV7zYziwCeJFxf +UaTrAgP1Dck9DhHOBhvhwLuIPwMFAEjVpAMDzIkK+h2tSxEC+TMAn38yx3mXk6wP +JaPThD7lRVE9ve57AJ0Yy7JwiT9sGXomln4JtRvuSpGtsg== +=Gw9D +-----END PGP SIGNATURE----- + +TEXT; + // }}} + + $expectedSignatures = array($firstSignature, $secondSignature); + + $filename = $this->getDataFilename('testFileMedium.plain'); + + $signatures = $this->gpg->verifyFile($filename, $signatureData); + $this->assertSignaturesEquals($expectedSignatures, $signatures); + } + + // }}} + // {{{ testVerifyFileFileException() + + /** + * @expectedException Crypt_GPG_FileException + * + * @group file + */ + public function testVerifyFileFileException() + { + $filename = './non-existent/testVerifyFileFileException.asc'; + $this->gpg->verifyFile($filename); + } + + // }}} + // {{{ testVerifyFileNoDataException() + + /** + * @expectedException Crypt_GPG_NoDataException + * + * @group file + */ + public function testVerifyFileNoDataException() + { + $filename = $this->getDataFilename('testFileEmpty.plain'); + $this->gpg->verifyFile($filename); + } + + // }}} +} + +?>