Skip to content
This repository was archived by the owner on Jun 4, 2022. It is now read-only.
/forsakePublic archive

For RSA sake! Native node bindings for rsautl functions

Notifications You must be signed in to change notification settings

mal/forsake

Repository files navigation

Forsake

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

Linux Build StatusWindows Build statusNPM 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

varforsake=require('forsake');// signvara=forsake.sign('this string',private_key);// with passphrasevarprotected_pkey={key: private_key,passphrase: 'hello'};varb=forsake.sign('this string',protected_pkey);// with paddingvarc=forsake.sign('this string',pkey,forsake.RSA_X931_PADDING);// errorstry{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:

varbuffer_from_file=fs.readFileSync('id_rsa');varutf8_string="-----BEGIN PUBLIC KEY-----\nblah\n-----END PUBLIC KEY-----";varprotected_buffer={key: buf_from_file,passphrase: 'opensesame'};varprotected_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

Contributors 2

  •  
  •