Files
2026-07-13 13:00:08 +08:00

51 lines
1.0 KiB
Go

//go:build (dragonfly && cgo) || (freebsd && cgo) || linux || netbsd || openbsd
package config
import (
"strings"
ss "github.com/zalando/go-keyring/secret_service"
)
func legacyKeyringCredentialValue(key string) (string, bool) {
key = strings.TrimSpace(key)
if key == "" {
return "", false
}
svc, err := ss.NewSecretService()
if err != nil {
return "", false
}
defer svc.Conn.Close()
collection := svc.GetLoginCollection()
search := map[string]string{
"username": key,
"service": credentialsKeyringService,
}
if err := svc.Unlock(collection.Path()); err != nil {
return "", false
}
results, err := svc.SearchItems(collection, search)
if err != nil || len(results) == 0 {
return "", false
}
session, err := svc.OpenSession()
if err != nil {
return "", false
}
defer svc.Close(session)
if err := svc.Unlock(results[0]); err != nil {
return "", false
}
secret, err := svc.GetSecret(results[0], session.Path())
if err != nil || secret == nil || len(secret.Value) == 0 {
return "", false
}
return string(secret.Value), true
}