package network.thunder.core.communication.objects.messages.impl.factories;
import network.thunder.core.communication.objects.messages.impl.message.lightningestablish.LNEstablishAMessage;
import network.thunder.core.communication.objects.messages.impl.message.lightningestablish.LNEstablishBMessage;
import network.thunder.core.communication.objects.messages.impl.message.lightningestablish.LNEstablishCMessage;
import network.thunder.core.communication.objects.messages.impl.message.lightningestablish.LNEstablishDMessage;
import network.thunder.core.communication.objects.messages.interfaces.factories.LNEstablishMessageFactory;
import network.thunder.core.database.objects.Channel;
import org.bitcoinj.core.Transaction;
import org.bitcoinj.crypto.TransactionSignature;
/**
* Created by matsjerratsch on 03/12/2015.
*/
public class LNEstablishMessageFactoryImpl extends MesssageFactoryImpl implements LNEstablishMessageFactory {
@Override
public LNEstablishAMessage getEstablishMessageA (Channel channel) {
LNEstablishAMessage message = new LNEstablishAMessage(
channel.getKeyServer().getPubKey(),
channel.getKeyServerA().getPubKey(),
channel.getAnchorSecretHashServer(),
channel.getAnchorRevocationHashServer(),
channel.getInitialAmountClient(),
channel.getInitialAmountServer());
return message;
}
@Override
public LNEstablishBMessage getEstablishMessageB (Channel channel, Transaction anchor) {
LNEstablishBMessage message = new LNEstablishBMessage(
channel.getKeyServer().getPubKey(),
channel.getKeyServerA().getPubKey(),
channel.getAnchorSecretHashServer(),
channel.getAnchorRevocationHashServer(),
anchor.getHash().getBytes(),
channel.getInitialAmountServer()
);
return message;
}
@Override
public LNEstablishCMessage getEstablishMessageC (Transaction anchor, TransactionSignature escapeSignature, TransactionSignature escapeFastSignature) {
LNEstablishCMessage message = new LNEstablishCMessage(
escapeSignature.encodeToBitcoin(),
escapeFastSignature.encodeToBitcoin(),
anchor.getHash().getBytes());
return message;
}
@Override
public LNEstablishDMessage getEstablishMessageD (TransactionSignature escapeSignature, TransactionSignature escapeFastSignature) {
LNEstablishDMessage message = new LNEstablishDMessage(
escapeSignature.encodeToBitcoin(),
escapeFastSignature.encodeToBitcoin()
);
return message;
}
}