Viewing file: StatusReport.php (4.57 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\MetadataService;
use Assert\Assertion; use function in_array; use JsonSerializable; use function Safe\sprintf;
class StatusReport implements JsonSerializable { /** * @var string * * @see AuthenticatorStatus */ private $status;
/** * @var string|null */ private $effectiveDate;
/** * @var string|null */ private $certificate;
/** * @var string|null */ private $url;
/** * @var string|null */ private $certificationDescriptor;
/** * @var string|null */ private $certificateNumber;
/** * @var string|null */ private $certificationPolicyVersion;
/** * @var string|null */ private $certificationRequirementsVersion;
public function __construct(string $status, ?string $effectiveDate, ?string $certificate, ?string $url, ?string $certificationDescriptor, ?string $certificateNumber, ?string $certificationPolicyVersion, ?string $certificationRequirementsVersion) { Assertion::inArray($status, AuthenticatorStatus::list(), Utils::logicException('The value of the key "status" is not acceptable'));
$this->status = $status; $this->effectiveDate = $effectiveDate; $this->certificate = $certificate; $this->url = $url; $this->certificationDescriptor = $certificationDescriptor; $this->certificateNumber = $certificateNumber; $this->certificationPolicyVersion = $certificationPolicyVersion; $this->certificationRequirementsVersion = $certificationRequirementsVersion; }
public function isCompromised(): bool { return in_array($this->status, [ AuthenticatorStatus::ATTESTATION_KEY_COMPROMISE, AuthenticatorStatus::USER_KEY_PHYSICAL_COMPROMISE, AuthenticatorStatus::USER_KEY_REMOTE_COMPROMISE, AuthenticatorStatus::USER_VERIFICATION_BYPASS, ], true); }
public function getStatus(): string { return $this->status; }
public function getEffectiveDate(): ?string { return $this->effectiveDate; }
public function getCertificate(): ?string { return $this->certificate; }
public function getUrl(): ?string { return $this->url; }
public function getCertificationDescriptor(): ?string { return $this->certificationDescriptor; }
public function getCertificateNumber(): ?string { return $this->certificateNumber; }
public function getCertificationPolicyVersion(): ?string { return $this->certificationPolicyVersion; }
public function getCertificationRequirementsVersion(): ?string { return $this->certificationRequirementsVersion; }
public static function createFromArray(array $data): self { $data = Utils::filterNullValues($data); Assertion::keyExists($data, 'status', Utils::logicException('The key "status" is missing')); foreach (['effectiveDate', 'certificate', 'url', 'certificationDescriptor', 'certificateNumber', 'certificationPolicyVersion', 'certificationRequirementsVersion'] as $key) { if (isset($data[$key])) { Assertion::nullOrString($data[$key], Utils::logicException(sprintf('The value of the key "%s" is invalid', $key))); } }
return new self( $data['status'], $data['effectiveDate'] ?? null, $data['certificate'] ?? null, $data['url'] ?? null, $data['certificationDescriptor'] ?? null, $data['certificateNumber'] ?? null, $data['certificationPolicyVersion'] ?? null, $data['certificationRequirementsVersion'] ?? null ); }
public function jsonSerialize(): array { $data = [ 'status' => $this->status, 'effectiveDate' => $this->effectiveDate, 'certificate' => $this->certificate, 'url' => $this->url, 'certificationDescriptor' => $this->certificationDescriptor, 'certificateNumber' => $this->certificateNumber, 'certificationPolicyVersion' => $this->certificationPolicyVersion, 'certificationRequirementsVersion' => $this->certificationRequirementsVersion, ];
return Utils::filterNullValues($data); } }
|