Question

I have an email application that creates encrypted emails. It works fine in outlook and all the email counterparties I send the email to reports no issues. However when I try to decrypt them with Mimekit I get a "Bad data" exception.

Some of the stack trace:

at System.Security.Cryptography.Pkcs.EnvelopedCms.DecryptContent(RecipientInfoCollection recipientInfos, X509Certificate2Collection extraStore)   
at System.Security.Cryptography.Pkcs.EnvelopedCms.Decrypt()
at MimeKit.Cryptography.WindowsSecure...

My email mime looks like this:

Received: from Dx ([x]) by
 x ([x]) with mapi id
 x; Fri, 7 Mar 2014 14:48:49 +0100
From: x <x@x.com>
To: x <x2@x.com>
Subject:
 xxxxxxxx
 07-03-2014 14:48:46
Thread-Topic:
 xxxxxxx
 07-03-2014 14:48:46
Thread-Index: AQHPOgv3JHiUE6wuJk+EQu4eAA1oDA==
Date: Fri, 7 Mar 2014 14:48:48 +0100
Message-ID: <x>
Accept-Language: da-DK, en-US
Content-Language: en-US
X-MS-Exchange-Organization-AuthAs: x
X-MS-Exchange-Organization-AuthMechanism: x
X-MS-Exchange-Organization-AuthSource: x
X-MS-Has-Attach: yes
X-MS-Exchange-Organization-SCL: -1
X-MS-TNEF-Correlator:
Content-Type: application/pkcs7-mime; name="smime.p7m";
    smime-type=enveloped-data
Content-Disposition: attachment; filename="smime.p7m"
Content-Transfer-Encoding: base64
MIME-Version: 1.0

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

This is how I perform my encryption:

public static string EncryptContent(string content, X509Certificate2 certificate)
{
    byte[] contentBytes = Encoding.ASCII.GetBytes(content);

    var envelopedCms = new EnvelopedCms(SubjectIdentifierType.IssuerAndSerialNumber, new ContentInfo(contentBytes));
    var recipient = new CmsRecipient(SubjectIdentifierType.IssuerAndSerialNumber, certificate);

    envelopedCms.Encrypt(recipient);
    var encodedData = envelopedCms.Encode();
    var encodedDataBase64 = Convert.ToBase64String(encodedData, Base64FormattingOptions.InsertLineBreaks);

    return encodedDataBase64;
}

and this is how I attempt to decrypt:

var primarySecureMimeContext = CreateSecureMimeContext(certificateInfo.PrimaryCertificate,
                                                                   certificateInfo.PrimaryPassword);
            var primaryDecryptedEntity = entity.Decrypt(primarySecureMimeContext);


private SecureMimeContext CreateSecureMimeContext(string certificateFilename, string certificatePassword)
    {
        var secureMimeContext = new WindowsSecureMimeContext();
        var certificate = new X509Certificate2(certificateFilename,
                                               certificatePassword);
        var bouncyX509Certificate = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(certificate);
        secureMimeContext.Import(bouncyX509Certificate);
        return secureMimeContext;
    }

When I decrypt the content myself using enveloped cms directly, there are no issues.

This is the email after my own decryption:

Content-Type: multipart/mixed;
    boundary="5511bd79-26dc-41e5-ac96-7adfdea5f6e5"

--5511bd79-26dc-41e5-ac96-7adfdea5f6e5
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable


--5511bd79-26dc-41e5-ac96-7adfdea5f6e5
Content-Type: application/octet-stream;
    name="TestFile.txt"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
    filename="TestFile.txt"

77u/VGVlZWVlZXN0
--5511bd79-26dc-41e5-ac96-7adfdea5f6e5--

Can anyone see what is causing this?

After having using the DummySecureMimeContext as proposed by jstedfast it works. A more thorough walkthrough can be found here: https://github.com/jstedfast/MimeKit/issues/38

Was it helpful?

Solution

I think the problem is the way you are adding the certificate to the context:

private SecureMimeContext CreateSecureMimeContext(string certificateFilename, string certificatePassword)
{
    var secureMimeContext = new WindowsSecureMimeContext();
    var certificate = new X509Certificate2(certificateFilename,
                                           certificatePassword);
    var bouncyX509Certificate = Org.BouncyCastle.Security.DotNetUtilities.FromX509Certificate(certificate);
    secureMimeContext.Import(bouncyX509Certificate);
    return secureMimeContext;
}

What this is doing is adding the certificate to the AddressBook certificate store, but where you actually want to add it in order to decrypt it (because you'll need the private key password as well) is the personal cert store.

Try this:

private SecureMimeContext CreateSecureMimeContext (string certificateFilename, string certificatePassword)
{
    var secureMimeContext = new WindowsSecureMimeContext ();

    using (var stream = File.OpenRead (certificateFilename))
        secureMimeContext.Import (stream, certificatePassword);

    return secureMimeContext;
}

The exception message you are getting isn't very helpful, but I am guessing that it means that it can't find the certificate and/or private key. I wrote a test program and have been unsuccessful in reproducing this bug, so I could be wrong... but since my certificates/private keys are already imported into my personal cert store, I'm not sure how to remove them to test this theory.

Let me know how that works out for you.

Update: Oops, I done goofed. Just updated CreateSecureMimeContext() above to open the certificate file stream because WindowsSecureMimeContext.Import() takes a stream, not a file name.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top