Skip to content

Commit

Permalink
api/transactions: Canonicalize transactions before signing
Browse files Browse the repository at this point in the history
  • Loading branch information
Norbert Dzikowski committed Sep 7, 2023
1 parent bb8536b commit fba888d
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/api/transactions/transaction.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import {
} from "#erdstall/export/typedjson";
import { utils } from "ethers";
import { Backend, Signer } from "#erdstall/ledger/backend";
import canonicalize from "canonicalize";

const transactionImpls = new Map<string, Serializable<Transaction>>();
const transactionTypeName = "Transaction";
Expand All @@ -38,7 +39,12 @@ export abstract class Transaction extends ErdstallObject {
}

async sign(signer: Signer<Backend>): Promise<this> {
this.sig = await signer.signMessage(this.packTagged().keccak256());
const msg = canonicalize(Transaction.toJSON(this));
if (msg === undefined) {
throw new Error("failed to canonicalize transaction");
} else {
this.sig = await signer.signMessage(utils.arrayify(msg));
}
return this;
}

Expand Down

0 comments on commit fba888d

Please sign in to comment.