From aacabb968553bf6605e99547c6e6ac8ace641474 Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Wed, 6 Jul 2022 13:24:26 -0500 Subject: [PATCH] Clear sensitive data from trade ProcessModel. --- .../java/bisq/core/trade/model/bisq_v1/Trade.java | 7 +++++-- .../trade/protocol/bisq_v1/model/ProcessModel.java | 11 ++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/bisq/core/trade/model/bisq_v1/Trade.java b/core/src/main/java/bisq/core/trade/model/bisq_v1/Trade.java index b5ad48d1fcb..35b6048eccd 100644 --- a/core/src/main/java/bisq/core/trade/model/bisq_v1/Trade.java +++ b/core/src/main/java/bisq/core/trade/model/bisq_v1/Trade.java @@ -284,8 +284,6 @@ public static protobuf.Trade.TradePeriodState toProtoMessage(Trade.TradePeriodSt // Persistable // Immutable @Getter - private final ProcessModel processModel; - @Getter private final boolean isCurrencyForTakerFeeBtc; @Getter private final long tradeTxFeeAsLong; @@ -293,6 +291,8 @@ public static protobuf.Trade.TradePeriodState toProtoMessage(Trade.TradePeriodSt private final long takerFeeAsLong; // Mutable + @Getter + private ProcessModel processModel; @Nullable @Getter @Setter @@ -710,6 +710,9 @@ public void maybeClearSensitiveData() { if (contract != null && contract.maybeClearSensitiveData()) { change += "contract;"; } + if (processModel != null && processModel.maybeClearSensitiveData()) { + change += "processModel;"; + } if (contractAsJson != null) { String edited = contract.sanitizeContractAsJson(contractAsJson); if (!edited.equals(contractAsJson)) { diff --git a/core/src/main/java/bisq/core/trade/protocol/bisq_v1/model/ProcessModel.java b/core/src/main/java/bisq/core/trade/protocol/bisq_v1/model/ProcessModel.java index 17b7f20fa14..a7ad26a85a8 100644 --- a/core/src/main/java/bisq/core/trade/protocol/bisq_v1/model/ProcessModel.java +++ b/core/src/main/java/bisq/core/trade/protocol/bisq_v1/model/ProcessModel.java @@ -116,11 +116,11 @@ public static byte[] hashOfPaymentAccountPayload(PaymentAccountPayload paymentAc transient private Transaction depositTx; // Persistable Immutable - private final TradingPeer tradingPeer; private final String offerId; private final PubKeyRing pubKeyRing; // Persistable Mutable + private TradingPeer tradingPeer; @Nullable @Setter private String takeOfferFeeTxId; @@ -343,6 +343,15 @@ public void setDepositTxMessageState(MessageState messageState) { } } + public boolean maybeClearSensitiveData() { + boolean changed = false; + if (tradingPeer.getPaymentAccountPayload() != null || tradingPeer.getContractAsJson() != null) { + // If tradingPeer was null in persisted data from some error cases we set a new one to not cause nullPointers + this.tradingPeer = new TradingPeer(); + changed = true; + } + return changed; + } /////////////////////////////////////////////////////////////////////////////////////////// // Delegates