UNPKG

react-native-securekv

Version:

Light-Weight Secure key-value storage for React Native (AES + SHA Hashing + AES-GCM)

129 lines (78 loc) β€’ 3.27 kB
# πŸ“¦ react-native-securekv **Light-Weight Secure key-value storage for React Native apps** Built on **PBKDF2-SHA256** key derivation and **AES-256-GCM** encryption Unlike `AsyncStorage`, all values are encrypted and can only be decrypted with the correct passphrase. If the passphrase is lost, the data is unrecoverable. --- ## πŸŽ₯ Demo Here’s how it works (encrypt β†’ decrypt β†’ verify) πŸ‘‡ ![SecureKV Demo](./demo/securkv.gif) - Check the Github Repo ![Click here](https://github.com/lachu97/react-native-securekv) ## ✨ Features - πŸ”‘ Strong PBKDF2-SHA256 key derivation (configurable iterations, salt). - πŸ”’ AES-256-GCM encryption with authentication (detects tampering). - 🚫 Passphrase required for both encryption and decryption β€” no accidental leaks. - 🧹 Utilities to remove or clear stored items. - βœ… Passphrase verification helper. - ⚑ Drop-in for React Native apps (iOS + Android). - Useful for Banking and other Crypto Apps that wanna prioritize security. --- ## πŸ“¦ Installation ```sh # with npm npm install react-native-securekv # with yarn yarn add react-native-securekv ``` ## πŸ“¦ Peer dependencies ```shell # with npm # required peer deps npm install react-native-get-random-values @react-native-async-storage/async-storage react-native-simple-crypto # with yarn # required peer deps yarn add react-native-get-random-values @react-native-async-storage/async-storage react-native-simple-crypto ``` ## πŸ“– Usage ```javascript import SecureKV from "react-native-securekv"; async function demo() { const passphrase = "myStrongPassword123"; // ideally from secure storage/env // Save a value securely await SecureKV.setItem("userToken", "abc123", passphrase); // Retrieve the value (will decrypt using passphrase) const value = await SecureKV.getItem("userToken", passphrase); console.log("Decrypted value:", value); // Remove a value await SecureKV.removeItem("userToken"); // Clear all values (⚠️ irreversible) await SecureKV.clear(); // Verify passphrase correctness await SecureKV.createVerifyBlob(passphrase); // call once to set verification value const ok = await SecureKV.verify(passphrase); console.log("Password match?", ok); } ``` ## πŸ”‘ API `setItem(key, value, passphrase, options?)` Encrypts value using passphrase and stores it in SecureKV. `getItem(key, passphrase)` Retrieves and decrypts the value. Returns null if the key does not exist. `removeItem(key)` Removes a stored item. `clear()` Clears all stored secure items. `createVerifyBlob(passphrase)` Stores a hidden encrypted β€œok” marker for passphrase validation. `verify(passphrase)` Checks if a stored item can be decrypted with the given passphrase. ## πŸ“Œ Notes 1.Always store passphrases securely. If the wrong passphrase is provided, decryption will fail. 2.This library is designed for React Native only. 3.AES-GCM provides both encryption and integrity protection. 4.Supports Typescript ## πŸ“œ License MIT Β© 2025 ## Future & Support - Anyone would like to contribute to this repo, Kindly ping me or send an email with your github ID to this mail: stellarworks03@gmail.com - If you find this repo useful give a star on github