*/ 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:----PD95xa5+EvtfsyqYxoHzbFvJmsOw/CoIbltsn+pPiKNcrIxygMh9MAGS4g3LMfozWXUiYAzP1J1ZwpsHHSptMv4r/J801qgdGfE+qV4cp7nIU0YVqRR/7TpaHwHeiHZP0Nr4EiUeGXjEJadFOIdkRPiOLJ7S9dwrwZ5qnp2XeG7DOO9wmubilat+aby1FIFFO6G2QYXYeL4wV1c3ov6r5avqXhtoWke/94ADd/S0lgg68A28lpG8R6g7RhMxu6smcaUUq/7hmRbA1khL6GHQnjZIf4lEoziascpAbhoWu7kR9Y/s90BAsxDItGyc/Um0oxTW7WB4ecb02VeJPBVBhWiKR6DsI3gdhuVEbALNHAaEuw0Oe9dWtB38XYHXy+7hkzFR7kQeQwWmpMczGu74WgNNyjQ9Eoyrdry7kPManWdwGs31lQez+4VCT2ZqthbnbYnuQ10WtMQ2AsK7cG83Qzbn+co5fkm//e5ThTl8d0z1GQwnGIgxbBY7OMJxWJqgAMEh4Erm9WyRv8TD11SQHpTxR6B1+j8qwuM/UPeUH+MiaHZwUsxaBgK12lAnm2vfUwCTwiw1GGbTdmwvtPLM/EhHEFiIaw0n29MzUF3c0xPm6bHrZ+Isk8aJeUldl7JrMwau/ft3u2JpP6cuJDPuz0tptrv38o3sG6XqN2G4/4I=----ATTACHMENT:----MzgzNDMwNDk5MDcxMzcyNCA0MTA4MjM3MTA0ODYxMTgxIDkzMjIwODU1OTE3Mjg4MzY=