2024-02-03 22:17:19 +01:00
|
|
|
//go:build windows || darwin
|
|
|
|
|
|
|
|
package pinentry
|
|
|
|
|
|
|
|
import (
|
|
|
|
"errors"
|
|
|
|
|
|
|
|
"github.com/keybase/client/go/logger"
|
|
|
|
"github.com/keybase/client/go/protocol/keybase1"
|
2024-05-04 01:06:24 +02:00
|
|
|
pinentry "github.com/quexten/goldwarden/cli/agent/systemauth/pinentry/keybase-pinentry"
|
2024-02-03 22:17:19 +01:00
|
|
|
)
|
|
|
|
|
2024-02-09 00:24:28 +01:00
|
|
|
func getPassword(title string, description string) (string, error) {
|
2024-02-03 22:17:19 +01:00
|
|
|
pinentryInstance := pinentry.New("", logger.New(""), "")
|
|
|
|
result, err := pinentryInstance.Get(keybase1.SecretEntryArg{
|
|
|
|
Prompt: title,
|
|
|
|
Desc: description,
|
|
|
|
})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return "", err
|
|
|
|
}
|
|
|
|
|
|
|
|
if result.Canceled {
|
|
|
|
return "", errors.New("Cancelled")
|
|
|
|
}
|
|
|
|
|
|
|
|
return result.Text, nil
|
|
|
|
}
|
|
|
|
|
2024-02-09 00:24:28 +01:00
|
|
|
func getApproval(title string, description string) (bool, error) {
|
2024-02-03 22:17:19 +01:00
|
|
|
pinentryInstance := pinentry.New("", logger.New(""), "")
|
|
|
|
result, err := pinentryInstance.Get(keybase1.SecretEntryArg{
|
|
|
|
Prompt: title,
|
|
|
|
Desc: description,
|
|
|
|
Cancel: "Decline",
|
|
|
|
Ok: "Approve",
|
|
|
|
ShowTyping: true,
|
|
|
|
})
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
return false, err
|
|
|
|
}
|
|
|
|
|
|
|
|
if result.Canceled {
|
|
|
|
return false, errors.New("Cancelled")
|
|
|
|
}
|
|
|
|
|
|
|
|
return true, nil
|
|
|
|
}
|