From 4a98eb73fbb91736d09a0f2acfea570c896604d4 Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Thu, 22 Aug 2024 09:36:59 -0600 Subject: [PATCH 1/3] rename serialize/desearialize methods --- .../arkecosystem/crypto/transactions/Deserializer.java | 2 +- .../org/arkecosystem/crypto/transactions/Serializer.java | 2 +- .../crypto/transactions/types/MultiPayment.java | 4 ++-- .../transactions/types/MultiSignatureRegistration.java | 4 ++-- .../transactions/types/SecondSignatureRegistration.java | 4 ++-- .../crypto/transactions/types/Transaction.java | 4 ++-- .../arkecosystem/crypto/transactions/types/Transfer.java | 4 ++-- .../crypto/transactions/types/UsernameRegistration.java | 4 ++-- .../crypto/transactions/types/UsernameResignation.java | 4 ++-- .../crypto/transactions/types/ValidatorRegistration.java | 4 ++-- .../crypto/transactions/types/ValidatorResignation.java | 4 ++-- .../org/arkecosystem/crypto/transactions/types/Vote.java | 4 ++-- .../transactions/deserializers/DeserializerTest.java | 8 ++++---- 13 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/arkecosystem/crypto/transactions/Deserializer.java b/src/main/java/org/arkecosystem/crypto/transactions/Deserializer.java index 66c45891..ae9c97f1 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/Deserializer.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/Deserializer.java @@ -61,7 +61,7 @@ public Transaction deserialize() { deserializeCommon(); deserializeVendorField(); - this.transaction.deserialize(this.buffer); + this.transaction.deserializeData(this.buffer); deserializeSignatures(); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/Serializer.java b/src/main/java/org/arkecosystem/crypto/transactions/Serializer.java index 5a350303..7df2093d 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/Serializer.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/Serializer.java @@ -33,7 +33,7 @@ public byte[] serialize( byte[] common = serializeCommon(); byte[] vendorField = serializeVendorField(); - byte[] typeBuffer = this.transaction.serialize(); + byte[] typeBuffer = this.transaction.serializeData(); byte[] signatures = serializeSignatures(skipSignature, skipSecondSignature, skipMultiSignature); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/MultiPayment.java b/src/main/java/org/arkecosystem/crypto/transactions/types/MultiPayment.java index 78a0db32..68455a29 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/MultiPayment.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/MultiPayment.java @@ -43,7 +43,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { ByteBuffer buffer = ByteBuffer.allocate(2 + this.asset.multiPayment.payments.size() * 28); buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.putShort((short) this.asset.multiPayment.payments.size()); @@ -56,7 +56,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { int paymentLength = buffer.getShort() & 0xff; for (int i = 0; i < paymentLength; i++) { diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/MultiSignatureRegistration.java b/src/main/java/org/arkecosystem/crypto/transactions/types/MultiSignatureRegistration.java index ca50858b..a702f256 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/MultiSignatureRegistration.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/MultiSignatureRegistration.java @@ -32,7 +32,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { ByteBuffer buffer = ByteBuffer.allocate(2 + this.asset.multiSignature.publicKeys.size() * 33); buffer.order(ByteOrder.LITTLE_ENDIAN); @@ -48,7 +48,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { this.asset.multiSignature.min = buffer.get(); int publicKeyLength = buffer.get(); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/SecondSignatureRegistration.java b/src/main/java/org/arkecosystem/crypto/transactions/types/SecondSignatureRegistration.java index 8606c8b6..565a31be 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/SecondSignatureRegistration.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/SecondSignatureRegistration.java @@ -30,7 +30,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { ByteBuffer buffer = ByteBuffer.allocate(33); buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.put(Hex.decode(this.asset.signature.publicKey)); @@ -38,7 +38,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { byte[] publicKeyBuffer = new byte[33]; buffer.get(publicKeyBuffer); this.asset.signature.publicKey = Hex.encode(publicKeyBuffer); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java b/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java index 0e61dfe0..132ed855 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java @@ -145,9 +145,9 @@ public HashMap toHashMap() { return map; } - public abstract byte[] serialize(); + public abstract byte[] serializeData(); - public abstract void deserialize(ByteBuffer buffer); + public abstract void deserializeData(ByteBuffer buffer); public abstract int getTransactionType(); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/Transfer.java b/src/main/java/org/arkecosystem/crypto/transactions/types/Transfer.java index 18dbbf01..021766c3 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/Transfer.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/Transfer.java @@ -31,7 +31,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { ByteBuffer buffer = ByteBuffer.allocate(32); buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.putLong(this.amount); @@ -45,7 +45,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { buffer.order(ByteOrder.LITTLE_ENDIAN); this.amount = buffer.getLong(); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameRegistration.java b/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameRegistration.java index f4bbe80d..806e8b37 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameRegistration.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameRegistration.java @@ -27,7 +27,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { byte[] username = this.asset.username.getBytes(); ByteBuffer buffer = ByteBuffer.allocate(username.length + 1); @@ -41,7 +41,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { int usernameLength = buffer.get() & 0xff; byte[] username = new byte[usernameLength]; diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameResignation.java b/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameResignation.java index 8f1b70b2..e3a4223a 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameResignation.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/UsernameResignation.java @@ -22,10 +22,10 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { return new byte[0]; } @Override - public void deserialize(ByteBuffer buffer) {} + public void deserializeData(ByteBuffer buffer) {} } diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorRegistration.java b/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorRegistration.java index 8e085dfb..5b6f5e3a 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorRegistration.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorRegistration.java @@ -28,7 +28,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { ByteBuffer buffer = ByteBuffer.allocate(48); buffer.order(ByteOrder.LITTLE_ENDIAN); buffer.put(Hex.decode(this.asset.validatorPublicKey)); @@ -37,7 +37,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { byte[] validatorPublicKey = new byte[48]; buffer.get(validatorPublicKey); this.asset.validatorPublicKey = Hex.encode(validatorPublicKey); diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorResignation.java b/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorResignation.java index 5fda19c3..c2efdd0a 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorResignation.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/ValidatorResignation.java @@ -22,10 +22,10 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { return new byte[0]; } @Override - public void deserialize(ByteBuffer buffer) {} + public void deserializeData(ByteBuffer buffer) {} } diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/Vote.java b/src/main/java/org/arkecosystem/crypto/transactions/types/Vote.java index 3cc5c739..342d7e42 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/Vote.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/Vote.java @@ -29,7 +29,7 @@ public HashMap assetToHashMap() { } @Override - public byte[] serialize() { + public byte[] serializeData() { ByteBuffer buffer = ByteBuffer.allocate( (1 + this.asset.votes.size() * 33) + (1 + this.asset.unvotes.size() * 33)); @@ -49,7 +49,7 @@ public byte[] serialize() { } @Override - public void deserialize(ByteBuffer buffer) { + public void deserializeData(ByteBuffer buffer) { int voteLength = buffer.get(); for (int i = 0; i < voteLength; i++) { diff --git a/src/test/java/org/arkecosystem/crypto/transactions/deserializers/DeserializerTest.java b/src/test/java/org/arkecosystem/crypto/transactions/deserializers/DeserializerTest.java index 32a5509a..70327228 100644 --- a/src/test/java/org/arkecosystem/crypto/transactions/deserializers/DeserializerTest.java +++ b/src/test/java/org/arkecosystem/crypto/transactions/deserializers/DeserializerTest.java @@ -21,12 +21,12 @@ void checkNewTransactionType() { deserializer.setNewTransactionType( new Transaction() { @Override - public byte[] serialize() { + public byte[] serializeData() { return new byte[0]; } @Override - public void deserialize(ByteBuffer buffer) {} + public void deserializeData(ByteBuffer buffer) {} @Override public int getTransactionType() { @@ -58,12 +58,12 @@ void checkNewTransactionToCoreGroup() { deserializer.setNewTransactionType( new Transaction() { @Override - public byte[] serialize() { + public byte[] serializeData() { return new byte[0]; } @Override - public void deserialize(ByteBuffer buffer) {} + public void deserializeData(ByteBuffer buffer) {} @Override public int getTransactionType() { From 9d6709e67fc5d04ec5bacded3a3097fc198491fb Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Thu, 22 Aug 2024 09:44:34 -0600 Subject: [PATCH 2/3] refactor to use same method --- .../transactions/types/Transaction.java | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java b/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java index 132ed855..75ea36dc 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java @@ -41,14 +41,14 @@ public void computeId() { } public String getId() { - return Hex.encode(Sha256Hash.hash(Serializer.serialize(this))); + return Hex.encode(Sha256Hash.hash(this.serialize())); } public Transaction sign(String passphrase) { ECKey privateKey = PrivateKey.fromPassphrase(passphrase); this.senderPublicKey = privateKey.getPublicKeyAsHex(); - Sha256Hash hash = Sha256Hash.of(Serializer.serialize(this, true, true, false)); + Sha256Hash hash = Sha256Hash.of(this.serialize(true, true, false)); this.signature = Hex.encode(signer().sign(hash.getBytes(), privateKey)); @@ -58,7 +58,7 @@ public Transaction sign(String passphrase) { public Transaction secondSign(String passphrase) { ECKey privateKey = PrivateKey.fromPassphrase(passphrase); - Sha256Hash hash = Sha256Hash.of(Serializer.serialize(this, false, true, false)); + Sha256Hash hash = Sha256Hash.of(this.serialize(false, true)); this.secondSignature = Hex.encode(signer().sign(hash.getBytes(), privateKey)); @@ -89,7 +89,7 @@ public boolean verify() { ECKey keys = ECKey.fromPublicOnly(Hex.decode(this.senderPublicKey)); byte[] signature = Hex.decode(this.signature); - byte[] hash = Sha256Hash.hash(Serializer.serialize(this, true, true, false)); + byte[] hash = Sha256Hash.hash(this.serialize(true, true, false)); return verifier().verify(hash, keys, signature); } @@ -98,7 +98,7 @@ public boolean secondVerify(String secondPublicKey) { ECKey keys = ECKey.fromPublicOnly(Hex.decode(secondPublicKey)); byte[] signature = Hex.decode(this.secondSignature); - byte[] hash = Sha256Hash.hash(Serializer.serialize(this, false, true, false)); + byte[] hash = Sha256Hash.hash(this.serialize(false, true, false)); return verifier().verify(hash, keys, signature); } @@ -145,6 +145,24 @@ public HashMap toHashMap() { return map; } + public byte[] serialize( + boolean skipSignature, boolean skipSecondSignature, boolean skipMultiSignature) { + return Serializer.serialize(this, skipSignature, skipSecondSignature, skipMultiSignature); + } + + public byte[] serialize(boolean skipSignature, boolean skipSecondSignature) { + return serialize(skipSignature, skipSecondSignature, false); + } + + public byte[] serialize(boolean skipSignature) { + return serialize(skipSignature, false, false); + } + + // Overloaded method with no parameters, defaulting all to false + public byte[] serialize() { + return serialize(false, false, false); + } + public abstract byte[] serializeData(); public abstract void deserializeData(ByteBuffer buffer); From 98eb2c6ec1ad25131dca5c371dc20e9dc5dce9ef Mon Sep 17 00:00:00 2001 From: Alfonso Bribiesca Date: Thu, 22 Aug 2024 09:51:34 -0600 Subject: [PATCH 3/3] Update Transaction.java --- .../org/arkecosystem/crypto/transactions/types/Transaction.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java b/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java index 75ea36dc..6e114a11 100644 --- a/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java +++ b/src/main/java/org/arkecosystem/crypto/transactions/types/Transaction.java @@ -158,7 +158,6 @@ public byte[] serialize(boolean skipSignature) { return serialize(skipSignature, false, false); } - // Overloaded method with no parameters, defaulting all to false public byte[] serialize() { return serialize(false, false, false); }