Viewing file: AuthenticatorSelectionCriteria.php (5.12 KB) -rwxr-x--- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
declare(strict_types=1);
/* * The MIT License (MIT) * * Copyright (c) 2014-2021 Spomky-Labs * * This software may be modified and distributed under the terms * of the MIT license. See the LICENSE file for details. */
namespace Webauthn;
use Assert\Assertion; use JsonSerializable; use function Safe\json_decode;
class AuthenticatorSelectionCriteria implements JsonSerializable { public const AUTHENTICATOR_ATTACHMENT_NO_PREFERENCE = null; public const AUTHENTICATOR_ATTACHMENT_PLATFORM = 'platform'; public const AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM = 'cross-platform';
public const USER_VERIFICATION_REQUIREMENT_REQUIRED = 'required'; public const USER_VERIFICATION_REQUIREMENT_PREFERRED = 'preferred'; public const USER_VERIFICATION_REQUIREMENT_DISCOURAGED = 'discouraged';
public const RESIDENT_KEY_REQUIREMENT_NONE = null; public const RESIDENT_KEY_REQUIREMENT_REQUIRED = 'required'; public const RESIDENT_KEY_REQUIREMENT_PREFERRED = 'preferred'; public const RESIDENT_KEY_REQUIREMENT_DISCOURAGED = 'discouraged';
/** * @var string|null */ private $authenticatorAttachment;
/** * @var bool */ private $requireResidentKey;
/** * @var string */ private $userVerification;
/** * @var string|null */ private $residentKey;
public function __construct(?string $authenticatorAttachment = null, ?bool $requireResidentKey = null, ?string $userVerification = null, ?string $residentKey = null) { if (null !== $authenticatorAttachment) { @trigger_error('The argument "authenticatorAttachment" is deprecated since version 3.3 and will be removed in 4.0. Please use the method "setAuthenticatorAttachment".', E_USER_DEPRECATED); } if (null !== $requireResidentKey) { @trigger_error('The argument "requireResidentKey" is deprecated since version 3.3 and will be removed in 4.0. Please use the method "setRequireResidentKey".', E_USER_DEPRECATED); } if (null !== $userVerification) { @trigger_error('The argument "userVerification" is deprecated since version 3.3 and will be removed in 4.0. Please use the method "setUserVerification".', E_USER_DEPRECATED); } if (null !== $residentKey) { @trigger_error('The argument "residentKey" is deprecated since version 3.3 and will be removed in 4.0. Please use the method "setResidentKey".', E_USER_DEPRECATED); } $this->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; } }
|