mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-08-21 12:48:35 -04:00
Use encryption/sig for all messages
This commit is contained in:
parent
32c56dad1a
commit
0ec86550b0
68 changed files with 1494 additions and 1152 deletions
|
@ -19,6 +19,7 @@ package io.bitsquare.app;
|
|||
|
||||
import io.bitsquare.btc.UserAgent;
|
||||
import io.bitsquare.btc.WalletService;
|
||||
import io.bitsquare.crypto.KeyStorage;
|
||||
import io.bitsquare.gui.main.MainView;
|
||||
import io.bitsquare.p2p.tomp2p.TomP2PModule;
|
||||
import io.bitsquare.storage.Storage;
|
||||
|
@ -59,6 +60,7 @@ public class BitsquareAppEnvironment extends BitsquareEnvironment {
|
|||
setProperty(WalletService.PREFIX_KEY, appName);
|
||||
|
||||
setProperty(Storage.DIR_KEY, Paths.get(appDataDir, "db").toString());
|
||||
setProperty(KeyStorage.DIR_KEY, Paths.get(appDataDir, "keys").toString());
|
||||
|
||||
setProperty(MainView.TITLE_KEY, appName);
|
||||
|
||||
|
|
|
@ -22,6 +22,8 @@ import io.bitsquare.arbitration.ArbitratorModule;
|
|||
import io.bitsquare.arbitration.tomp2p.TomP2PArbitratorModule;
|
||||
import io.bitsquare.btc.BitcoinModule;
|
||||
import io.bitsquare.crypto.CryptoModule;
|
||||
import io.bitsquare.crypto.KeyRing;
|
||||
import io.bitsquare.crypto.KeyStorage;
|
||||
import io.bitsquare.gui.GuiModule;
|
||||
import io.bitsquare.offer.OfferModule;
|
||||
import io.bitsquare.offer.tomp2p.TomP2POfferModule;
|
||||
|
@ -59,12 +61,17 @@ class BitsquareAppModule extends BitsquareModule {
|
|||
|
||||
@Override
|
||||
protected void configure() {
|
||||
bind(KeyStorage.class).in(Singleton.class);
|
||||
bind(KeyRing.class).in(Singleton.class);
|
||||
bind(User.class).in(Singleton.class);
|
||||
bind(Preferences.class).in(Singleton.class);
|
||||
bind(AccountSettings.class).in(Singleton.class);
|
||||
|
||||
File storageDir = new File(env.getRequiredProperty(Storage.DIR_KEY));
|
||||
bind(File.class).annotatedWith(named(Storage.DIR_KEY)).toInstance(storageDir);
|
||||
|
||||
File keyStorageDir = new File(env.getRequiredProperty(KeyStorage.DIR_KEY));
|
||||
bind(File.class).annotatedWith(named(KeyStorage.DIR_KEY)).toInstance(keyStorageDir);
|
||||
|
||||
bind(Environment.class).toInstance(env);
|
||||
bind(UpdateProcess.class).in(Singleton.class);
|
||||
|
|
|
@ -21,6 +21,7 @@ import io.bitsquare.app.UpdateProcess;
|
|||
import io.bitsquare.arbitration.ArbitrationRepository;
|
||||
import io.bitsquare.btc.BitcoinNetwork;
|
||||
import io.bitsquare.btc.WalletService;
|
||||
import io.bitsquare.crypto.KeyRing;
|
||||
import io.bitsquare.fiat.FiatAccount;
|
||||
import io.bitsquare.gui.common.model.ViewModel;
|
||||
import io.bitsquare.gui.util.BSFormatter;
|
||||
|
@ -85,6 +86,7 @@ class MainViewModel implements ViewModel {
|
|||
final String bitcoinNetworkAsString;
|
||||
|
||||
private final User user;
|
||||
private KeyRing keyRing;
|
||||
private final WalletService walletService;
|
||||
private final ArbitrationRepository arbitrationRepository;
|
||||
private final ClientNode clientNode;
|
||||
|
@ -93,10 +95,11 @@ class MainViewModel implements ViewModel {
|
|||
private final BSFormatter formatter;
|
||||
|
||||
@Inject
|
||||
public MainViewModel(User user, WalletService walletService, ArbitrationRepository arbitrationRepository, ClientNode clientNode,
|
||||
public MainViewModel(User user, KeyRing keyRing, WalletService walletService, ArbitrationRepository arbitrationRepository, ClientNode clientNode,
|
||||
TradeManager tradeManager, BitcoinNetwork bitcoinNetwork, UpdateProcess updateProcess,
|
||||
BSFormatter formatter) {
|
||||
this.user = user;
|
||||
this.keyRing = keyRing;
|
||||
this.walletService = walletService;
|
||||
this.arbitrationRepository = arbitrationRepository;
|
||||
this.clientNode = clientNode;
|
||||
|
@ -137,7 +140,7 @@ class MainViewModel implements ViewModel {
|
|||
// Set executor for all P2PServices
|
||||
BaseP2PService.setUserThread(Platform::runLater);
|
||||
|
||||
Observable<BootstrapState> bootstrapStateAsObservable = clientNode.bootstrap(user.getP2pSigKeyPair());
|
||||
Observable<BootstrapState> bootstrapStateAsObservable = clientNode.bootstrap(keyRing.getDhtSignatureKeyPair());
|
||||
bootstrapStateAsObservable.publish();
|
||||
bootstrapStateAsObservable.subscribe(
|
||||
state -> Platform.runLater(() -> setBootstrapState(state)),
|
||||
|
|
|
@ -22,7 +22,7 @@ import io.bitsquare.gui.common.view.FxmlView;
|
|||
import io.bitsquare.gui.common.view.InitializableView;
|
||||
import io.bitsquare.trade.protocol.availability.CheckOfferAvailabilityProtocol;
|
||||
import io.bitsquare.trade.protocol.availability.tasks.ProcessReportOfferAvailabilityMessage;
|
||||
import io.bitsquare.trade.protocol.availability.tasks.RequestIsOfferAvailable;
|
||||
import io.bitsquare.trade.protocol.availability.tasks.SendRequestIsOfferAvailableMessage;
|
||||
import io.bitsquare.trade.protocol.placeoffer.PlaceOfferProtocol;
|
||||
import io.bitsquare.trade.protocol.placeoffer.tasks.AddOfferToRemoteOfferBook;
|
||||
import io.bitsquare.trade.protocol.placeoffer.tasks.BroadcastCreateOfferFeeTx;
|
||||
|
@ -82,7 +82,7 @@ public class DebugView extends InitializableView {
|
|||
/*---- Protocol ----*/
|
||||
CheckOfferAvailabilityProtocol.class,
|
||||
io.bitsquare.trade.protocol.availability.tasks.GetPeerAddress.class,
|
||||
RequestIsOfferAvailable.class,
|
||||
SendRequestIsOfferAvailableMessage.class,
|
||||
ProcessReportOfferAvailabilityMessage.class,
|
||||
Boolean.class, /* used as seperator*/
|
||||
|
||||
|
|
|
@ -210,7 +210,7 @@ class OfferBookDataModel implements Activatable, DataModel {
|
|||
}
|
||||
|
||||
boolean isMyOffer(Offer offer) {
|
||||
return offer.getP2pSigPubKey() != null && offer.getP2pSigPubKey().equals(user.getP2pSigPubKey());
|
||||
return tradeManager.isMyOffer(offer);
|
||||
}
|
||||
|
||||
Coin getAmountAsCoin() {
|
||||
|
|
|
@ -64,8 +64,7 @@ class ClosedTradesDataModel implements Activatable, DataModel {
|
|||
}
|
||||
|
||||
public Offer.Direction getDirection(Offer offer) {
|
||||
return offer.getP2pSigPubKey().equals(user.getP2pSigPubKey()) ?
|
||||
offer.getDirection() : offer.getMirroredDirection();
|
||||
return tradeManager.isMyOffer(offer) ? offer.getDirection() : offer.getMirroredDirection();
|
||||
}
|
||||
|
||||
private void applyList() {
|
||||
|
|
|
@ -75,8 +75,7 @@ class OpenOffersDataModel implements Activatable, DataModel {
|
|||
}
|
||||
|
||||
public Offer.Direction getDirection(Offer offer) {
|
||||
return offer.getP2pSigPubKey().equals(user.getP2pSigPubKey()) ?
|
||||
offer.getDirection() : offer.getMirroredDirection();
|
||||
return tradeManager.isMyOffer(offer) ? offer.getDirection() : offer.getMirroredDirection();
|
||||
}
|
||||
|
||||
private void applyList() {
|
||||
|
|
|
@ -145,7 +145,7 @@ class PendingTradesDataModel implements Activatable, DataModel {
|
|||
trade = item.getTrade();
|
||||
tradeProperty.set(trade);
|
||||
|
||||
isOffererRole = trade.getOffer().getP2pSigPubKey().equals(user.getP2pSigPubKey());
|
||||
isOffererRole = tradeManager.isMyOffer(trade.getOffer());
|
||||
|
||||
if (trade instanceof SellerTrade)
|
||||
sellerProcessState.bind(trade.processStateProperty());
|
||||
|
|
|
@ -402,6 +402,9 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
log.error("Unhandled state " + dataModel.getSellerProcessState().get());
|
||||
}
|
||||
}
|
||||
|
||||
private void updateBuyerState() {
|
||||
|
@ -429,7 +432,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
viewState.set(ViewState.BUYER_WAIT_CONFIRM_PAYMENT_RECEIVED);
|
||||
break;
|
||||
|
||||
case PAYOUT_FINALIZED:
|
||||
case PAYOUT_FINALIZED:
|
||||
viewState.set(ViewState.BUYER_PAYOUT_FINALIZED);
|
||||
break;
|
||||
|
||||
|
@ -474,7 +477,7 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
viewState.set(ViewState.BUYER_WAIT_CONFIRM_PAYMENT_RECEIVED);
|
||||
break;
|
||||
|
||||
case PAYOUT_FINALIZED:
|
||||
case PAYOUT_FINALIZED:
|
||||
viewState.set(ViewState.BUYER_PAYOUT_FINALIZED);
|
||||
break;
|
||||
|
||||
|
@ -498,5 +501,8 @@ public class PendingTradesViewModel extends ActivatableWithDataModel<PendingTrad
|
|||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
log.error("Unhandled state " + dataModel.getBuyerProcessState().get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ public class TradeWizardItem extends Button {
|
|||
setMouseTransparent(true);
|
||||
setText(title);
|
||||
setPrefHeight(40);
|
||||
setPrefWidth(340);
|
||||
setPrefWidth(360);
|
||||
setPadding(new Insets(0, 20, 0, 10));
|
||||
setAlignment(Pos.CENTER_LEFT);
|
||||
setDisabled();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue