@aethex.os/crypto
v1.0.1
Published
AeThex E2E encryption — NaCl-based key pairs, asymmetric/symmetric encryption, signing, and secure key storage
Downloads
260
Maintainers
Readme
@aethex.os/crypto
NaCl-based end-to-end encryption for web and Node. Asymmetric encryption, symmetric group keys, message signing, and pluggable key storage — all in one class.
Install
npm install @aethex.os/cryptoUsage
Asymmetric Encryption (E2E)
import { CryptoManager } from '@aethex.os/crypto';
// Sender
const sender = new CryptoManager();
const senderKeys = sender.generateKeyPair();
// Recipient
const recipient = new CryptoManager();
const recipientKeys = recipient.generateKeyPair();
// Encrypt
const encrypted = sender.encrypt('hello', recipientKeys.publicKey);
// Decrypt
recipient.loadKeyPair(recipientKeys);
const message = recipient.decrypt(encrypted); // 'hello'Symmetric Keys (Group Messages)
const crypto = new CryptoManager();
const key = crypto.generateSymmetricKey();
const { ciphertext, nonce } = crypto.encryptSymmetric('group message', key);
const plain = crypto.decryptSymmetric(ciphertext, nonce, key); // 'group message'Signing
const crypto = new CryptoManager();
crypto.generateKeyPair();
const sig = crypto.sign('payload');
const valid = crypto.verify('payload', sig, keys.publicKey); // trueKey Storage
// Works in browser (localStorage) or Node (custom storage)
const crypto = new CryptoManager();
// Custom storage adapter — works anywhere
const crypto = new CryptoManager({
getItem: (k) => db.get(k),
setItem: (k, v) => db.set(k, v),
removeItem: (k) => db.delete(k),
});
await crypto.storeKeys('user-password');
await crypto.loadStoredKeys('user-password');Utilities
crypto.hash('value') // SHA-512, base64
crypto.generateRandomString(32) // cryptographically randomPart of the @aethex.os ecosystem
See @aethex.os/core for the full package list.
