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 }