@@ -13,6 +13,16 @@ import (
13
13
"github.com/miquella/vaulted/lib/legacy"
14
14
)
15
15
16
+ const (
17
+ PASSWORD_TYPE_PASSWORD = "password"
18
+ PASSWORD_TYPE_LEGACY_PASSWORD = "legacypassword"
19
+ PASSWORD_TYPE_MFATOKEN = "mfatoken"
20
+
21
+ PASSWORD_REASON_NEW = "new"
22
+ PASSWORD_REASON_NOMATCH = "nomatch"
23
+ PASSWORD_REASON_CONFIRM = "confirm"
24
+ )
25
+
16
26
func NewSteward () vaulted.Steward {
17
27
if askpass , present := os .LookupEnv ("VAULTED_ASKPASS" ); present {
18
28
return & AskPassSteward {
@@ -56,18 +66,21 @@ func (t *AskPassSteward) GetPassword(operation vaulted.Operation, name string) (
56
66
switch operation {
57
67
case vaulted .SealOperation :
58
68
for firstTry := false ; ; firstTry = true {
69
+ var passwordreason string
59
70
var prompt string
60
71
if firstTry {
72
+ passwordreason = PASSWORD_REASON_NEW
61
73
prompt = fmt .Sprintf ("'%s' new password: " , name )
62
74
} else {
75
+ passwordreason = PASSWORD_REASON_NOMATCH
63
76
prompt = fmt .Sprintf ("'%s' new password (passwords didn't match): " , name )
64
77
}
65
- password , err := t .askpass (prompt )
78
+ password , err := t .askpass (name , PASSWORD_TYPE_PASSWORD , passwordreason , prompt )
66
79
if err != nil {
67
80
return "" , err
68
81
}
69
82
70
- confirm , err := t .askpass (fmt .Sprintf ("'%s' confirm password: " , name ))
83
+ confirm , err := t .askpass (name , PASSWORD_TYPE_PASSWORD , PASSWORD_REASON_CONFIRM , fmt .Sprintf ("'%s' confirm password: " , name ))
71
84
if err != nil {
72
85
return "" , err
73
86
}
@@ -78,19 +91,24 @@ func (t *AskPassSteward) GetPassword(operation vaulted.Operation, name string) (
78
91
}
79
92
80
93
case legacy .LegacyOperation :
81
- return t .askpass ("Legacy Password: " )
94
+ return t .askpass (name , PASSWORD_TYPE_LEGACY_PASSWORD , "" , "Legacy Password: " )
82
95
83
96
default :
84
- return t .askpass (fmt .Sprintf ("'%s' password: " , name ))
97
+ return t .askpass (name , PASSWORD_TYPE_PASSWORD , "" , fmt .Sprintf ("'%s' password: " , name ))
85
98
}
86
99
}
87
100
88
101
func (t * AskPassSteward ) GetMFAToken (name string ) (string , error ) {
89
- return t .askpass (fmt .Sprintf ("'%s' MFA token: " , name ))
102
+ return t .askpass (name , PASSWORD_TYPE_MFATOKEN , "" , fmt .Sprintf ("'%s' MFA token: " , name ))
90
103
}
91
104
92
- func (t * AskPassSteward ) askpass (prompt string ) (string , error ) {
105
+ func (t * AskPassSteward ) askpass (name string , passwordtype string , reason string , prompt string ) (string , error ) {
93
106
cmd := exec .Command (t .Command , prompt )
107
+ cmd .Env = append (os .Environ (),
108
+ "VAULTED_ENV=" + name ,
109
+ "VAULTED_PASSWORD_TYPE=" + passwordtype ,
110
+ "VAULTED_PASSWORD_REASON=" + reason ,
111
+ )
94
112
output , err := cmd .Output ()
95
113
if err != nil {
96
114
return "" , ErrNoPasswordEntered
0 commit comments