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)));
 }