Files
mpc/scripts/test-kms.go
T
zeekay e32d6d0c56 neutral: drop 'Lux'/'Hanzo' brand prefixes in user-facing strings
MPC and KMS are protocols, not products. The Go module path
github.com/luxfi/mpc remains canonical (location), but user-facing
strings (--help, README, comments, banners) are brand-neutral.
'Lux MPC' → 'MPC', 'Lux KMS' → 'KMS', 'Hanzo MPC' → 'MPC'.
2025-12-28 15:34:18 -08:00

102 lines
2.9 KiB
Go

package main
import (
"fmt"
"log"
"os"
"github.com/spf13/viper"
"github.com/luxfi/mpc/pkg/kms"
)
func main() {
// Initialize viper config
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath("..")
viper.AutomaticEnv()
if err := viper.ReadInConfig(); err != nil {
log.Printf("Warning: Could not read config file: %v", err)
}
// Create KMS client
config := kms.KMSConfig{
ClientID: viper.GetString("kms.client_id"),
ClientSecret: viper.GetString("kms.client_secret"),
ProjectID: viper.GetString("kms.project_id"),
Environment: viper.GetString("kms.environment"),
SecretPath: viper.GetString("kms.secret_path"),
SiteURL: viper.GetString("kms.site_url"),
}
// Check environment variable fallback
if config.ProjectID == "" {
config.ProjectID = os.Getenv("KMS_PROJECT_ID")
}
fmt.Printf("KMS Configuration:\n")
fmt.Printf(" Site URL: %s\n", config.SiteURL)
fmt.Printf(" Project ID: %s\n", config.ProjectID)
fmt.Printf(" Environment: %s\n", config.Environment)
fmt.Printf(" Secret Path: %s\n", config.SecretPath)
fmt.Printf(" Has Universal Auth: %v\n", config.ClientID != "")
fmt.Printf(" Has Service Token: %v\n", os.Getenv("KMS_TOKEN") != "")
client, err := kms.NewKMSClient(config)
if err != nil {
log.Fatalf("Failed to create KMS client: %v", err)
}
fmt.Println("\n✅ Successfully connected to KMS!")
// Test storing a dummy key share
testNodeID := "test-node"
testWalletID := "test-wallet"
testKeyType := "ecdsa"
testKeyData := []byte(`{"test": "data", "key": "12345"}`)
fmt.Printf("\nTesting key storage...\n")
if err := client.StoreMPCKeyShare(testNodeID, testWalletID, testKeyType, testKeyData); err != nil {
log.Fatalf("Failed to store test key: %v", err)
}
fmt.Println("✅ Successfully stored test key!")
// Test retrieving the key
fmt.Printf("\nTesting key retrieval...\n")
retrievedData, err := client.RetrieveMPCKeyShare(testNodeID, testWalletID, testKeyType)
if err != nil {
log.Fatalf("Failed to retrieve test key: %v", err)
}
if string(retrievedData) == string(testKeyData) {
fmt.Println("✅ Successfully retrieved test key with correct data!")
} else {
fmt.Printf("⚠️ Retrieved data doesn't match: got %s, want %s\n", string(retrievedData), string(testKeyData))
}
// List all keys
fmt.Printf("\nListing all keys...\n")
keys, err := client.ListKeys()
if err != nil {
log.Fatalf("Failed to list keys: %v", err)
}
fmt.Printf("Found %d keys:\n", len(keys))
for _, key := range keys {
fmt.Printf(" - %s\n", key)
}
// Clean up test key
fmt.Printf("\nCleaning up test key...\n")
secretName := fmt.Sprintf("mpc_%s_%s_%s", testNodeID, testWalletID, testKeyType)
if err := client.DeleteKey(secretName); err != nil {
log.Printf("Warning: Failed to delete test key: %v", err)
} else {
fmt.Println("✅ Successfully cleaned up test key!")
}
fmt.Println("\n🎉 All tests passed! KMS integration is working correctly.")
}