Read different certificate/key file formats with Angular 2

Read a X509 certificate / public key, PKC1 private key or PKCS8 private key encoded with PEM

let reader = new FileReader();
		     		
let file = 'FILE_DESCRIPTOR_OF_PEM_FILE';
reader.readAsText(file);
reader.onload = function () {
	 
	let jose = require('node-jose');
	
	let privateKey = reader.result;
	 
	jose.JWK.asKey(privateKey, "pem").then(function(key) {
		// the key is ready to be used !
		console.log( key );
	}, function(error) {
		console.log(error);
	});
};

Read a X509 binary encoded certificate / public key 

let reader = new FileReader();
				
let file = 'FILE_DESCRIPTOR_OF_X509_BINARY_FILE';
reader.readAsArrayBuffer(file);
reader.onload = function () {
	 
	let jose = require('node-jose');
	
	let privateKey = jose.util.asBuffer(reader.result);
	 
	jose.JWK.asKey(privateKey, "x509").then(function(key) {
		// the key is ready to be used !
		console.log( key );
	}, function(error) {
		console.log(error);
	});
};

Read a binary encoded (DER) private key  

let reader = new FileReader();
				
let file = 'FILE_DESCRIPTOR_OF_PRIVATE_KEY_BINARY_FILE';
reader.readAsArrayBuffer(file);
reader.onload = function () {
	 
	let jose = require('node-jose');
	
	let privateKey = jose.util.asBuffer(reader.result);
	 
	jose.JWK.asKey(privateKey, "private").then(function(key) {
		// the key is ready to be used !
		console.log( key );
	}, function(error) {
		console.log(error);
	});
};

Read a PKC12 / PFX file to extract a key / certificate 

let reader = new FileReader();
let file = 'FILE_DESCRIPTOR_OF_PFX/PKCS12_BINARY_FILE';
reader.readAsArrayBuffer(file);
reader.onload = function () {
	 
	let jose = require('node-jose');
	let forge = require('node-forge');
	
	let privateKey = reader.result;
	
	// get p12 as ASN.1 object
	let p12Asn1 = forge.asn1.fromDer( forge.util.createBuffer( privateKey ) );
	// decrypt p12 using the password returned by getPassword(), the password should be protected and not hard coded
	let p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, getPassword() );
	 
	// getting the key slot
	let bags = p12.getBags({friendlyName: '1'});
	let keyBag = bags.friendlyName[0];
	 
	if ( !keyBag ) {
		console.log("Key not found");
		return;
	}
	 
	// transform to PEM to be compatible with node-jose 
	var pem = forge.pki.privateKeyToPem(keyBag.key);
	 
	jose.JWK.asKey(pem, "pem").then(function(key) {
		// the key is ready to be used !
		console.log( key );
	}, function(error) {
		console.log(error);
	});
};