54 lines
1.1 KiB
PHP
54 lines
1.1 KiB
PHP
|
<?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 function Safe\base64_decode;
|
||
|
use function Safe\json_decode;
|
||
|
|
||
|
class SingleMetadata
|
||
|
{
|
||
|
/**
|
||
|
* @var MetadataStatement
|
||
|
*/
|
||
|
private $statement;
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
private $data;
|
||
|
/**
|
||
|
* @var bool
|
||
|
*/
|
||
|
private $isBase64Encoded;
|
||
|
|
||
|
public function __construct(string $data, bool $isBase64Encoded)
|
||
|
{
|
||
|
$this->data = $data;
|
||
|
$this->isBase64Encoded = $isBase64Encoded;
|
||
|
}
|
||
|
|
||
|
public function getMetadataStatement(): MetadataStatement
|
||
|
{
|
||
|
if (null === $this->statement) {
|
||
|
$json = $this->data;
|
||
|
if ($this->isBase64Encoded) {
|
||
|
$json = base64_decode($this->data, true);
|
||
|
}
|
||
|
$statement = json_decode($json, true);
|
||
|
$this->statement = MetadataStatement::createFromArray($statement);
|
||
|
}
|
||
|
|
||
|
return $this->statement;
|
||
|
}
|
||
|
}
|