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

fromExtended()   A

Complexity

Conditions 3
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 3
eloc 3
c 1
b 0
f 1
nc 1
nop 4
dl 0
loc 5
ccs 0
cts 3
cp 0
crap 12
rs 9.4285
1
<?php
2
3
namespace BitWasp\Bitcoin\Key\Deterministic;
4
5
use BitWasp\Bitcoin\Bitcoin;
6
use BitWasp\Bitcoin\Crypto\EcAdapter\Adapter\EcAdapterInterface;
7
use BitWasp\Bitcoin\Key\KeyToScript\ScriptDataFactory;
8
use BitWasp\Bitcoin\Network\NetworkInterface;
9
use BitWasp\Bitcoin\Serializer\Key\ScriptDecoratedHierarchicalKey\Base58ExtendedKeySerializer;
10
use BitWasp\Bitcoin\Serializer\Key\ScriptDecoratedHierarchicalKey\ExtendedKeySerializer;
11
use BitWasp\Bitcoin\Key\Deterministic\HdPrefix\GlobalPrefixConfig;
12
use BitWasp\Buffertools\BufferInterface;
13
14
class ScriptDecoratedHierarchicalKeyFactory
15
{
16
    /**
17
     * @param EcAdapterInterface $ecAdapter
18
     * @param GlobalPrefixConfig $hdPrefixConfig
19
     * @return Base58ExtendedKeySerializer
20
     */
21
    public static function getSerializer(EcAdapterInterface $ecAdapter, GlobalPrefixConfig $hdPrefixConfig)
22
    {
23
        return new Base58ExtendedKeySerializer(
24
            new ExtendedKeySerializer($ecAdapter, $hdPrefixConfig)
25
        );
26
    }
27
28
    /**
29
     * @param ScriptDataFactory $scriptDataFactory
30
     * @param EcAdapterInterface|null $ecAdapter
31
     * @return HierarchicalKeyScriptDecorator
32
     * @throws \Exception
33
     */
34
    public static function generateMasterKey(ScriptDataFactory $scriptDataFactory, EcAdapterInterface $ecAdapter = null)
35
    {
36
        return new HierarchicalKeyScriptDecorator(
37
            $scriptDataFactory,
38
            HierarchicalKeyFactory::generateMasterKey($ecAdapter)
39
        );
40
    }
41
42
    /**
43
     * @param BufferInterface $entropy
44
     * @param ScriptDataFactory $scriptDataFactory
45
     * @param EcAdapterInterface|null $ecAdapter
46
     * @return HierarchicalKeyScriptDecorator
47
     * @throws \Exception
48
     */
49 3
    public static function fromEntropy(BufferInterface $entropy, ScriptDataFactory $scriptDataFactory, EcAdapterInterface $ecAdapter = null)
50
    {
51 3
        return new HierarchicalKeyScriptDecorator(
52 3
            $scriptDataFactory,
53 3
            HierarchicalKeyFactory::fromEntropy($entropy, $ecAdapter)
54
        );
55
    }
56
57
    /**
58
     * @param string $extendedKey
59
     * @param GlobalPrefixConfig $config
60
     * @param NetworkInterface $network
61
     * @param EcAdapterInterface $ecAdapter
62
     * @return HierarchicalKeyScriptDecorator
63
     */
64
    public static function fromExtended($extendedKey, GlobalPrefixConfig $config, NetworkInterface $network = null, EcAdapterInterface $ecAdapter = null)
65
    {
66
        $extSerializer = self::getSerializer($ecAdapter ?: Bitcoin::getEcAdapter(), $config);
67
        return $extSerializer->parse($network ?: Bitcoin::getNetwork(), $extendedKey);
68
    }
69
}
70