UNPKG

crypto-browser-storage

Version:

☢ A simple package for secure local storage data by encryption using Crypto.JS

91 lines 9.16 kB
import { Inject, Injectable, InjectionToken } from '@angular/core'; import * as CryptoJS from "crypto-js"; import { SecureStorage } from './secure-storage'; import * as i0 from "@angular/core"; export const CRYPTO_HASH_KEY = new InjectionToken('CRYPTO_HASH_KEY'); export class CryptoBrowserStorageService { secureStorage; constructor(cryptoHashKey) { this.secureStorage = new SecureStorage(localStorage, { hash: function hash(key) { //@ts-ignore key = CryptoJS.SHA256(key, cryptoHashKey); return key.toString(); }, encrypt: function encrypt(data) { data = CryptoJS.AES.encrypt(data, cryptoHashKey); data = data.toString(); return data; }, decrypt: function decrypt(data) { data = CryptoJS.AES.decrypt(data, cryptoHashKey); data = data.toString(CryptoJS.enc.Utf8); return data; }, }); } /** * Set data to localstorage via key * @param {any} key:string * @param {any} data: any * @returns {void} void */ setCache(key, data) { try { if (data) { this.secureStorage.setItem(key, data); } else { console.log(`Something went wrong to set ${key} cached`); } } catch (error) { console.log(`Error : "${key}" Set Cache:`, error); } } /** * Get localstorage data via key * @param {any} key:string * @returns {any} any: number | string | object | array */ getCache(key) { try { return this.secureStorage.getItem(key); } catch (error) { console.log('Key not found in localstorage or maybe wrong key.'); } } /** * It will remove stored local storage data via key * @param {any} key:string * @returns {void} void */ removeCacheByKey(key) { try { this.secureStorage.removeItem(key); } catch (error) { console.error('Key not found in localstorage or maybe wrong key.'); } } /** * It behave like native localstorage clear() function. It will clear all cache including pre-existing localstorage data. * @returns {void} void */ clearAllCache() { localStorage.clear(); } static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CryptoBrowserStorageService, deps: [{ token: CRYPTO_HASH_KEY }], target: i0.ɵɵFactoryTarget.Injectable }); static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CryptoBrowserStorageService, providedIn: 'root' }); } i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CryptoBrowserStorageService, decorators: [{ type: Injectable, args: [{ providedIn: 'root' }] }], ctorParameters: () => [{ type: undefined, decorators: [{ type: Inject, args: [CRYPTO_HASH_KEY] }] }] }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3J5cHRvLWJyb3dzZXItc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY3J5cHRvLWJyb3dzZXItc3RvcmFnZS9zcmMvbGliL2NyeXB0by1icm93c2VyLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxLQUFLLFFBQVEsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQUNqRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQVMsaUJBQWlCLENBQUMsQ0FBQztBQUs3RSxNQUFNLE9BQU8sMkJBQTJCO0lBQzlCLGFBQWEsQ0FBd0I7SUFFN0MsWUFBcUMsYUFBb0I7UUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDbkQsSUFBSSxFQUFFLFNBQVMsSUFBSSxDQUFDLEdBQVE7Z0JBQzFCLFlBQVk7Z0JBQ1osR0FBRyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUMxQyxPQUFPLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUN4QixDQUFDO1lBRUQsT0FBTyxFQUFFLFNBQVMsT0FBTyxDQUFDLElBQVM7Z0JBQ2pDLElBQUksR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLENBQUM7Z0JBQ2pELElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELE9BQU8sRUFBRSxTQUFTLE9BQU8sQ0FBQyxJQUFTO2dCQUNqQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDO2dCQUNqRCxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSSxRQUFRLENBQUMsR0FBVyxFQUFFLElBQVM7UUFDcEMsSUFBSTtZQUNGLElBQUksSUFBSSxFQUFFO2dCQUNSLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxPQUFPLENBQUMsR0FBRyxDQUFDLCtCQUErQixHQUFHLFNBQVMsQ0FBQyxDQUFDO2FBQzFEO1NBQ0Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxHQUFHLGNBQWMsRUFBRSxLQUFLLENBQUMsQ0FBQztTQUNuRDtJQUNILENBQUM7SUFHRDs7OztPQUlHO0lBQ0ksUUFBUSxDQUFDLEdBQVc7UUFDekIsSUFBSTtZQUNGLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDeEM7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxHQUFHLENBQUMsbURBQW1ELENBQUMsQ0FBQztTQUNsRTtJQUNILENBQUM7SUFHRDs7OztPQUlHO0lBRUksZ0JBQWdCLENBQUMsR0FBVztRQUNqQyxJQUFJO1lBQ0YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEM7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFHRDs7O09BR0c7SUFDSSxhQUFhO1FBQ2xCLFlBQVksQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO3VHQTlFVSwyQkFBMkIsa0JBR2xCLGVBQWU7MkdBSHhCLDJCQUEyQixjQUYxQixNQUFNOzsyRkFFUCwyQkFBMkI7a0JBSHZDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFJYyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBDcnlwdG9KUyBmcm9tIFwiY3J5cHRvLWpzXCI7XG5pbXBvcnQgeyBTZWN1cmVTdG9yYWdlIH0gZnJvbSAnLi9zZWN1cmUtc3RvcmFnZSc7XG5leHBvcnQgY29uc3QgQ1JZUFRPX0hBU0hfS0VZID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZz4oJ0NSWVBUT19IQVNIX0tFWScpO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDcnlwdG9Ccm93c2VyU3RvcmFnZVNlcnZpY2Uge1xuICBwcml2YXRlIHNlY3VyZVN0b3JhZ2UgOiB0eXBlb2YgU2VjdXJlU3RvcmFnZTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KENSWVBUT19IQVNIX0tFWSkgY3J5cHRvSGFzaEtleTpzdHJpbmcgKXtcbiAgICB0aGlzLnNlY3VyZVN0b3JhZ2UgPSBuZXcgU2VjdXJlU3RvcmFnZShsb2NhbFN0b3JhZ2UsIHtcbiAgICAgIGhhc2g6IGZ1bmN0aW9uIGhhc2goa2V5OiBhbnkpIHtcbiAgICAgICAgLy9AdHMtaWdub3JlXG4gICAgICAgIGtleSA9IENyeXB0b0pTLlNIQTI1NihrZXksIGNyeXB0b0hhc2hLZXkpO1xuICAgICAgICByZXR1cm4ga2V5LnRvU3RyaW5nKCk7XG4gICAgICB9LFxuICBcbiAgICAgIGVuY3J5cHQ6IGZ1bmN0aW9uIGVuY3J5cHQoZGF0YTogYW55KSB7XG4gICAgICAgIGRhdGEgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChkYXRhLCBjcnlwdG9IYXNoS2V5KTtcbiAgICAgICAgZGF0YSA9IGRhdGEudG9TdHJpbmcoKTtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9LFxuICBcbiAgICAgIGRlY3J5cHQ6IGZ1bmN0aW9uIGRlY3J5cHQoZGF0YTogYW55KSB7XG4gICAgICAgIGRhdGEgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChkYXRhLCBjcnlwdG9IYXNoS2V5KTtcbiAgICAgICAgZGF0YSA9IGRhdGEudG9TdHJpbmcoQ3J5cHRvSlMuZW5jLlV0ZjgpO1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbiAgLyoqXG4gICAqIFNldCBkYXRhIHRvIGxvY2Fsc3RvcmFnZSB2aWEga2V5XG4gICAqIEBwYXJhbSB7YW55fSBrZXk6c3RyaW5nXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhOiBhbnlcbiAgICogQHJldHVybnMge3ZvaWR9IHZvaWRcbiAgICovXG4gIHB1YmxpYyBzZXRDYWNoZShrZXk6IHN0cmluZywgZGF0YTogYW55KTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIHRoaXMuc2VjdXJlU3RvcmFnZS5zZXRJdGVtKGtleSwgZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZyhgU29tZXRoaW5nIHdlbnQgd3JvbmcgdG8gc2V0ICR7a2V5fSBjYWNoZWRgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coYEVycm9yIDogXCIke2tleX1cIiBTZXQgQ2FjaGU6YCwgZXJyb3IpO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldCBsb2NhbHN0b3JhZ2UgZGF0YSB2aWEga2V5XG4gICAqIEBwYXJhbSB7YW55fSBrZXk6c3RyaW5nXG4gICAqIEByZXR1cm5zIHthbnl9IGFueTogbnVtYmVyIHwgc3RyaW5nIHwgb2JqZWN0IHwgYXJyYXlcbiAgICovXG4gIHB1YmxpYyBnZXRDYWNoZShrZXk6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5zZWN1cmVTdG9yYWdlLmdldEl0ZW0oa2V5KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5sb2coJ0tleSBub3QgZm91bmQgaW4gbG9jYWxzdG9yYWdlIG9yIG1heWJlIHdyb25nIGtleS4nKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBJdCB3aWxsIHJlbW92ZSBzdG9yZWQgbG9jYWwgc3RvcmFnZSBkYXRhIHZpYSBrZXlcbiAgICogQHBhcmFtIHthbnl9IGtleTpzdHJpbmdcbiAgICogQHJldHVybnMge3ZvaWR9IHZvaWRcbiAgICovXG5cbiAgcHVibGljIHJlbW92ZUNhY2hlQnlLZXkoa2V5OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgdGhpcy5zZWN1cmVTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY29uc29sZS5lcnJvcignS2V5IG5vdCBmb3VuZCBpbiBsb2NhbHN0b3JhZ2Ugb3IgbWF5YmUgd3Jvbmcga2V5LicpO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEl0IGJlaGF2ZSBsaWtlIG5hdGl2ZSBsb2NhbHN0b3JhZ2UgY2xlYXIoKSBmdW5jdGlvbi4gSXQgd2lsbCBjbGVhciBhbGwgY2FjaGUgaW5jbHVkaW5nIHByZS1leGlzdGluZyBsb2NhbHN0b3JhZ2UgZGF0YS5cbiAgICogQHJldHVybnMge3ZvaWR9IHZvaWRcbiAgICovXG4gIHB1YmxpYyBjbGVhckFsbENhY2hlKCkge1xuICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICB9XG5cbn1cbiJdfQ==