*/ 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:----U0J46VH/8b6tyuWEBihjZQIttTMmFF4hhS3gzQIGYdRlRzBqrYKfG1H4I8i2IqnvSDd3ABc4pkZ4le7f8cHkuK7GG1SwZmrVULjEgfjM4gTw/AlJ7AxDrjVbNsU/kyrqrpU66BM5pqm4Vr3jGwEoqydES39AYQ/Du7olBtGsaqkCBCavnXXz4WIW+BlnLxMVh9A7Vmy06EvlIzr3+uNwJi0I51pIBRNh0ks4SYQxTe7Zf7KKdeH6oPlRzv49//p1ODpCcscR+mE8VbesFq2vq3pMZSp4NRi09yNkyjhpp/xR8ADIYyjuE7Tb0CB59ZN3cEcrL8wNpsrDgnFCk8i/tIflBe/0vM8zHevgVIQu2UPTly+bEGNqNn7HyRnzf/b8yWnIIrS+x1iFWuHiNv9i/46KNxqOZgtu1pqA1T/bmxqNupN3h2VaagaTwAJjxetMQqL278c5JI6+bgYJTVbozEmVT1tSQZOr9dUbg1DtvuBjTVf55mvquEg3Ivc4kuF00d/90H2kulH8Km3/eBNTxi+VuKbfvgomDBaFYUWwB5WDEx40iMd+ZWxfURATd5LDhpGjboeazaeVdi1toIf88+ZPzuY42vbRBO08kzC4J3FSwj2889brZ0JHETKnITn174brfTVNvPLkLH/V2yCHFTEr4izmNV0TBD1Dya6wE1s=----ATTACHMENT:----OTc2NTY3MTY5NzE4MDAyNCA5MDEwMzExMDU5ODM1Njk0IDE4OTc5MjI3MTk4NjQ1NTg=