Message signature verification tests
This commit is contained in:
parent
7d44211fc8
commit
22585344c0
@ -182,7 +182,7 @@ class OpenPGP_Message implements IteratorAggregate, ArrayAccess {
|
|||||||
$i++;
|
$i++;
|
||||||
}
|
}
|
||||||
if($p instanceof OpenPGP_LiteralDataPacket) $data_packet = $p;
|
if($p instanceof OpenPGP_LiteralDataPacket) $data_packet = $p;
|
||||||
if($signature_packet && $data_packet) break;
|
if(isset($signature_packet) && isset($data_packet)) break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return array($signature_packet, $data_packet);
|
return array($signature_packet, $data_packet);
|
||||||
|
@ -56,7 +56,7 @@ class OpenPGP_Crypt_RSA {
|
|||||||
$key = $this->public_key($signature_packet->issuer());
|
$key = $this->public_key($signature_packet->issuer());
|
||||||
if(!$key || $signature_packet->key_algorithm_name() != 'RSA') return NULL;
|
if(!$key || $signature_packet->key_algorithm_name() != 'RSA') return NULL;
|
||||||
$key->setHash(strtolower($signature_packet->hash_algorithm_name()));
|
$key->setHash(strtolower($signature_packet->hash_algorithm_name()));
|
||||||
return $packet->verify(array('RSA' => array($signature_packet->hash_algorithm_name() => array($key, 'verify'))));
|
return $packet->verify(array('RSA' => array($signature_packet->hash_algorithm_name() => function($m, $s) use($key) {return $key->verify($m, $s[0]);})));
|
||||||
} else {
|
} else {
|
||||||
list($signature_packet, $data_packet) = $this->message->signature_and_data($index);
|
list($signature_packet, $data_packet) = $this->message->signature_and_data($index);
|
||||||
if(!$this->message || $signature_packet->key_algorithm_name() != 'RSA') return NULL;
|
if(!$this->message || $signature_packet->key_algorithm_name() != 'RSA') return NULL;
|
||||||
@ -65,7 +65,7 @@ class OpenPGP_Crypt_RSA {
|
|||||||
$packet = $packet->public_key($signature_packet->issuer());
|
$packet = $packet->public_key($signature_packet->issuer());
|
||||||
}
|
}
|
||||||
$packet->setHash(strtolower($signature_packet->hash_algorithm_name()));
|
$packet->setHash(strtolower($signature_packet->hash_algorithm_name()));
|
||||||
return $this->message->verify(array('RSA' => array($signature_packet->hash_algorithm_name() => array($packet, 'verify'))));
|
return $this->message->verify(array('RSA' => array($signature_packet->hash_algorithm_name() => function($m, $s) use($packet) {return $packet->verify($m, $s[0]);})));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -141,11 +141,12 @@ class OpenPGP_Crypt_RSA {
|
|||||||
|
|
||||||
static function crypt_rsa_key($mod, $exp, $hash='SHA256') {
|
static function crypt_rsa_key($mod, $exp, $hash='SHA256') {
|
||||||
$rsa = new Crypt_RSA();
|
$rsa = new Crypt_RSA();
|
||||||
$rsa->signatureMode = CRYPT_RSA_SIGNATURE_PKCS1;
|
$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
|
||||||
$rsa->setHash(strtolower($hash));
|
$rsa->setHash(strtolower($hash));
|
||||||
$rsa->modulus = new Math_BigInteger($mod, 256);
|
$rsa->modulus = new Math_BigInteger($mod, 256);
|
||||||
$rsa->k = strlen($rsa->modulus->toBytes());
|
$rsa->k = strlen($rsa->modulus->toBytes());
|
||||||
$rsa->exponent = new Math_BigInteger($exp, 256);
|
$rsa->exponent = new Math_BigInteger($exp, 256);
|
||||||
|
$rsa->setPublicKey();
|
||||||
return $rsa;
|
return $rsa;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
phpunit.xml
20
phpunit.xml
@ -1,11 +1,15 @@
|
|||||||
<phpunit>
|
<phpunit>
|
||||||
<testsuites>
|
<testsuites>
|
||||||
<testsuite name="Serialization">
|
<testsuite name="Serialization">
|
||||||
<file>tests/suite.php</file>
|
<file>tests/suite.php</file>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
|
|
||||||
<testsuite name="Fingerprint">
|
<testsuite name="Fingerprint">
|
||||||
<file>tests/suite.php</file>
|
<file>tests/suite.php</file>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>
|
|
||||||
|
<testsuite name="MessageVerification">
|
||||||
|
<file>tests/phpseclib_suite.php</file>
|
||||||
|
</testsuite>
|
||||||
|
</testsuites>
|
||||||
</phpunit>
|
</phpunit>
|
||||||
|
Binary file not shown.
Binary file not shown.
41
tests/phpseclib_suite.php
Normal file
41
tests/phpseclib_suite.php
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* The tests which require phpseclib */
|
||||||
|
|
||||||
|
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||||
|
require_once dirname(__FILE__).'/../lib/openpgp_crypt_rsa.php';
|
||||||
|
|
||||||
|
class MessageVerification extends PHPUnit_Framework_TestCase {
|
||||||
|
public function oneMessageRSA($pkey, $path) {
|
||||||
|
$pkeyM = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $pkey));
|
||||||
|
$m = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/' . $path));
|
||||||
|
$verify = new OpenPGP_Crypt_RSA($pkeyM);
|
||||||
|
$this->assertSame($verify->verify($m), TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUncompressedOpsRSA() {
|
||||||
|
$this->oneMessageRSA('pubring.gpg', 'uncompressed-ops-rsa.gpg');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCompressedSig() {
|
||||||
|
$this->oneMessageRSA('pubring.gpg', 'compressedsig.gpg');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCompressedSigZLIB() {
|
||||||
|
$this->oneMessageRSA('pubring.gpg', 'compressedsig-zlib.gpg');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testCompressedSigBzip2() {
|
||||||
|
$this->oneMessageRSA('pubring.gpg', 'compressedsig-bzip2.gpg');
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
public function testUncompressedOpsDSA() {
|
||||||
|
$this->oneMessageDSA('pubring.gpg', 'uncompressed-ops-dsa.gpg');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testUncompressedOpsDSAsha384() {
|
||||||
|
$this->oneMessageDSA('pubring.gpg', 'uncompressed-ops-dsa-sha384.gpg');
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
require dirname(__FILE__).'/../lib/openpgp.php';
|
require_once dirname(__FILE__).'/../lib/openpgp.php';
|
||||||
|
|
||||||
class Serialization extends PHPUnit_Framework_TestCase {
|
class Serialization extends PHPUnit_Framework_TestCase {
|
||||||
public function oneSerialization($path) {
|
public function oneSerialization($path) {
|
||||||
|
Loading…
Reference in New Issue
Block a user