simplified-rsa

1.0.0 • Public • Published

Why

Generating and using RSA PEM Keys can be a headache. And what about the moments you want to convert keys from one format to the other, crazy.

I spent a lot of time figuring this out to enable end-to-end encryption from a NodeJS server and RUST websocket clients.

Finally figured it out so you wont have to shed premium tears!

What it does

This module helps with the Generation of RSA PEM Keys as well as Encoding/Decoding data and even Converting PEM Keys from one format to the other Like a Boss!

Modules You Need to Check Out

This module leverages on the amazing RSA-Key for key conversions and Node-Rsa to load keys, encrypt and decrypt data and of course the inbuilt Crypto to generate keys.

It is important to check these modules when you have the time!

Is it really that Simplified?

Well, I named it easy-rsa for a reason, and here is proof.

;(async function () {
	const SimplifiedRSA = require('easy-rsa');

	// Generate Key Pair
	const keyPair = await SimplifiedRSA.key_pair();
	console.log(keyPair);

	// - You can save generated pair as files for later use
	// - Using Saved keys is easy. JUst Import the Keys

	// Import Public Key...
	SimplifiedRSA.import_key(keyPair.public_key);

	// - Now we are ready to encrypt some content
	const text = 'Hello RSA!';
	// Encrypt
	const encrypted = SimplifiedRSA.encrypt(text);
	console.log('encrypted: ', encrypted);

	// - To Decrypt encrypted content, we need too import our private key

	// Decrypt
	SimplifiedRSA.import_key(keyPair.private_key);
	const decrypted = SimplifiedRSA.decrypt(encrypted);
	console.log('decrypted: ', decrypted);

	// - You can also convert keys from one format to another. Check out https://www.npmjs.com/package/rsa-key

	// Convert Public Key o pkcs1
	let pkcs1_public_key = SimplifiedRSA.convert_public(
		keyPair.public_key,
		'pem',
		'pkcs1'
	);

	console.log(pkcs1_public_key);

	// Convert Private Key o pkcs1
	let pkcs1_private_key = SimplifiedRSA.convert_private(
		keyPair.private_key,
		'pem',
		'pkcs1'
	);

	console.log(pkcs1_private_key);
})()

API

key_pair([opts:Object, passPhrase:String])

Note:

passPhrase: is null by default. Note that private Keys generated using a pass phrase will fail to import! **Default Options ** are:

defaultOpts = {
	modulusLength: 1024 * 2,
	publicKeyEncoding: {
		type: 'spki',
		format: 'pem',
	},
	privateKeyEncoding: {
		type: 'pkcs8',
		format: 'pem',
	},
};

import_key(key:String)


encrypt(plainText:String [, base:String])

Default base is "base64"


decrypt(encryptedText:String [, base:String])

Default base is "utf8"


convert_public(key:String, format:String, output:String)


convert_private(key:String, format:String, output:String)


Note:

For both convert_public and convert_private, you can only pass the following values as theformat and output arguments:

  • format : pem and der;
  • output : pkcs1 and pkcs8;

Versions

Current Tags

  • Version
    Downloads (Last 7 Days)
    • Tag
  • 1.0.0
    1
    • latest

Version History

  • Version
    Downloads (Last 7 Days)
    • Published
  • 1.0.0
    1
  • 0.0.1
    0

Package Sidebar

Install

npm i simplified-rsa

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

9.68 kB

Total Files

4

Last publish

Collaborators

  • nguru