users/lib/initBiscuit.go
GnomeZworc 1992280022
All checks were successful
Test Pipeline / lint (pull_request) Successful in 2m11s
Test Pipeline / ci-test (pull_request) Successful in 3m41s
1.3.0: code: fix close issue #1
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
2025-09-26 02:59:06 +02:00

139 lines
2.8 KiB
Go

package lib
import (
"crypto/ed25519"
"crypto/rand"
"fmt"
"io"
"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 file, err := os.Create(filePrivateKey); err != nil {
return err
} else {
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
if _, err = io.WriteString(file, string(PrivateKey)); err != nil {
return err
}
if err := file.Chmod(0600); err != nil {
return err
}
}
if file, err := os.Create(filePublicKey); err != nil {
return err
} else {
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
if _, err = io.WriteString(file, string(PublicKey)); err != nil {
return err
}
if err := file.Chmod(0600); err != nil {
return err
}
}
} else {
if file, err := os.Open(filePrivateKey); err != nil {
return err
} else {
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PrivateKey, err = io.ReadAll(file)
if err != nil {
return err
}
}
if file, err := os.Open(filePublicKey); err != nil {
return err
} else {
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PublicKey, err = io.ReadAll(file)
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
}
}
if file, err := os.Open(filePrivateKey); err != nil {
return err
} else {
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PrivateKey, err = io.ReadAll(file)
if err != nil {
return err
}
}
if file, err := os.Open(filePublicKey); err != nil {
return err
} else {
defer func() {
if cerr := file.Close(); cerr != nil {
// ici tu peux logger ou faire quelque chose
fmt.Printf("Erreur à la fermeture: %v\n", cerr)
}
}()
PublicKey, err = io.ReadAll(file)
if err != nil {
return err
}
}
return nil
}