diff --git a/src/main/java/com/luminiasoft/bitshares/FileBin.java b/src/main/java/com/luminiasoft/bitshares/FileBin.java index b106a54..797e50e 100644 --- a/src/main/java/com/luminiasoft/bitshares/FileBin.java +++ b/src/main/java/com/luminiasoft/bitshares/FileBin.java @@ -65,11 +65,12 @@ public abstract class FileBin { } else { wallet = wallet.get("wallet").getAsJsonObject(); } + byte[] encKey_enc = new BigInteger(wallet.get("encryption_key").getAsString(), 16).toByteArray(); byte[] temp = new byte[encKey_enc.length - (encKey_enc[0] == 0 ? 1 : 0)]; System.arraycopy(encKey_enc, (encKey_enc[0] == 0 ? 1 : 0), temp, 0, temp.length); byte[] encKey = decryptAES(temp, password.getBytes("UTF-8")); - temp = new byte[encKey.length - 16]; + temp = new byte[encKey.length]; System.arraycopy(encKey, 0, temp, 0, temp.length); byte[] encBrain = new BigInteger(wallet.get("encrypted_brainkey").getAsString(), 16).toByteArray(); @@ -190,7 +191,13 @@ public abstract class FileBin { System.arraycopy(pre_out, 0, out, 0, proc+proc2); //Unpadding - int count = out[out.length-1]; + byte countByte = (byte)((byte)out[out.length-1] % 16); + int count = countByte & 0xFF; + + if ((count > 15) || (count <= 0)){ + return out; + } + byte[] temp = new byte[count]; System.arraycopy(out, out.length - count, temp, 0, temp.length); byte[] temp2 = new byte[count]; @@ -201,7 +208,7 @@ public abstract class FileBin { return temp; } else { return out; - } + } } catch (NoSuchAlgorithmException | DataLengthException | IllegalStateException | InvalidCipherTextException ex) { ex.printStackTrace(); } diff --git a/src/main/java/com/luminiasoft/bitshares/Main.java b/src/main/java/com/luminiasoft/bitshares/Main.java index 7ca2ae1..6253df2 100644 --- a/src/main/java/com/luminiasoft/bitshares/Main.java +++ b/src/main/java/com/luminiasoft/bitshares/Main.java @@ -64,8 +64,9 @@ public class Main { // test.testRelativeAccountHistory(); // test.testingInvoiceGeneration(); // test.testCompression(); -// test.testCreateBinFile(); - test.testAccountUpdateSerialization(); +// test.testAccountUpdateSerialization(); // test.testAccountUpdateOperationBroadcast(); + test.testCreateBinFile(); + test.testImportBinFile(); } } diff --git a/src/main/java/com/luminiasoft/bitshares/Test.java b/src/main/java/com/luminiasoft/bitshares/Test.java index b2463ae..89b80f1 100644 --- a/src/main/java/com/luminiasoft/bitshares/Test.java +++ b/src/main/java/com/luminiasoft/bitshares/Test.java @@ -556,11 +556,17 @@ public class Test { public void testCreateBinFile() { byte[] fileOutput = FileBin.getBytesFromBrainKey(Main.BRAIN_KEY, "123456", "bithon-83"); - String stringFile = "02f9f3eb0f61a0a96134975d86048bf92e114d6a1ce286140cad3a96c33e697282bc0a8a24d1ad0c7bc084a79816ce38e36bd2d624aa8bf686f53fb4c7e25e3974da9b40e0b17e9d0b5b82793a04b19646169c49c58cd67f4950aee7d275141dd24f52baaaee772995a9bd6a6562a7a38aae08951236d3f612aecef7aedd720a91eacbab3a792ca3ebe0105838fe11f6e9d0e83e5d77eb82f17c7ba85c670e69294a8bcf8365cfeca487a60093498496bbec394c729e3fda9f32fdccdea56288b36fb14a26aa309b548a6dd9c1d616d22167348f8d580f9dc7361b4457d2dc6d75ec985d8e2d3dcdff89cd425d9f14037ac961eb10ac5f92bab356ccecd8cf018ec05ab40d915b628a75ae32cfa4005634f08b24c0dc8c5a7636ed70cbd86a7f0c4f6236d74310470fafe3af8b5346c8cb61957f7292b468d276498f9e806399588b0afd5777e6ee5fe7cd3a6691d9b5486cb5c7adbd5ad0b17588dd32d82b01d49ecf0f2bf24ee54a490ee620e8ab049047ffa416b5efa8f1f0155d8f1be866a10d0d62ae44a3a8ecc0121c08837c2ee1a25f8b6dd7266273c41f4b9a5e3d600e3fb4de870f99ab1a7196d93f222595f92e97a2480f58b61b62639154a374b987664fd317622aaad156f831b03f2d9606537b65b3b1fcfb1fb6be39560ad2c301dd1fc25cee755e61b49ebfe42ca7e64b4b0fc4aa347b48a85c0b585a3499fe278e25cb2141f8009b9afc875fa2a2c439bf6cdec4b5190a6deb7f9390f072beb24749a8a2114cc1870c07be079abb3ee0ebc827f9b53e158a529bc6552eba280f05edf5f7ae1911de7acb4888150a509d029ec7c9da6de8adabbca6773a0a293a0a42de8278c82e88b9390b42b56f58bd8633fb97130e799a47a744e2e8958fd5"; - fileOutput = new BigInteger(stringFile, 16).toByteArray(); + ///String stringFile = "02f9f3eb0f61a0a96134975d86048bf92e114d6a1ce286140cad3a96c33e697282bc0a8a24d1ad0c7bc084a79816ce38e36bd2d624aa8bf686f53fb4c7e25e3974da9b40e0b17e9d0b5b82793a04b19646169c49c58cd67f4950aee7d275141dd24f52baaaee772995a9bd6a6562a7a38aae08951236d3f612aecef7aedd720a91eacbab3a792ca3ebe0105838fe11f6e9d0e83e5d77eb82f17c7ba85c670e69294a8bcf8365cfeca487a60093498496bbec394c729e3fda9f32fdccdea56288b36fb14a26aa309b548a6dd9c1d616d22167348f8d580f9dc7361b4457d2dc6d75ec985d8e2d3dcdff89cd425d9f14037ac961eb10ac5f92bab356ccecd8cf018ec05ab40d915b628a75ae32cfa4005634f08b24c0dc8c5a7636ed70cbd86a7f0c4f6236d74310470fafe3af8b5346c8cb61957f7292b468d276498f9e806399588b0afd5777e6ee5fe7cd3a6691d9b5486cb5c7adbd5ad0b17588dd32d82b01d49ecf0f2bf24ee54a490ee620e8ab049047ffa416b5efa8f1f0155d8f1be866a10d0d62ae44a3a8ecc0121c08837c2ee1a25f8b6dd7266273c41f4b9a5e3d600e3fb4de870f99ab1a7196d93f222595f92e97a2480f58b61b62639154a374b987664fd317622aaad156f831b03f2d9606537b65b3b1fcfb1fb6be39560ad2c301dd1fc25cee755e61b49ebfe42ca7e64b4b0fc4aa347b48a85c0b585a3499fe278e25cb2141f8009b9afc875fa2a2c439bf6cdec4b5190a6deb7f9390f072beb24749a8a2114cc1870c07be079abb3ee0ebc827f9b53e158a529bc6552eba280f05edf5f7ae1911de7acb4888150a509d029ec7c9da6de8adabbca6773a0a293a0a42de8278c82e88b9390b42b56f58bd8633fb97130e799a47a744e2e8958fd5"; + //fileOutput = new BigInteger(stringFile, 16).toByteArray(); System.out.println(FileBin.getBrainkeyFromByte(fileOutput, "123456")); } + public void testImportBinFile() { + byte inputBytes[] = new byte[] {(byte)2, (byte)175, (byte)24, (byte)227, (byte)182, (byte)11, (byte)113, (byte)151, (byte)112, (byte)157, (byte)137, (byte)157, (byte)244, (byte)237, (byte)228, (byte)92, (byte)34, (byte)138, (byte)171, (byte)248, (byte)24, (byte)161, (byte)171, (byte)75, (byte)2, (byte)183, (byte)47, (byte)213, (byte)50, (byte)109, (byte)220, (byte)6, (byte)124, (byte)108, (byte)32, (byte)164, (byte)204, (byte)234, (byte)10, (byte)12, (byte)154, (byte)225, (byte)11, (byte)178, (byte)238, (byte)9, (byte)122, (byte)244, (byte)175, (byte)185, (byte)143, (byte)27, (byte)134, (byte)192, (byte)37, (byte)239, (byte)148, (byte)253, (byte)124, (byte)68, (byte)6, (byte)211, (byte)20, (byte)224, (byte)50, (byte)31, (byte)208, (byte)87, (byte)115, (byte)115, (byte)11, (byte)81, (byte)182, (byte)223, (byte)230, (byte)102, (byte)230, (byte)245, (byte)182, (byte)77, (byte)157, (byte)182, (byte)79, (byte)247, (byte)134, (byte)178, (byte)87, (byte)93, (byte)146, (byte)89, (byte)167, (byte)191, (byte)34, (byte)17, (byte)117, (byte)173, (byte)59, (byte)142, (byte)54, (byte)120, (byte)237, (byte)124, (byte)217, (byte)252, (byte)112, (byte)97, (byte)153, (byte)124, (byte)144, (byte)80, (byte)33, (byte)130, (byte)15, (byte)18, (byte)157, (byte)98, (byte)130, (byte)80, (byte)206, (byte)27, (byte)8, (byte)142, (byte)245, (byte)22, (byte)244, (byte)219, (byte)38, (byte)228, (byte)173, (byte)147, (byte)42, (byte)100, (byte)99, (byte)108, (byte)146, (byte)110, (byte)100, (byte)215, (byte)183, (byte)20, (byte)112, (byte)93, (byte)195, (byte)12, (byte)174, (byte)130, (byte)35, (byte)71, (byte)172, (byte)237, (byte)112, (byte)197, (byte)250, (byte)67, (byte)36, (byte)185, (byte)117, (byte)211, (byte)147, (byte)21, (byte)251, (byte)214, (byte)178, (byte)152, (byte)25, (byte)107, (byte)206, (byte)184, (byte)113, (byte)67, (byte)169, (byte)55, (byte)95, (byte)249, (byte)193, (byte)215, (byte)20, (byte)124, (byte)62, (byte)179, (byte)125, (byte)2, (byte)96, (byte)46, (byte)137, (byte)133, (byte)46, (byte)37, (byte)138, (byte)19, (byte)215, (byte)2, (byte)189, (byte)91, (byte)61, (byte)119, (byte)150, (byte)6, (byte)188, (byte)220, (byte)232, (byte)12, (byte)108, (byte)128, (byte)92, (byte)172, (byte)119, (byte)138, (byte)215, (byte)90, (byte)8, (byte)56, (byte)126, (byte)145, (byte)133, (byte)193, (byte)47, (byte)147, (byte)106, (byte)219, (byte)58, (byte)227, (byte)20, (byte)60, (byte)147, (byte)38, (byte)218, (byte)17, (byte)130, (byte)196, (byte)134, (byte)105, (byte)94, (byte)235, (byte)26, (byte)245, (byte)119, (byte)153, (byte)11, (byte)29, (byte)33, (byte)230, (byte)151, (byte)149, (byte)63, (byte)91, (byte)170, (byte)75, (byte)43, (byte)223, (byte)192, (byte)104, (byte)161, (byte)58, (byte)135, (byte)226, (byte)175, (byte)171, (byte)202, (byte)113, (byte)142, (byte)40, (byte)139, (byte)240, (byte)10, (byte)54, (byte)213, (byte)55, (byte)235, (byte)175, (byte)211, (byte)193, (byte)151, (byte)43, (byte)233, (byte)81, (byte)250, (byte)245, (byte)120, (byte)211, (byte)107, (byte)73, (byte)75, (byte)74, (byte)98, (byte)10, (byte)208, (byte)68, (byte)185, (byte)183, (byte)251, (byte)193, (byte)65, (byte)125, (byte)65, (byte)52, (byte)154, (byte)115, (byte)118, (byte)217, (byte)254, (byte)140, (byte)116, (byte)124, (byte)158, (byte)70, (byte)94, (byte)28, (byte)132, (byte)231, (byte)142, (byte)209, (byte)163, (byte)182, (byte)227, (byte)129, (byte)243, (byte)130, (byte)28, (byte)238, (byte)35, (byte)235, (byte)120, (byte)199, (byte)26, (byte)209, (byte)58, (byte)181, (byte)124, (byte)44, (byte)38, (byte)132, (byte)54, (byte)168, (byte)31, (byte)150, (byte)191, (byte)140, (byte)101, (byte)141, (byte)104, (byte)74, (byte)29, (byte)76, (byte)254, (byte)67, (byte)43, (byte)123, (byte)67, (byte)208, (byte)132, (byte)61, (byte)36, (byte)167, (byte)195, (byte)231, (byte)234, (byte)136, (byte)55, (byte)97, (byte)205, (byte)242, (byte)182, (byte)237, (byte)179, (byte)13, (byte)24, (byte)249, (byte)53, (byte)151, (byte)66, (byte)252, (byte)254, (byte)173, (byte)91, (byte)52, (byte)70, (byte)239, (byte)235, (byte)94, (byte)18, (byte)115, (byte)143, (byte)134, (byte)206, (byte)244, (byte)77, (byte)247, (byte)201, (byte)61, (byte)115, (byte)78, (byte)186, (byte)199, (byte)89, (byte)144, (byte)69, (byte)231, (byte)174, (byte)2, (byte)167, (byte)157, (byte)148, (byte)88, (byte)150, (byte)171, (byte)50, (byte)82, (byte)230, (byte)211, (byte)14, (byte)55, (byte)165, (byte)103, (byte)67, (byte)172, (byte)148, (byte)252, (byte)10, (byte)104, (byte)24, (byte)179, (byte)152, (byte)156, (byte)169, (byte)228, (byte)123, (byte)205, (byte)247, (byte)10, (byte)127, (byte)106, (byte)100, (byte)10, (byte)187, (byte)81, (byte)0, (byte)55, (byte)177, (byte)60, (byte)139, (byte)41, (byte)62, (byte)163, (byte)83, (byte)242, (byte)1, (byte)122, (byte)247, (byte)181, (byte)102, (byte)218, (byte)205, (byte)70, (byte)235, (byte)147, (byte)195, (byte)107, (byte)248, (byte)139, (byte)169, (byte)203, (byte)174, (byte)22, (byte)126, (byte)65, (byte)123, (byte)14, (byte)33, (byte)131, (byte)49, (byte)6, (byte)187, (byte)156, (byte)50, (byte)92, (byte)145, (byte)74, (byte)90, (byte)132, (byte)151, (byte)105, (byte)187, (byte)195, (byte)56, (byte)45, (byte)134, (byte)204, (byte)7, (byte)130, (byte)153, (byte)209, (byte)87, (byte)231, (byte)78, (byte)90, (byte)168, (byte)93, (byte)200, (byte)149, (byte)204, (byte)128, (byte)85, (byte)17, (byte)17, (byte)219, (byte)161, (byte)167, (byte)73, (byte)218, (byte)116, (byte)233, (byte)202, (byte)19, (byte)110, (byte)95, (byte)115, (byte)233, (byte)137, (byte)85, (byte)112, (byte)70, (byte)226, (byte)217, (byte)126, (byte)70, (byte)214, (byte)47, (byte)133, (byte)129, (byte)78, (byte)127, (byte)81, (byte)192, (byte)48, (byte)91, (byte)224, (byte)124, (byte)13, (byte)176, (byte)131, (byte)53, (byte)192, (byte)92, (byte)113, (byte)235, (byte)86, (byte)38, (byte)178, (byte)133, (byte)204, (byte)110, (byte)195, (byte)230, (byte)140, (byte)213, (byte)208, (byte)188, (byte)185, (byte)37, (byte)103, (byte)177, (byte)181, (byte)120, (byte)78, (byte)192, (byte)30, (byte)224, (byte)250, (byte)2, (byte)66, (byte)76, (byte)162, (byte)87, (byte)8, (byte)131, (byte)54, (byte)247, (byte)91, (byte)9, (byte)236, (byte)18, (byte)53, (byte)11, (byte)141, (byte)144, (byte)193, (byte)139, (byte)168, (byte)170, (byte)223, (byte)190, (byte)90, (byte)23, (byte)29, (byte)177, (byte)79, (byte)38, (byte)232, (byte)148, (byte)80, (byte)211, (byte)207, (byte)201, (byte)129, (byte)2, (byte)228, (byte)86, (byte)144, (byte)32, (byte)27, (byte)235, (byte)105, (byte)136, (byte)217, (byte)195, (byte)234, (byte)243, (byte)198, (byte)87, (byte)186, (byte)31, (byte)21, (byte)144, (byte)200, (byte)27, (byte)34, (byte)82, (byte)220, (byte)37, (byte)67, (byte)44, (byte)140, (byte)233, (byte)144, (byte)218, (byte)185, (byte)46, (byte)151, (byte)96, (byte)91}; + //BigInteger b = new BigInteger(new String(inputBytes),16); + System.out.println(FileBin.getBrainkeyFromByte(inputBytes, "123456")); + } + public void testAccountUpdateSerialization() { String newAddress = "BTS8RiFgs8HkcVPVobHLKEv6yL3iXcC9SWjbPVS15dDAXLG9GYhnY"; try {