Skip to content

Conversation

@ssantos21
Copy link
Contributor

This PR implements the blind signature feature, both on the server (server_lib::protocol::ecdsa::StateChainEntity fn sign_second_blinded) and on the client (client_lib::ecdsa::sign pub fn blinded_sign).

The client generates a blinding factor and blinds the partial signature via homomorphic scalar multiplication and then sends it to the server (SE).
The server signs without knowing the content of the transaction and the r part of the signature is also not sent to the server.

The client then unblinds the signature returned by server to get the final signature.
It also verifies the signature (r,s) against the message (transaction) and the shared public key.

This is a work in progress so there will be changes, but the code is ready for review.

@ssantos21 ssantos21 changed the title Implement blinded 2P ecdsa Implement Blinded Two-Party ECDSA May 4, 2023
ssantos21 added 27 commits June 10, 2023 20:31
The `swap/second` returns a SCEAddress with null `tx_backup_addr` and
`transfer_sender` function uses this to replace the previous owner.
If the `tx_backup_addr` is null, the previous owner persists and then
the error `Backup Tx Receiving Address not found in this wallet` occurs
in the swap process.
Using `proof_key` to set the new owner in the backup transaction fix this.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants