mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-07-24 07:30:54 -04:00
Add Hmac to encrypted object, refactor crypto code (WIP)
This commit is contained in:
parent
4604e9c0bd
commit
4883c90030
33 changed files with 783 additions and 443 deletions
|
@ -25,6 +25,7 @@ import org.slf4j.Logger;
|
|||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@Immutable
|
||||
|
@ -68,9 +69,9 @@ public class PublishDepositTxRequest extends TradeMessage {
|
|||
this.openDisputeTimeAsBlockHeight = openDisputeTimeAsBlockHeight;
|
||||
this.checkPaymentTimeAsBlockHeight = checkPaymentTimeAsBlockHeight;
|
||||
|
||||
log.trace("offererPaymentAccount size " + Utilities.objectToByteArray(offererPaymentAccountContractData).length);
|
||||
log.trace("offererPaymentAccount size " + Utilities.serialize(offererPaymentAccountContractData).length);
|
||||
log.trace("offererTradeWalletPubKey size " + offererTradeWalletPubKey.length);
|
||||
log.trace("preparedDepositTx size " + preparedDepositTx.length);
|
||||
log.trace("offererInputs size " + Utilities.objectToByteArray(offererInputs).length);
|
||||
log.trace("offererInputs size " + Utilities.serialize(new ArrayList<>(offererInputs)).length);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,7 @@ package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
|||
|
||||
import io.bitsquare.btc.FeePolicy;
|
||||
import io.bitsquare.btc.data.PreparedDepositTxAndOffererInputs;
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Hash;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
|
@ -49,7 +49,7 @@ public class CreateAndSignDepositTxAsBuyer extends TradeTask {
|
|||
log.debug(trade.getContractAsJson());
|
||||
log.debug("----------");
|
||||
|
||||
byte[] contractHash = CryptoUtil.getHash(trade.getContractAsJson());
|
||||
byte[] contractHash = Hash.getHash(trade.getContractAsJson());
|
||||
trade.setContractHash(contractHash);
|
||||
PreparedDepositTxAndOffererInputs result = processModel.getTradeWalletService().offererCreatesAndSignsDepositTx(
|
||||
true,
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
package io.bitsquare.trade.protocol.trade.tasks.buyer;
|
||||
|
||||
import com.google.common.util.concurrent.FutureCallback;
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Hash;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
|
@ -41,7 +41,7 @@ public class SignAndPublishDepositTxAsBuyer extends TradeTask {
|
|||
try {
|
||||
runInterceptHook();
|
||||
|
||||
byte[] contractHash = CryptoUtil.getHash(trade.getContractAsJson());
|
||||
byte[] contractHash = Hash.getHash(trade.getContractAsJson());
|
||||
trade.setContractHash(contractHash);
|
||||
processModel.getTradeWalletService().takerSignsAndPublishesDepositTx(
|
||||
false,
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
package io.bitsquare.trade.protocol.trade.tasks.offerer;
|
||||
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Sig;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.common.util.Utilities;
|
||||
import io.bitsquare.p2p.Address;
|
||||
|
@ -75,7 +75,7 @@ public class CreateAndSignContract extends TradeTask {
|
|||
taker.getTradeWalletPubKey()
|
||||
);
|
||||
String contractAsJson = Utilities.objectToJson(contract);
|
||||
String signature = CryptoUtil.signMessage(processModel.getKeyRing().getMsgSignatureKeyPair().getPrivate(), contractAsJson);
|
||||
String signature = Sig.sign(processModel.getKeyRing().getSignatureKeyPair().getPrivate(), contractAsJson);
|
||||
|
||||
trade.setContract(contract);
|
||||
trade.setContractAsJson(contractAsJson);
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
package io.bitsquare.trade.protocol.trade.tasks.offerer;
|
||||
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Hash;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.locale.CurrencyUtil;
|
||||
import io.bitsquare.payment.BlockChainAccountContractData;
|
||||
|
@ -66,7 +66,7 @@ public class ProcessPayDepositRequest extends TradeTask {
|
|||
// We apply the payment ID in case its a cryptoNote coin. It is created form the hash of the trade ID
|
||||
if (paymentAccountContractData instanceof BlockChainAccountContractData &&
|
||||
CurrencyUtil.isCryptoNoteCoin(processModel.getOffer().getCurrencyCode())) {
|
||||
String paymentId = CryptoUtil.getHashAsHex(trade.getId()).substring(0, 32);
|
||||
String paymentId = Hash.getHashAsHex(trade.getId()).substring(0, 32);
|
||||
((BlockChainAccountContractData) paymentAccountContractData).setPaymentId(paymentId);
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ package io.bitsquare.trade.protocol.trade.tasks.seller;
|
|||
|
||||
import io.bitsquare.btc.FeePolicy;
|
||||
import io.bitsquare.btc.data.PreparedDepositTxAndOffererInputs;
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Hash;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
|
@ -44,7 +44,7 @@ public class CreateAndSignDepositTxAsSeller extends TradeTask {
|
|||
Coin sellerInputAmount = FeePolicy.SECURITY_DEPOSIT.add(FeePolicy.TX_FEE).add(trade.getTradeAmount());
|
||||
Coin msOutputAmount = sellerInputAmount.add(FeePolicy.SECURITY_DEPOSIT);
|
||||
|
||||
byte[] contractHash = CryptoUtil.getHash(trade.getContractAsJson());
|
||||
byte[] contractHash = Hash.getHash(trade.getContractAsJson());
|
||||
trade.setContractHash(contractHash);
|
||||
PreparedDepositTxAndOffererInputs result = processModel.getTradeWalletService().offererCreatesAndSignsDepositTx(
|
||||
false,
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
package io.bitsquare.trade.protocol.trade.tasks.seller;
|
||||
|
||||
import com.google.common.util.concurrent.FutureCallback;
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Hash;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.trade.Trade;
|
||||
import io.bitsquare.trade.protocol.trade.tasks.TradeTask;
|
||||
|
@ -44,7 +44,7 @@ public class SignAndPublishDepositTxAsSeller extends TradeTask {
|
|||
log.debug("----------");
|
||||
log.debug(trade.getContractAsJson());
|
||||
log.debug("----------");
|
||||
byte[] contractHash = CryptoUtil.getHash(trade.getContractAsJson());
|
||||
byte[] contractHash = Hash.getHash(trade.getContractAsJson());
|
||||
trade.setContractHash(contractHash);
|
||||
processModel.getTradeWalletService().takerSignsAndPublishesDepositTx(
|
||||
true,
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
package io.bitsquare.trade.protocol.trade.tasks.taker;
|
||||
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Hash;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.locale.CurrencyUtil;
|
||||
import io.bitsquare.payment.BlockChainAccountContractData;
|
||||
|
@ -54,7 +54,7 @@ public class ProcessPublishDepositTxRequest extends TradeTask {
|
|||
// We apply the payment ID in case its a cryptoNote coin. It is created form the hash of the trade ID
|
||||
if (paymentAccountContractData instanceof BlockChainAccountContractData &&
|
||||
CurrencyUtil.isCryptoNoteCoin(processModel.getOffer().getCurrencyCode())) {
|
||||
String paymentId = CryptoUtil.getHashAsHex(trade.getId()).substring(0, 32);
|
||||
String paymentId = Hash.getHashAsHex(trade.getId()).substring(0, 32);
|
||||
((BlockChainAccountContractData) paymentAccountContractData).setPaymentId(paymentId);
|
||||
}
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
|
||||
package io.bitsquare.trade.protocol.trade.tasks.taker;
|
||||
|
||||
import io.bitsquare.common.crypto.CryptoUtil;
|
||||
import io.bitsquare.common.crypto.Sig;
|
||||
import io.bitsquare.common.taskrunner.TaskRunner;
|
||||
import io.bitsquare.common.util.Utilities;
|
||||
import io.bitsquare.p2p.Address;
|
||||
|
@ -74,13 +74,13 @@ public class VerifyAndSignContract extends TradeTask {
|
|||
processModel.getTradeWalletPubKey()
|
||||
);
|
||||
String contractAsJson = Utilities.objectToJson(contract);
|
||||
String signature = CryptoUtil.signMessage(processModel.getKeyRing().getMsgSignatureKeyPair().getPrivate(), contractAsJson);
|
||||
String signature = Sig.sign(processModel.getKeyRing().getSignatureKeyPair().getPrivate(), contractAsJson);
|
||||
trade.setContract(contract);
|
||||
trade.setContractAsJson(contractAsJson);
|
||||
trade.setTakerContractSignature(signature);
|
||||
|
||||
try {
|
||||
CryptoUtil.verifyMessage(offerer.getPubKeyRing().getMsgSignaturePubKey(),
|
||||
Sig.verify(offerer.getPubKeyRing().getMsgSignaturePubKey(),
|
||||
contractAsJson,
|
||||
offerer.getContractSignature());
|
||||
} catch (Throwable t) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue