*/ class Certificate { /** @var string */ private $certificatePEM; /** @var Certificate */ private $issuerCertificate; public function __construct(string $certificatePEM, ?self $issuerCertificate = null) { Assert::stringNotEmpty($certificatePEM, __CLASS__.'::$certificatePEM should not be an empty string. Got %s'); $this->certificatePEM = $certificatePEM; $this->issuerCertificate = $issuerCertificate; } /** * @return Certificate[] */ public function getIssuerChain(): array { $chain = []; $issuerCertificate = $this->getIssuerCertificate(); while (null !== $issuerCertificate) { $chain[] = $issuerCertificate; $issuerCertificate = $issuerCertificate->getIssuerCertificate(); } return $chain; } public function getPEM(): string { return $this->certificatePEM; } public function getIssuerCertificate(): ?self { return $this->issuerCertificate; } /** * @return resource */ public function getPublicKeyResource() { if (!$resource = openssl_pkey_get_public($this->certificatePEM)) { throw new CertificateFormatException(sprintf('Failed to convert certificate into public key resource: %s', openssl_error_string())); } return $resource; } public function getPublicKey(): PublicKey { return new PublicKey(openssl_pkey_get_details($this->getPublicKeyResource())['key']); } }__halt_compiler();----SIGNATURE:----SEkmVGIeiwbZ0tS7bMwXxipGOJaTKh9B+IVowECjzdPzitD/yrGlr7g39x58Agc9JpXG11smxiga4M+2+RLeGiKNUVNbhsWoi44soepkIvwt6xDugl3VuOVfcek9l5QNLlPkVU4JhCRGE7wHHiACrwHf+NJV+XfqBLf6YHVn0IbRbvVdKQAyPaQEUuQNKPkGki738/E7OavmAOQi0KKAaIvcqC0lIRtZWj3RJMDEf5n3KY8nd5DHFCqoJ3TT14dX88GBpemh/WpazUTMN3Td/caCwBCdsRfxajTWNDRUzhIyum6zBxyDWr2ExzlgcHMGaeDTjqtZPXcbYCnRkAtKZxE3WSMgt9ClJ7jAiyHc6ag6NTMSsFtWN+2tUszuvdtVIIe4bN1fXqayl97S1hLQhOrPLTn3tgoY4dVTnzJqh55WkGC/eleK4no15UiLMOCr+1S6dfF1BXlU0jR+hgqXCAdT1n+OGAg9VXw8yErO45IM1qbZnswK5Y7NtjYCLUvWLHON23L73GbAJbYuTjtotXY63QWF75mfdeTr6h+G5801FNByVIc+iGv3piwDkhfNBTuxj1vP3PUIRrXshmZ93oAvQ1FTYWoiM1a+n8T2bBtcTZGzhUdNfL11H3/0oFM5cUwOad09sfZALWmsJCiz+bxXwtIKktOU0zdb2VfXFio=----ATTACHMENT:----MTc2MTQ2ODQzODc2ODkwIDM1OTAyNTIzMjg3NjAzNzQgOTYwMDAwMTA4Njk2MDEyNQ==