package secrets import ( "fmt" "io" "os" "path" "strings" "filippo.io/age" ) func DecryptSecret(secret string) (string, error) { homepath, err := os.UserHomeDir() if err != nil { fmt.Println("could not get home dir") os.Exit(1) } sshFolder := path.Join(homepath, ".ssh") entries, err := os.ReadDir(sshFolder) var identities []*age.X25519Identity for _, file := range entries { if !strings.HasSuffix(".pub", file.Name()) { keybytes, err := os.ReadFile(path.Join(sshFolder, file.Name())) identity, err := age.ParseX25519Identity(strings.TrimSpace(string(keybytes))) if err != nil { continue } identities = append(identities, identity) } } if len(identities) == 0 { return "", fmt.Errorf("could not parse any identities") } for _, id := range identities { result, err := age.Decrypt(strings.NewReader(secret), id) if err != nil { continue } b, _ := io.ReadAll(result) return string(b), nil } return "", fmt.Errorf("could not find identity") }