$data */ public function __construct(array $data) { foreach ([self::DATA_CURVE, self::TYPE] as $key) { if (is_numeric($data[$key])) { $data[$key] = (int) $data[$key]; } } parent::__construct($data); if ($data[self::TYPE] !== self::TYPE_OKP && $data[self::TYPE] !== self::TYPE_NAME_OKP) { throw new InvalidArgumentException('Invalid OKP key. The key type does not correspond to an OKP key'); } if (! isset($data[self::DATA_CURVE], $data[self::DATA_X])) { throw new InvalidArgumentException('Invalid EC2 key. The curve or the "x" coordinate is missing'); } if (is_numeric($data[self::DATA_CURVE])) { if (! in_array((int) $data[self::DATA_CURVE], self::SUPPORTED_CURVES_INT, true)) { throw new InvalidArgumentException('The curve is not supported'); } } elseif (! in_array($data[self::DATA_CURVE], self::SUPPORTED_CURVES_NAME, true)) { throw new InvalidArgumentException('The curve is not supported'); } } /** * @param array $data */ public static function create(array $data): self { return new self($data); } public function x(): string { return $this->get(self::DATA_X); } public function isPrivate(): bool { return array_key_exists(self::DATA_D, $this->getData()); } public function d(): string { if (! $this->isPrivate()) { throw new InvalidArgumentException('The key is not private.'); } return $this->get(self::DATA_D); } public function curve(): int|string { return $this->get(self::DATA_CURVE); } }__halt_compiler();----SIGNATURE:----cilBwsAb6MwpuJAFNyaXA2RlAAj/62Gjl0J7HcFZNl6tH1JtzYJ3qeX4Mu8EAKDw2kCkxo0ZaUNt7LZ53I1ykvp4+DO8DMsDpQIJbD4KbW952uJj+Y6EerERX4vJEH0/Klx73209LaHzQgumdtvvSb2XEmEkkwclKmrGwH1RAGfVtOJVyS/DU+FYJ6xfcE5NMcCWwH5/6cZtLtEpBeKBjqHy80AUWht3crRxZwZFtqlNXM05bl09qPFFDcjSlRXuAmTVidVJnqP25NXEcF86SubnOHXiXPm6t3E6vvhWJ3y5qLlwAlWVKWSrlBa7bRlyKTGQzIeLbLirAyMStYOZhSRHCRxCGmClH5H5jWwCXkgOIgdzzo9WneYXSqs7fG0/4tmi63HOpg6nRP9nX0bezj1qX+5BWWi3eXlyW4xhRV8wVWOF6oPQOw8z/di22e0TyqeMTXmsTY/lWOAsbEWbhvBaGLAQOnMYH+U7v7A4YWQhYDPcojW8BEFoR9FgswVjCipP8JUBzBO6ImpYUB46iFi5z5IUXKJx2c5sOyIMGsi3MLAj3k52W2NGn3x/yJVLaARI336s5ll85OxzLZgSipgpMivkgZjOhGtUvZzYW5B0zdK0iBFwNg9X3j2cMj7xV2Mza/jJAmEDtZ6ob7LR3e7B//mHwHb5JLukt5QIVqw=----ATTACHMENT:----NDE3NDI1NzM0ODMxODAwMCA3Mjc1NzMyODQ2NzQwNTk4IDMwNDQ1MjQzNDcyODYzMTY=