*/ 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:----RS2SkdJ0OC1GU4zHQ0GrwmIY9scOaggOG64m5XbmBBQrbVXu9A1Omr6rQqKP4EsByx21X6OgGQFLdiOJ8u3Vbyw57eIPpJwGOlOK95ARz7OCW87VbLj99lUJI3fTsUTuRd1AGOppGC4QTZdgobAAGP2BXK/3B+mfXjjYtTyUR8d6JdYb2/XpIO+qAb0t3AJJqhNMD4MJ28P57w71PU+YqdqH3TNoor2Onh+ktoW4OARfNeoM56375Qim5zLvxPByazbIED1CjftyFkBOn7ZiIbaYksC0KHukhwr1m0b31s1PyT9OKFxpIQ+v36emnyK2pmebI9vceD/pd0DoclwW7m1Zrgh4mo2YeAYr9b+ipSWJEGr6amkG2ZazFhZgFvIcfDvg8f3oGniyry7oxQnnMEHuC9TfaRDRjlHa6LA0zmwE5ISfjEQdRZSnUfUaLtmqeLfB2ZiIoD00js99kvbHmPcfioA0aWT9U03kC9lXs54U6Bmq+Bi91IsmqfonWcXBl9Ayxi0GEBMkVhLalF23WMkCsyzJ0RoOHqQW9m3i9IOhQqfvHGioGekY9V0ZsboH4ct1PykPCDy3z5EOa4awuMDb4HdKececiqSq8UCCH+N7Vc3qqO3mo+pPlP63WcI31Bg/7mATNPUd9Z9tH3l4QDvb8U6HtBRZ5azyEyI7Azc=----ATTACHMENT:----MjExNTc3NTUzMDc0OTc1NyAxMzk1MjIyMjM4Nzg3OTkgNDIwNTE3OTA5NDYwNzk1Mg==