Passed
Push — master ( 3569aa...ab7ae0 )
by Florent
02:27
created

AttestationStatementSupportManager   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 20
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 20
rs 10
c 0
b 0
f 0
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A add() 0 3 1
A isValid() 0 8 2
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * The MIT License (MIT)
7
 *
8
 * Copyright (c) 2014-2018 Spomky-Labs
9
 *
10
 * This software may be modified and distributed under the terms
11
 * of the MIT license.  See the LICENSE file for details.
12
 */
13
14
namespace U2FAuthentication\Fido2\AttestationStatement;
15
16
use U2FAuthentication\Fido2\AuthenticatorData;
17
use U2FAuthentication\Fido2\CollectedClientData;
18
19
class AttestationStatementSupportManager
20
{
21
    /**
22
     * @var AttestationStatementSupport[]
23
     */
24
    private $attestationStatementSupports = [];
25
26
    public function add(AttestationStatementSupport $attestationStatementSupport)
27
    {
28
        $this->attestationStatementSupports[$attestationStatementSupport->name()] = $attestationStatementSupport;
29
    }
30
31
    public function isValid(AttestationStatement $attestationStatement, AuthenticatorData $authenticatorData, CollectedClientData $collectedClientData): bool
32
    {
33
        $fmt = $attestationStatement->getFmt();
34
        if (!array_key_exists($fmt, $this->attestationStatementSupports)) {
35
            throw new \InvalidArgumentException(sprintf('The attestation format "%s" is not supported.', $fmt));
36
        }
37
38
        return $this->attestationStatementSupports[$fmt]->isValid($attestationStatement, $authenticatorData, $collectedClientData);
39
    }
40
}
41