*/ 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:----rE8But93tPbVxhjwgVJqDQbYS1bqK4m9IJ3tv/vn0WQE5hS4aRW7wUwLdZLD5fYLxb9kDH0+DueJhYHFCz/gX693qCaDWHgmWdemlMer8KKGvFMlmUYYDl1lxNzPeQRw/Q4ZaWR5hRLptSkDTJhPCfqa5D6hC+MsmD4gcLu8y8lv+YeHLuzMsQ+2ohuV/2lqlddYYrsRPguU6P+PojgVeYoHNTu+PwCfWrCbjOYUDEf84SYnWVxPm1sOhJTfwAZvddqFKf2Gy24pwUkPkWEj3kSSzvj306kEr8tibSIqHbYRQsOOnrWu39KgC4jYMJzKRf1COR7FkoRUzU9CTN1oDI6FxwTtZT/lGad6hpBewrT5VIj96PjuzLbt5jbzC/qmx7mhZgSsa5NVOwtSPE+BdvDBS0Ys7xxzFk5l//R3Xs7JftT4CbvwJCsNirjupXP4kUe88Y0cg8ymOz5QZ2U3tB7Toe7hFsrsPUxRSRIpkDiEUx8B3bMmz84px/LfJYToPPnzzzKiqqWJsqOJwh0S09dk/TM44RHNAtq0gAhR49Z7zX+NGT4Aya2Bu+cfraLvNTmQWLVurLcstrxXG45vPoflm5/MRg5E6tEPAPMx0SasP5T7J4sdwUejsLghLPGvXY+hh+OcTQ2yXT/qAMS+7AO5HVLz9qCrG0uwkJyYNfA=----ATTACHMENT:----NjI1MDMyMDgwMDk4MzI4MCA5MzU2MzY0NDM2MjM3NzMgOTMyMjAzNjE4MjA4NTU0OA==