hybrid-rsa-stream

1.0.3 • Public • Published

hybrid-rsa-stream

encrypt symmetric keys using asymmetric rsa keys

This hybrid approach is necessary because encrypting more than n/8-11 bytes with an asymmetric key is considered insecure, so the asymmetric key encrypts a generated key for a symmetric block cipher.

build status

data

The data over the wire is:

[asymmetric ciphertext length (UInt16BE, 2 bytes)]
[asymmetric ciphertext]
[symmetric ciphertext]

The cleartext for the asymmetric payload is:

[symmetric key name length (UInt8, 1 byte)]
[symmetric key name string]
[symmetric key (remaining bytes)]

example

encrypt with a public key

To send someone a message only knowing their public key:

var hybrid = require('hybrid-rsa-stream');
var fs = require('fs');
var pubkey = fs.readFileSync(__dirname + '/files/public');
 
var enc = hybrid.encrypt(pubkey, { encoding: 'base64' });
process.stdin.pipe(enc).pipe(process.stdout);

decrypt with a private key

Now the recepient of the message can decrypt the message with their private key:

var hybrid = require('hybrid-rsa-stream');
var fs = require('fs');
var privkey = fs.readFileSync(__dirname + '/files/private');
 
var denc = hybrid.dencrypt(privkey, { encoding: 'base64' });
process.stdin.pipe(denc).pipe(process.stdout);

methods

var hybrid = require('hybrid-rsa-stream')

var enc = hybrid.encrypt(publicKey, opts)

Return a through stream enc that takes cleartext as input and produces ciphertext as output encrypted with a public key buffer or string publicKey in PEM or ssh-style format.

Optionally specify:

  • opts.encoding - encoding to use for output. Valid encodings: 'base64', 'hex', 'binary'. Default encoding: 'binary'.
  • opts.algorithm - symmetric cipher to use, default: 'AES-256-CBC'

var dec = hybrid.decrypt(privateKey, opts)

Return a through stream dec that takes ciphertext as input and produces decrypted cleartext as output from the private key string or buffer privateKey in PEM or ssh-style format.

Optionally specify:

  • opts.encoding - encoding to use for input. Valid encodings: 'base64', 'hex', 'binary'. Default encoding: 'binary'.

install

With npm do:

npm install hybrid-rsa-stream

license

MIT

Dependents (1)

Package Sidebar

Install

npm i hybrid-rsa-stream

Weekly Downloads

3

Version

1.0.3

License

MIT

Last publish

Collaborators

  • nopersonsmodules