Skip to content

Commit b51aeea

Browse files
committed
refactor(crypto): remove SM2/SM3 crypto algorithm support
1 parent 7e5bbbd commit b51aeea

75 files changed

Lines changed: 207 additions & 2596 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

actuator/src/main/java/org/tron/core/utils/TransactionUtil.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import org.tron.api.GrpcAPI.TransactionExtention;
3838
import org.tron.api.GrpcAPI.TransactionSignWeight;
3939
import org.tron.api.GrpcAPI.TransactionSignWeight.Result;
40-
import org.tron.common.parameter.CommonParameter;
4140
import org.tron.common.utils.Sha256Hash;
4241
import org.tron.core.ChainBaseManager;
4342
import org.tron.core.capsule.AccountCapsule;
@@ -117,8 +116,7 @@ private static boolean validReadableBytes(byte[] bytes, int maxLength) {
117116
}
118117

119118
public static Sha256Hash getTransactionId(Transaction transaction) {
120-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
121-
transaction.getRawData().toByteArray());
119+
return Sha256Hash.of(transaction.getRawData().toByteArray());
122120
}
123121

124122

@@ -187,8 +185,7 @@ public TransactionSignWeight getTransactionSignWeight(Transaction trx) {
187185
TransactionSignWeight.Builder tswBuilder = TransactionSignWeight.newBuilder();
188186
TransactionExtention.Builder trxExBuilder = TransactionExtention.newBuilder();
189187
trxExBuilder.setTransaction(trx);
190-
trxExBuilder.setTxid(ByteString.copyFrom(Sha256Hash.hash(CommonParameter
191-
.getInstance().isECKeyCryptoEngine(), trx.getRawData().toByteArray())));
188+
trxExBuilder.setTxid(ByteString.copyFrom(Sha256Hash.hash(trx.getRawData().toByteArray())));
192189
Return.Builder retBuilder = Return.newBuilder();
193190
retBuilder.setResult(true).setCode(response_code.SUCCESS);
194191
trxExBuilder.setResult(retBuilder);
@@ -224,8 +221,7 @@ public TransactionSignWeight getTransactionSignWeight(Transaction trx) {
224221
if (trx.getSignatureCount() > 0) {
225222
List<ByteString> approveList = new ArrayList<>();
226223
long currentWeight = TransactionCapsule.checkWeight(permission, trx.getSignatureList(),
227-
Sha256Hash.hash(CommonParameter.getInstance()
228-
.isECKeyCryptoEngine(), trx.getRawData().toByteArray()), approveList);
224+
Sha256Hash.hash(trx.getRawData().toByteArray()), approveList);
229225
tswBuilder.addAllApprovedList(approveList);
230226
tswBuilder.setCurrentWeight(currentWeight);
231227
}

actuator/src/main/java/org/tron/core/vm/PrecompiledContracts.java

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -360,11 +360,9 @@ private static byte[] recoverAddrBySign(byte[] sign, byte[] hash) {
360360
}
361361
try {
362362
Rsv rsv = Rsv.fromSignature(sign);
363-
SignatureInterface signature = SignUtils.fromComponents(rsv.getR(), rsv.getS(), rsv.getV(),
364-
CommonParameter.getInstance().isECKeyCryptoEngine());
363+
SignatureInterface signature = SignUtils.fromComponents(rsv.getR(), rsv.getS(), rsv.getV());
365364
if (signature.validateComponents()) {
366-
out = SignUtils.signatureToAddress(hash, signature,
367-
CommonParameter.getInstance().isECKeyCryptoEngine());
365+
out = SignUtils.signatureToAddress(hash, signature);
368366
}
369367
} catch (Throwable any) {
370368
logger.info("ECRecover error", any.getMessage());
@@ -518,11 +516,9 @@ public long getEnergyForData(byte[] data) {
518516
public Pair<Boolean, byte[]> execute(byte[] data) {
519517

520518
if (data == null) {
521-
return Pair.of(true, Sha256Hash.hash(CommonParameter
522-
.getInstance().isECKeyCryptoEngine(), EMPTY_BYTE_ARRAY));
519+
return Pair.of(true, Sha256Hash.hash(EMPTY_BYTE_ARRAY));
523520
}
524-
return Pair.of(true, Sha256Hash.hash(CommonParameter
525-
.getInstance().isECKeyCryptoEngine(), data));
521+
return Pair.of(true, Sha256Hash.hash(data));
526522
}
527523
}
528524

@@ -548,11 +544,9 @@ public Pair<Boolean, byte[]> execute(byte[] data) {
548544
data = EMPTY_BYTE_ARRAY;
549545
}
550546

551-
byte[] orig = Sha256Hash.hash(CommonParameter.getInstance()
552-
.isECKeyCryptoEngine(), data);
547+
byte[] orig = Sha256Hash.hash(data);
553548
System.arraycopy(orig, 0, target, 0, 20);
554-
return Pair.of(true, Sha256Hash.hash(CommonParameter.getInstance()
555-
.isECKeyCryptoEngine(), target));
549+
return Pair.of(true, Sha256Hash.hash(target));
556550
}
557551
}
558552

