Files
mpc/pkg/event/keygen.go
zeekay 4641ad7c09 feat: BLS threshold + security hardening + ZapDB KMS-backing
Security (from red team review):
- Replay protection: request_id + timestamp freshness on sign API
- Ed25519 message auth re-enabled on all protocol messages
- DKG timeout (5min) + signing timeout (30s) with watchdog
- Dedup map TTL cleanup (10min expiry, 2min sweep)

BLS threshold signing:
- KeyTypeBLS + keygen/signing sessions
- TrustedDealer pattern for BLS DKG
- CBOR serialization for BLS config
- 8 tests

ZapDB KMS-backing:
- HSM PasswordProvider wired to ZapDB init
- Supports: AWS KMS, GCP KMS, Azure KV, env, file
- Default env for backward compat
- 19 tests

Also: sr25519 sessions, fixed SignWireMessage build break
2025-12-27 21:54:46 -08:00

43 lines
1.2 KiB
Go

package event
const (
KeygenBrokerStream = "mpc-keygen"
KeygenConsumerStream = "mpc-keygen-consumer"
KeygenRequestTopic = "mpc.keygen_request.*"
)
type KeygenResultEvent struct {
WalletID string `json:"wallet_id"`
ECDSAPubKey []byte `json:"ecdsa_pub_key"`
EDDSAPubKey []byte `json:"eddsa_pub_key"`
SR25519PubKey []byte `json:"sr25519_pub_key,omitempty"`
BLSPubKey []byte `json:"bls_pub_key,omitempty"`
ResultType ResultType `json:"result_type"`
ErrorReason string `json:"error_reason"`
ErrorCode string `json:"error_code"`
}
// CreateKeygenSuccess creates a successful keygen event
func CreateKeygenSuccess(walletID string, pubKeyHex string, metadata map[string]any) *KeygenResultEvent {
return &KeygenResultEvent{
WalletID: walletID,
ECDSAPubKey: []byte(pubKeyHex),
ResultType: ResultTypeSuccess,
}
}
// CreateKeygenFailure creates a failed keygen event
func CreateKeygenFailure(walletID string, metadata map[string]any) *KeygenResultEvent {
errorMsg := ""
if err, ok := metadata["error"].(string); ok {
errorMsg = err
}
return &KeygenResultEvent{
WalletID: walletID,
ResultType: ResultTypeError,
ErrorReason: errorMsg,
ErrorCode: string(ErrorCodeKeygenFailure),
}
}