*/ 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:----kFoT+ycdnPqbh7UriI1A5lamf9TA6Ag9jqJIAgscVuZJH4nUh8UJyqONNW0hNX+mPS/kLDxT8BSG2thqmLJ3up51HipO/0E0SpM0uxwYFTV0BbJugR5V3zPdbPfzhO7JphhtW4hZRXJ5Ybr/WRNFkcL+yQETuu4lrhjnmeJIb4YHx5Wtko4ufWCquSi+P4JhV7biEHe6YQHFnwlnVj/hvzg853n2uwP+ugouISxY9NHIOmN70BVsl/vJPh4wxwWlzDMwzoCyfUh6xw9+EdTLxnqAYNKVP6tNZP2k/gKXCjsJBSwzHlcI0xl8Ewl3sNDJb73HuGZX55APGkHI67F9dPRm1mosowUmmhdoAZLeOYlncUo/nVNgMyCIj01t+TipPzUmBRF5o2Z6f7SvfpNiIyGYAsXoYmAVYawZZsz7OwpsTRXfe+yMqBoJKeZZGSi1d/+eH+7x4P5exmCazAN751Z1GmL/RkyruLjvZiwhizMJ8/vzElwN5XTgC1kqNX6qGZkQ82OHwHeiJ9OTPLIre0dmn3+x4foRHWDhj7jsPgH2GwJzHwp+rU229DO9fNmqQ5OoGFkFK6PdKU7XzdVSoiLHQ3u8nsANX69S+ieTztCgRySDy8sZnpyVyT1eugYBzN1eFPf7Is+ouxoFR2drYkOFwGMxpgUirsA4sjItBZ8=----ATTACHMENT:----NzE1NTQ1NzI3MTA4MzA5NiA5ODE3NjgyMDgwOTUwMzI1IDc2MTU5NzIyOTY1MzQ5MzI=