Coverage Summary for Class: P2pkhBtcLockSender (co.rsk.peg.btcLockSender)
Class |
Class, %
|
Method, %
|
Line, %
|
P2pkhBtcLockSender |
0%
(0/1)
|
0%
(0/5)
|
0%
(0/23)
|
1 package co.rsk.peg.btcLockSender;
2
3 import co.rsk.bitcoinj.core.Address;
4 import co.rsk.bitcoinj.core.BtcECKey;
5 import co.rsk.bitcoinj.core.BtcTransaction;
6 import co.rsk.bitcoinj.script.Script;
7 import co.rsk.core.RskAddress;
8
9 public class P2pkhBtcLockSender implements BtcLockSender {
10
11 private TxSenderAddressType txSenderAddressType;
12 private Address btcAddress;
13 private RskAddress rskAddress;
14
15 public P2pkhBtcLockSender() {
16 this.txSenderAddressType = TxSenderAddressType.P2PKH;
17 }
18
19 @Override
20 public TxSenderAddressType getTxSenderAddressType() {
21 return txSenderAddressType;
22 }
23
24 @Override
25 public Address getBTCAddress() {
26 return this.btcAddress;
27 }
28
29 @Override
30 public RskAddress getRskAddress() {
31 return this.rskAddress;
32 }
33
34 @Override
35 public boolean tryParse (BtcTransaction btcTx) {
36 if (btcTx == null) {
37 return false;
38 }
39 if (btcTx.getInputs().size() == 0) {
40 return false;
41 }
42 if (btcTx.getInput(0).getScriptBytes() == null) {
43 return false;
44 }
45
46 Script scriptSig = btcTx.getInput(0).getScriptSig();
47 if (scriptSig.getChunks().size() != 2) {
48 return false;
49 }
50
51 try {
52 byte[] data = scriptSig.getChunks().get(1).data;
53
54 //Looking for btcAddress
55 BtcECKey senderBtcKey = BtcECKey.fromPublicOnly(data);
56 this.btcAddress = new Address(btcTx.getParams(), senderBtcKey.getPubKeyHash());
57
58 //Looking for rskAddress
59 org.ethereum.crypto.ECKey key = org.ethereum.crypto.ECKey.fromPublicOnly(data);
60 this.rskAddress = new RskAddress(key.getAddress());
61 } catch(Exception e) {
62 return false;
63 }
64 return true;
65 }
66 }