authenticatorAttachment = $authenticatorAttachment; $this->requireResidentKey = $requireResidentKey ?? false; $this->userVerification = $userVerification ?? self::USER_VERIFICATION_REQUIREMENT_PREFERRED; $this->residentKey = $residentKey ?? self::RESIDENT_KEY_REQUIREMENT_NONE; } public static function create(): self { return new self(); } public function setAuthenticatorAttachment(?string $authenticatorAttachment): self { $this->authenticatorAttachment = $authenticatorAttachment; return $this; } public function setRequireResidentKey(bool $requireResidentKey): self { $this->requireResidentKey = $requireResidentKey; return $this; } public function setUserVerification(string $userVerification): self { $this->userVerification = $userVerification; return $this; } public function setResidentKey(?string $residentKey): self { $this->residentKey = $residentKey; return $this; } public function getAuthenticatorAttachment(): ?string { return $this->authenticatorAttachment; } public function isRequireResidentKey(): bool { return $this->requireResidentKey; } public function getUserVerification(): string { return $this->userVerification; } public function getResidentKey(): ?string { return $this->residentKey; } public static function createFromString(string $data): self { $data = json_decode($data, true); Assertion::isArray($data, 'Invalid data'); return self::createFromArray($data); } /** * @param mixed[] $json */ public static function createFromArray(array $json): self { return self::create() ->setAuthenticatorAttachment($json['authenticatorAttachment'] ?? null) ->setRequireResidentKey($json['requireResidentKey'] ?? false) ->setUserVerification($json['userVerification'] ?? self::USER_VERIFICATION_REQUIREMENT_PREFERRED) ->setResidentKey($json['residentKey'] ?? self::RESIDENT_KEY_REQUIREMENT_NONE) ; } /** * @return mixed[] */ public function jsonSerialize(): array { $json = [ 'requireResidentKey' => $this->requireResidentKey, 'userVerification' => $this->userVerification, ]; if (null !== $this->authenticatorAttachment) { $json['authenticatorAttachment'] = $this->authenticatorAttachment; } if (null !== $this->residentKey) { $json['residentKey'] = $this->residentKey; } return $json; } }