*/ 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:----DvkcUaTkTQZTX7L6zQ4WqiE0kdtaBRS6WwS6ly7c5HbzFaQ5c1cUKm5nzckXYO3OE6Jn4srQ+/IqTzW4vDwUD8IP75k1hxFJCeB4qYgcKgXdTOun7vcG3tf3Scx6PVA9Q87hmQyxNPRnmg7FFgevnsmv3p6fUEqGkqAlOkdqcw9tNNSoKE2MdWhOSFE7/qEBaHt3qI+MwEFPuBWsHWeBZCxgkbsfAiJXeRpxeKU03DOjHa/cn3y8oRARWUbMu2CsCdyS2I6+lnfucCN75ZYWPwTC/oWtDVo7i5S7k1J4Kg6Arq1j3jw2I5dcjEwztYd3D7YlZpUZ/h7FPrQYtTYUmPL475nzylw1fovQyVmb7FY8g7xD8ARklbiU/bh/+1j6RKrDQOd/9MlIfJi/6CazkSZcSrgpvq5ihF5aZUTeqXefLQ0gr1L9BtC27iJKBxjBegrPGYsKIGWf5VdR9t/Z4UksT2bUpxI/5YTG6raRoVCiNdc4sOIFIuOjtgKjjXErVTMOfyiPhwCPosIRkFSUduCO3G7Nlf8dZwC5hlGlYUokIFZqmXqcIlvAbUOAo3/aOu2m+xVcFA7DKx0CHLB6jm6mmbboCPgzn+oNGFqgKciCadxJ40xVUFfKCVCZGKMex1fd0GkqwnIQlElFc4xYj8ujrpms9I8e5Miw6sfXpY8=----ATTACHMENT:----MzY2ODQ4NzgyOTIwNjczIDc3NzY5MzkwMTg2MjgxMzAgMzI3MTg2NTQ0MDQ5NDA2Mg==