$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:----VR3gMwLF9wz03kXA4Bl2heypOCYBnXP5tXdVvpD8lYwixn/UAD8Xzl5TLqtoF6HgBHo7qZPirVgwNfnLlV7aK26UktptxmsMYqmeqfurZm/6awYVreNcKgke4RL3D6mNoRhf0LmycJFwzOG103Kj7LAqo/3LcVsp33YkjRlIYeBZTbRQa1zJq/9p6+xzMixXzztYzMmgAhS815+cLl8A2+mip6+2PjycrIdsqQbdFd7axZD1Ka6zUelm4f5xXlSZ5bFSR/U1dKkMPQcYKgVeM+dYJ4FBxoKevmMi6GfxrmcTAUg9JsMgULAi9BDIZhe1IqeVb/9TL8qGWnVMgsuzm/VgIXUNPpQhQaWjgKPwUmmc3jHw5z80SD/JL2j4Xva930VEWS2dA68q3GQbKqqjpB1tV6NMICBc8dn/DIt5LrMiicDxjstoXVQUgIAd+9Qx+PTMuNbDzOSxUGoh43dF+QX7/Y2fNGcIUXPu+nxZpN/GB9CzdXda6sa6rFuqN44tpdm7Md9ROyRJ0pCUvFnkCMqK5u69y+jqKrJtVGAG1ECX0flbV6l8v9eadMC2XNs4o2y0gBd8FmcJAtbQfODUCj2b5pato8C/G3VGUCiNpGR93OZeaxbnnyTZIlGk9K+QqvgE7LnaZ4fOzLmoQQVpLO1Pge5o1B03+tYIOBA2f7E=----ATTACHMENT:----MzA2MTkyNDAyODA5ODQxNyA4MzMzOTY4MzM2NjgyNTcwIDgxNzI0NzU0MDU3NzgxOTE=