From ee70b80e31929dc5dc38e9993559ebb7301d2dd8 Mon Sep 17 00:00:00 2001 From: Gregory Bednov Date: Wed, 23 Jul 2025 17:09:47 +0300 Subject: [PATCH] modified: yggdrasil/keys.go --- yggdrasil/keys.go | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/yggdrasil/keys.go b/yggdrasil/keys.go index c507d70..ded2b40 100644 --- a/yggdrasil/keys.go +++ b/yggdrasil/keys.go @@ -49,11 +49,26 @@ func GetYggdrasilAddress(config *viper.Viper) string { cfg := yggConfig.GenerateConfig() - cfg.AdminListen = ygg.GetString("admin_listen") - cfg.Listen = ygg.GetStringSlice("listen") - cfg.Peers = ygg.GetStringSlice("peers") - cfg.AllowedPublicKeys = ygg.GetStringSlice("allowed-public-keys") - cfg.PrivateKeyPath = ygg.GetString("private-key-file") + cfg.PrivateKeyPath = ygg.GetString("private_key_file") + keyFile, err := os.ReadFile(cfg.PrivateKeyPath) + if err != nil { + panic(err) + } + keyHex := strings.TrimSpace(string(keyFile)) + keyBytes, err := hex.DecodeString(keyHex) + if err != nil { + panic(fmt.Errorf("failed to decode private key hex: %w", err)) + } + if len(keyBytes) != ed25519.PrivateKeySize { + panic(fmt.Errorf("invalid private key length: got %d, expected %d", len(keyBytes), ed25519.PrivateKeySize)) + } + copy(cfg.PrivateKey[:], keyBytes) + + // Заполняем Certificate из PrivateKey + err = cfg.GenerateSelfSignedCertificate() + if err != nil { + panic(fmt.Errorf("failed to generate certificate from private key: %w", err)) + } logger := log.Default()