*/ 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:----mxV3Q4HntJEG2CdlRvfS4qOhw39akLSZQV7skQrwckBAIjKFoEW5G47EEx5jlYcJkhWiABHHpiCfjRr904vlKssmf//K/0+gUwQobYU73e6NReLn4PfGjYVZaK746UticOJxfjCf27CL/KZb8NSMJmIgN71nSWby1OZB9ak7HVE/+FzM9Wp+oLBEN4ItC0YRQVGpiOFUO61LKx8MxdslScS+DzS+TYCqLkimKxf2/hKJPURXnUWYv8zD/zQPBpJ8OvSdTsBHLgLDEf1Y+YOv0D0gKU/EB8lqBdPDEIaAD1gMNcIQE/ep8ERp9C5SMzw14q38hTiqH69jJH5ekL0m5SR5Sj3i7sUFeBl/iX7pAegyCj8tnZpxXJWW/VKr0H4MEG30SNO5sGea+byEpSciH/UMPy/ajnQYdoR+dxxzmUIK9j38ujzbjPJryobY83oxTeapSuPfJJfK9haffD0xTi0raATGYj4EV683ELGDOebej8U/biCqtn2xELmh5CG/czzZZyqC/jDseSA75e4GcqCV6qH2Se01AfeXwtvgqMiMsxjvJ1Vkl+y6oPjA/n2kYyp0QoTXLbnqa7xAm8nJOZXN+YfXTy0TLmIapLHFssnNchN3jpz4TsedLLlDlFyByJD58TYF1EesiDX64It3QAfhDjYhL4pT/UOUc1oswp4=----ATTACHMENT:----ODI0MjY0MjU3MzU5MjU3NyA3MDM2OTg1NTA5OTE2NTIxIDM4ODEyNzgzNzk1ODU2MjA=