occulto/README.md
cupcakearmy caaec8b048 docs
2019-07-07 21:20:42 +02:00

121 lines
2.2 KiB
Markdown

# occulto 🔒
High level wrapper around [forge](https://github.com/digitalbazaar/forge).
Supports Hashes, Symmetric AES & ChaCha20 ciphers and Asymmetric RSA.
**Typescript typings included**
## Quickstart 🚀
###### Install
```
npm i node-forge occulto
```
```javascript
// 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
```javascript
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
```javascript
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
```javascript
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
```javascript
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
```javascript
const hash = Hash.digest('something')
const h = Hash.digest('something', Hashes.MD5)
```