Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }