All Projects โ†’ buttercup โ†’ Buttercup Core

buttercup / Buttercup Core

Licence: mit
๐ŸŽฉ The mighty NodeJS password vault

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Buttercup Core

keevault
Kee Vault is a password manager for your web browser. Password databases (Vaults) are encrypted using the KeePass storage format before being sent to a remote server for synchronisation across any modern device/browser
Stars: โœญ 57 (-83.24%)
Mutual labels:  password-manager, password, password-vault, passwords, password-store
gpgpwd
Moved to GitLab
Stars: โœญ 22 (-93.53%)
Mutual labels:  password-manager, password, password-vault, password-store
OormiPass
Free open source cross platform password manager
Stars: โœญ 50 (-85.29%)
Mutual labels:  encryption, password-manager, password, password-store
Buttercup Browser Extension
๐ŸŒ Buttercup browser extension
Stars: โœญ 164 (-51.76%)
Mutual labels:  hacktoberfest, password-manager, password-store, password-vault
Buttercup Desktop
Buttercup is a free, open-source and cross-platform password manager, built on NodeJS with Typescript. It uses strong industry-standard encryption to protect your passwords and credentials (among other data you store in Buttercup vaults) at rest, within vault files (.bcup). Vaults can be loaded from and saved to a number of sources, such as the local filesystem, Dropbox, Google Drive or any WebDAV-enabled service (like ownCloud or Nextcloud ยน).
Stars: โœญ 3,714 (+992.35%)
Mutual labels:  hacktoberfest, encryption, password-manager, password-vault
Masterpassword
Project moved to https://gitlab.com/spectre.app
Stars: โœญ 1,122 (+230%)
Mutual labels:  password-manager, passwords, password-store, password-vault
Buttercup Mobile
๐Ÿ“ฑ React-Native mobile application for Buttercup
Stars: โœญ 297 (-12.65%)
Mutual labels:  hacktoberfest, password-manager, password-store, password-vault
Rooster
The simple password manager for geeks, built with Rust.
Stars: โœญ 106 (-68.82%)
Mutual labels:  password, password-manager, password-store, password-vault
Passwordcockpit
Passwordcockpit is a simple, free, open source, self hosted, web based password manager for teams. It is made in PHP, Javascript, MySQL and it run on a docker service. It allows users with any kind of device to safely store, share and retrieve passwords, certificates, files and much more.
Stars: โœญ 34 (-90%)
Mutual labels:  password, password-manager, passwords, password-vault
Strongbox
A KeePass/Password Safe Client for iOS and OS X
Stars: โœญ 586 (+72.35%)
Mutual labels:  password, password-manager, password-store, password-vault
Swifty
๐Ÿ”‘ Free Offline Password Manager
Stars: โœญ 496 (+45.88%)
Mutual labels:  encryption, password, password-manager, credentials
Featherpasswordmanager
Highly portable extremely light-weight password manager that stores all your passwords in a local encrypted file.
Stars: โœญ 39 (-88.53%)
Mutual labels:  encryption, password, password-manager, passwords
Authpass
AuthPass - Password Manager based on Flutter for all platforms. Keepass 2.x (kdbx 3.x) compatible.
Stars: โœญ 591 (+73.82%)
Mutual labels:  hacktoberfest, password-manager, password-store
Passwd
A beautiful, cross-platform, encrypted password manager ๐Ÿ”
Stars: โœญ 82 (-75.88%)
Mutual labels:  hacktoberfest, password, password-manager
Pash
๐Ÿ”’ A simple password manager using GPG written in POSIX sh.
Stars: โœญ 254 (-25.29%)
Mutual labels:  password-manager, password-store, password-vault
Authorizer
Authorizer is a Password Manager for Android. It emulates an HID keyboard over USB and enters your credentials on your target device. Additionally it supports OTP ๐Ÿ”‘๐Ÿ“ด
Stars: โœญ 172 (-49.41%)
Mutual labels:  encryption, password-manager, password-store
Gitpass
Open Source Your Password (Mismanagement)!
Stars: โœญ 113 (-66.76%)
Mutual labels:  encryption, password, password-manager
Android Password Store
Android application compatible with ZX2C4's Pass command line application
Stars: โœญ 1,912 (+462.35%)
Mutual labels:  hacktoberfest, password-manager, password-store
Python Scripts
Collection of Various Python Script's.๐Ÿ’ป
Stars: โœญ 195 (-42.65%)
Mutual labels:  hacktoberfest, password, password-manager
Gokey
A simple vaultless password manager in Go
Stars: โœญ 305 (-10.29%)
Mutual labels:  password-manager, password-store, password-vault


Buttercup Core


Buttercup core library

A NodeJS secrets vault.

Buttercup npm npm version node min version security encryption

Build Status

NPM

About

