Search in sources :

Example 26 with Address

use of com.sparrowwallet.drongo.address.Address in project drongo by sparrowwallet.

the class ECKeyTest method testGrindLowR.

@Test
public void testGrindLowR() throws MnemonicException {
    String words = "absent essay fox snake vast pumpkin height crouch silent bulb excuse razor";
    DeterministicSeed seed = new DeterministicSeed(words, "", 0, DeterministicSeed.Type.BIP39);
    Wallet wallet = new Wallet();
    wallet.setPolicyType(PolicyType.SINGLE);
    wallet.setScriptType(ScriptType.P2PKH);
    Keystore keystore = Keystore.fromSeed(seed, wallet.getScriptType().getDefaultDerivation());
    wallet.getKeystores().add(keystore);
    wallet.setDefaultPolicy(Policy.getPolicy(PolicyType.SINGLE, ScriptType.P2PKH, wallet.getKeystores(), 1));
    WalletNode firstReceive = wallet.getNode(KeyPurpose.RECEIVE).getChildren().iterator().next();
    Address address = firstReceive.getAddress();
    Assert.assertEquals("14JmU9a7SzieZNEtBnsZo688rt3mGrw6hr", address.toString());
    ECKey privKey = keystore.getKey(firstReceive);
    // 1 attempt required for low R
    String signature1 = privKey.signMessage("Test2", ScriptType.P2PKH);
    Assert.assertEquals("IHra0jSywF1TjIJ5uf7IDECae438cr4o3VmG6Ri7hYlDL+pUEXyUfwLwpiAfUQVqQFLgs6OaX0KsoydpuwRI71o=", signature1);
    // 2 attempts required for low R
    String signature2 = privKey.signMessage("Test", ScriptType.P2PKH);
    Assert.assertEquals("IDgMx1ljPhLHlKUOwnO/jBIgK+K8n8mvDUDROzTgU8gOaPDMs+eYXJpNXXINUx5WpeV605p5uO6B3TzBVcvs478=", signature2);
    // 3 attempts required for low R
    String signature3 = privKey.signMessage("Test1", ScriptType.P2PKH);
    Assert.assertEquals("IEt/v9K95YVFuRtRtWaabPVwWOFv1FSA/e874I8ABgYMbRyVvHhSwLFz0RZuO87ukxDd4TOsRdofQwMEA90LCgI=", signature3);
}
Also used : Address(com.sparrowwallet.drongo.address.Address) Test(org.junit.Test)

Aggregations

Address (com.sparrowwallet.drongo.address.Address)26 Test (org.junit.Test)6 InvalidAddressException (com.sparrowwallet.drongo.address.InvalidAddressException)5 ECKey (com.sparrowwallet.drongo.crypto.ECKey)5 KeyPurpose (com.sparrowwallet.drongo.KeyPurpose)4 TransactionOutput (com.sparrowwallet.drongo.protocol.TransactionOutput)4 P2PKHAddress (com.sparrowwallet.drongo.address.P2PKHAddress)3 com.sparrowwallet.drongo.wallet (com.sparrowwallet.drongo.wallet)3 PayNymAddress (com.sparrowwallet.sparrow.paynym.PayNymAddress)3 ByteArrayOutputStream (java.io.ByteArrayOutputStream)3 java.util (java.util)3 Collectors (java.util.stream.Collectors)3 InvalidPaymentCodeException (com.sparrowwallet.drongo.bip47.InvalidPaymentCodeException)2 DumpedPrivateKey (com.sparrowwallet.drongo.crypto.DumpedPrivateKey)2 NonStandardScriptException (com.sparrowwallet.drongo.protocol.NonStandardScriptException)2 ScriptType (com.sparrowwallet.drongo.protocol.ScriptType)2 Transaction (com.sparrowwallet.drongo.protocol.Transaction)2 BitcoinURI (com.sparrowwallet.drongo.uri.BitcoinURI)2 AppServices (com.sparrowwallet.sparrow.AppServices)2 EventManager (com.sparrowwallet.sparrow.EventManager)2