Message::signMessage()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 4
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 5
c 0
b 0
f 0
ccs 4
cts 4
cp 1
rs 9.4285
cc 1
eloc 3
nc 1
nop 1
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace BitWasp\Trezor\Device;
6
7
use BitWasp\TrezorProto\ButtonAck;
8
use BitWasp\TrezorProto\ClearSession;
9
use BitWasp\TrezorProto\GetAddress;
10
use BitWasp\TrezorProto\GetEntropy;
11
use BitWasp\TrezorProto\GetPublicKey;
12
use BitWasp\TrezorProto\Initialize;
13
use BitWasp\TrezorProto\MessageType;
14
use BitWasp\TrezorProto\PassphraseAck;
15
use BitWasp\TrezorProto\Ping;
16
use BitWasp\TrezorProto\PinMatrixAck;
17
use BitWasp\TrezorProto\SignMessage;
18
use BitWasp\TrezorProto\VerifyMessage;
19
20
class Message
21
{
22
    /**
23
     * @var MessageType
24
     */
25
    private $type;
26
27
    /**
28
     * @var \Protobuf\Message
29
     */
30
    private $proto;
31
32 42
    public function __construct(MessageType $messageType, \Protobuf\Message $protobuf)
33
    {
34 42
        $this->type = $messageType;
35 42
        $this->proto = $protobuf;
36 42
    }
37
38 41
    public function getType(): int
39
    {
40 41
        return $this->type->value();
41
    }
42
43 41
    public function getProto(): \Protobuf\Message
44
    {
45 41
        return $this->proto;
46
    }
47
48 5
    public static function getPublicKey(GetPublicKey $getPublicKey): self
49
    {
50 5
        return new self(
51 5
            MessageType::MessageType_GetPublicKey(),
52 5
            $getPublicKey
53
        );
54
    }
55
56 7
    public static function getAddress(GetAddress $getAddress): self
57
    {
58 7
        return new self(
59 7
            MessageType::MessageType_GetAddress(),
60 7
            $getAddress
61
        );
62
    }
63
64 3
    public static function getEntropy(GetEntropy $getEntropy): self
65
    {
66 3
        return new self(
67 3
            MessageType::MessageType_GetEntropy(),
68 3
            $getEntropy
69
        );
70
    }
71
72 7
    public static function pinMatrixAck(PinMatrixAck $pinAck): self
73
    {
74 7
        return new self(
75 7
            MessageType::MessageType_PinMatrixAck(),
76 7
            $pinAck
77
        );
78
    }
79
80 2
    public static function passphraseAck(PassphraseAck $passphraseAck): self
81
    {
82 2
        return new self(
83 2
            MessageType::MessageType_PassphraseAck(),
84 2
            $passphraseAck
85
        );
86
    }
87
88 3
    public static function initialize(Initialize $initialize): self
89
    {
90 3
        return new self(
91 3
            MessageType::MessageType_Initialize(),
92 3
            $initialize
93
        );
94
    }
95
96 7
    public static function buttonAck(ButtonAck $ack): self
97
    {
98 7
        return new self(
99 7
            MessageType::MessageType_ButtonAck(),
100 7
            $ack
101
        );
102
    }
103
104 3
    public static function signMessage(SignMessage $signMessage): self
105
    {
106 3
        return new self(
107 3
            MessageType::MessageType_SignMessage(),
108 3
            $signMessage
109
        );
110
    }
111
112 3
    public static function verifyMessage(VerifyMessage $verifyMsg): self
113
    {
114 3
        return new self(
115 3
            MessageType::MessageType_VerifyMessage(),
116 3
            $verifyMsg
117
        );
118
    }
119
120 7
    public static function ping(Ping $ping): self
121
    {
122 7
        return new self(
123 7
            MessageType::MessageType_Ping(),
124 7
            $ping
125
        );
126
    }
127
128 3
    public static function clearSession(ClearSession $clear): self
129
    {
130 3
        return new self(
131 3
            MessageType::MessageType_ClearSession(),
132 3
            $clear
133
        );
134
    }
135
}
136