package lib import ( "crypto/ed25519" "crypto/rand" "io" "io/ioutil" "os" "time" ) var PrivateKey ed25519.PrivateKey var PublicKey ed25519.PublicKey var filePrivateKey string = "/keys/privatekey.pem" var filePublicKey string = "/keys/publickey.pem" func InitLoginBiscuit() error { if _, err := os.Stat(filePrivateKey); os.IsNotExist(err) { rng := rand.Reader PublicKey, PrivateKey, _ = ed25519.GenerateKey(rng) if err := ioutil.WriteFile(filePrivateKey, PrivateKey, 0600); err != nil { return err } if err := ioutil.WriteFile(filePublicKey, PublicKey, 0600); err != nil { return err } } else { var err error PrivateKey, err = ioutil.ReadFile(filePrivateKey) if err != nil { return err } PublicKey, err = ioutil.ReadFile(filePublicKey) if err != nil { return err } } return nil } func InitGlobalBiscuit() error { for { time.Sleep(1 * time.Second) _, err := os.Stat(filePublicKey) if err == nil { break } } for { time.Sleep(1 * time.Second) _, err := os.Stat(filePrivateKey) if err == nil { break } } file, err := os.Open(filePrivateKey) if err != nil { return err } defer file.Close() PrivateKey, err = io.ReadAll(file) if err != nil { return err } file, err = os.Open(filePublicKey) if err != nil { return err } defer file.Close() PublicKey, err = io.ReadAll(file) if err != nil { return err } return nil }