Buttercup is a JavaScript password manager for NodeJS and the browser (though you can also see it used on platforms like React Native). It's based around the concept of a Vault and its secret Entry items (a login, credit card etc.). Entries are then separated into Group containers that make organising vaults a little easier.

Because Buttercup is designed first and foremost to be consumed by users in some application, VaultManager and VaultSource constructs are provided to allow for easy control over several vaults in a somewhat shared environment. A vault manager provides easy-to-use methods to perform dehydration and rehydration (storage in serialised form) of vaults to some secure storage (files, remote datasources etc.).

Buttercup can save and load vaults that are stored locally, in cloud service providers like Dropbox or Google Drive, or in our own My Buttercup hosted service. It does this by providing a Datasource construct for each provider.

Because Buttercup can be consumed in some interesting and varied environments, serialisation tools called facades are provided to allow for greater flexibility when working with vault data structures. Facades provide a way to move data around without classes, converting vaults to and from JSON objects. Facades are used when attaching vaults to user interfaces like with the Buttercup UI library.

Features

The core of the system, this Buttercup Core, boasts a few awesome features:

  • Merge-able vault contents
  • History for back-tracking to previous passwords etc.
  • File attachments (encrypted)
  • AES CBC encryption
  • GZip compression
  • NodeJS and Browser support

This library also supports a variety of datasources for loading from and saving to:

Check out the changelog.

Installation

To use Buttercup in a NodeJS environment, you can simply install and require it:

npm install buttercup --save

In a Node environment, for example:

const { Vault } = require("buttercup");

Or for Typescript:

import { Vault } from "buttercup";

In a web environment, use the following:

import { Vault } from "buttercup/web";

Buttercup core supports Node version 12 and up. Most features may work on Node 10, but it is not officially supported.

Usage

Buttercup uses Vaults, Groups and Entrys to manipulate data in a workspace-like environment. These 3 constructs have no knowledge of encryption or storage, and simply provide interfaces for working with the data structures.

To manage vaults, their storage and their states in a higher-level manner more appropriate for building applications, check out the VaultManager and VaultSource constructs.

To get started, we should create a new Vault:

import { Vault, init } from "buttercup";

// Initialise environment
init();

// Create an empty vault
const vault1 = new Vault();

// Create aa vault with "General" and "Trash" groups
const vault2 = Vault.createWithDefaults();

The init() function call is used to initialise the environment (performs the same function as @buttercup/app-env used to). It is required for Buttercup to work. It can be called more than once without effect.

Entries can't be added directly to a Vault, but can be to Groups. Creating Groups and Entries is trivial:

const vault = Vault.createWithDefaults();
const myGroup = vault.createGroup("My Group");
const myEntry = myGroup.createEntry("My Entry");

Every command on Vaults, Groups and Entries modifies the Vault instance, but does not save it to storage. There is no command or need to commit any data - each instance links back to the original Vault. Vaults are saved and loaded using Datasources:

import { Credentials, FileDatasource, Vault, init } from "buttercup";

init();

const datasourceCredentials = Credentials.fromDatasource({
    path: "./user.bcup"
}, "masterPassword!");
const fileDatasource = new FileDatasource(datasourceCredentials);
const vault = Vault.createWithDefaults();
vault
    .createGroup("Websites")
        .createEntry("My bank")
            .setProperty("username", "user-name")
            .setProperty("password", "s3cureP4$$");

const vaultCredentials = Credentials.fromPassword("masterPassword!");
await fileDatasource.save(vault.format.history, vaultCredentials);

Later:

const datasourceCredentials = Credentials.fromDatasource({
    path: "./user.bcup"
}, "masterPassword!");
const fileDatasource = new FileDatasource(datasourceCredentials);

fileDatasource
    .load(datasourceCredentials)
    .then(Vault.createFromHistory)
    .then(vault => {
        // ...
    });

Using just a datasource is not recommended as saving and loading is quite low-level and cumbersome. Check the browser extension or desktop application for examples of how to use the VaultManager and other helpful classes.

Vault Formats

Buttercup currently supports 2 concurrent vault formats, as it is in the process of transitioning from Format A (legacy) to Format B. You can switch the operational format by doing the following:

const { VaultFormatB, init, setDefaultFormat } = require("buttercup");

init();

setDefaultFormat(VaultFormatB);

Buttercup will automatically transition to using Format B as the default in some weeks or months (since v5 was released).

Compatibility

Buttercup's compatibility is defined as the following:

  • NodeJS version 12 and up
  • Current versions of the following browsers:
    • Google Chrome
    • Mozilla Firefox
    • Safari
  • React Native 0.60+

NB: React Native support is not guaranteed under all circumstances as the platform's stability for low-level operations like cryptography is questionable. Use the mobile app as a guideline for implementation.

Browser support is strictly dependent on:

  • Popularity
  • The availability of required crypto libaries such as SubtleCrypto
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].