A simple wrapper over localStorage/sessionStorage using CryptoSubtle
The code is based on MDN https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto
How to use
import myCrypto from '@plamikcho/pbCrypto';
const encryptedStorage = getEncryptedStorage(localStorage, 'mysupersecret', 'salt');
encryptedStorage.setItem('test', 'Some text to store encrypted')
.then(() => encryptedStorage.getItem('test'))
.then(item => console.log(item));
.catch(error => console.log(error));
If you don't need the storage, here is it:
const cryptoWrapper = getPbCrypto('secret', 'pepper');
const iv = cryptoWrapper.getIv();
cryptoWrapper.encrypt('ДобАр ден,аз съм вашта леля!', iv)
.then(encrypted => cryptoWrapper.decrypt(encrypted, iv))
.then((decrypted) => console.log(decrypted));
Supported browsers at the moment: Firefox and Chrome. MDN says that Edge also should work but it doesn't (at least I was not able to find the proper input params). Any help will be appreciated.
Changelog
2.2.1
- Bowser removed, browser detection is changed to feature detection
- isBrowserSupported method is restored as a promise. This method is used internally in encrypted storage
2.1.4
- Typings cleaned from unused import
2.1.3
- Babel configuration fixed in /dist folder
- Example added for encrypt/decrypt
- Typings fixes
2.1.2
- Babel configuration fixed
2.1.1
- Example fixed (broken on previous version)
2.1.0
- Babel polyfill removed (MS browsers support)
2.0.0
- Bowser is removed from the library. Now it is 6k minified.
- The issue with large strings is partially solved, at least for the sizes supported by localStorage (=< 10 MB)