Securely save user credentials #8
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rationale
The current implementation of lazycodr's saved credentials has API keys and PATs stored as plaintext in json files. This PR aims to securely store these credentials using a password+random-salt based encryption strategy.
What's Changed
lazycodr config credentials
command to include a prompt for passwordslazycodr config
update-password
: To update the user's passwords.delete-credentials
: To delete all existing credentials. Note that this still requires a password. (Actually this could effectively be accomplished by a simplerm <credentials_file>
, if one knows what thecredentials_file
is)What has not changed
@use_credentials
decorator expect adict
instance and access credentials using the[]
syntax. TheCredentialManager
implements the corresponding__getitem__
method, so the existing implementation is still syntactically compatible.Security
CredentialManager
makes every effort to never store raw passwords or credentials. It actually intentionally loses its references to raw passwords and credentials and operates on hashes and encrypted credentials.Known limitations