Skip to content
This repository has been archived by the owner on Jun 4, 2022. It is now read-only.
/ forsake Public archive

For RSA sake! Native node bindings for rsautl functions

Notifications You must be signed in to change notification settings

mal/forsake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

For RSA sake! Native node bindings for rsautl functions

Resources

Stars

Watchers

Forks

Packages

No packages published