Completed
Pull Request — 0.0.35 (#659)
by thomas
30:11 queued 21:19
created

ScriptedHierarchicalKeyFactory   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 5

Test Coverage

Coverage 28.57%

Importance

Changes 0
Metric Value
dl 0
loc 56
ccs 4
cts 14
cp 0.2857
rs 10
c 0
b 0
f 0
wmc 6
lcom 0
cbo 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A getSerializer() 0 6 1
A generateMasterKey() 0 7 1
A fromEntropy() 0 7 1
A fromExtended() 0 5 3
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\ScriptedHierarchicalKey\Base58ScriptedExtendedKeySerializer;
10
use BitWasp\Bitcoin\Serializer\Key\ScriptedHierarchicalKey\ExtendedKeyWithScriptSerializer;
11
use BitWasp\Bitcoin\Key\Deterministic\HdPrefix\GlobalPrefixConfig;
12
use BitWasp\Buffertools\BufferInterface;
13
14
class ScriptedHierarchicalKeyFactory
15
{
16
    /**
17
     * @param EcAdapterInterface $ecAdapter
18
     * @param GlobalPrefixConfig $hdPrefixConfig
19
     * @return Base58ScriptedExtendedKeySerializer
20
     */
21
    public static function getSerializer(EcAdapterInterface $ecAdapter, GlobalPrefixConfig $hdPrefixConfig)
22
    {
23
        return new Base58ScriptedExtendedKeySerializer(
24
            new ExtendedKeyWithScriptSerializer($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 2
    public static function fromEntropy(BufferInterface $entropy, ScriptDataFactory $scriptDataFactory, EcAdapterInterface $ecAdapter = null)
50
    {
51 2
        return new HierarchicalKeyScriptDecorator(
52 2
            $scriptDataFactory,
53 2
            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