If session decryption fails, return NULL
Otherwise it returns false, we try to unpack that, and generally bad things happen.
This commit is contained in:
parent
413741fa84
commit
498e60602b
@ -208,7 +208,8 @@ class OpenPGP_Crypt_RSA {
|
|||||||
|
|
||||||
static function try_decrypt_session($key, $edata) {
|
static function try_decrypt_session($key, $edata) {
|
||||||
$key->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
|
$key->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
|
||||||
$data = $key->decrypt($edata);
|
$data = @$key->decrypt($edata);
|
||||||
|
if(!$data) return NULL;
|
||||||
$sk = substr($data, 1, strlen($data)-3);
|
$sk = substr($data, 1, strlen($data)-3);
|
||||||
$chk = unpack('n', substr($data, -2));
|
$chk = unpack('n', substr($data, -2));
|
||||||
$chk = reset($chk);
|
$chk = reset($chk);
|
||||||
|
@ -109,6 +109,24 @@ class Decryption extends PHPUnit_Framework_TestCase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testDecryptRoundtrip() {
|
||||||
|
$m = new OpenPGP_Message(array(new OpenPGP_LiteralDataPacket("hello\n")));
|
||||||
|
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/helloKey.gpg'));
|
||||||
|
$em = OpenPGP_Crypt_Symmetric::encrypt($key, $m);
|
||||||
|
|
||||||
|
foreach($key as $packet) {
|
||||||
|
if(!($packet instanceof OpenPGP_SecretKeyPacket)) continue;
|
||||||
|
$decryptor = new OpenPGP_Crypt_RSA($packet);
|
||||||
|
$m2 = $decryptor->decrypt($em);
|
||||||
|
|
||||||
|
foreach($m2 as $p) {
|
||||||
|
if($p instanceof OpenPGP_LiteralDataPacket) {
|
||||||
|
$this->assertEquals($p->data, "hello\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function testDecryptSecretKey() {
|
public function testDecryptSecretKey() {
|
||||||
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/encryptedSecretKey.gpg'));
|
$key = OpenPGP_Message::parse(file_get_contents(dirname(__FILE__) . '/data/encryptedSecretKey.gpg'));
|
||||||
$skey = OpenPGP_Crypt_Symmetric::decryptSecretKey("hello", $key[0]);
|
$skey = OpenPGP_Crypt_Symmetric::decryptSecretKey("hello", $key[0]);
|
||||||
|
Loading…
Reference in New Issue
Block a user