simplified-rsa
v1.0.0
Published
Easy 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!
Downloads
4
Maintainers
Readme
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
andder
; - output :
pkcs1
andpkcs8
;