1package config
2
3import (
4 "os"
5 "path/filepath"
6)
7
8// signatureFile returns the full path to the signature file.
9func signatureFile() (string, error) {
10 dir, err := configDir()
11 if err != nil {
12 return "", err
13 }
14 return filepath.Join(dir, "signature.txt"), nil
15}
16
17// LoadSignature loads the signature from the signature file.
18func LoadSignature() (string, error) {
19 path, err := signatureFile()
20 if err != nil {
21 return "", err
22 }
23 data, err := SecureReadFile(path)
24 if err != nil {
25 if os.IsNotExist(err) {
26 return "", nil
27 }
28 return "", err
29 }
30 return string(data), nil
31}
32
33// SaveSignature saves the signature to the signature file.
34func SaveSignature(signature string) error {
35 path, err := signatureFile()
36 if err != nil {
37 return err
38 }
39 if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil {
40 return err
41 }
42 return SecureWriteFile(path, []byte(signature), 0600)
43}
44
45// HasSignature checks if a signature file exists and is non-empty.
46func HasSignature() bool {
47 sig, err := LoadSignature()
48 if err != nil {
49 return false
50 }
51 return sig != ""
52}