package lib import ( "crypto/ed25519" "crypto/rand" "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 = nil 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 } } var err error = nil PrivateKey, err = ioutil.ReadFile(filePrivateKey) if err != nil { return err } PublicKey, err = ioutil.ReadFile(filePublicKey) if err != nil { return err } return nil }