I must say this whole thing looks very complicated
The most important piece of code - {keygen/signing}/rounds.rs (1, 2) that describe the protocol round by round - should be pretty clear. These StateMachine implementations are just a glue that calls rounds in appropriate order. I find them complicated too, and eventually I want to replace with procedural macro as all SM impls are very similar. However, SM trait is not established yet to automate its implementation.
Thanks for review, @elichai!
The most important piece of code - {keygen/signing}/rounds.rs (1, 2) that describe the protocol round by round - should be pretty clear. These StateMachine implementations are just a glue that calls rounds in appropriate order. I find them complicated too, and eventually I want to replace with procedural macro as all SM impls are very similar. However, SM trait is not established yet to automate its implementation.