Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion packages/wallet/src/cip30.ts
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,10 @@ const baseCip30WalletApi = (
);
}

const cbor = Serialization.TransactionWitnessSet.fromCore({ signatures }).toCbor();
const ownSignatures = new Map(
[...signatures.entries()].filter(([pubKey]) => !coreTx.witness.signatures.has(pubKey))
);
const cbor = Serialization.TransactionWitnessSet.fromCore({ signatures: ownSignatures }).toCbor();
return Promise.resolve(cbor);
} catch (error) {
if (error instanceof TxSignError) {
Expand Down
16 changes: 13 additions & 3 deletions packages/wallet/test/integration/cip30mapping.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -512,9 +512,19 @@ describe('cip30', () => {
hexTx = Serialization.Transaction.fromCore(finalizedTx).toCbor();
});

it('resolves with TransactionWitnessSet', async () => {
const cip30witnessSet = await api.signTx(context, hexTx);
expect(() => Serialization.TransactionWitnessSet.fromCbor(HexBlob(cip30witnessSet))).not.toThrow();
it('resolves own signatures with TransactionWitnessSet', async () => {
const cip30witnessSetCbor = await api.signTx(context, hexTx);
const cip30witnessSet = Serialization.TransactionWitnessSet.fromCbor(HexBlob(cip30witnessSetCbor));
const resolvedSignedByKeys = cip30witnessSet
.vkeys()!
.toCore()
.map(([pubKey]) => pubKey);
const preExistingSignatures = finalizedTx.witness.signatures.entries();

expect(resolvedSignedByKeys.length).toBeGreaterThan(0);
for (const [preExistingKey] of preExistingSignatures) {
expect(resolvedSignedByKeys).not.toContain(preExistingKey);
}
});

it('passes through sender from dapp connector context', async () => {
Expand Down
Loading