Passwd-Keyring-PWSafe3
view release on metacpan or search on metacpan
format. Passwords are read and saved properly and it is possible to
alternate using them from perl, and via Password Safe GUI, but some
less important aspects of the format, like password expiraton policy,
may be ignored. Refer to Crypt::PWSafe3 docs for more details.
DATA MAPPING
Group name is mapped to Password Safe folder.
Realm is mapped as password title.
Username and password are ... well, used as username and password.
SUBROUTINES/METHODS
new(app=>'app name', group=>'passwords folder', file=>'pwsafe3 file',
master_password=>'secret or callback', lazy_save=>1)
Initializes the processing. Croaks if Crypt::PWSafe3 is not installed
or master password is invalid. May create password file if it is
missing.
Handled parameters:
app
Symbolic application name (used in password notes)
group
Name for the password group (used as folder name)
file
Location of .pwsafe3 file. If not given, passwd-keyring.pwsafe3 in
user home directory is used. Will be created if does not exist. Note:
absolute path is required, relative paths are very error prone.
master_password
Password required to unlock the file. Can be given as string, or as
callback returning a string (usually some way of interactively asking
user for the password). The callback gets two parameters: app and
file.
If this param is missing, module will prompt interactively for this
password using console prompt.
lazy_save
if given, asks not to save the file after every change (saving is
fairly time consuming), but only when $keyring->save is called or
when keyring is destroyed.
Note: it of course does not make much sense to keep app passwords in
encrypted storage if master password is saved in plain text. The module
most natural usage is to interactively ask for master password (and use
it to protect noticeable number of application-specific passwords).
Ideas of how to workaround this obstacle are welcome. I loosely
consider either caching master password per desktop session
(implementing sht. similar to ssh-agent/gpg-agent or using one of those
somehow), or integrating the tool with PAM to use actual system
password, or both - but while it seems doable on Linux, cross platform
solution is not so easy.
set_password(username, password, realm)
Sets (stores) password identified by given realm for given user
get_password($user_name, $realm)
Reads previously stored password for given user in given app. If such
password can not be found, returns undef.
clear_password($user_name, $realm)
Removes given password (if present)
save
Saves unsaved changes, if any are present.
Important only when lazy_save was given in constructor.
is_persistent
Returns info, whether this keyring actually saves passwords
persistently.
(true in this case)
AUTHOR
Marcin Kasperski
BUGS
Please report any bugs or feature requests to issue tracker at
https://bitbucket.org/Mekk/perl-keyring-pwsafe3.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Passwd::Keyring::PWSafe3
You can also look for information at:
http://search.cpan.org/~mekk/Passwd-Keyring-PWSafe3/
Source code is tracked at:
https://bitbucket.org/Mekk/perl-keyring-pwsafe3
LICENSE AND COPYRIGHT
Copyright 2012 Marcin Kasperski.
This program is free software; you can redistribute it and/or modify it
under the terms of either: the GNU General Public License as published
( run in 1.101 second using v1.01-cache-2.11-cpan-75ffa21a3d4 )