Skip to content

badlocale/SnailPass-Desktop-Client

Repository files navigation

SnailPass

SnailPass is a simple client-server password manager, that I'm writing with my colleagues to make for ourselves a convenient, custom environment for storing passwords. Now is proposed to make the applications for two platforms. The client for each of the platforms is located in different repositories:

  • Windows (you are here now)
  • Android

The application also has a server part, where user data will be stored.

How it works

The main idea of the application is storing user's passwords and other information in encrypted form. Encryption is carried out using a symmetric algorithm with a hashed master password as a key. At the same time a key is not stored anywhere and is never transmitted via the network, the user just has to remember it. For this reason, the data can be decrypted only locally and the server stores only the cipher.

Cryptographic algorithms

  • AES-CBC as a symmetric-key algorithm.
  • Pbkdf2 as a key derivation function.
  • SHA-512 as a hash function.

Libraries and frameworks

Application written using WPF framework (MVVM) and several external libraries:

  • Autofac as DI container.
  • Newtonsoft.JSON for simplifying JSON boilerplate.
  • Serilog for logging.
  • Microsoft.Data.Sqlite for manage data.

I intentionally used common SQL queries instead of EF as an experiment this time. :)

Screenshots

Login interface

ScrLogin

Main window interface

ScrGen ScrNotes