Completed
Pull Request — 0.0.35 (#659)
by thomas
25:58
created

ScriptPrefix::__construct()   B

Complexity

Conditions 5
Paths 5

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 13
CRAP Score 5

Importance

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