Read different certificate/key file formats with JavaScript

Read a PEM X509 certificate / public key 

<script src="forge.min.js"></script>(...)
var file = 'FILE_DESCRIPTOR_OF_PEM_FILE';
		
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function () {
	
	// The cert is ready to be used
	var cert = forge.pki.certificateFromPem( reader.result );
	
};

Read a PEM PKCS1 or PKCS8 private key 

<script src="forge.min.js"></script>(...)
var file = 'FILE_DESCRIPTOR_OF_PEM_FILE';
		
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function () {
	
	// The key is ready to be used 
	var privateKey = forge.pki.privateKeyFromPem( reader.result );
	
};

Read a binary (DER) encoded X509 certificate

<script src="forge.min.js"></script>(...)
var file = 'FILE_DESCRIPTOR_OF_X509_BINARY_FILE';
		
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function () {
	
	var raw = forge.util.createBuffer( reader.result );
		
	var cert = forge.pki.certificateFromAsn1( forge.asn1.fromDer( raw ));
	
};

Read a binary (DER) encoded private key

<script src="forge.min.js"></script>(...)
var file = 'FILE_DESCRIPTOR_OF_X509_BINARY_FILE';
		
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function () {
	
	var raw = forge.util.createBuffer( reader.result );
	
	// The key is ready to be used 
	var privateKey = forge.pki.privateKeyFromAsn1( forge.asn1.fromDer( raw ) );
	
};

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

<script src="forge.min.js"></script>(...)
var file = 'FILE_DESCRIPTOR_OF_PFX/PKCS12_BINARY_FILE';
		
var reader = new FileReader();
reader.readAsArrayBuffer(file);
reader.onload = function () {
	// get p12 as ASN.1 object
	var p12Asn1 = forge.asn1.fromDer( forge.util.createBuffer( reader.result ) );
 
	// decrypt p12 using the password returned by getPassword(), the password should be protected and not hard coded
	var p12 = forge.pkcs12.pkcs12FromAsn1(p12Asn1, getPassword() );
	 
	// getting the key slot
	var bags = p12.getBags({friendlyName: 'ALIAS_OF_THE_KEY'});
	var keyBag = bags.friendlyName[0];
	 
	if ( !keyBag ) {
		console.log("Key not found");
		return;
	}
	 
	// the key is ready to be used ! 
	var privateKey = keyBag.key;
	
};