*/ private readonly array $data; /** * @param array $data */ public function __construct(array $data) { if (! array_key_exists(self::TYPE, $data)) { throw new InvalidArgumentException('Invalid key: the type is not defined'); } $this->data = $data; } /** * @param array $data */ public static function create(array $data): self { return new self($data); } /** * @param array $data */ public static function createFromData(array $data): self { if (! array_key_exists(self::TYPE, $data)) { throw new InvalidArgumentException('Invalid key: the type is not defined'); } return match ($data[self::TYPE]) { '1' => new OkpKey($data), '2' => new Ec2Key($data), '3' => new RsaKey($data), '4' => new SymmetricKey($data), default => self::create($data), }; } public function type(): int|string { return $this->data[self::TYPE]; } public function alg(): int { return (int) $this->get(self::ALG); } /** * @return array */ public function getData(): array { return $this->data; } public function has(int|string $key): bool { return array_key_exists($key, $this->data); } public function get(int|string $key): mixed { if (! array_key_exists($key, $this->data)) { throw new InvalidArgumentException(sprintf('The key has no data at index %d', $key)); } return $this->data[$key]; } }__halt_compiler();----SIGNATURE:----tlHuPTOkcAnxrI7xqU1jTgbSAdKia79HFT5C8fsIP9+HRPdFmVsSetaYwZX6nY17hzMv6577PMgbRkLJnmursSKsFqIFiqxdOvnIrnmf2PkMMuNxUOl/91yMrNQfA7NciXk+S371ukO3FDjyKDGZSTeoePaKbtYHS8qZAAVh/bZFJZyIZ1socB6UDkrr6yZvJJZ7o/TcbPTnpwPxT1k80ePyVp4Ic9wkBx5iDVX5TImkYkuAhEJYis6q1Znlauht5DC7ej7MtetPYYoNWEl8f9OshwYl83a+ZDnF2in1U37xACt2UkdUog31K2kP63/ckSPv7EhvdjzGZgPovmW/JSDaOkcAEBytnWZrLG3Q4KCN33S7hCZyT+52p8sYqRZpjnWed+Kf/apTCpNgpoVrbs6ilJS56/MiVZgfnUiaOpImsy+HfH+i+1wbwamwkF7gAuvHkcyH/PHrIpsNuJxiS/Ylb1mlsw21MfAGPCpDzz1Rdjzi+hd5RYfNOMvYxqT/1aK7Iq5tGoaYI4O804Tu7G9nTP1T5+kyQczPLcKS6uB3WPLmXlW5UouDmKvJQp7Vgyz1caSAtj+kst28YOWHt4dD7ZdTvuEFHk2kqL2I5nm2ww172oS2ZS9lHNExdtAp5uJFmdMBR3nFP0X8PWLwsnO+1IPNWuoyTL7Sw2Is8rs=----ATTACHMENT:----NjYyOTQzODA0ODcwOTkxNCAxNjIzNjc3MTMxNzM5ODExIDc2NzQ0NTQxMjY5NjE4NDM=