Skip to content

Commit d019e25

Browse files
author
Kristjan Kosic
authored
fix: handle SignatureDecodeException (#85)
* fix: handle SignatureDecodeException * fix: exception handling in Message.java re: update bitcoinj * fix: remove bouncy castle from deps // collision with bitcoinj * chore: update guava package
1 parent 220df6e commit d019e25

3 files changed

Lines changed: 26 additions & 7 deletions

File tree

build.gradle

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ uploadArchives {
7474
organization = 'Ark Ecosystem'
7575
organizationUrl = 'https://ark.io'
7676
}
77+
developer {
78+
name = 'Kristjan Kosic'
79+
email = 'kristjan@ark.io'
80+
organization = 'Ark Ecosystem'
81+
organizationUrl = 'https://ark.io'
82+
}
7783
}
7884

7985
scm {
@@ -95,12 +101,11 @@ if (project.hasProperty("signing.keyId")) {
95101

96102
dependencies {
97103
compile group: 'org.bitcoinj', name: 'bitcoinj-core', version: '0.15.6'
98-
compile group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '1.64'
99104
compile group: 'com.google.code.gson', name: 'gson', version: '2.8.6'
100-
compile 'com.google.guava:guava:28.0-jre'
105+
compile 'com.google.guava:guava:28.2-jre'
101106

102-
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.0'
103-
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.0'
107+
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.2'
108+
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.5.2'
104109
}
105110

106111
test {

src/main/java/org/arkecosystem/crypto/transactions/Transaction.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import org.arkecosystem.crypto.identities.PrivateKey;
88
import org.bitcoinj.core.ECKey;
99
import org.bitcoinj.core.Sha256Hash;
10+
import org.bitcoinj.core.SignatureDecodeException;
1011

1112
import java.lang.reflect.Type;
1213
import java.nio.ByteBuffer;
@@ -66,7 +67,11 @@ public boolean verify() {
6667
byte[] signature = Hex.decode(this.signature);
6768
byte[] bytes = toBytes();
6869

69-
return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey());
70+
try {
71+
return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey());
72+
} catch (SignatureDecodeException e) {
73+
return false;
74+
}
7075
}
7176

7277
public boolean secondVerify(String secondPublicKey) {
@@ -75,7 +80,11 @@ public boolean secondVerify(String secondPublicKey) {
7580
byte[] signature = Hex.decode(this.signSignature);
7681
byte[] bytes = toBytes(false);
7782

78-
return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey());
83+
try {
84+
return ECKey.verify(Sha256Hash.hash(bytes), signature, keys.getPubKey());
85+
} catch (SignatureDecodeException e) {
86+
return false;
87+
}
7988
}
8089

8190
public Transaction parseSignatures(String serialized, int startOffset) {

src/main/java/org/arkecosystem/crypto/utils/Message.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.arkecosystem.crypto.identities.PrivateKey;
66
import org.bitcoinj.core.ECKey;
77
import org.bitcoinj.core.Sha256Hash;
8+
import org.bitcoinj.core.SignatureDecodeException;
89

910
import java.util.HashMap;
1011
import java.util.Map;
@@ -34,7 +35,11 @@ public boolean verify() {
3435
byte[] signature = Hex.decode(this.signature);
3536
byte[] messageBytes = Sha256Hash.hash(this.message.getBytes());
3637

37-
return ECKey.verify(messageBytes, signature, keys.getPubKey());
38+
try {
39+
return ECKey.verify(messageBytes, signature, keys.getPubKey());
40+
} catch (SignatureDecodeException e) {
41+
return false;
42+
}
3843
}
3944

4045
public Map toMap() {

0 commit comments

Comments
 (0)