mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-25 21:26:43 +00:00
if validating derivations, disallow paths that match other networks
This commit is contained in:
parent
a45024ac70
commit
803e43cb45
6 changed files with 8 additions and 5 deletions
2
drongo
2
drongo
|
@ -1 +1 @@
|
||||||
Subproject commit c12dac9a25ef410f8f1bb77dd6b1ea12c4e0b002
|
Subproject commit c8165e154a4088262cdf9428f8f8a6ef95db5140
|
|
@ -80,6 +80,7 @@ public class SparrowDesktop extends Application {
|
||||||
}
|
}
|
||||||
|
|
||||||
System.setProperty(Wallet.ALLOW_DERIVATIONS_MATCHING_OTHER_SCRIPT_TYPES_PROPERTY, Boolean.toString(!Config.get().isValidateDerivationPaths()));
|
System.setProperty(Wallet.ALLOW_DERIVATIONS_MATCHING_OTHER_SCRIPT_TYPES_PROPERTY, Boolean.toString(!Config.get().isValidateDerivationPaths()));
|
||||||
|
System.setProperty(Wallet.ALLOW_DERIVATIONS_MATCHING_OTHER_NETWORKS_PROPERTY, Boolean.toString(!Config.get().isValidateDerivationPaths()));
|
||||||
|
|
||||||
if(Config.get().getAppHeight() != null && Config.get().getAppWidth() != null) {
|
if(Config.get().getAppHeight() != null && Config.get().getAppWidth() != null) {
|
||||||
mainStage.setWidth(Config.get().getAppWidth());
|
mainStage.setWidth(Config.get().getAppWidth());
|
||||||
|
|
|
@ -175,6 +175,7 @@ public class GeneralPreferencesController extends PreferencesDetailController {
|
||||||
validateDerivationPaths.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
|
validateDerivationPaths.selectedProperty().addListener((observableValue, oldValue, newValue) -> {
|
||||||
config.setValidateDerivationPaths(newValue);
|
config.setValidateDerivationPaths(newValue);
|
||||||
System.setProperty(Wallet.ALLOW_DERIVATIONS_MATCHING_OTHER_SCRIPT_TYPES_PROPERTY, Boolean.toString(!newValue));
|
System.setProperty(Wallet.ALLOW_DERIVATIONS_MATCHING_OTHER_SCRIPT_TYPES_PROPERTY, Boolean.toString(!newValue));
|
||||||
|
System.setProperty(Wallet.ALLOW_DERIVATIONS_MATCHING_OTHER_NETWORKS_PROPERTY, Boolean.toString(!newValue));
|
||||||
});
|
});
|
||||||
|
|
||||||
groupByAddress.setSelected(config.isGroupByAddress());
|
groupByAddress.setSelected(config.isGroupByAddress());
|
||||||
|
|
|
@ -186,7 +186,7 @@ public class KeystoreController extends WalletFormController implements Initiali
|
||||||
return null;
|
return null;
|
||||||
}));
|
}));
|
||||||
derivation.textProperty().addListener((observable, oldValue, newValue) -> {
|
derivation.textProperty().addListener((observable, oldValue, newValue) -> {
|
||||||
if(KeyDerivation.isValid(newValue) && !walletForm.getWallet().derivationMatchesAnotherScriptType(newValue)) {
|
if(KeyDerivation.isValid(newValue) && !walletForm.getWallet().derivationMatchesAnotherScriptType(newValue) && !walletForm.getWallet().derivationMatchesAnotherNetwork(newValue)) {
|
||||||
keystore.setKeyDerivation(new KeyDerivation(keystore.getKeyDerivation().getMasterFingerprint(), newValue));
|
keystore.setKeyDerivation(new KeyDerivation(keystore.getKeyDerivation().getMasterFingerprint(), newValue));
|
||||||
EventManager.get().post(new SettingsChangedEvent(walletForm.getWallet(), SettingsChangedEvent.Type.KEYSTORE_DERIVATION));
|
EventManager.get().post(new SettingsChangedEvent(walletForm.getWallet(), SettingsChangedEvent.Type.KEYSTORE_DERIVATION));
|
||||||
}
|
}
|
||||||
|
@ -287,7 +287,8 @@ public class KeystoreController extends WalletFormController implements Initiali
|
||||||
validationSupport.registerValidator(derivation, Validator.combine(
|
validationSupport.registerValidator(derivation, Validator.combine(
|
||||||
Validator.createEmptyValidator("Derivation is required"),
|
Validator.createEmptyValidator("Derivation is required"),
|
||||||
(Control c, String newValue) -> ValidationResult.fromErrorIf( c, "Derivation is invalid", !KeyDerivation.isValid(newValue)),
|
(Control c, String newValue) -> ValidationResult.fromErrorIf( c, "Derivation is invalid", !KeyDerivation.isValid(newValue)),
|
||||||
(Control c, String newValue) -> ValidationResult.fromErrorIf( c, "Derivation matches another script type", walletForm.getWallet().derivationMatchesAnotherScriptType(newValue))
|
(Control c, String newValue) -> ValidationResult.fromErrorIf( c, "Derivation matches another script type", walletForm.getWallet().derivationMatchesAnotherScriptType(newValue)),
|
||||||
|
(Control c, String newValue) -> ValidationResult.fromErrorIf( c, "Derivation matches another network", walletForm.getWallet().derivationMatchesAnotherNetwork(newValue))
|
||||||
));
|
));
|
||||||
|
|
||||||
validationSupport.registerValidator(fingerprint, Validator.combine(
|
validationSupport.registerValidator(fingerprint, Validator.combine(
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
</Field>
|
</Field>
|
||||||
<Field text="Validate derivations:">
|
<Field text="Validate derivations:">
|
||||||
<UnlabeledToggleSwitch fx:id="validateDerivationPaths" />
|
<UnlabeledToggleSwitch fx:id="validateDerivationPaths" />
|
||||||
<HelpLabel helpText="Disallow keystores to have derivation paths that match the defaults for other script types."/>
|
<HelpLabel helpText="Disallow keystores to have derivation paths that match the defaults for other script types and networks."/>
|
||||||
</Field>
|
</Field>
|
||||||
</Fieldset>
|
</Fieldset>
|
||||||
<Fieldset inputGrow="SOMETIMES" text="Coin Selection" styleClass="wideLabelFieldSet">
|
<Fieldset inputGrow="SOMETIMES" text="Coin Selection" styleClass="wideLabelFieldSet">
|
||||||
|
|
|
@ -81,7 +81,7 @@
|
||||||
<TextField fx:id="fingerprint" maxWidth="80" promptText="00000000"/> <Region style="-fx-max-width: 5" /> <LifeHashIcon fx:id="fingerprintIcon" /> <HelpLabel helpText="The master fingerprint uniquely identifies this keystore using the first 4 bytes of the master public key hash.\nIt is safe to use any valid value (00000000) for Watch Only Wallets." />
|
<TextField fx:id="fingerprint" maxWidth="80" promptText="00000000"/> <Region style="-fx-max-width: 5" /> <LifeHashIcon fx:id="fingerprintIcon" /> <HelpLabel helpText="The master fingerprint uniquely identifies this keystore using the first 4 bytes of the master public key hash.\nIt is safe to use any valid value (00000000) for Watch Only Wallets." />
|
||||||
</Field>
|
</Field>
|
||||||
<Field text="Derivation:">
|
<Field text="Derivation:">
|
||||||
<TextField fx:id="derivation" maxWidth="200"/> <HelpLabel helpText="The derivation path to the xpub from the master private key.\nFor safety, derivations that match defaults for other script types are not valid.\nThis validation can be turned off in the General Preferences." />
|
<TextField fx:id="derivation" maxWidth="200"/> <HelpLabel helpText="The derivation path to the xpub from the master private key.\nFor safety, derivations that match defaults for other script types and networks are not valid.\nThis validation can be turned off in the General Preferences." />
|
||||||
</Field>
|
</Field>
|
||||||
<Field fx:id="xpubField" text="xpub:">
|
<Field fx:id="xpubField" text="xpub:">
|
||||||
<TextArea fx:id="xpub" wrapText="true" prefRowCount="2" maxHeight="52" />
|
<TextArea fx:id="xpub" wrapText="true" prefRowCount="2" maxHeight="52" />
|
||||||
|
|
Loading…
Reference in a new issue