57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package entities
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
// PartyKeyShare represents the server's key share
|
|
type PartyKeyShare struct {
|
|
ID uuid.UUID
|
|
PartyID string
|
|
PartyIndex int
|
|
SessionID uuid.UUID // Keygen session ID
|
|
ThresholdN int
|
|
ThresholdT int
|
|
ShareData []byte // Encrypted tss-lib LocalPartySaveData
|
|
PublicKey []byte // Group public key
|
|
CreatedAt time.Time
|
|
LastUsedAt *time.Time
|
|
}
|
|
|
|
// NewPartyKeyShare creates a new party key share
|
|
func NewPartyKeyShare(
|
|
partyID string,
|
|
partyIndex int,
|
|
sessionID uuid.UUID,
|
|
thresholdN, thresholdT int,
|
|
shareData, publicKey []byte,
|
|
) *PartyKeyShare {
|
|
return &PartyKeyShare{
|
|
ID: uuid.New(),
|
|
PartyID: partyID,
|
|
PartyIndex: partyIndex,
|
|
SessionID: sessionID,
|
|
ThresholdN: thresholdN,
|
|
ThresholdT: thresholdT,
|
|
ShareData: shareData,
|
|
PublicKey: publicKey,
|
|
CreatedAt: time.Now().UTC(),
|
|
}
|
|
}
|
|
|
|
// MarkUsed updates the last used timestamp
|
|
func (k *PartyKeyShare) MarkUsed() {
|
|
now := time.Now().UTC()
|
|
k.LastUsedAt = &now
|
|
}
|
|
|
|
// IsValid checks if the key share is valid
|
|
func (k *PartyKeyShare) IsValid() bool {
|
|
return k.ID != uuid.Nil &&
|
|
k.PartyID != "" &&
|
|
len(k.ShareData) > 0 &&
|
|
len(k.PublicKey) > 0
|
|
}
|