gokwallet/password_funcs.go

60 lines
1.1 KiB
Go
Raw Normal View History

package gokwallet
/*
NewPassword returns a Password. It requires a RecurseOpts
(you can use DefaultRecurseOpts, call NewRecurseOpts, or provide your own RecurseOpts struct).
It also requires a Folder.
*/
func NewPassword(f *Folder, keyName string, recursion *RecurseOpts) (password *Password, err error) {
if !f.isInit {
err = ErrNotInitialized
return
}
password = &Password{
DbusObject: f.DbusObject,
Name: keyName,
// Value: "",
Recurse: recursion,
wm: f.wallet.wm,
wallet: f.wallet,
folder: f,
isInit: false,
}
if password.Recurse.AllWalletItems || password.Recurse.Passwords {
if err = password.Update(); err != nil {
return
}
}
password.isInit = true
return
}
// Update fetches a Password's Password.Value.
func (p *Password) Update() (err error) {
var b []byte
if err = p.Dbus.Call(
DbusWMReadPassword, 0, p.folder.wallet.handle, p.folder.Name, p.Name, p.folder.wallet.wm.AppID,
).Store(&b); err != nil {
return
}
p.Value = string(b)
return
}
// isWalletItem is needed for interface membership.
func (p *Password) isWalletItem() (isWalletItem bool) {
isWalletItem = true
return
}