/** */ public function verify($msg, $key) { $verify = new OpenPGP_Crypt_RSA($key->message); $pkey = $verify->key(); switch ($pkey->algorithm) { case 1: case 2: case 3: // RSA return $verify->verify($msg->message); case 17: // DSA $dsa = new Horde_Pgp_Crypt_DSA($pkey); $verifier = function ($m, $s) use($dsa) { return $dsa->verify($m, Horde_String::lower($s->hash_algorithm_name()), new Math_BigInteger($s->data[0], 256), new Math_BigInteger($s->data[1], 256)); }; return $msg->message->verified_signatures(array('DSA' => array('MD5' => $verifier, 'SHA1' => $verifier, 'SHA224' => $verifier, 'SHA256' => $verifier, 'SHA384' => $verifier, 'SHA512' => $verifier))); } throw new RuntimeException(); }