Search in sources :

Example 46 with Keystore

use of com.sparrowwallet.drongo.wallet.Keystore in project sparrow by sparrowwallet.

the class CaravanMultisig method exportWallet.

@Override
public void exportWallet(Wallet wallet, OutputStream outputStream) throws ExportException {
    if (!wallet.isValid()) {
        throw new ExportException("Cannot export an incomplete wallet");
    }
    if (!wallet.getPolicyType().equals(PolicyType.MULTI)) {
        throw new ExportException(getName() + " import requires a multisig wallet");
    }
    try {
        CaravanFile cf = new CaravanFile();
        cf.name = wallet.getFullName();
        cf.addressType = wallet.getScriptType().toString().replace('-', '_');
        cf.network = Network.get().getName();
        cf.client = new Client();
        Quorum quorum = new Quorum();
        quorum.requiredSigners = wallet.getDefaultPolicy().getNumSignaturesRequired();
        quorum.totalSigners = wallet.getKeystores().size();
        cf.quorum = quorum;
        cf.extendedPublicKeys = new ArrayList<>();
        for (Keystore keystore : wallet.getKeystores()) {
            ExtPublicKey extKey = new ExtPublicKey();
            extKey.name = keystore.getLabel();
            extKey.bip32Path = keystore.getKeyDerivation().getDerivationPath();
            extKey.xpub = keystore.getExtendedPublicKey().toString();
            extKey.xfp = keystore.getKeyDerivation().getMasterFingerprint();
            extKey.method = keystore.getWalletModel().getType();
            cf.extendedPublicKeys.add(extKey);
        }
        Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
        String json = gson.toJson(cf);
        outputStream.write(json.getBytes(StandardCharsets.UTF_8));
        outputStream.flush();
    } catch (Exception e) {
        log.error("Error exporting " + getName() + " wallet", e);
        throw new ExportException("Error exporting " + getName() + " wallet", e);
    }
}
Also used : Keystore(com.sparrowwallet.drongo.wallet.Keystore) GsonBuilder(com.google.gson.GsonBuilder) Gson(com.google.gson.Gson)

Example 47 with Keystore

use of com.sparrowwallet.drongo.wallet.Keystore in project sparrow by sparrowwallet.

the class KeystoneMultisig method importWallet.

@Override
public Wallet importWallet(InputStream inputStream, String password) throws ImportException {
    Wallet wallet = super.importWallet(inputStream, password);
    for (Keystore keystore : wallet.getKeystores()) {
        keystore.setLabel(keystore.getLabel().replace("Coldcard", "Keystone"));
        keystore.setWalletModel(WalletModel.KEYSTONE);
    }
    return wallet;
}
Also used : Keystore(com.sparrowwallet.drongo.wallet.Keystore) Wallet(com.sparrowwallet.drongo.wallet.Wallet)

Aggregations

Keystore (com.sparrowwallet.drongo.wallet.Keystore)47 Wallet (com.sparrowwallet.drongo.wallet.Wallet)14 Test (org.junit.Test)12 KeyDerivation (com.sparrowwallet.drongo.KeyDerivation)5 ScriptType (com.sparrowwallet.drongo.protocol.ScriptType)5 ImportException (com.sparrowwallet.sparrow.io.ImportException)4 ECKey (com.sparrowwallet.drongo.crypto.ECKey)3 ArrayList (java.util.ArrayList)3 Subscribe (com.google.common.eventbus.Subscribe)2 com.sparrowwallet.drongo.protocol (com.sparrowwallet.drongo.protocol)2 PSBTInput (com.sparrowwallet.drongo.psbt.PSBTInput)2 BlockTransaction (com.sparrowwallet.drongo.wallet.BlockTransaction)2 DeterministicSeed (com.sparrowwallet.drongo.wallet.DeterministicSeed)2 MasterPrivateExtendedKey (com.sparrowwallet.drongo.wallet.MasterPrivateExtendedKey)2 WalletModel (com.sparrowwallet.drongo.wallet.WalletModel)2 EventManager (com.sparrowwallet.sparrow.EventManager)2 KeystoreImportEvent (com.sparrowwallet.sparrow.event.KeystoreImportEvent)2 URL (java.net.URL)2 Map (java.util.Map)2 ResourceBundle (java.util.ResourceBundle)2