Skip to content

Commit 608a3c1

Browse files
authored
Merge pull request #956 from input-output-hk/fix/lw-6522-fix-trezor-tx-signing
fix(hardware-trezor): trezor tx signing LW-6522
2 parents e8a2e87 + 0f6cff0 commit 608a3c1

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

packages/hardware-trezor/src/TrezorKeyAgent.ts

+16-6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import {
1111
SerializableTrezorKeyAgentData,
1212
SignBlobResult,
1313
TrezorConfig,
14-
errors
14+
errors,
15+
util
1516
} from '@cardano-sdk/key-management';
1617
import { txToTrezor } from './transformers/tx';
1718
import TrezorConnectWeb from '@trezor/connect-web';
@@ -175,6 +176,13 @@ export class TrezorKeyAgent extends KeyAgentBase {
175176
...trezorTxData,
176177
signingMode
177178
});
179+
180+
const expectedPublicKeys = await Promise.all(
181+
(
182+
await util.ownSignatureKeyPaths(tx.body, this.knownAddresses, this.inputResolver)
183+
).map((derivationPath) => this.derivePublicKey(derivationPath))
184+
);
185+
178186
if (!result.success) {
179187
throw new errors.TransportError('Failed to export extended account public key', result.payload);
180188
}
@@ -187,11 +195,13 @@ export class TrezorKeyAgent extends KeyAgentBase {
187195

188196
return new Map<Crypto.Ed25519PublicKeyHex, Crypto.Ed25519SignatureHex>(
189197
await Promise.all(
190-
signedData.witnesses.map(async (witness) => {
191-
const publicKey = Crypto.Ed25519PublicKeyHex(witness.pubKey);
192-
const signature = Crypto.Ed25519SignatureHex(witness.signature);
193-
return [publicKey, signature] as const;
194-
})
198+
signedData.witnesses
199+
.filter((witness) => expectedPublicKeys.includes(Crypto.Ed25519PublicKeyHex(witness.pubKey)))
200+
.map(async (witness) => {
201+
const publicKey = Crypto.Ed25519PublicKeyHex(witness.pubKey);
202+
const signature = Crypto.Ed25519SignatureHex(witness.signature);
203+
return [publicKey, signature] as const;
204+
})
195205
)
196206
);
197207
} catch (error: any) {

0 commit comments

Comments
 (0)