From 3da660d75d42d39abcb7f1e3f315c2a97d4aa1cd Mon Sep 17 00:00:00 2001 From: Kristjan Kosic - Chris Date: Wed, 15 Jan 2020 08:35:44 +0100 Subject: [PATCH 1/4] fix: handle SignatureDecodeException --- .../crypto/transactions/Transaction.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java b/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java index d4d5b758..ca80655c 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/Transaction.java @@ -7,6 +7,7 @@ import org.arkecosystem.crypto.identities.PrivateKey; import org.bitcoinj.core.ECKey; import org.bitcoinj.core.Sha256Hash; +import org.bitcoinj.core.SignatureDecodeException; import java.lang.reflect.Type; import java.nio.ByteBuffer; @@ -66,7 +67,11 @@ public boolean verify() { byte[] signature = Hex.decode(this.signature); byte[] bytes = toBytes(); - return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey()); + try { + return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey()); + } catch (SignatureDecodeException e) { + return false; + } } public boolean secondVerify(String secondPublicKey) { @@ -75,7 +80,11 @@ public boolean secondVerify(String secondPublicKey) { byte[] signature = Hex.decode(this.signSignature); byte[] bytes = toBytes(false); - return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey()); + try { + return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey()); + } catch (SignatureDecodeException e) { + return false; + } } public Transaction parseSignatures(String serialized, int startOffset) { From 99db0802fa9da93f3f8853ea62c811f2d2d49ec1 Mon Sep 17 00:00:00 2001 From: Kristjan Kosic - Chris Date: Wed, 15 Jan 2020 08:45:55 +0100 Subject: [PATCH 2/4] fix: exception handling in Message.java re: update bitcoinj --- src/main/java/org/arkecosystem/crypto/utils/Message.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/arkecosystem/crypto/utils/Message.java b/src/main/java/org/arkecosystem/crypto/utils/Message.java index 744c86a7..bd638b4a 100644 --- a/src/main/java/org/arkecosystem/crypto/utils/Message.java +++ b/src/main/java/org/arkecosystem/crypto/utils/Message.java @@ -5,6 +5,7 @@ import org.arkecosystem.crypto.identities.PrivateKey; import org.bitcoinj.core.ECKey; import org.bitcoinj.core.Sha256Hash; +import org.bitcoinj.core.SignatureDecodeException; import java.util.HashMap; import java.util.Map; @@ -34,7 +35,11 @@ public boolean verify() { byte[] signature = Hex.decode(this.signature); byte[] messageBytes = Sha256Hash.hash(this.message.getBytes()); - return ECKey.verify(messageBytes, signature, keys.getPubKey()); + try { + return ECKey.verify(messageBytes, signature, keys.getPubKey()); + } catch (SignatureDecodeException e) { + return false; + } } public Map toMap() { From f58fd2d973657afc37676c01ac742c14f9f76297 Mon Sep 17 00:00:00 2001 From: Kristjan Kosic - Chris Date: Wed, 15 Jan 2020 17:37:07 +0100 Subject: [PATCH 3/4] fix: remove bouncy castle from deps // collision with bitcoinj --- build.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index 073854d0..28cbe3ff 100644 --- a/build.gradle +++ b/build.gradle @@ -95,12 +95,11 @@ if (project.hasProperty("signing.keyId")) { dependencies { compile group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.15.6' - compile group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.64' compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' compile 'com.google.guava:guava:28.0-jre' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2' } test { From d69df294427486095814dd4f7d6bdedfec279305 Mon Sep 17 00:00:00 2001 From: Kristjan Kosic - Chris Date: Wed, 15 Jan 2020 17:48:32 +0100 Subject: [PATCH 4/4] chore: update guava package --- build.gradle | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 28cbe3ff..47147607 100644 --- a/build.gradle +++ b/build.gradle @@ -74,6 +74,12 @@ uploadArchives { organization = 'Ark Ecosystem' organizationUrl = 'https://ark.io' } + developer { + name = 'Kristjan Kosic' + email = 'kristjan@ark.io' + organization = 'Ark Ecosystem' + organizationUrl = 'https://ark.io' + } } scm { @@ -96,7 +102,7 @@ if (project.hasProperty("signing.keyId")) { dependencies { compile group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.15.6' compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6' - compile 'com.google.guava:guava:28.0-jre' + compile 'com.google.guava:guava:28.2-jre' testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2'