forsake

For RSA sake! Native bindings for rsautl functions


Keywords
decrypt, encrypt, openssl, rsa, rsautl, sign, verify
License
ISC
Install
npm install forsake@0.1.5

Documentation

Forsake

For RSA sake! Exposes openssl rsautl funtions via a C addon rather than shelling out.

Linux Build Status Windows Build status NPM version

Installation

$ npm install forsake

⚠️ on Windows, either a 32-bit or 64-bit separately-compiled OpenSSL library is required. One can be obtained from slproweb.

API

n.b. all keys are Buffer instances

var forsake = require('forsake');

// sign
var a = forsake.sign('this string', private_key);

// with passphrase
var protected_pkey = { key: private_key, passphrase: 'hello' };
var b = forsake.sign('this string', protected_pkey);

// with padding
var c = forsake.sign('this string', pkey, forsake.RSA_X931_PADDING);

// errors
try {
    forsake.sign('this string', public_key);
} catch (e) {
    e.toString(); //=> "RsaError: Unable to load private key"
    e.failures;   //=> [ 'error:0906D06C:PEM routines:PEM_read_bio:no start line' ]
}

Notes

  • The API for encrypt, decrypt, sign and verify is identical
  • All errors are of type RsaError which is exposed by forsake
  • RsaError.failures contains SSL error strings, which can help identify problems

Keys

The examples below show all possible types of supported key arguments:

var buffer_from_file = fs.readFileSync('id_rsa');
var utf8_string = "-----BEGIN PUBLIC KEY-----\nblah\n-----END PUBLIC KEY-----";
var protected_buffer = { key: buf_from_file, passphrase: 'opensesame' };
var protected_utf8 = { key: utf8_string, passphrase: 'Alohomora' };

Padding

Forsake exposes the following padding constants:

  • RSA_NO_PADDING
  • RSA_PKCS1_OAEP_PADDING
  • RSA_PKCS1_PADDING
  • RSA_SSLV23_PADDING
  • RSA_X931_PADDING

Support

Forsake is able to read PKCS#8, PKCS#1 and X.509 public keys, and PKCS#8 private keys. Passphrases can be used with private keys and the standard padding options are also available.

License

ISC