Add support for optional encryption of RSA key at rest #13
+98
−13
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This adds support for the encryption of private RSA keys stored in the database. It's written in such a way that it's backward compatible, and should not change anything for existing installations.
To enable encryption of RSA keys, you must create functions for encryption & decryption, and define the following hooks in
settings.py
:The
RSAKey
model provides a new field calledencrypted
. Whenencrypted
isTrue
and the model is saved, the value ofkey
will be encrypted when saved. The.pem
attribute should be used to retrieve the key PEM, regardless of whether or not it is encrypted. If the RSAKey instance is encrypted,.pem
will return the raw value from the database.Once this is enabled,
RSAKey
instances withencrypt=True
will be encrypted & decrypted using the given encryption hook.This is split into two versions so that dependent services can deploy the migration separately from the code changes:
0.8.4+orm.migration
: migration only0.8.4+orm
: code changes w/ optional encryption