Wondering what’s next for npm?Check out our public roadmap! »

    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

    Install

    npm i hybrid-rsa-stream

    DownloadsWeekly Downloads

    1

    Version

    1.0.3

    License

    MIT

    Last publish

    Collaborators

    • avatar