Skip to content

Commit e19b2a1

Browse files
authored
fix(config): replace the Exception with TronError (#6452)
* replace the Exception with TronError * remove plaintext key
1 parent a86947c commit e19b2a1

File tree

2 files changed

+37
-63
lines changed

2 files changed

+37
-63
lines changed

chainbase/src/main/java/org/tron/common/utils/LocalWitnesses.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import org.tron.common.crypto.SignInterface;
2626
import org.tron.common.crypto.SignUtils;
2727
import org.tron.core.config.Parameter.ChainConstant;
28+
import org.tron.core.exception.TronError;
2829

2930
@Slf4j(topic = "app")
3031
public class LocalWitnesses {
@@ -78,13 +79,14 @@ private void validate(String privateKey) {
7879

7980
if (StringUtils.isBlank(privateKey)
8081
|| privateKey.length() != ChainConstant.PRIVATE_KEY_LENGTH) {
81-
throw new IllegalArgumentException(
82-
String.format("private key must be %d hex string, actual: %d",
83-
ChainConstant.PRIVATE_KEY_LENGTH,
84-
StringUtils.isBlank(privateKey) ? 0 : privateKey.length()));
82+
throw new TronError(String.format("private key must be %d hex string, actual: %d",
83+
ChainConstant.PRIVATE_KEY_LENGTH,
84+
StringUtils.isBlank(privateKey) ? 0 : privateKey.length()),
85+
TronError.ErrCode.WITNESS_INIT);
8586
}
8687
if (!StringUtil.isHexadecimal(privateKey)) {
87-
throw new IllegalArgumentException("private key must be hex string");
88+
throw new TronError("private key must be hex string",
89+
TronError.ErrCode.WITNESS_INIT);
8890
}
8991
}
9092

framework/src/test/java/org/tron/core/config/args/LocalWitnessTest.java

Lines changed: 30 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,26 @@
1515

1616
package org.tron.core.config.args;
1717

18+
import static org.junit.Assert.assertEquals;
19+
import static org.junit.Assert.assertThrows;
20+
import static org.junit.Assert.assertTrue;
1821
import static org.junit.Assert.fail;
1922

2023
import com.google.common.collect.Lists;
2124
import java.io.IOException;
25+
import java.security.SecureRandom;
2226
import org.junit.Assert;
2327
import org.junit.Before;
2428
import org.junit.Rule;
2529
import org.junit.Test;
2630
import org.junit.rules.TemporaryFolder;
31+
import org.tron.common.utils.ByteArray;
2732
import org.tron.common.utils.LocalWitnesses;
2833
import org.tron.common.utils.PublicMethod;
2934
import org.tron.common.utils.StringUtil;
3035
import org.tron.core.Constant;
36+
import org.tron.core.exception.TronError;
37+
import org.tron.core.exception.TronError.ErrCode;
3138

3239
public class LocalWitnessTest {
3340

@@ -42,7 +49,7 @@ public void setLocalWitness() {
4249
localWitness
4350
.setPrivateKeys(
4451
Lists.newArrayList(
45-
PRIVATE_KEY));
52+
PRIVATE_KEY));
4653
}
4754

4855
@Test
@@ -52,13 +59,13 @@ public void whenSetNullPrivateKey() {
5259
Assert.assertNotNull(localWitness.getPublicKey());
5360
}
5461

55-
@Test(expected = IllegalArgumentException.class)
62+
@Test(expected = TronError.class)
5663
public void whenSetEmptyPrivateKey() {
5764
localWitness.setPrivateKeys(Lists.newArrayList(""));
5865
fail("private key must be 64-bits hex string");
5966
}
6067

61-
@Test(expected = IllegalArgumentException.class)
68+
@Test(expected = TronError.class)
6269
public void whenSetBadFormatPrivateKey() {
6370
localWitness.setPrivateKeys(Lists.newArrayList("a111"));
6471
fail("private key must be 64-bits hex string");
@@ -104,62 +111,27 @@ public void testValidPrivateKeyWithPrefix() {
104111
@Test
105112
public void testInvalidPrivateKey() {
106113
LocalWitnesses localWitnesses = new LocalWitnesses();
114+
String expectedMessage = "private key must be 64 hex string";
115+
assertTronError(localWitnesses, null, expectedMessage);
116+
assertTronError(localWitnesses, "", expectedMessage);
117+
assertTronError(localWitnesses, " ", expectedMessage);
118+
assertTronError(localWitnesses, "11111", expectedMessage);
119+
String expectedMessage2 = "private key must be hex string";
120+
SecureRandom secureRandom = new SecureRandom();
121+
byte[] keyBytes = new byte[31];
122+
secureRandom.nextBytes(keyBytes);
123+
final String privateKey = ByteArray.toHexString(keyBytes) + " ";
124+
assertTronError(localWitnesses, privateKey, expectedMessage2);
125+
final String privateKey2 = "xy" + ByteArray.toHexString(keyBytes);
126+
assertTronError(localWitnesses, privateKey2, expectedMessage2);
127+
}
107128

108-
try {
109-
localWitnesses.addPrivateKeys(null);
110-
fail("should throw IllegalArgumentException");
111-
} catch (IllegalArgumentException e) {
112-
Assert.assertTrue(e.getMessage().contains("private key must be 64 hex string"));
113-
} catch (Exception e) {
114-
fail("should IllegalArgumentException,actual exception: " + e.getClass().getSimpleName());
115-
}
116-
117-
try {
118-
localWitnesses.addPrivateKeys("");
119-
fail("should throw IllegalArgumentException");
120-
} catch (IllegalArgumentException e) {
121-
Assert.assertTrue(e.getMessage().contains("private key must be 64 hex string"));
122-
} catch (Exception e) {
123-
fail("should IllegalArgumentException,actual exception: " + e.getClass().getSimpleName());
124-
}
125-
126-
try {
127-
localWitnesses.addPrivateKeys(" ");
128-
fail("should throw IllegalArgumentException");
129-
} catch (IllegalArgumentException e) {
130-
Assert.assertTrue(e.getMessage().contains("private key must be 64 hex string"));
131-
} catch (Exception e) {
132-
fail("should IllegalArgumentException,actual exception: " + e.getClass().getSimpleName());
133-
}
134-
135-
try {
136-
localWitnesses.addPrivateKeys("11111");
137-
fail("should throw IllegalArgumentException");
138-
} catch (IllegalArgumentException e) {
139-
Assert.assertTrue(e.getMessage().contains("private key must be 64 hex string"));
140-
} catch (Exception e) {
141-
fail("should IllegalArgumentException,actual exception: " + e.getClass().getSimpleName());
142-
}
143-
144-
try {
145-
String privateKey = "11111111111111111111111111111111111111111111111111111111111111 ";
146-
localWitnesses.addPrivateKeys(privateKey);
147-
fail("should throw IllegalArgumentException");
148-
} catch (IllegalArgumentException e) {
149-
Assert.assertTrue(e.getMessage().contains("private key must be hex string"));
150-
} catch (Exception e) {
151-
fail("should IllegalArgumentException,actual exception: " + e.getClass().getSimpleName());
152-
}
153-
154-
try {
155-
String privateKey = "xy11111111111111111111111111111111111111111111111111111111111111";
156-
localWitnesses.addPrivateKeys(privateKey);
157-
fail("should throw IllegalArgumentException");
158-
} catch (IllegalArgumentException e) {
159-
Assert.assertTrue(e.getMessage().contains("private key must be hex string"));
160-
} catch (Exception e) {
161-
fail("should IllegalArgumentException,actual exception: " + e.getClass().getSimpleName());
162-
}
129+
private void assertTronError(LocalWitnesses localWitnesses, String privateKey,
130+
String expectedMessage) {
131+
TronError thrown = assertThrows(TronError.class,
132+
() -> localWitnesses.addPrivateKeys(privateKey));
133+
assertEquals(ErrCode.WITNESS_INIT, thrown.getErrCode());
134+
assertTrue(thrown.getMessage().contains(expectedMessage));
163135
}
164136

165137
@Test

0 commit comments

Comments
 (0)