Completed
Pull Request — master (#662)
by thomas
38:24
created

ScriptPrefix::__construct()   B

Complexity

Conditions 5
Paths 5

Size

Total Lines 22
Code Lines 12

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 12
nc 5
nop 3
dl 0
loc 22
rs 8.6737
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
    public function __construct(ScriptDataFactory $scriptDataFactory, string $privatePrefix, string $publicPrefix)
34
    {
35
        if (strlen($privatePrefix) !== 8) {
36
            throw new InvalidNetworkParameter("Invalid HD private prefix: wrong length");
37
        }
38
39
        if (!ctype_xdigit($privatePrefix)) {
40
            throw new InvalidNetworkParameter("Invalid HD private prefix: expecting hex");
41
        }
42
43
        if (strlen($publicPrefix) !== 8) {
44
            throw new InvalidNetworkParameter("Invalid HD public prefix: wrong length");
45
        }
46
47
        if (!ctype_xdigit($publicPrefix)) {
48
            throw new InvalidNetworkParameter("Invalid HD public prefix: expecting hex");
49
        }
50
51
        $this->scriptDataFactory = $scriptDataFactory;
52
        $this->publicPrefix = $publicPrefix;
53
        $this->privatePrefix = $privatePrefix;
54
    }
55
56
    /**
57
     * @return string
58
     */
59
    public function getPrivatePrefix(): string
60
    {
61
        return $this->privatePrefix;
62
    }
63
64
    /**
65
     * @return string
66
     */
67
    public function getPublicPrefix(): string
68
    {
69
        return $this->publicPrefix;
70
    }
71
72
    /**
73
     * @return ScriptDataFactory
74
     */
75
    public function getScriptDataFactory(): ScriptDataFactory
76
    {
77
        return $this->scriptDataFactory;
78
    }
79
}
80