fix(tss-party): include recovery ID in signature output for EVM transactions

The signature was 64 bytes (r + s) but EVM transactions need 65 bytes (r + s + v).
Now the recovery ID is appended to the signature so the frontend can correctly
parse and broadcast the transaction.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-31 12:37:53 -08:00
parent b5512d421c
commit d18733deb1
1 changed files with 7 additions and 1 deletions

View File

@ -484,9 +484,15 @@ func sendResult(publicKey, encryptedShare []byte, partyIndex int) {
}
func sendSignResult(signature []byte, recoveryID int, partyIndex int) {
// Append recovery ID to signature (r + s + v = 64 + 1 = 65 bytes)
// This is needed for EVM transaction signing
signatureWithV := make([]byte, len(signature)+1)
copy(signatureWithV, signature)
signatureWithV[len(signature)] = byte(recoveryID)
msg := Message{
Type: "result",
Payload: base64.StdEncoding.EncodeToString(signature),
Payload: base64.StdEncoding.EncodeToString(signatureWithV),
PartyIndex: partyIndex,
}
data, _ := json.Marshal(msg)