Package com.bitsofproof.supernode.common

Examples of com.bitsofproof.supernode.common.ECKeyPair


        byte[] tmp = new byte[32 + 8];
        System.arraycopy (prefactor, 0, tmp, 0, 32);
        System.arraycopy (ownentropy, 0, tmp, 32, 8);
        passfactor = Hash.hash (tmp);
      }
      ECKeyPair kp = new ECKeyPair (passfactor, true);
      byte[] passpoint = kp.getPublic ();
      result[0] = (byte) 0x2C;
      result[1] = (byte) 0xE9;
      result[2] = (byte) 0xB3;
      result[3] = (byte) 0xE1;
      result[4] = (byte) 0xFF;
View Full Code Here


      byte[] decrypted = cipher.doFinal (store, 7, 32);
      for ( int i = 0; i < 32; ++i )
      {
        decrypted[i] ^= derived[i];
      }
      ECKeyPair kp = new ECKeyPair (decrypted, compressed);

      byte[] acs = Hash.hash (new Address (network, kp.getAddress ()).toString ().getBytes ("US-ASCII"));
      byte[] check = new byte[4];
      System.arraycopy (acs, 0, check, 0, 4);
      if ( !Arrays.equals (check, addressHash) )
      {
        throw new ValidationException ("failed to decrpyt");
View Full Code Here

        byte[] tmp = new byte[40];
        System.arraycopy (passfactor, 0, tmp, 0, 32);
        System.arraycopy (ownentropy, 0, tmp, 32, 8);
        passfactor = Hash.hash (tmp);
      }
      ECKeyPair kp = new ECKeyPair (passfactor, true);

      byte[] salt = new byte[12];
      System.arraycopy (store, 3, salt, 0, 12);
      byte[] derived = SCrypt.generate (kp.getPublic (), salt, 1024, 1, 1, 64);
      byte[] aeskey = new byte[32];
      System.arraycopy (derived, 32, aeskey, 0, 32);

      SecretKeySpec keyspec = new SecretKeySpec (aeskey, "AES");
      Cipher cipher = Cipher.getInstance ("AES/ECB/NoPadding", "BC");
      cipher.init (Cipher.DECRYPT_MODE, keyspec);

      byte[] encrypted = new byte[16];
      System.arraycopy (store, 23, encrypted, 0, 16);
      byte[] decrypted2 = cipher.doFinal (encrypted);
      for ( int i = 0; i < 16; ++i )
      {
        decrypted2[i] ^= derived[i + 16];
      }

      System.arraycopy (store, 15, encrypted, 0, 8);
      System.arraycopy (decrypted2, 0, encrypted, 8, 8);
      byte[] decrypted1 = cipher.doFinal (encrypted);
      for ( int i = 0; i < 16; ++i )
      {
        decrypted1[i] ^= derived[i];
      }

      byte[] seed = new byte[24];
      System.arraycopy (decrypted1, 0, seed, 0, 16);
      System.arraycopy (decrypted2, 8, seed, 16, 8);
      BigInteger priv =
          new BigInteger (1, passfactor).multiply (new BigInteger (1, Hash.hash (seed))).remainder (SECNamedCurves.getByName ("secp256k1").getN ());

      kp = new ECKeyPair (priv, compressed);
      byte[] acs = Hash.hash (new Address (network, kp.getAddress ()).toString ().getBytes ("US-ASCII"));
      byte[] check = new byte[4];
      System.arraycopy (acs, 0, check, 0, 4);
      if ( !Arrays.equals (check, addressHash) )
      {
        throw new ValidationException ("failed to decrpyt");
View Full Code Here

  {
    JSONArray tests = readArray (TESTS);
    for ( int i = 0; i < tests.length (); ++i )
    {
      JSONObject test = tests.getJSONObject (i);
      ECKeyPair key = ECKeyPair.parseWIF (test.getString ("key"));
      byte[] message = test.getString ("message").getBytes ();
      byte[] expectedSignature = ByteUtils.fromHex (test.getString ("expectedSignature"));
      byte[] signature = key.sign (message);
      assertTrue (Arrays.equals (expectedSignature, signature));
    }
  }
View Full Code Here

  }

  @Test
  public void testECDSASpeed () throws ValidationException
  {
    ECKeyPair key = ECKeyPair.createNew (true);
    byte[] data = new byte[32];
    random.nextBytes (data);
    byte[] signature = key.sign (data);
    long cpu = -mxb.getCurrentThreadUserTime ();
    for ( int i = 0; i < 100; ++i )
    {
      assertTrue (key.verify (data, signature));
    }
    cpu += mxb.getCurrentThreadUserTime ();
    double speed = 100.0 / (cpu / 10.0e9);
    log.info ("ECDSA validation speed : " + speed + " signatures/second");
    assertTrue (speed > 100.0);
View Full Code Here

    KeyFormatter formatter = new KeyFormatter (null, Network.PRODUCTION);
    JSONArray testData = readObjectArray (WIF);
    for ( int i = 0; i < testData.length (); ++i )
    {
      JSONArray test = testData.getJSONArray (i);
      ECKeyPair kp = formatter.parseSerializedKey (test.getString (1));
      String address = Address.toSatoshiStyle (Hash.keyHash (kp.getPublic ()), 0x0);
      assertTrue (test.getString (0).equals (address));
      String serialized = formatter.serializeKey (kp);
      assertTrue (test.getString (1).equals (serialized));
    }
  }
View Full Code Here

    {
      final JSONArray test = testData.getJSONArray (i);

      KeyFormatter formatter = new KeyFormatter (test.getString (2), Network.PRODUCTION);

      ECKeyPair kp = formatter.parseSerializedKey (test.getString (0));
      String decrypted = ECKeyPair.serializeWIF (kp);
      assertTrue (test.getString (1).equals (decrypted));
      ECKeyPair kp2 = formatter.parseSerializedKey (decrypted);
      assertTrue (formatter.serializeKey (kp2).equals (test.getString (0)));
    }
  }
View Full Code Here

    for ( int i = 0; i < testData.length (); ++i )
    {
      final JSONArray test = testData.getJSONArray (i);

      KeyFormatter formatter = new KeyFormatter (test.getString (2), Network.PRODUCTION);
      ECKeyPair kp = formatter.parseSerializedKey (test.getString (0));
      String decrypted = ECKeyPair.serializeWIF (kp);
      assertTrue (test.getString (1).equals (decrypted));
    }
  }
View Full Code Here

        p.append ((char) (r.nextInt () % 0x1FFFFF));
      }
      String passphrase = p.toString ();

      KeyFormatter formatter = new KeyFormatter (passphrase, Network.PRODUCTION);
      ECKeyPair kp = ECKeyPair.createNew (i % 2 == 0);
      String serialized = formatter.serializeKey (kp);
      ECKeyPair kp2 = formatter.parseSerializedKey (serialized);
      assertTrue (Arrays.equals (kp.getPublic (), kp2.getPublic ()));
      assertTrue (Arrays.equals (kp.getPrivate (), kp2.getPrivate ()));
    }
  }
View Full Code Here

TOP

Related Classes of com.bitsofproof.supernode.common.ECKeyPair

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.