*/ 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:----ftpvxTw5av7UOQ4iF4hi9CsCr5hIY34G5OGEWkbp+bKI7lPaO2KHi/TSzjtnBG1yDCIfK3AkTOFbcak0/RBe3ESVm3/GDvOXIViJ8S+0G0o39nkBDlQ+SwoXxD/Vc6feM+ZssAGkxLdMJu4WxiXOuQEUlz5OmKIbjQksWMNhSE8lRN1nQpkPTJnv3Li8aIiyqVaCte2D49fskh7u9n36Pvurdra+R8aAS2caYZBr08+BDWPOS9srtCCmqZ4ddJmW09qO8ZTufiuhp9XFCpp/Q1mYb56ouCdYKTvdwmNPN4Y22JGpPoX6CoaZyZ0m+iJ58TmPQQCIL1VXWBuojQ835hqxqVDcWtz/oj8N8g94HVCx7xdQzbmtCbQjOhiY4Wu/mSUg3VlfWU45D5bADqFaNUKhpkn/SdlGpzShJTr/lDGFYOtGn/AOKQbMni3UWal+pAXhxVU3fdLU5wBXolY/YAOuyUsm8h1L2JvIQNBSi1DF7dYI5KCblBbzBIaSY+OC1SafCBAhkmr3gySRD4gC8rEIrRtNYvTpGnKgGIEdcyP2Z7TS3+lMpxYzS5wtquYBIS4cE5HSJcd8klXjquj/UAeIDdWztoc1aVBsbVzMC4LIH+s3c9SgWIB8Nc9UpRAV7hw7InZOIMBJJOdfvGxCx5VS9gpaiubOgB+P1X8QuPQ=----ATTACHMENT:----MTE1NDY4MjU2NDU2NzgyNiA4MTA4NTc0MjQ4MTY0Mzg2IDM4OTgwNDg5NDEwMDA3NTA=