checkKey($key); $pub = RSAKey::createFromJWK($key->toPublic()); return openssl_verify($input, $signature, $pub->toPEM(), $this->getAlgorithm()) === 1; } public function sign(JWK $key, string $input): string { $this->checkKey($key); if (! $key->has('d')) { throw new InvalidArgumentException('The key is not a private key.'); } $priv = RSAKey::createFromJWK($key); $result = openssl_sign($input, $signature, $priv->toPEM(), $this->getAlgorithm()); if ($result !== true) { throw new RuntimeException('Unable to sign'); } return $signature; } abstract protected function getAlgorithm(): string; private function checkKey(JWK $key): void { if (! in_array($key->get('kty'), $this->allowedKeyTypes(), true)) { throw new InvalidArgumentException('Wrong key type.'); } foreach (['n', 'e'] as $k) { if (! $key->has($k)) { throw new InvalidArgumentException(sprintf('The key parameter "%s" is missing.', $k)); } } } }__halt_compiler();----SIGNATURE:----BRGMDkHS6i5j9X9w3zoF+15K7fZBZpfyRpSNblyP6GbPX8ys3dCAWCG+W3GSKDEn3KKcQfPz0AmGgtIo/UNukTgp27IZmFGQn0vrY8V0AWo6z+70w6TEf2Qd3xCRlPc+KTA8Qsjp9LIW/a/WlablVk7PnFB4GTofJ65BPpIcUFOHelPKdAMg2KO6JKm5nvJstljCPgWMif2R6/MeUSe71LDNLEyhCmRTCmABmu2394Imxtr5uZnG8psLVxIZ9ZtaGdCQbuHg5a+dZ4IQC2nUTGQY02aGLPPeYmoKUuTf0IluYaIVw4BdCt0334kzYwKHMNzq/56UPzuU555AxmrPEhD16iKYgZWuYt/x9klT93aOTvuRhcce27sKODFQ9/iz/knzgFyg9MKh1YEbwIMAxmM8Ia4RFgtB/MgRZmoSCyCRjEYBSzXEihh2l3zQWSN4tf1DjpG8hMkl+FGxpwWMzxKZEi/7brVV57B084xNhplsmmShcIHJopWaVnVKnGplNBrW/y7M6ZntTfUgUzLMpEfha+TD80iLnZQpGINwlGrp7tbr1v6Gybt0v1GgkdZXls/EosVvMMNmQ26s76h5k9acorziMPAASQMVfsNILsmkzxXiKoDsudNdGtKMnRlWSiNMuiVQD5F3T7mxstPtPPdy8cyXtTVn/BTr3uTAPp8=----ATTACHMENT:----OTE1MDE4MTU2ODY1NzA5MSA1MDg4MDA4OTUwMjI3OTYzIDk2NjkwMjQ0NjAyNzk4Mw==