expo-crypto-lib
v1.0.2
Published
Hybrid RSA + AES encryption library with mnemonic-based key derivation
Maintainers
Readme
expo-crypto-lib
Standalone Expo module providing hybrid RSA + AES encryption with mnemonic-based key derivation for React Native / Expo and Node.
This is a JavaScript-only module; it has no native iOS/Android code and does not require prebuild hooks.
Requirements: Node 18+ for local development and tests. For Expo/React Native apps: Expo SDK 50+ (or compatible), plus peer dependencies below.
Install
npm install expo-crypto-libWith Expo, ensure peer dependencies are installed (they usually are in an Expo project):
npx expo install expo-crypto expo-secure-storeQuick start
Expo / React Native (one-line manager)
import { createRSAManager } from 'expo-crypto-lib';
import { Platform } from 'react-native';
const manager = createRSAManager({ platform: 'expo', platformOS: Platform.OS });
await manager.generateRSAKeypair(2048);
const encrypted = await manager.encryptDataForLocalStorage(fileBytes);
const decrypted = await manager.decryptDataFromLocalStorage(encrypted);Node (or tests)
const { createRSAManager } = require('expo-crypto-lib');
const manager = createRSAManager({ platform: 'node' });
await manager.generateRSAKeypair(2048);
const encrypted = await manager.encryptDataForLocalStorage(data);
const decrypted = await manager.decryptDataFromLocalStorage(encrypted);You can also build the manager manually with EnhancedRSAManager, createExpoKeyStorage / createNodeKeyStorage, and createExpoRandomValues / createNodeRandomValues (see GETTING_STARTED.md).
Features
- RSA (2048/3072-bit, OAEP) + AES-256-CBC hybrid encryption for data and keys
- Mnemonic (24-word BIP39-like) generation and seed derivation for deterministic key recovery
- Adapters for Expo (
expo-secure-store,expo-crypto) and Node (in-memory +crypto.getRandomValues) - Optional React Native performance: use
expo-crypto-lib/react-nativeandapplyForgeOptimization()withreact-native-modpow
Troubleshooting
Module not found: expo-secure-store (or expo-crypto): You are using the Expo adapters in an Expo/React Native app but the peer packages are not installed. Run:
npx expo install expo-secure-store expo-cryptoImport from
expo-crypto-lib(the main entry), not fromexpo-crypto-lib/react-native, unless you specifically needapplyForgeOptimization.Error in Node when using createExpoKeyStorage: The Expo adapters are for React Native/Expo only. In Node or tests, use
createNodeKeyStorage()andcreateNodeRandomValues().
Docs
- GETTING_STARTED.md — Install, build, usage examples, API summary, dependencies
- PUBLISHING.md — How to publish the package (npm, GitHub Packages)
Source: https://github.com/mryan-iadeptive/expo-crypto-lib
License
MIT
Maintained by Matthew Ryan @ HonestTech
