@@ -11,7 +11,8 @@ import {
11
11
SerializableTrezorKeyAgentData ,
12
12
SignBlobResult ,
13
13
TrezorConfig ,
14
- errors
14
+ errors ,
15
+ util
15
16
} from '@cardano-sdk/key-management' ;
16
17
import { txToTrezor } from './transformers/tx' ;
17
18
import TrezorConnectWeb from '@trezor/connect-web' ;
@@ -175,6 +176,13 @@ export class TrezorKeyAgent extends KeyAgentBase {
175
176
...trezorTxData ,
176
177
signingMode
177
178
} ) ;
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
+
178
186
if ( ! result . success ) {
179
187
throw new errors . TransportError ( 'Failed to export extended account public key' , result . payload ) ;
180
188
}
@@ -187,11 +195,13 @@ export class TrezorKeyAgent extends KeyAgentBase {
187
195
188
196
return new Map < Crypto . Ed25519PublicKeyHex , Crypto . Ed25519SignatureHex > (
189
197
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
+ } )
195
205
)
196
206
) ;
197
207
} catch ( error : any ) {
0 commit comments