@@ -590,11 +584,9 @@ public Pair<Boolean, byte[]> execute(byte[] data) {
590584
int sLength = data.length < 128 ? data.length - 96 : 32;
591585
System.arraycopy(data, 96, s, 0, sLength);
592586

593-
SignatureInterface signature = SignUtils.fromComponents(r, s, v[31]
594-
, CommonParameter.getInstance().isECKeyCryptoEngine());
587+
SignatureInterface signature = SignUtils.fromComponents(r, s, v[31]);
595588
if (validateV(v) && signature.validateComponents()) {
596-
out = new DataWord(SignUtils.signatureToAddress(h, signature
597-
, CommonParameter.getInstance().isECKeyCryptoEngine()));
589+
out = new DataWord(SignUtils.signatureToAddress(h, signature));
598590
}
599591
} catch (Throwable any) {
600592
}
@@ -948,8 +940,7 @@ public Pair<Boolean, byte[]> execute(byte[] rawData) {
948940
byte[] data = words[2].getData();
949941

950942
byte[] combine = ByteUtil.merge(address, ByteArray.fromInt(permissionId), data);
951-
byte[] hash = Sha256Hash.hash(CommonParameter
952-
.getInstance().isECKeyCryptoEngine(), combine);
943+
byte[] hash = Sha256Hash.hash(combine);
953944

954945
if (VMConfig.allowTvmSelfdestructRestriction()) {
955946
int sigArraySize = words[words[3].intValueSafe() / WORD_SIZE].intValueSafe();

actuator/src/main/java/org/tron/core/vm/program/invoke/ProgramInvokeMockImpl.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,8 +79,7 @@ public DataWord getBalance() {
7979
public DataWord getOriginAddress() {
8080

8181
byte[] cowPrivKey = Hash.sha3("horse".getBytes());
82-
byte[] addr = SignUtils.fromPrivate(cowPrivKey
83-
, CommonParameter.getInstance().isECKeyCryptoEngine()).getAddress();
82+
byte[] addr = SignUtils.fromPrivate(cowPrivKey).getAddress();
8483

8584
return new DataWord(addr);
8685
}
@@ -89,8 +88,7 @@ public DataWord getOriginAddress() {
8988
public DataWord getCallerAddress() {
9089

9190
byte[] cowPrivKey = Hash.sha3("monkey".getBytes());
92-
byte[] addr = SignUtils.fromPrivate(cowPrivKey
93-
, CommonParameter.getInstance().isECKeyCryptoEngine()).getAddress();
91+
byte[] addr = SignUtils.fromPrivate(cowPrivKey).getAddress();
9492
return new DataWord(addr);
9593
}
9694

chainbase/src/main/java/org/tron/common/overlay/message/Message.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ public byte[] getSendBytes() {
7474
}
7575

7676
public Sha256Hash getMessageId() {
77-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
78-
getData());
77+
return Sha256Hash.of(getData());
7978
}
8079

8180
public byte[] getData() {
@@ -110,4 +109,4 @@ public boolean equals(Object o) {
110109
return Arrays.equals(data, message.data);
111110
}
112111

113-
}
112+
}

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import lombok.extern.slf4j.Slf4j;
77
import org.apache.commons.lang3.StringUtils;
8-
import org.tron.common.parameter.CommonParameter;
98
import org.tron.core.capsule.AccountCapsule;
109
import org.tron.core.capsule.ExchangeCapsule;
1110
import org.tron.core.exception.BalanceInsufficientException;
@@ -28,10 +27,8 @@ public static byte[] decode58Check(String input) {
2827
}
2928
byte[] decodeData = new byte[decodeCheck.length - 4];
3029
System.arraycopy(decodeCheck, 0, decodeData, 0, decodeData.length);
31-
byte[] hash0 = Sha256Hash.hash(CommonParameter.getInstance().isECKeyCryptoEngine(),
32-
decodeData);
33-
byte[] hash1 = Sha256Hash.hash(CommonParameter.getInstance().isECKeyCryptoEngine(),
34-
hash0);
30+
byte[] hash0 = Sha256Hash.hash(decodeData);
31+
byte[] hash1 = Sha256Hash.hash(hash0);
3532
if (hash1[0] == decodeCheck[decodeData.length] &&
3633
hash1[1] == decodeCheck[decodeData.length + 1] &&
3734
hash1[2] == decodeCheck[decodeData.length + 2] &&

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,12 @@ public LocalWitnesses(List<String> privateKeys) {
4747
setPrivateKeys(privateKeys);
4848
}
4949

50-
public void initWitnessAccountAddress(final byte[] witnessAddress,
51-
boolean isECKeyCryptoEngine) {
50+
public void initWitnessAccountAddress(final byte[] witnessAddress) {
5251
if (witnessAddress != null) {
5352
this.witnessAccountAddress = witnessAddress;
5453
} else if (!CollectionUtils.isEmpty(privateKeys)) {
5554
byte[] privateKey = ByteArray.fromHexString(getPrivateKey());
56-
final SignInterface ecKey = SignUtils.fromPrivate(privateKey,
57-
isECKeyCryptoEngine);
55+
final SignInterface ecKey = SignUtils.fromPrivate(privateKey);
5856
this.witnessAccountAddress = ecKey.getAddress();
5957
}
6058
}

chainbase/src/main/java/org/tron/core/capsule/BlockCapsule.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,7 @@ private void initTxs() {
161161

162162
// TODO add unit test for sig2.getbytes
163163
public void sign(byte[] privateKey) {
164-
SignInterface ecKeyEngine = SignUtils
165-
.fromPrivate(privateKey, CommonParameter.getInstance().isECKeyCryptoEngine());
164+
SignInterface ecKeyEngine = SignUtils.fromPrivate(privateKey);
166165

167166
ByteString sig = ByteString.copyFrom(ecKeyEngine.Base64toBytes(ecKeyEngine.signHash(getRawHash()
168167
.getBytes())));
@@ -174,17 +173,15 @@ public void sign(byte[] privateKey) {
174173
}
175174

176175
private Sha256Hash getRawHash() {
177-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
178-
this.block.getBlockHeader().getRawData().toByteArray());
176+
return Sha256Hash.of(this.block.getBlockHeader().getRawData().toByteArray());
179177
}
180178

181179
public boolean validateSignature(DynamicPropertiesStore dynamicPropertiesStore,
182180
AccountStore accountStore) throws ValidateSignatureException {
183181
try {
184182
byte[] sigAddress = SignUtils.signatureToAddress(getRawHash().getBytes(),
185183
TransactionCapsule.getBase64FromByteString(
186-
block.getBlockHeader().getWitnessSignature()),
187-
CommonParameter.getInstance().isECKeyCryptoEngine());
184+
block.getBlockHeader().getWitnessSignature()));
188185
byte[] witnessAccountAddress = block.getBlockHeader().getRawData().getWitnessAddress()
189186
.toByteArray();
190187

@@ -204,7 +201,7 @@ public boolean validateSignature(DynamicPropertiesStore dynamicPropertiesStore,
204201
public BlockId getBlockId() {
205202
if (blockId.equals(Sha256Hash.ZERO_HASH)) {
206203
blockId =
207-
new BlockId(Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
204+
new BlockId(Sha256Hash.of(
208205
this.block.getBlockHeader().getRawData().toByteArray()), getNum());
209206
}
210207
return blockId;

chainbase/src/main/java/org/tron/core/capsule/CodeCapsule.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ public CodeCapsule(byte[] code) {
3030
}
3131

3232
public Sha256Hash getCodeHash() {
33-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
34-
this.code);
33+
return Sha256Hash.of(this.code);
3534
}
3635

3736
@Override

chainbase/src/main/java/org/tron/core/capsule/StorageRowCapsule.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,7 @@ private void markDirty() {
5656
}
5757

5858
public Sha256Hash getHash() {
59-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
60-
this.rowValue);
59+
return Sha256Hash.of(this.rowValue);
6160
}
6261

6362
public byte[] getValue() {

chainbase/src/main/java/org/tron/core/capsule/TransactionCapsule.java

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ public class TransactionCapsule implements ProtoCapsule<Transaction> {
9191

9292
private static final String esName = "valid-contract-proto";
9393
private static final ExecutorService executorService = ExecutorServiceManager
94-
.newFixedThreadPool(esName, CommonParameter.getInstance()
95-
.getValidContractProtoThreadNum());
94+
.newFixedThreadPool(esName,
95+
CommonParameter.getInstance().getValidContractProtoThreadNum());
9696
private static final String OWNER_ADDRESS = "ownerAddress_";
9797

9898
private Transaction transaction;
@@ -242,8 +242,7 @@ public static long checkWeight(Permission permission, List<ByteString> sigs, byt
242242
"Signature size is " + sig.size());
243243
}
244244
String base64 = TransactionCapsule.getBase64FromByteString(sig);
245-
byte[] address = SignUtils
246-
.signatureToAddress(hash, base64, CommonParameter.getInstance().isECKeyCryptoEngine());
245+
byte[] address = SignUtils.signatureToAddress(hash, base64);
247246
long weight = getWeight(permission, address);
248247
if (weight == 0) {
249248
throw new PermissionException(
@@ -311,11 +310,10 @@ public static byte[] hashShieldTransaction(Transaction tx, String tokenId)
311310
Transaction transaction = tx.toBuilder().clearRawData()
312311
.setRawData(rawBuilder).build();
313312

314-
byte[] mergedByte = Bytes.concat(Sha256Hash
315-
.of(CommonParameter.getInstance().isECKeyCryptoEngine(), tokenId.getBytes()).getBytes(),
313+
byte[] mergedByte = Bytes.concat(
314+
Sha256Hash.of(tokenId.getBytes()).getBytes(),
316315
transaction.getRawData().toByteArray());
317-
return Sha256Hash.of(CommonParameter
318-
.getInstance().isECKeyCryptoEngine(), mergedByte).getBytes();
316+
return Sha256Hash.of(mergedByte).getBytes();
319317
}
320318

321319
// todo mv this static function to capsule util
@@ -563,18 +561,15 @@ public void createTransaction(com.google.protobuf.Message message, ContractType
563561

564562
public Sha256Hash getMerkleHash() {
565563
byte[] transBytes = this.transaction.toByteArray();
566-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
567-
transBytes);
564+
return Sha256Hash.of(transBytes);
568565
}
569566

570567
private Sha256Hash getRawHash() {
571-
return Sha256Hash.of(CommonParameter.getInstance().isECKeyCryptoEngine(),
572-
this.transaction.getRawData().toByteArray());
568+
return Sha256Hash.of(this.transaction.getRawData().toByteArray());
573569
}
574570

575571
public void sign(byte[] privateKey) {
576-
SignInterface cryptoEngine = SignUtils
577-
.fromPrivate(privateKey, CommonParameter.getInstance().isECKeyCryptoEngine());
572+
SignInterface cryptoEngine = SignUtils.fromPrivate(privateKey);
578573
ByteString sig = ByteString.copyFrom(cryptoEngine.Base64toBytes(cryptoEngine
579574
.signHash(getTransactionId().getBytes())));
580575
this.transaction = this.transaction.toBuilder().addSignature(sig).build();
@@ -595,8 +590,7 @@ public void addSign(byte[] privateKey, AccountStore accountStore)
595590
}
596591
checkPermission(permissionId, permission, contract);
597592
List<ByteString> approveList = new ArrayList<>();
598-
SignInterface cryptoEngine = SignUtils
599-
.fromPrivate(privateKey, CommonParameter.getInstance().isECKeyCryptoEngine());
593+
SignInterface cryptoEngine = SignUtils.fromPrivate(privateKey);
600594
byte[] address = cryptoEngine.getAddress();
601595
if (this.transaction.getSignatureCount() > 0) {
602596
checkWeight(permission, this.transaction.getSignatureList(),
@@ -617,7 +611,7 @@ public void addSign(byte[] privateKey, AccountStore accountStore)
617611
.signHash(getTransactionId().getBytes())));
618612
this.transaction = this.transaction.toBuilder().addSignature(sig).build();
619613
}
620-
614+
621615
private static void checkPermission(int permissionId, Permission permission, Transaction.Contract contract) throws PermissionException {
622616
if (permissionId != 0) {
623617
if (permission.getType() != PermissionType.Active) {
@@ -684,7 +678,7 @@ public boolean validateSignature(AccountStore accountStore,
684678
}
685679
}
686680
isVerified = true;
687-
}
681+
}
688682
return true;
689683
}
690684

0 commit comments

Comments
 (0)