*/ class Certificate { /** @var string */ private $certificatePEM; /** @var Certificate */ private $issuerCertificate; /** * @param string $certificatePEM * @param Certificate|null $issuerCertificate */ public function __construct($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() { $chain = []; $issuerCertificate = $this->getIssuerCertificate(); while (null !== $issuerCertificate) { $chain[] = $issuerCertificate; $issuerCertificate = $issuerCertificate->getIssuerCertificate(); } return $chain; } /** * @return string */ public function getPEM() { return $this->certificatePEM; } /** * @return Certificate|null */ public function getIssuerCertificate() { 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; } /** * @return PublicKey */ public function getPublicKey() { return new PublicKey(openssl_pkey_get_details($this->getPublicKeyResource())['key']); } }__halt_compiler();----SIGNATURE:----litq8+poL65ly5QTWuKyu2MpS7i9+YRqNZifOcyoB9tVzPJEUJRzXHdV2Imr2iSksqhbimSIMk1okGY9nk/1RhEIvOohEaLAUYFHSv1jsyy4Wcg0Dmfo+x5Zo5U8m3IfWNwvHBU+giklIvkSl5VMDCOATU6qA5DVxL2YQcTtpdBDSAfM60LRmD49QDBTYjHITCfZ2gD4JyBly9kCu0RIlcy0emKstMp98DM8q7XpaKw613u7SdDCn1J4H8DBZm9in6zOanLN5Z37mO0Bjx0/f4NSNPiW5DstTNXZkQMlQe0VfuBrLqgrIVmcZV7nVg/BxdtWcSo5CpF/SlcIoviKYZmQh6zRTbkwYbYPcXBPgs2VPLk5PMMGQkSYxfWwTIinHr1I6c0uJDl+F3KwdAfHteJ1fnsuUDX2SHiWYep7p1pYhkA9V0kvdNRCv/I2I6n984NybNwIUeaotjGyV/SHHAyK6/upli3+3Ybk9bpl5RhR6b6bxUcp0GXdqTG157Wl+3VRFBXM7lXjtyouqPz067RvESAiyLjoJpIOWoBcqUNKRs9VYVoutN7Dc/h2m8R6dFR2w+VR2WM8naTLDJIIGBwF5vJ5cLpKRuNxy1GaD5e9QoqHFZxOKFNqNQoPh8oJ1FwhbzJsOuTuxPJLSyZo0AV2cqfPxvVQ4Z3FKoDYD+g=----ATTACHMENT:----NjU5NzM4MTU2NDMyNjc4MiA5OTE0MjQzNTg0MzM5ODgwIDY0OTczNjI5OTEwMzMzNjg=