Skip to content
This repository has been archived by the owner on Apr 18, 2022. It is now read-only.
/ gokeep Public archive

A simple and naive implementation of a CLI Password Manager written in Go.

License

Notifications You must be signed in to change notification settings

lafusew/gokeep

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gokeep

Gokeep is a simple implementation of a CLI password manager, written in Go.

Gokeep is going to archive

I started this projet to discover Go. Its been few months and I'm still using Go when I can, while learning it. I'm archiving this projet because I want to have something clean. I'll unarchive and rewrite this from scratch when I'll feel more confident with the understanding of the code that I write.

⚠️ Warning ⚠️

Currently the app isn't safe. pwds arent encrypted before storage. This is a naive implementation of the solution and my first application I write in Go (it's also the first application running outside a Javascript Engine). Use it for testing purpose only (this might change if I'm able to make a first release).

If you notice any security issue or bad pratices, please create an issue pointing me the correct/safer solution.

Behavior

gokeep init setup the local sqlite database and trigger the master key management.

The encryption key should be safely stored by the user. If you forget it, your credentials wont be recoverable as gokeep doesn't store your encryption key.

gokeep start starts the application. A prompt asking for your password will be dispayed and the app should continue to run after you provided it.

Once the app is started, we should be able to run command through promptui.

Credentials cmd list:

  • create
  • read
  • (list) readAll
  • update
  • delete

Application cmd list:

  • stop
  • key (Master Key management)
  • gui (tbd)

You can also use the app without letting it open. But you'll have to enter your masterkey for each command.

Todo

  • Be able to keep the app up and running ⚙️
  • Crypto 🔐
    • Encryption / Decryption 🔐
      • Encryption error only on update to be fixed
    • Key management 🔑
  • Add handy flags to all commands (flags tbd) ⛳️
  • Static web GUI served on a localhost server 💅
  • Refactoring 🏭
    • Refactor cmd and methods associated
    • Refactor Error handling
  • Generate random and safe pwd ⁉️

Security concern

I don't know anything about security 🤕, so please don't use this application with your real credentials until someone who know what he's doing read my code.

Currently the sqlite db isn't protected at all. I'm just AES encrypting right before SQL Insert and decrypting right after SQL Select.

As it will be local only, I really don't know the required security level and good pratices for this kind of local application, if you do please create an issue and tell me. 🙏

I know that nobody reads this readme but I do have fun writing/editing it.

About

A simple and naive implementation of a CLI Password Manager written in Go.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages