feat(encryption): Implement e2e encryption using encryptedStorage composable #363
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.
π Linked issue
#24
β Type of change
π Description
Implements a new composable function
encryptedStorage
similar toprefixStorage
that wraps a unstorage instance and offers encryption for values and optionally for keys as well.encryptedStorage
that can also be used in combination with others likeprefixStorage
. Usage isencryptedStorage(createStorage({ driver }), encryptionKey, true)
where the last parameter (set totrue
) defines if keys should also be encrypted@noble/ciphers
for encryption, as it is 0 deps and works in Node, Bun, Deno and Workers (tested on CF). It supports AES-GCM-SIV (not implemented in Web/Node Crypto) which is nonce misuse resistant, what we need for deterministic key encryption with the same IV/nonce for keys.getRandomValues
fromuncrypto
. The content is wrapped into aStorageValueEnvelope
:fs
,memory
,redis
, 'lrs' andazure-blob-storage
for content as well as key encryption and in combination withprefixStorage
:fs
driver, an update to thetestDriver
utility to optionally test for content and key encryption as well es tests for the storage server and the combination withprefixStorage
π Checklist