*/ class PrivateKey extends Key { /** * {@inheritdoc} */ public function getResource() { if (!$resource = openssl_pkey_get_private($this->keyPEM)) { throw new KeyFormatException(sprintf('Failed to convert key into resource: %s', openssl_error_string())); } return $resource; } public function getPublicKey(): PublicKey { $resource = $this->getResource(); if (!$details = openssl_pkey_get_details($resource)) { throw new KeyFormatException(sprintf('Failed to extract public key: %s', openssl_error_string())); } // PHP 8 automatically frees the key instance and deprecates the function if (\PHP_VERSION_ID < 80000) { openssl_free_key($resource); } return new PublicKey($details['key']); } public static function fromDER(string $keyDER): self { Assert::stringNotEmpty($keyDER, __METHOD__.'::$keyDER should be a non-empty string. Got %s'); $der = base64_encode($keyDER); $lines = str_split($der, 65); array_unshift($lines, '-----BEGIN PRIVATE KEY-----'); $lines[] = '-----END PRIVATE KEY-----'; $lines[] = ''; return new self(implode("\n", $lines)); } }__halt_compiler();----SIGNATURE:----GHagI9E5wZjMoviFDdnkil2grs5dNmcth2kAuQoFsI5g0LjIZInN6dUw1+enfxr/HvcRp/TOxGftvrE2PBMiHlVKP1SyCGpXxHZdXRqspnpZMrvRbZRZGHfxWJ9Q1bTPX7IB9i6puoUom4TLoaBHbBqWKf7yJR5GlyxQ1hs8MpdNauhbb98rgDSy4uy+LFfYXpsVBHeXvMH+oWn+d5GfYvAEoUjjrutRXLA36xUfzzFvsyNwzNv6yGgCqoIC/qWGSteFirgtwMa2WwUMwe6cl/NbixmqeGoum5MLkrGfrbOc1/NOKD/0guKWdmup8Bm6L+9fBMpDUZ46gABej7vVrdDrMnUot6v2aSlhmRqOUPseprTJqIUNBvdB2e6UxQMFzVvIDBa4N9bvu6BKizr8NPCZzp3/NCHzdEL1WLfLZ3XLR4pw5EGjQYBIiDN3hyuc0XP2pyzZajUCaukjN+mZVw46MzZzL1wZimB7Y7b/V/eoLwuEbq+GiVHFl8tcaUDe5xOM0+aPFaCwVaIAeeQucAzOFlCFoOsMy8J1gq+RLxpvZombiwd1NDlZNOJ38e+ywZLMnGWr6HxhiiJW8bPOoZbh4H+1eGHPfa1oXfgTZoEvkSrqBBi1KvZHLbvsdlC76csCO6hAugzkAJ17emP7p8yebFAilDpaaA0CF039lio=----ATTACHMENT:----NTI0MDIzOTQzMjczMDIyIDg3MjU5ODM0MjYyMjM1NDAgOTMyMTMzOTk4MDk0NDU4Ng==