Search in sources :

Example 16 with KeyDerivation

use of com.sparrowwallet.drongo.KeyDerivation in project drongo by sparrowwallet.

the class PSBTTest method validP2wpkh2InputsWithXpub.

@Test
public void validP2wpkh2InputsWithXpub() throws PSBTParseException {
    String psbt = "cHNidP8BAJ0BAAAAAnEOp2q0XFy2Q45gflnMA3YmmBgFrp4N/ZCJASq7C+U1AQAAAAD/////GQmU1qizyMgsy8+y+6QQaqBmObhyqNRHRlwNQliNbWcAAAAAAP////8CAOH1BQAAAAAZdqkUtrwsDuVlWoQ9ea/t0MzD991kNAmIrGBa9AUAAAAAFgAUEYjvjkzgRJ6qyPsUHL9aEXbmoIgAAAAATwEEiLIeA55TDKyAAAAAPbyKXJdp8DGxfnf+oVGGAyIaGP0Y8rmlTGyMGsdcvDUC8jBYSxVdHH8c1FEgplPEjWULQxtnxbLBPyfXFCA3wWkQJ1acUDEAAIAAAACAAAAAgAABAR8A4fUFAAAAABYAFDO5gvkbKPFgySC0q5XljOUN2jpKIgIDMJaA8zx9446mpHzU7NZvH1pJdHxv+4gI7QkDkkPjrVxHMEQCIC1wTO2DDFapCTRL10K2hS3M0QPpY7rpLTjnUlTSu0JFAiAthsQ3GV30bAztoITyopHD2i1kBw92v5uQsZXn7yj3cgEiBgMwloDzPH3jjqakfNTs1m8fWkl0fG/7iAjtCQOSQ+OtXBgnVpxQMQAAgAAAAIAAAACAAAAAAAEAAAAAAQEfAOH1BQAAAAAWABQ4j7lEMH63fvRRl9CwskXgefAR3iICAsd3Fh9z0LfHK57nveZQKT0T8JW8dlatH1Jdpf0uELEQRzBEAiBMsftfhpyULg4mEAV2ElQ5F5rojcqKncO6CPeVOYj6pgIgUh9JynkcJ9cOJzybFGFphZCTYeJb4nTqIA1+CIJ+UU0BIgYCx3cWH3PQt8crnue95lApPRPwlbx2Vq0fUl2l/S4QsRAYJ1acUDEAAIAAAACAAAAAgAAAAAAAAAAAAAAiAgLSDKUC7iiWhtIYFb1DqAY3sGmOH7zb5MrtRF9sGgqQ7xgnVpxQMQAAgAAAAIAAAACAAAAAAAQAAAAA";
    PSBT psbt1 = PSBT.fromString(psbt);
    ExtendedKey extendedPublicKey = psbt1.getExtendedPublicKeys().keySet().iterator().next();
    KeyDerivation keyDerivation = psbt1.getKeyDerivation(extendedPublicKey);
    Assert.assertEquals("27569c50", keyDerivation.getMasterFingerprint());
    Assert.assertEquals("m/49'/0'/0'", keyDerivation.getDerivationPath());
    Assert.assertEquals(2, psbt1.getPsbtInputs().size());
}
Also used : KeyDerivation(com.sparrowwallet.drongo.KeyDerivation) ExtendedKey(com.sparrowwallet.drongo.ExtendedKey) Test(org.junit.Test)

Example 17 with KeyDerivation

use of com.sparrowwallet.drongo.KeyDerivation in project drongo by sparrowwallet.

the class WalletTest method testHighDerivationPath.

@Test
public void testHighDerivationPath() {
    Wallet wallet = new Wallet();
    wallet.setPolicyType(PolicyType.SINGLE);
    wallet.setScriptType(ScriptType.P2WPKH);
    Keystore keystore = new Keystore();
    keystore.setKeyDerivation(new KeyDerivation("ffffffff", "m/84'/0'/2147483646'"));
    ExtendedKey extendedKey = ExtendedKey.fromDescriptor("ypub6WxQGZTrBdeYSD6ZnSxopCGnuS7dhbqc72S3sbjdFjxf8eBR3EJDB3iDMhny2tKogZnpaJcjoHC6zF5Cz1jSMrFFR1wrqfA1MFsWP3ACotd");
    keystore.setExtendedPublicKey(extendedKey);
    wallet.getKeystores().add(keystore);
    List<ChildNumber> derivation = List.of(keystore.getExtendedPublicKey().getKeyChildNumber(), new ChildNumber(0));
    Assert.assertEquals("027ecc656f4b91b92881b6f07cf876cd2e42b20df7acc4df54fc3315fbb2d13e1c", Utils.bytesToHex(extendedKey.getKey(derivation).getPubKey()));
    WalletNode receive0 = new WalletNode(wallet, KeyPurpose.RECEIVE, 0);
    Assert.assertEquals("bc1qarzeu6ncapyvjzdeayjq8vnzp6uvcn4eaeuuqq", receive0.getAddress().toString());
}
Also used : KeyDerivation(com.sparrowwallet.drongo.KeyDerivation) ChildNumber(com.sparrowwallet.drongo.crypto.ChildNumber) ExtendedKey(com.sparrowwallet.drongo.ExtendedKey) Test(org.junit.Test)

Aggregations

KeyDerivation (com.sparrowwallet.drongo.KeyDerivation)17 ExtendedKey (com.sparrowwallet.drongo.ExtendedKey)8 ScriptType (com.sparrowwallet.drongo.protocol.ScriptType)4 Keystore (com.sparrowwallet.drongo.wallet.Keystore)4 InputStreamReader (java.io.InputStreamReader)4 PolicyType (com.sparrowwallet.drongo.policy.PolicyType)3 Test (org.junit.Test)3 Gson (com.google.gson.Gson)2 KeyPurpose (com.sparrowwallet.drongo.KeyPurpose)2 Wallet (com.sparrowwallet.drongo.wallet.Wallet)2 Type (java.lang.reflect.Type)2 ArrayList (java.util.ArrayList)2 JsonElement (com.google.gson.JsonElement)1 OutputDescriptor (com.sparrowwallet.drongo.OutputDescriptor)1 SecureString (com.sparrowwallet.drongo.SecureString)1 Utils (com.sparrowwallet.drongo.Utils)1 Address (com.sparrowwallet.drongo.address.Address)1 PaymentAddress (com.sparrowwallet.drongo.bip47.PaymentAddress)1 PaymentCode (com.sparrowwallet.drongo.bip47.PaymentCode)1 com.sparrowwallet.drongo.crypto (com.sparrowwallet.drongo.crypto)1