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

ScriptPrefix::getPublicPrefix()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
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