diff --git a/packages/protocol-kit/src/Safe.ts b/packages/protocol-kit/src/Safe.ts index b9482711f..80730ba23 100644 --- a/packages/protocol-kit/src/Safe.ts +++ b/packages/protocol-kit/src/Safe.ts @@ -1268,7 +1268,11 @@ class Safe { }) serviceTransactionResponse.confirmations?.map( (confirmation: SafeMultisigConfirmationResponse) => { - const signature = new EthSafeSignature(confirmation.owner, confirmation.signature) + const signature = new EthSafeSignature( + confirmation.owner, + confirmation.signature, + confirmation?.signatureType === "CONTRACT_SIGNATURE", + ) safeTransaction.addSignature(signature) } ) diff --git a/packages/protocol-kit/src/utils/signatures/SafeSignature.ts b/packages/protocol-kit/src/utils/signatures/SafeSignature.ts index 4ffab88da..025588e8f 100644 --- a/packages/protocol-kit/src/utils/signatures/SafeSignature.ts +++ b/packages/protocol-kit/src/utils/signatures/SafeSignature.ts @@ -38,8 +38,8 @@ export class EthSafeSignature implements SafeSignature { */ dynamicPart() { if (this.isContractSignature) { - const dynamicPartLength = (this.data.slice(2).length / 2).toString(16).padStart(64, '0') - return `${dynamicPartLength}${this.data.slice(2)}` + // NOTE: Assuming single EIP-191 signaures from constructor + return `${this.data.slice(-1 * (130 + 64))}` } return ''