Skip to content

Commit b3c9f59

Browse files
author
Greg S
committed
#356: removed networkType/signSchema coupling for transaction hash generation
1 parent 38f0a20 commit b3c9f59

File tree

3 files changed

+7
-39
lines changed

3 files changed

+7
-39
lines changed

src/model/transaction/AggregateTransaction.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
*/
1616

1717
import { sha3_256 } from 'js-sha3';
18-
import {KeyPair, MerkleHashBuilder, SHA3Hasher} from '../../core/crypto';
18+
import {KeyPair, MerkleHashBuilder, SHA3Hasher, SignSchema} from '../../core/crypto';
1919
import {Convert, RawArray} from '../../core/format';
2020
import {AggregateBondedTransactionBuilder} from '../../infrastructure/catbuffer/AggregateBondedTransactionBuilder';
2121
import {AggregateCompleteTransactionBuilder} from '../../infrastructure/catbuffer/AggregateCompleteTransactionBuilder';
@@ -373,9 +373,9 @@ export class AggregateTransaction extends Transaction {
373373
* @returns {Uint8Array}
374374
*/
375375
private calculateInnerTransactionHash(networkType: NetworkType): Uint8Array {
376-
const signSchema = SHA3Hasher.resolveSignSchema(networkType);
377-
const hasher = SHA3Hasher.createHasher(32, signSchema);
378-
const builder = new MerkleHashBuilder(32, signSchema);
376+
// Note: Transaction hashing *always* uses SHA3
377+
const hasher = SHA3Hasher.createHasher(32, SignSchema.SHA3);
378+
const builder = new MerkleHashBuilder(32, SignSchema.SHA3);
379379
this.innerTransactions.forEach((transaction) => {
380380
const entityHash: Uint8Array = new Uint8Array(32);
381381

src/model/transaction/Transaction.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,9 @@ export abstract class Transaction {
169169
entityHashBytes.set(generationHash, generationHashIdx);
170170
entityHashBytes.set(transactionBody, transactionBodyIdx);
171171

172-
// 6) create SHA3 or Keccak hash depending on `signSchema`
173-
const signSchema: SignSchema = SHA3Hasher.resolveSignSchema(networkType);
174-
SHA3Hasher.func(entityHash, entityHashBytes, 32, signSchema);
172+
// 6) create SHA3 hash of transaction data
173+
// Note: Transaction hashing *always* uses SHA3
174+
SHA3Hasher.func(entityHash, entityHashBytes, 32, SignSchema.SHA3);
175175
return Convert.uint8ToHex(entityHash);
176176
}
177177

test/model/transaction/Transaction.spec.ts

Lines changed: 0 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -344,22 +344,6 @@ describe('Transaction', () => {
344344
expect(hash1).to.equal(hash2);
345345
});
346346

347-
it ('create different hash given different signature schemas', () => {
348-
const hash1 = Transaction.createTransactionHash(
349-
knownPayload,
350-
generationHashBytes,
351-
NetworkType.MIJIN_TEST, // SHA3
352-
);
353-
354-
const hash2 = Transaction.createTransactionHash(
355-
knownPayload,
356-
generationHashBytes,
357-
NetworkType.TEST_NET, // KECCAK
358-
);
359-
360-
expect(hash1).to.not.equal(hash2);
361-
});
362-
363347
it('create correct SHA3 transaction hash given network type MIJIN or MIJIN_TEST', () => {
364348
const hash1 = Transaction.createTransactionHash(
365349
knownPayload,
@@ -376,22 +360,6 @@ describe('Transaction', () => {
376360
expect(hash2).to.equal(knownHash_sha3);
377361
});
378362

379-
it('create correct KECCAK transaction hash given network type MAIN_NET or TEST_NET', () => {
380-
const hash1 = Transaction.createTransactionHash(
381-
knownPayload,
382-
generationHashBytes,
383-
NetworkType.TEST_NET,
384-
);
385-
const hash2 = Transaction.createTransactionHash(
386-
knownPayload,
387-
generationHashBytes,
388-
NetworkType.MAIN_NET,
389-
);
390-
391-
expect(hash1).to.equal(knownHash_keccak);
392-
expect(hash2).to.equal(knownHash_keccak);
393-
});
394-
395363
it('hash only merkle transaction hash for aggregate transactions', () => {
396364
const hash1 = Transaction.createTransactionHash(
397365
knownAggregatePayload,

0 commit comments

Comments
 (0)