$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:----TUSU3uq4S+Becr1/SPzYRXtbJOJYAZx6kyWUkoRVfV5X/PnQIL2MRtHL2TCymd4GlWsB0gCkYAW40y3dc0UlWZqWN9hcVu7L9le+P3mfEUL761l8WVNKt3e3amIi41MFXn+5jw8VjDSMnHQNhjm8XOwXu9oi729xXfGNQAHBQ7sYvJCDKPO5nvFpazuiQYzuNwRBp5MG0hoK03i2l0Dxv9+7qYLLZVzoBy0vMc80Dp4pLXyViPpojjl4EvqMVAxRkMgFQp4LDLMY8GywR2GK9Yp/LjJjEwZ/ThLmem+RSwSXjxm6HRdmtfgITKNkn2QGNGzS9W3ChNBkXx9a/MRIwqpTT1tduli/eJSZOxuJpsL28zT7RyNmXdww4eKLIpTELE3GWyHuCAn7c3cHUEHW95Ocs+l8rsG+fptpunQi9XPMtxzQjlA52womRS7kHs2x07m818p1rPepYUOdyOa4WaOMijPAfxIOOB6J19uaJHYlh9pu5cuZMOP397ZZs7lc+tmTrmEvfUONe5it7OJw5Zn/mobMVMA8flJb+XWKhsxfXL35eGlyoLlILgzhjZAsZrjhT/NQU4LO0EWiNuLO4v2VWAW0w6v2SOO8fHsr0qBcDw14PD2jyz8G7m13h6mJKG0+VO575ap7XHWEVD2nezYbtPaUg4QP45Nrpz2gh+8=----ATTACHMENT:----MTUyMDI1MDg2MzMxODEwOSA1NDQyMjc5MzQ1MDczMzQgMjA1NDI2MTA0OTQzMjU5Nw==