Monday 10 April 2017

RSACryptoServiceProvider in Node js

I have to sign a string in node js, in the same way of a C# application, which uses RSACryptoServiceProvider. In fact it uses

X509Certificate2 certificate = new X509Certificate2("file.pfx", "aPassword", 
X509KeyStorageFlags.Exportable);
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)RSACryptoServiceProvider.Create();
rsa.FromXmlString(certificate.PrivateKey.ToXmlString(true));
signer = new RSAPKCS1SignatureFormatter(rsa);
signer.SetHashAlgorithm("SHA256");

byte[] signedData = signer.CreateSignature("a string");
string signedString = Convert.ToBase64String(signedData);

I've tried to do the same in node js, so far, using jsonwebtoken in this way

var kdrPrivateKey = fs.readFileSync('private_key.pem');
var authorizationSigned = jwt.sign("a string", kdrPrivateKey, { algorithm: 'RS256'});
var authorizationBase64 = Base64.encode(authorizationSigned);

I also got the private_key from file.pfx in this way

openssl pkcs12 -in file.pfx -nocerts -out private_key.pem -nodes

My question, finally is, is the node js code equivalent to the C# code? If not, how can I make the C# code in a node js way?

Thanks!



via PabloF

No comments:

Post a Comment