From 3f25630b682a08169864dd8c19a17343b69caf63 Mon Sep 17 00:00:00 2001 From: Mirella de Medeiros Date: Mon, 10 Aug 2020 16:02:28 -0300 Subject: [PATCH 1/3] base58 encode and decode interop --- src/neo/SmartContract/ApplicationEngine.Binary.cs | 13 +++++++++++++ .../SmartContract/UT_ApplicationEngine.cs | 6 ++++++ 2 files changed, 19 insertions(+) diff --git a/src/neo/SmartContract/ApplicationEngine.Binary.cs b/src/neo/SmartContract/ApplicationEngine.Binary.cs index d8fe76815d..784ad72251 100644 --- a/src/neo/SmartContract/ApplicationEngine.Binary.cs +++ b/src/neo/SmartContract/ApplicationEngine.Binary.cs @@ -1,3 +1,4 @@ +using Neo.Cryptography; using Neo.VM.Types; using static System.Convert; @@ -9,6 +10,8 @@ partial class ApplicationEngine public static readonly InteropDescriptor System_Binary_Deserialize = Register("System.Binary.Deserialize", nameof(BinaryDeserialize), 0_00500000, CallFlags.None, true); public static readonly InteropDescriptor System_Binary_Base64Encode = Register("System.Binary.Base64Encode", nameof(Base64Encode), 0_00100000, CallFlags.None, true); public static readonly InteropDescriptor System_Binary_Base64Decode = Register("System.Binary.Base64Decode", nameof(Base64Decode), 0_00100000, CallFlags.None, true); + public static readonly InteropDescriptor System_Binary_Base58Encode = Register("System.Binary.Base58Encode", nameof(Base58Encode), 0_00100000, CallFlags.None, true); + public static readonly InteropDescriptor System_Binary_Base58Decode = Register("System.Binary.Base58Decode", nameof(Base58Decode), 0_00100000, CallFlags.None, true); protected internal byte[] BinarySerialize(StackItem item) { @@ -29,5 +32,15 @@ protected internal byte[] Base64Decode(string s) { return FromBase64String(s); } + + internal string Base58Encode(byte[] data) + { + return Base58.Encode(data); + } + + internal byte[] Base58Decode(string s) + { + return Base58.Decode(s); + } } } diff --git a/tests/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs b/tests/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs index b2810f2571..d625f95689 100644 --- a/tests/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs +++ b/tests/neo.UnitTests/SmartContract/UT_ApplicationEngine.cs @@ -26,10 +26,16 @@ public void TestBinary() var data = new byte[0]; CollectionAssert.AreEqual(data, engine.Base64Decode(engine.Base64Encode(data))); + CollectionAssert.AreEqual(data, engine.Base58Decode(engine.Base58Encode(data))); + data = new byte[] { 1, 2, 3 }; CollectionAssert.AreEqual(data, engine.Base64Decode(engine.Base64Encode(data))); + CollectionAssert.AreEqual(data, engine.Base58Decode(engine.Base58Encode(data))); + Assert.AreEqual("AQIDBA==", engine.Base64Encode(new byte[] { 1, 2, 3, 4 })); + + Assert.AreEqual("2VfUX", engine.Base58Encode(new byte[] { 1, 2, 3, 4 })); } [TestMethod] From f90496fd6fbdee6b3c1333f103d7eca48e435eef Mon Sep 17 00:00:00 2001 From: Mirella de Medeiros Date: Wed, 12 Aug 2020 10:47:34 -0300 Subject: [PATCH 2/3] protected methods --- src/neo/SmartContract/ApplicationEngine.Binary.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/neo/SmartContract/ApplicationEngine.Binary.cs b/src/neo/SmartContract/ApplicationEngine.Binary.cs index 784ad72251..b95d188bb3 100644 --- a/src/neo/SmartContract/ApplicationEngine.Binary.cs +++ b/src/neo/SmartContract/ApplicationEngine.Binary.cs @@ -33,12 +33,12 @@ protected internal byte[] Base64Decode(string s) return FromBase64String(s); } - internal string Base58Encode(byte[] data) + protected internal string Base58Encode(byte[] data) { return Base58.Encode(data); } - internal byte[] Base58Decode(string s) + protected internal byte[] Base58Decode(string s) { return Base58.Decode(s); } From 4d1161349a1017e1d9c6a688e0c1eca3666a94aa Mon Sep 17 00:00:00 2001 From: Mirella de Medeiros Date: Thu, 13 Aug 2020 12:15:13 -0300 Subject: [PATCH 3/3] coverage --- tests/neo.UnitTests/Cryptography/ECC/UT_ECDSA.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/neo.UnitTests/Cryptography/ECC/UT_ECDSA.cs b/tests/neo.UnitTests/Cryptography/ECC/UT_ECDSA.cs index a29cd3cbe2..2abc85ed45 100644 --- a/tests/neo.UnitTests/Cryptography/ECC/UT_ECDSA.cs +++ b/tests/neo.UnitTests/Cryptography/ECC/UT_ECDSA.cs @@ -24,6 +24,7 @@ public void GenerateSignature() Assert.IsFalse(ecdsa.VerifySignature(new byte[] { 2 }, sig[0], sig[1])); Assert.IsFalse(ecdsa.VerifySignature(new byte[] { 1 }, sig[0] + 1, sig[1])); Assert.IsFalse(ecdsa.VerifySignature(new byte[] { 1 }, sig[0], sig[1] + 1)); + Assert.IsFalse(ecdsa.VerifySignature(new byte[33], sig[0], sig[1])); } } }