function verify($packet)
{
$self = $this;
// For old PHP
if (!is_object($packet)) {
$packet = OpenPGP_Message::parse($packet);
}
if (!$this->message) {
$m = $packet;
$verifier = function ($m, $s) use($self) {
$key = $self->public_key($s->issuer());
if (!$key) {
return false;
}
$key->setHash(strtolower($s->hash_algorithm_name()));
return $key->verify($m, reset($s->data));
};
} else {
if (!$packet instanceof Crypt_RSA) {
$packet = new self($packet);
}
$m = $this->message;
$verifier = function ($m, $s) use($self, $packet) {
if (!$packet instanceof Crypt_RSA) {
$key = $packet->public_key($s->issuer());
}
if (!$key) {
return false;
}
$key->setHash(strtolower($s->hash_algorithm_name()));
return $key->verify($m, reset($s->data));
};
}
return $m->verified_signatures(array('RSA' => array('MD5' => $verifier, 'SHA1' => $verifier, 'SHA224' => $verifier, 'SHA256' => $verifier, 'SHA384' => $verifier, 'SHA512' => $verifier)));
}