sonr/crypto/tecdsa/dklsv1/protocol.go
Prad Nukala 807b2e86ec
feature/1220 origin handle exists method (#1241)
* feat: add docs and CI workflow for publishing to onsonr.dev

* (refactor): Move hway,motr executables to their own repos

* feat: simplify devnet and testnet configurations

* refactor: update import path for didcrypto package

* docs(networks): Add README with project overview, architecture, and community links

* refactor: Move network configurations to deploy directory

* build: update golang version to 1.23

* refactor: move logger interface to appropriate package

* refactor: Move devnet configuration to networks/devnet

* chore: improve release process with date variable

* (chore): Move Crypto Library

* refactor: improve code structure and readability in DID module

* feat: integrate Trunk CI checks

* ci: optimize CI workflow by removing redundant build jobs

---------

Co-authored-by: Darp Alakun <i@prad.nu>
2025-01-06 17:06:10 +00:00

34 lines
1.0 KiB
Go
Executable File

// package dklsv1 provides a wrapper around the [DKLs18](https://eprint.iacr.org/2018/499.pdf) sign and dkg and provides
// serialization, serialization, and versioning for the serialized data.
package dklsv1
import (
"github.com/onsonr/sonr/crypto/core/protocol"
)
// Basic protocol interface implementation that calls the next step func in a pre-defined list
type protoStepper struct {
steps []func(input *protocol.Message) (*protocol.Message, error)
step int
}
// Next runs the next step in the protocol and reports errors or increments the step index
func (p *protoStepper) Next(input *protocol.Message) (*protocol.Message, error) {
if p.complete() {
return nil, protocol.ErrProtocolFinished
}
// Run the current protocol step and report any errors
output, err := p.steps[p.step](input)
if err != nil {
return nil, err
}
// Increment the step index and report success
p.step++
return output, nil
}
// Reports true if the step index exceeds the number of steps
func (p *protoStepper) complete() bool { return p.step >= len(p.steps) /**/ }