only allow sweeping from uncompressed keys to legacy script type addresses

This commit is contained in:
Craig Raw 2023-11-30 11:42:59 +02:00
parent 675b7ed4f8
commit d425933189

View file

@ -190,6 +190,7 @@ public class PrivateKeySweepDialog extends Dialog<Transaction> {
boolean isValidKey = isValidKey(); boolean isValidKey = isValidKey();
createButton.setDisable(!isValidKey || !isValidToAddress()); createButton.setDisable(!isValidKey || !isValidToAddress());
setScriptTypes(isValidKey);
if(isValidKey) { if(isValidKey) {
setFromAddress(); setFromAddress();
} }
@ -289,6 +290,16 @@ public class PrivateKeySweepDialog extends Dialog<Transaction> {
keyAddress.setText(address.toString()); keyAddress.setText(address.toString());
} }
private void setScriptTypes(boolean isValidKey) {
boolean compressed = !isValidKey || getPrivateKey().getKey().isCompressed();
if(compressed && !keyScriptType.getItems().equals(ScriptType.getAddressableScriptTypes(PolicyType.SINGLE))) {
keyScriptType.getItems().addAll(ScriptType.getAddressableScriptTypes(PolicyType.SINGLE).stream().filter(s -> !keyScriptType.getItems().contains(s)).collect(Collectors.toList()));
} else if(!compressed && !keyScriptType.getItems().equals(List.of(ScriptType.P2PKH))) {
keyScriptType.getSelectionModel().select(0);
keyScriptType.getItems().removeIf(scriptType -> scriptType != ScriptType.P2PKH);
}
}
private void scanPrivateKey() { private void scanPrivateKey() {
QRScanDialog qrScanDialog = new QRScanDialog(); QRScanDialog qrScanDialog = new QRScanDialog();
qrScanDialog.initOwner(getDialogPane().getScene().getWindow()); qrScanDialog.initOwner(getDialogPane().getScene().getWindow());