mirror of
https://github.com/sparrowwallet/sparrow.git
synced 2024-12-25 13:16:44 +00:00
update to hummingbird v1.6.7 to support pair path components and unique part progress indicator
This commit is contained in:
parent
3aa00076c6
commit
29b630f6bf
3 changed files with 14 additions and 6 deletions
|
@ -89,7 +89,7 @@ dependencies {
|
||||||
implementation('com.github.arteam:simple-json-rpc-server:1.3') {
|
implementation('com.github.arteam:simple-json-rpc-server:1.3') {
|
||||||
exclude group: 'org.slf4j'
|
exclude group: 'org.slf4j'
|
||||||
}
|
}
|
||||||
implementation('com.sparrowwallet:hummingbird:1.6.4')
|
implementation('com.sparrowwallet:hummingbird:1.6.7')
|
||||||
implementation('co.nstant.in:cbor:0.9')
|
implementation('co.nstant.in:cbor:0.9')
|
||||||
implementation("com.nativelibs4java:bridj${targetName}:0.7-20140918-3") {
|
implementation("com.nativelibs4java:bridj${targetName}:0.7-20140918-3") {
|
||||||
exclude group: 'com.google.android.tools', module: 'dx'
|
exclude group: 'com.google.android.tools', module: 'dx'
|
||||||
|
|
|
@ -25,6 +25,8 @@ import com.sparrowwallet.hummingbird.registry.*;
|
||||||
import com.sparrowwallet.hummingbird.ResultType;
|
import com.sparrowwallet.hummingbird.ResultType;
|
||||||
import com.sparrowwallet.hummingbird.UR;
|
import com.sparrowwallet.hummingbird.UR;
|
||||||
import com.sparrowwallet.hummingbird.URDecoder;
|
import com.sparrowwallet.hummingbird.URDecoder;
|
||||||
|
import com.sparrowwallet.hummingbird.registry.pathcomponent.IndexPathComponent;
|
||||||
|
import com.sparrowwallet.hummingbird.registry.pathcomponent.PathComponent;
|
||||||
import com.sparrowwallet.sparrow.AppServices;
|
import com.sparrowwallet.sparrow.AppServices;
|
||||||
import com.sparrowwallet.sparrow.glyphfont.FontAwesome5;
|
import com.sparrowwallet.sparrow.glyphfont.FontAwesome5;
|
||||||
import com.sparrowwallet.sparrow.io.Config;
|
import com.sparrowwallet.sparrow.io.Config;
|
||||||
|
@ -208,6 +210,7 @@ public class QRScanDialog extends Dialog<QRScanDialog.Result> {
|
||||||
URDecoder.Result urResult = decoder.getResult();
|
URDecoder.Result urResult = decoder.getResult();
|
||||||
if(urResult.type == ResultType.SUCCESS) {
|
if(urResult.type == ResultType.SUCCESS) {
|
||||||
result = extractResultFromUR(urResult.ur);
|
result = extractResultFromUR(urResult.ur);
|
||||||
|
Platform.runLater(() -> setResult(result));
|
||||||
} else {
|
} else {
|
||||||
result = new Result(new URException(urResult.error));
|
result = new Result(new URException(urResult.error));
|
||||||
}
|
}
|
||||||
|
@ -479,7 +482,9 @@ public class QRScanDialog extends Dialog<QRScanDialog.Result> {
|
||||||
if(cryptoHDKey.getOrigin() != null) {
|
if(cryptoHDKey.getOrigin() != null) {
|
||||||
if(!cryptoHDKey.getOrigin().getComponents().isEmpty()) {
|
if(!cryptoHDKey.getOrigin().getComponents().isEmpty()) {
|
||||||
PathComponent lastComponent = cryptoHDKey.getOrigin().getComponents().get(cryptoHDKey.getOrigin().getComponents().size() - 1);
|
PathComponent lastComponent = cryptoHDKey.getOrigin().getComponents().get(cryptoHDKey.getOrigin().getComponents().size() - 1);
|
||||||
lastChild = new ChildNumber(lastComponent.getIndex(), lastComponent.isHardened());
|
if(lastComponent instanceof IndexPathComponent indexPathComponent) {
|
||||||
|
lastChild = new ChildNumber(indexPathComponent.getIndex(), indexPathComponent.isHardened());
|
||||||
|
}
|
||||||
depth = cryptoHDKey.getOrigin().getComponents().size();
|
depth = cryptoHDKey.getOrigin().getComponents().size();
|
||||||
}
|
}
|
||||||
if(cryptoHDKey.getParentFingerprint() != null) {
|
if(cryptoHDKey.getParentFingerprint() != null) {
|
||||||
|
@ -555,11 +560,12 @@ public class QRScanDialog extends Dialog<QRScanDialog.Result> {
|
||||||
|
|
||||||
private KeyDerivation getKeyDerivation(CryptoKeypath cryptoKeypath) {
|
private KeyDerivation getKeyDerivation(CryptoKeypath cryptoKeypath) {
|
||||||
if(cryptoKeypath != null) {
|
if(cryptoKeypath != null) {
|
||||||
if(cryptoKeypath.getComponents().stream().anyMatch(PathComponent::isWildcard)) {
|
if(!cryptoKeypath.getComponents().stream().allMatch(pathComponent -> pathComponent instanceof IndexPathComponent)) {
|
||||||
throw new IllegalArgumentException("Wildcard derivation paths are not supported");
|
throw new IllegalArgumentException("Only indexed derivation path components are supported");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ChildNumber> path = cryptoKeypath.getComponents().stream().map(comp -> new ChildNumber(comp.getIndex(), comp.isHardened())).collect(Collectors.toList());
|
List<ChildNumber> path = cryptoKeypath.getComponents().stream().map(comp -> (IndexPathComponent)comp)
|
||||||
|
.map(comp -> new ChildNumber(comp.getIndex(), comp.isHardened())).collect(Collectors.toList());
|
||||||
return new KeyDerivation(Utils.bytesToHex(cryptoKeypath.getSourceFingerprint()), KeyDerivation.writePath(path));
|
return new KeyDerivation(Utils.bytesToHex(cryptoKeypath.getSourceFingerprint()), KeyDerivation.writePath(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,8 @@ import com.sparrowwallet.drongo.protocol.ScriptType;
|
||||||
import com.sparrowwallet.drongo.wallet.*;
|
import com.sparrowwallet.drongo.wallet.*;
|
||||||
import com.sparrowwallet.hummingbird.UR;
|
import com.sparrowwallet.hummingbird.UR;
|
||||||
import com.sparrowwallet.hummingbird.registry.*;
|
import com.sparrowwallet.hummingbird.registry.*;
|
||||||
|
import com.sparrowwallet.hummingbird.registry.pathcomponent.IndexPathComponent;
|
||||||
|
import com.sparrowwallet.hummingbird.registry.pathcomponent.PathComponent;
|
||||||
import com.sparrowwallet.sparrow.AppServices;
|
import com.sparrowwallet.sparrow.AppServices;
|
||||||
import com.sparrowwallet.sparrow.EventManager;
|
import com.sparrowwallet.sparrow.EventManager;
|
||||||
import com.sparrowwallet.sparrow.control.*;
|
import com.sparrowwallet.sparrow.control.*;
|
||||||
|
@ -389,7 +391,7 @@ public class SettingsController extends WalletFormController implements Initiali
|
||||||
private CryptoHDKey getCryptoHDKey(Keystore keystore) {
|
private CryptoHDKey getCryptoHDKey(Keystore keystore) {
|
||||||
ExtendedKey extendedKey = keystore.getExtendedPublicKey();
|
ExtendedKey extendedKey = keystore.getExtendedPublicKey();
|
||||||
CryptoCoinInfo cryptoCoinInfo = new CryptoCoinInfo(CryptoCoinInfo.Type.BITCOIN.ordinal(), Network.get() == Network.MAINNET ? CryptoCoinInfo.Network.MAINNET.ordinal() : CryptoCoinInfo.Network.TESTNET.ordinal());
|
CryptoCoinInfo cryptoCoinInfo = new CryptoCoinInfo(CryptoCoinInfo.Type.BITCOIN.ordinal(), Network.get() == Network.MAINNET ? CryptoCoinInfo.Network.MAINNET.ordinal() : CryptoCoinInfo.Network.TESTNET.ordinal());
|
||||||
List<PathComponent> pathComponents = keystore.getKeyDerivation().getDerivation().stream().map(cNum -> new PathComponent(cNum.num(), cNum.isHardened())).collect(Collectors.toList());
|
List<PathComponent> pathComponents = keystore.getKeyDerivation().getDerivation().stream().map(cNum -> new IndexPathComponent(cNum.num(), cNum.isHardened())).collect(Collectors.toList());
|
||||||
CryptoKeypath cryptoKeypath = new CryptoKeypath(pathComponents, Utils.hexToBytes(keystore.getKeyDerivation().getMasterFingerprint()), pathComponents.size());
|
CryptoKeypath cryptoKeypath = new CryptoKeypath(pathComponents, Utils.hexToBytes(keystore.getKeyDerivation().getMasterFingerprint()), pathComponents.size());
|
||||||
return new CryptoHDKey(false, extendedKey.getKey().getPubKey(), extendedKey.getKey().getChainCode(), cryptoCoinInfo, cryptoKeypath, null, extendedKey.getParentFingerprint());
|
return new CryptoHDKey(false, extendedKey.getKey().getPubKey(), extendedKey.getKey().getChainCode(), cryptoCoinInfo, cryptoKeypath, null, extendedKey.getParentFingerprint());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue