Code Monkey home page Code Monkey logo

guarakapa's People

Contributors

towhidzei avatar yds12 avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

Forkers

towhidzei

guarakapa's Issues

Add command to check version of program used to generate the data file

A command like:

$ kapa check <filename>

Should display the version of the program used to generate the data file <filename>. The version is already contained in the first 3 bytes of the file. Must first check if the file contains the signature (4 "magic" bytes after the version number), if not, version is less than 0.8.6 (when this versioning was introduced).

Create error types

We are using anyhow to deal with errors. That is nice for the executable program, but to extract the main functionality in a library we need to have our own error types. Maybe use thiserror.

Command for merging data files

API:

kapa merge PATH

where PATH is the path of another guarakapa data file. The user is then prompted to input both passwords (the main one and the password of the other file), and, if there are conflicting entries (same name but different data), choose what to do (choose one of them or keep both and rename one).

Command to change master password

Currently, if one wants to change their master password, they would have to manually backup all the data.

We need a simple command that allows one to change their password (which will, inevitably, require the user to type the old password).

Clarity about dependencies

In some Linux distros, copying the password to the clipboard does not work even after installing openssl, libxcb-shape and libxcb-xfixes. We need to find out exactly what are the relevant libraries that need to be present (beyond X itself).

Add `edit` command

At the moment, if the user wants to change a record, they have to remove and add it again. That is annoying, an edit command would be very useful.

Add a reset command

Add a command to reset the data file. It should warn the user, and perhaps make a backup of the existing file.

Use traits instead of reading directly from file

We can use std::io::Read and std::io::Write instead of reading directly from files. This is a step towards making the core functionality of the program more reusable so that it can be extracted into a crate later.

Separate encoding/decoding from `fman`

The file manager module (fman) should be an abstraction for the manipulation of the main data file: entries and cryptographic material necessary to recover them (salt, pw hash, IV, etc.). It should be as generic as possible as a "cryptographic container".
The version signature used specifically by the executable is not general enough to be in this module, and should be moved somewhere else. The decoding and encoding also should be somewhere else, as they do not concern the encrypting and decrypting, but only a binary serialization of the data.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.