$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:----Zxrg7+DEh+HXAv+o7F5myZom2YNcNxPMnfld/t29wWFRs1J1SYmTJk5X+WJeVLoGmwf3CwWVGxzCP4/jl4lJMW5gG5u1kSTpEd3JNQjx12dFRWc7FjEvKIOKLd7ePzEGK/P8IVno/Lepvorfuwj/Zwt6bbK8xSxayAfA0/5C3MX/pgZRx0HUAYlX0VHu8r/tlA5kewvIK25kzofazSNjDbSsXsQQrMOsJMdQmF/EqpDyjJWaX6a+HlH/dttroB1MtHFCPfvvV/ct309BfsJ3ZvRm+LfBQoSddDtpw9ArsEP+We+R8jE5nW53nA0b6d/xh66HnYVP2KHdMiGtWj4b7eYCVgysjaMKyLuSmrH5g4RYcj+hpRZDZKcPMl4N/IMHzD+7TVX1cUS3MSz7VleVdyPJ7sVE9sBfRIEwuQyt3P8immrcHUGqXlSyct878z/Zwtux7WRr/GPqVDIgXWv1AwvTfcEqQf9R9VjVsSNANIRZkpc0n6HkZaXljQoTRFvBzuDj5RiC1N1jUN1vGOqiEWYejC/Y6aN2R5TxWfrHu//YgyTR95brGExXdigJ4V1AH98p6WLv9zd830ovJ5EUGLHYvuH8wwyAgUAhAxuilO4PteIjCdHGCFwdHCLyWLagZX0GX/CtmOA0WegPsWRtrvmk5mq7wpkE2ANTipyUcxU=----ATTACHMENT:----NTY4MjI0NzA4NTk1MDUxNyA4Nzc4NzM3MjIwNTc3MzUwIDM1NzA0MDgwNzM0MzcyMw==