*/ 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:----LWEWQjgpuZLTme3itH9uIaVd5W8bEOROkjriG4o7Kn7ow37oGRtka6v12I8pIXbdYJoJ4JNXIvNDB5Wk43AcypTmXDPs4G+FGK4RhLIVlz94iPRMO4au8v7xf1hj8ZVmo969E0r4yrK/u7L6BR9aS8y6dfYDgOLHctRA0Dh1WzmKVT8jTO1zUtNGA5ZJEpk+R+h78NKBR36kI/3/w72kJcyjh3mVSmXXC3x//m5u8tDOMvPj5llIfP/IEogTvOLR0vPLbqkqMeCj0owCgsTyhL8fhOmU7YG58rn1ej/VEchabp1YdXciSRviZb8Mog0VzHPOTJeU/EoOzUhBqCw2/vrFjx0QAYFDNjCjvvJBjFy5VUY4m6XfPyVoUbBVioa5f0oc1j+f88rXm/wxZwMnAwIE2EJwqTw8vpSWVuVqtygkFBSpzBvOmeMYr/HgSbyqjc+aleJHN2gLnrfcVW3NZicBUBDiE3p613bqqbFC6BSURGUXXALef1wD09fNDGTxtK0Vzh+tRTCiBah7Exn/Z5GXut1HankvpVtq+ohZQ/c6MLTgYeghhHQfzEued4G+9IXV7dbWfKLD4Om1+7WGvYXQbymh4F3lpm1CeYprzVMRCLYEkf4LKCc5TabV+WTr0ie7a3PIOwWrEbz//CqVnSW12moMlVfjxdB4qM/19YI=----ATTACHMENT:----MjUyODgwMjQwMDAzMDMxOSA0MDQzMjUxNDIzNTM1NTE1IDM5OTE3NjE5NTE5NTM2ODg=