Skip to content

Instantly share code, notes, and snippets.

@amarodeabreu
Created February 23, 2021 09:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amarodeabreu/e36037438f4eccc2dbcd500beaf64d71 to your computer and use it in GitHub Desktop.
Save amarodeabreu/e36037438f4eccc2dbcd500beaf64d71 to your computer and use it in GitHub Desktop.
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
using System;
using System.IO;
using System.Security.Cryptography;
namespace WindowsFormsApplication5
{
public static class PemReaderB
{
static RSACryptoServiceProvider GetRsaProviderFromPem(string pemstr)
{
var cspParameters = new CspParameters { KeyContainerName = "MyKeyContainer" };
var rsaKey = new RSACryptoServiceProvider(cspParameters);
Func<RSACryptoServiceProvider, RsaPrivateCrtKeyParameters, RSACryptoServiceProvider> MakePrivateRCSP = (rcsp, rkp) =>
{
var rsaParameters = DotNetUtilities.ToRSAParameters(rkp);
rcsp.ImportParameters(rsaParameters);
return rsaKey;
};
var reader = new PemReader(new StringReader(pemstr));
var kp = reader.ReadObject();
return MakePrivateRCSP(rsaKey, (((RsaPrivateCrtKeyParameters)kp)));
}
public static RSACryptoServiceProvider GetRsaProviderFromPemFile(string pemfile)
{
return GetRsaProviderFromPem(File.ReadAllText(pemfile).Trim());
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment