Lockdown
NOTE: Lockdown has been archived - we have changed basic assumptions/patterns around handling credentials. If you wish to see this project continued, please contact us at [email protected]
When you simply can't avoid storing basic credentials
Usually, when storing credentials, one-way encryption is used to protect sensitive information. However, some systems require access to a set of clear-text credentials for authentication.
Lockdown is intended for those cases - where the need for clear-text credentials cannot be eliminated from an application. It applies a thin convenience layer on top of the established bouncycastle encryption libraries which allows simpler use the RSA public/private key encryption pattern.
Contributing
Information for how to contribute to Lockdown can be found in the contribution guidelines
Legal
Lockdown is distributed under the MIT License. There are no requirements for using it in your own project (a line in a NOTICES file is appreciated but not necessary for use)
The requirement for a copy of the license being included in distributions is fulfilled by a copy of the LICENSE file being included in constructed JAR archives
Reporting Vulnerabilities
If you discover a security vulnerability, contact the development team by e-mail at [email protected]
Migrating Between Major Versions
Details for migrating across major versions of Lockdown may be found in MIGRATION.md
Projects
lockdown-core
Lockdown Core is where the central key generation and encryption/decryption APIs are defined. This library is intended for use within applications consuming lockdown, and allows access to credential storage files.
Usage information can be found in lockdown-core's README
lockdown-cli
Lockdown CLI is a command line tool for creating keys and adding credentials to credential store files.
Usage information can be found in lockdown-cli's README
lockdown-gradle-plugin
The Lockdown Gradle plug-in is intended for use in Gradle builds, to allow teams to easily expose the ability to add/update credentials in credential storage files without requiring all team members to install the Lockdown CLI.
Usage information can be found in lockdown-gradle-plugin's README
Generating Keys
Lockdown includes a key generator, which is mostly easily used via lockdown-cli. All generated keys are of PEM format (PKCS#1), which is currently the only format accepted by the library.
See more information on PEM keys/formats
Handling Key Files
Using public/private keys, there are two main things to keep in mind. Public keys are meant for encrypting data - they can be shared without significant risk to allow anyone to encrypt data the holder of the private key can understand. The private key is the "secret" in this pattern, and should be protected the same way a password would be
Collaborators
Information for collaborators, including the release process, can be found in the collaborator documention