public string decryptMessage(string messageEncrypted, X509Certificate2 privateCert) { string clearMessage; try { My2C2P.Org.BouncyCastle.Crypto.AsymmetricKeyParameter key = My2C2P.Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(privateCert.PrivateKey).Private; var x509Certificate = My2C2P.Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(privateCert); byte[] decBytes = new My2C2P.Org.BouncyCastle.Cms.CmsEnvelopedData(messageEncrypted.FromBase64String()).GetRecipientInfos().GetFirstRecipient(new My2C2P.Org.BouncyCastle.Cms.RecipientID() { SerialNumber = x509Certificate.SerialNumber, Issuer = x509Certificate.IssuerDN }).GetContent(key); clearMessage = decBytes.GetClearString(); } catch (Exception exception) { if (exception.Message.Contains("key not valid for use in specified state")) { clearMessage = "private key required to mark as exportable"; } else { clearMessage = exception.ToString(); } } return(clearMessage); }
public byte[] decryptMessage(byte[] encodedEnvelopedCms, X509Certificate2 privateCert) { byte[] content; try { My2C2P.Org.BouncyCastle.Crypto.AsymmetricKeyParameter key = My2C2P.Org.BouncyCastle.Security.DotNetUtilities.GetKeyPair(privateCert.PrivateKey).Private; var x509Certificate = My2C2P.Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(privateCert); content = new My2C2P.Org.BouncyCastle.Cms.CmsEnvelopedData(encodedEnvelopedCms).GetRecipientInfos().GetFirstRecipient(new My2C2P.Org.BouncyCastle.Cms.RecipientID() { SerialNumber = x509Certificate.SerialNumber, Issuer = x509Certificate.IssuerDN }).GetContent(key); } catch (Exception exception) { content = null; } return(content); }