mirror of
https://github.com/sonr-io/sonr.git
synced 2026-08-03 01:41:44 +00:00
* feat(did): remove account types * feat: Refactor Property to Proof in zkprop.go * feat: add ZKP proof mechanism for verifications * fix: return bool and error from pinInitialVault * feat: implement KeyshareSet for managing user and validator keyshares * feat: Update Credential type in protobuf * feat: update credential schema with sign count * feat: migrate and modules to middleware * refactor: rename vault module to ORM * chore(dwn): add service worker registration to index template * feat: integrate service worker for offline functionality * refactor(did): use DIDNamespace enum for verification method in proto reflection * refactor: update protobuf definitions to support Keyshare * feat: expose did keeper in app keepers * Add Motr Web App * refactor: rename motr/handlers/discovery.go to motr/handlers/openid.go * refactor: move session related code to middleware * feat: add database operations for managing assets, chains, and credentials * feat: add htmx support for UI updates * refactor: extract common helper scripts * chore: remove unused storage GUI components * refactor: Move frontend rendering to dedicated handlers * refactor: rename to * refactor: move alert implementation to templ * feat: add alert component with icon, title, and message * feat: add new RequestHeaders struct to store request headers * Feature/create home view (#9) * refactor: move view logic to new htmx handler * refactor: remove unnecessary dependencies * refactor: remove unused dependencies * feat(devbox): integrate air for local development * feat: implement openid connect discovery document * refactor: rename to * refactor(did): update service handling to support DNS discovery * feat: add support for user and validator keyshares * refactor: move keyshare signing logic to signer
60 lines
1.1 KiB
Go
60 lines
1.1 KiB
Go
package builder
|
|
|
|
import (
|
|
"github.com/onsonr/crypto"
|
|
"github.com/onsonr/sonr/x/did/types"
|
|
)
|
|
|
|
type Signer interface {
|
|
Sign(msg []byte) ([]byte, error)
|
|
Verify(msg []byte, sig []byte) error
|
|
PublicKey() []byte
|
|
}
|
|
|
|
type signer struct {
|
|
user *types.Keyshare
|
|
val *types.Keyshare
|
|
}
|
|
|
|
func (k signer) Sign(msg []byte) ([]byte, error) {
|
|
valSignFunc, err := crypto.GetSignFunc(k.val, msg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
usrSignFunc, err := crypto.GetSignFunc(k.user, msg)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
sig, err := crypto.RunMPCSign(valSignFunc, usrSignFunc)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return crypto.SerializeMPCSignature(sig)
|
|
}
|
|
|
|
func (k signer) Verify(msg []byte, sig []byte) error {
|
|
sigMpc, err := crypto.DeserializeMPCSignature(sig)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
pk, err := crypto.GetECDSAPublicKey(k.val)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
ok := crypto.VerifyMPCSignature(sigMpc, msg, pk)
|
|
if !ok {
|
|
return types.ErrInvalidSignature
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (k signer) PublicKey() []byte {
|
|
if k.user != nil {
|
|
return k.user.PublicKey
|
|
}
|
|
if k.val != nil {
|
|
return k.val.PublicKey
|
|
}
|
|
return nil
|
|
}
|