Isomorphic encryption library that works both in the browser and node.
Go to file
2019-07-07 21:32:40 +02:00
docs docs fix 2019-07-07 21:28:59 +02:00
src added chacha20 & hashes 2019-07-07 21:20:05 +02:00
test little hashing test 2019-04-10 10:42:11 +02:00
_config.yml docs fix 2019-07-07 21:32:40 +02:00
.gitignore initial commit 2019-03-30 20:50:04 +01:00
.npmignore initial commit 2019-03-30 20:50:04 +01:00
package.json docs 2019-07-07 21:20:42 +02:00
README.md docs 2019-07-07 21:20:42 +02:00
tsconfig.json stricter typing 2019-04-10 10:42:31 +02:00

occulto 🔒

High level wrapper around forge.

Supports Hashes, Symmetric AES & ChaCha20 ciphers and Asymmetric RSA.

Typescript typings included

Quickstart 🚀

Install
npm i node-forge occulto
// Whatever import you prefer
// const { RSA } = require('occulto')
import { RSA } from 'occulto'

const pair = await RSA.gen()

const encrypted = RSA.encrypt('some string', 'myPass')
const decrypted = RSA.decrypt(encrypted, 'myPass')

Reference 📒

RSA

RSA.gen(size: number = 2 ** 12)

  • size: [optional, default=4096] Size of the RSA key
Examples
const pair = await RSA.gen() // 4096-Bit
const smallPair = await RSA.gen(2**10) // 1024-Bit

RSA.encrypt(data: string, key: PublicKey)

Encrypt message with public key

Example
const pair = await RSA.gen()
const encrypted = RSA.encrypt('some text', pair.pub)

RSA.decrypt(data: string, key: PrivateKey)

Decrypts a message encrypted with RSA.encrypt() with the private key

Example
const pair = await RSA.gen()
const encrypted = RSA.encrypt('some text', pair.pub)
const decrypted = RSA.decrypt(encrypted, pair.prv)

Symmetric

Symmetric.Ciphers

Available ciphers

  • Ciphers.ChaCha20
  • Ciphers.AES_256_GCM
  • Ciphers.AES_192_GCM
  • Ciphers.AES_128_GCM
  • Ciphers.AES_256_CTR
  • Ciphers.AES_192_CTR
  • Ciphers.AES_128_CTR

Symmetric.encrypt(data: string, key: string, type: Ciphers = Ciphers.AES_256_GCM)

Encrypts a string. Defaults to Ciphers.AES_256_CTR

Examples
const encrypted = Symmetric.encrypt('some string' , 'myPass')

const e = Symmetric.encrypt('some string' , 'myPass', Ciphers.AES_128_GCM)

Hash

Hash.Hashes

Available hashes

  • Hashes.MD5
  • Hashes.SHA1_1
  • Hashes.SHA1_256
  • Hashes.SHA1_512
  • Hashes.SHA3_256
  • Hashes.SHA3_384
  • Hashes.SHA3_512

Hash.digest(s: string, type: Hashes = Hashes.SHA3_256)

Calculates the hash of a string. Defaults to Hashes.SHA3_256

Examples
const hash = Hash.digest('something')

const h = Hash.digest('something', Hashes.MD5)