aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2017-04-26 11:53:23 +0200
committerDimitri Sokolyuk <demon@dim13.org>2017-04-26 11:53:23 +0200
commit65b0b02a4f8be3aad4ab73e730e5eee4cd590153 (patch)
tree5062fb8b6f50316c1968579052111a872778be3a
parent8f66dc007a12ebbdd31ecbdbf3f6f952c0c88586 (diff)
...
-rw-r--r--ask.go39
-rw-r--r--file.go16
2 files changed, 37 insertions, 18 deletions
diff --git a/ask.go b/ask.go
index ce0bf91..7051d34 100644
--- a/ask.go
+++ b/ask.go
@@ -12,21 +12,34 @@ var (
ErrNoMatch = errors.New("passwords don't match")
)
-func AskConfirmed() (string, error) { return askPassword(true) }
-func AskPassword() (string, error) { return askPassword(false) }
+func AskConfirmed() (string, error) {
+ pass, err := askPassword(os.Stdin, "passphrase: ", true)
+ if err != nil {
+ return "", err
+ }
+ pass2, err := askPassword(os.Stdin, "confirm passphrase: ", false)
+ if err != nil {
+ return "", err
+ }
+ if pass != pass2 {
+ return "", ErrNoMatch
+ }
+ return pass, nil
+}
-func askPassword(confirm bool) (string, error) {
- f := os.Stdin
+func AskPassword() (string, error) {
+ return askPassword(os.Stdin, "passphrase: ")
+}
- fd := f.Fd()
- oldState, err := terminal.MakeRaw(int(fd))
+func askPassword(f *os.File, q string) (string, error) {
+ oldState, err := terminal.MakeRaw(int(f.Fd()))
if err != nil {
return "", err
}
- defer terminal.Restore(int(fd), oldState)
+ defer terminal.Restore(int(f.Fd()), oldState)
term := terminal.NewTerminal(f, "")
- pass, err := term.ReadPassword("passphrase: ")
+ pass, err := term.ReadPassword(q)
if err != nil {
return "", err
}
@@ -34,15 +47,5 @@ func askPassword(confirm bool) (string, error) {
return "", ErrNoPassword
}
- if confirm {
- pass2, err := term.ReadPassword("confirm passphrase: ")
- if err != nil {
- return "", err
- }
- if pass != pass2 {
- return "", ErrNoMatch
- }
- }
-
return pass, nil
}
diff --git a/file.go b/file.go
index 5583263..93dbd6d 100644
--- a/file.go
+++ b/file.go
@@ -12,6 +12,22 @@ import (
"strings"
)
+type EncFile struct {
+ Comment string
+ Key *EncKey
+}
+
+type PubFile struct {
+ Comment string
+ Key *PubKey
+}
+
+type SigFile struct {
+ Comment string
+ Sig *Sig
+ Message string
+}
+
type File struct {
Comment string
RawKey []byte