Use encryption/sig for all messages

This commit is contained in:
Manfred Karrer 2015-04-10 23:48:52 +02:00
parent 32c56dad1a
commit 0ec86550b0
68 changed files with 1494 additions and 1152 deletions

View file

@ -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);

View file

@ -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);

View file

@ -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)),

View file

@ -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*/

View file

@ -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() {

View file

@ -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() {

View file

@ -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() {

View file

@ -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());

View file

@ -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());
}
}
}

View file

@ -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();