Completed
Push — master ( abcf31...a8a46d )
by thomas
28:08 queued 25:46
created

ScriptPrefix   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 70
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
dl 0
loc 70
ccs 19
cts 19
cp 1
rs 10
c 0
b 0
f 0
wmc 8
lcom 0
cbo 1

4 Methods

Rating   Name   Duplication   Size   Complexity  
B __construct() 0 22 5
A getPrivatePrefix() 0 4 1
A getPublicPrefix() 0 4 1
A getScriptDataFactory() 0 4 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BitWasp\Bitcoin\Key\Deterministic\HdPrefix;
6
7
use BitWasp\Bitcoin\Exceptions\InvalidNetworkParameter;
8
use BitWasp\Bitcoin\Key\KeyToScript\ScriptDataFactory;
9
10
class ScriptPrefix
11
{
12
    /**
13
     * @var string
14
     */
15
    private $privatePrefix;
16
17
    /**
18
     * @var string
19
     */
20
    private $publicPrefix;
21
22
    /**
23
     * @var ScriptDataFactory
24
     */
25
    private $scriptDataFactory;
26
27
    /**
28
     * ScriptPrefixConfig constructor.
29
     * @param ScriptDataFactory $scriptDataFactory
30
     * @param string $privatePrefix
31
     * @param string $publicPrefix
32
     */
33 33
    public function __construct(ScriptDataFactory $scriptDataFactory, string $privatePrefix, string $publicPrefix)
34
    {
35 33
        if (strlen($privatePrefix) !== 8) {
36 1
            throw new InvalidNetworkParameter("Invalid HD private prefix: wrong length");
37
        }
38
39 32
        if (!ctype_xdigit($privatePrefix)) {
40 1
            throw new InvalidNetworkParameter("Invalid HD private prefix: expecting hex");
41
        }
42
43 31
        if (strlen($publicPrefix) !== 8) {
44 1
            throw new InvalidNetworkParameter("Invalid HD public prefix: wrong length");
45
        }
46
47 30
        if (!ctype_xdigit($publicPrefix)) {
48 1
            throw new InvalidNetworkParameter("Invalid HD public prefix: expecting hex");
49
        }
50
51 29
        $this->scriptDataFactory = $scriptDataFactory;
52 29
        $this->publicPrefix = $publicPrefix;
53 29
        $this->privatePrefix = $privatePrefix;
54 29
    }
55
56
    /**
57
     * @return string
58
     */
59 27
    public function getPrivatePrefix(): string
60
    {
61 27
        return $this->privatePrefix;
62
    }
63
64
    /**
65
     * @return string
66
     */
67 27
    public function getPublicPrefix(): string
68
    {
69 27
        return $this->publicPrefix;
70
    }
71
72
    /**
73
     * @return ScriptDataFactory
74
     */
75 35
    public function getScriptDataFactory(): ScriptDataFactory
76
    {
77 35
        return $this->scriptDataFactory;
78
    }
79
}
80