diff --git a/README.md b/README.md new file mode 100644 index 0000000..1ec0846 --- /dev/null +++ b/README.md @@ -0,0 +1,69 @@ +# selfpass + +This is the project home of *selfpass*, the self-hosted password manager. This project is +a single-user password manager capable of encrypting/decrypting credentials and storing them +remotely through encrypted transportation. All of which is deployable locally or to popular cloud +platforms such as GCP and AWS. + +It is still currently in development. However, the server is already capable of serving a gRPC +based API using mutual TLS encryption, backed by Redis and Docker. It is also capable of being +deployed in a semi-automated fashion locally and to GCP thanks to Docker. + +**Server Roadmap** + +| Goal | Progress | Comment | +| --- | :---: | --- | +| Support credentials CRUD on gRPC API. | 100% | | +| Enable server-side mutual TLS, using cfssl. | 100% | | +| Deployable on Docker. | 100% | | +| Automatically deployable to GCP using docker-machine and Terraform. | 50% | TODO: Terraform | +| Automatically deployable to AWS using docker-machine and Terraform. | 0% | | + +## sp CLI + +In addition to the server there is `sp`, which is a fully fledged *selfpass* client capable of +interacting with the whole selfpass API and creating AES-CBC encrypted credentials using a *private +key* and *master password*. All of which is done using mutual TLS and an AES-GCM encrypted config. + +**CLI Roadmap** + +| Goal | Progress | Comment | +| --- | :---: | --- | +| Support mutual TLS. | 100% | | +| Support credentials CRUD via gRPC. | 100% | | +| Support storage of certs, PK, and host in AES-GCM encrypted config. | 100% | | +| Support AES-CBC encryption of passes and OTP secrets, using MP and PK. | 100% | | +| Support AES-GCM encryption of local files, using MP and PK. | 100% | | + +## Client + +The newest addition to the *selfpass* project is the client built using Flutter, which makes it +capable of targeting to iOS, Android, and Desktop. It supports all the same features as the CLI tool +using GUIs, with all the same safety and encryption as the CLI. + +| Goal | Progress | Comment | +| --- | :---: | --- | +| Support mutual TLS. | 100% | | +| Support credentials CRUD via gRPC. | 25% | TODO: CUD | +| Support storage of certs, PK, and host in shared preferences, encrypted. | 100% | | +| Support AES-CBC encryption of passes and OTP secrets, using MP and PK. | 50% | TODO: decryption | + +## Other Info + +**Unplanned Goals** + +- Sensitive financial info support. +- Miscellaneous text/file encryption and storage support. +- Vault separation. + +**Architectural 3rd-party Technologies in Use (and where)** + +- Golang (services & protobuf) +- Dart (client & protobuf) +- Flutter (client) +- Go-Kit (services) +- gRPC & Protobuf (all) +- Cobra Commander & Viper Config (spc) +- Redis (services) +- Docker (services) +- Debian (docker images and machines) diff --git a/client/README.md b/client/README.md index 06bcb2c..a3e2799 100644 --- a/client/README.md +++ b/client/README.md @@ -1,3 +1,5 @@ # selfpass_client This is the multi-platform native Selfpass client built with the Flutter framework. + +Still under early development. \ No newline at end of file diff --git a/services/README.md b/services/README.md index 83ae723..2c01d8d 100644 --- a/services/README.md +++ b/services/README.md @@ -1,52 +1,5 @@ -# selfpass +# services -This is the project home of *selfpass*, the self-hosted password manager. This project is intended -to be a single-user (or **trusted** multi-user) password manager capable of encrypting/decrypting -credentials and storing them remotely through encrypted transportation, all of which is deployable -locally or to popular cloud platforms such as GCP and AWS. +This is project home of *selfpass* API services and the server entrypoint. -It is still currently in development. However, the service is already capable of serving a gRPC based -API using mutual TLS encryption, backed by Redis and Docker. It is also capable of being deployed in -a semi-automated fashion locally and to GCP thanks to Docker. - -In addition to the service there is `spc` (**s**elf**p**ass **C**LI), which is a fully fledged *selfpass* client -capable of interacting with the whole selfpass API and creating AES-GCM encrypted credentials using -a *private key* and *master password*. All of which is done using mutual TLS and an AES-GCM -encrypted config. - -#### Service Roadmap - -| Goal | Progress | Comment | -| --- | :---: | --- | -| Support credentials CRUD on gRPC API. | 100% | | -| Enable server-side mutual TLS, using cfssl. | 100% | | -| Deployable on Docker. | 100% | | -| Automatically deployable to GCP using docker-machine and Terraform. | 50% | TODO: Terraform | -| Automatically deployable to AWS using docker-machine and Terraform. | 0% | | - -#### SPC Roadmap - -| Goal | Progress | Comment | -| --- | :---: | --- | -| Support credentials CRUD via gRPC. | 100% | | -| Support mutual TLS. | 100% | | -| Support storage of certs, PK, and host in AES-CBC encrypted config. | 100% | | -| Support AES-GCM encryption of passes and OTP secrets, using MP and PK. | 100% | | -| Support AES-GCM encryption of local files, using MP and PK. | 100% | | - - -#### Unplanned Goals - -- Web client. -- Sensitive financial info support. -- Miscellaneous text/file encryption and storage support. -- Vault separation. - -#### 3rd-party Technologies in Use (and where): -- Golang (all) -- Go-Kit (all) -- gRPC (all) -- Cobra Commander & Viper Config (spc) -- Redis (service) -- Docker (service) -- Debian (docker images and machines) +For more project level information see the root `README.md`. \ No newline at end of file diff --git a/sp/README.md b/sp/README.md new file mode 100644 index 0000000..7d71cc5 --- /dev/null +++ b/sp/README.md @@ -0,0 +1,35 @@ +# sp + +This is the project home of `sp` the *selfpass* CLI. + +To install with Go run `go get -u github.com/mitchell/selfpass/sp`. + +Help menu: +``` +This is the CLI client for Selfpass, the self-hosted password manager. With this tool you +can interact with the entire Selfpass API. + +Usage: + sp [command] + +Available Commands: + create Create a credential in Selfpass + decrypt Decrypt a file using your masterpass and secret key + decrypt-cfg Decrypt your config file + delete Delete a credential using the given ID + encrypt Encrypt a file using your masterpass and secret key + get Get a credential info and copy password to clipboard + help Help about any command + init This command initializes SPC for the first time + list List the metadata for all credentials + update Update a credential in Selfpass + +Flags: + --config string config file (default is $HOME/.sp.toml) + -h, --help help for sp + --version version for sp + +Use "sp [command] --help" for more information about a command. +``` + +For more project-level information see the root `README.md`. \ No newline at end of file