/** * @return true if the signature is valid, false otherwise */ public static function verif(TOGoS_RSAUtil_Signature $sig, $blobSource) { $pubKeyData = $blobSource->getBlob($sig->getPublicKeyUri()); $pubKeyPem = TOGoS_RSAUtil_Util::looksLikePem($pubKeyData) ? $pubKeyData : TOGoS_RSAUtil_Util::derToPem($pubKeyData); $pubKey = openssl_pkey_get_public($pubKeyPem); if ($pubKey === false) { throw new Exception("Failed to parse public key data"); } $data = TOGoS_RSAUtil_Util::getSignaturePayload($sig, $blobSource); $verified = openssl_verify($data, $sig->getSignatureBytes(), $pubKey, TOGoS_RSAUtil_Util::rsaAlgoIdFromName($sig->getAlgorithmName())); openssl_free_key($pubKey); return (bool) $verified; }
public function getPublicKeyPem() { return TOGoS_RSAUtil_Util::derToPem($this->privDer, "PUBLIC KEY"); }