Hello,

I have a program running on Centos 6.4 with OpenSSL 1.0.1 that is sending
and receiving messages with another system, written in Java.  I encrypt the
data using the following command:

# openssl cms -encrypt -binary -aes128 -in message.msg key.pem

My encrypted message looks like the following:

MIME-Version: 1.0
Content-Disposition: attachment; filename="smime.p7m"
Content-Type: application/pkcs7-mime; smime-type=enveloped-data;
name="smime.p7m"
Content-Transfer-Encoding: base64

MIIBzwYJKoZIhvcNAQcDoIIBwDCCAbwCAQAxggGAMIIBfAIBADBkMFwxCzAJBgNV
BAYTAlVTMQswCQYDVQQIEwJGTDEMMAoGA1UEBxMDSkFYMQwwCgYDVQQKEwNDU1gx
CzAJBgNVBAsTAlNJMRcwFQYDVQQDEw5CcmlhbiBPJ0dvcm1hbgIEUmaLjzANBgkq
hkiG9w0BAQEFAASCAQCDlr+0swuPiZAVh58LK0O32sVHH4iimC/EAsyyti6rHZAV
hTegCh2dBPewvrXEam4aKgtGyjHGzExk1JAdPYqnDvGpII4p5IQayydBxZ8cw9BX
u4X7aZQ5IKjxJb8caUUfbLrgm7nOEyIhxziz+k5N6ybYRCnk4qP9Amr3pQP7SV1Y
XKP/Kic4ZeNOxm3D64CB35D4nnkjMHDwueSO3TdZsF0jsuP2+4YSAOG5RpST+YEa
uVKbPJfl4dyOsxysrFrUuZUDskXRpAO9iYiJO86hBKlCZ1hB2xqjtHYvq2zgWA8y
DchS8elrkQCEKfOe624Q9Y8E+KaKzrtyuPFLzzSKMDMGCSqGSIb3DQEHATAUBggq
hkiG9w0DBwQIpJxEptYu1oCAEI/37e7/FaXRm+08YW2yIvc=

I strip the headers from the data and send only the encrypted data, which
the Java is able to decrypt with the following method:

private static byte[] cmsDecrypt(byte[] message, PrivateKey key) throws
CMSException, IOException, NoSuchProviderException {
                CMSEnvelopedDataParser ep = new
CMSEnvelopedDataParser(message);
                RecipientInformationStore recipients =
ep.getRecipientInfos();
                Collection c = recipients.getRecipients();
                Iterator iter = c.iterator();
                RecipientInformation recipient = (RecipientInformation)
iter.next();
                return recipient.getContent(key, new
BouncyCastleProvider());
        }

However, decrypting data that is encrypted in Java is not working for me.
The messages are encrypted using the following Java:

public static byte[] cmsEncrypt(byte[] data, Certificate cert) throws
NoSuchAlgorithmException, NoSuchProviderException, CMSException,
IOException {
    CMSEnvelopedDataGenerator gen = new CMSEnvelopedDataGenerator();
    gen.addKeyTransRecipient((X509Certificate) cert);
    CMSProcessable cmsData = new CMSProcessableByteArray(data);
    CMSEnvelopedData enveloped = gen.generate(cmsData,
    CMSEnvelopedDataGenerator.AES128_CBC, 128, "BC");
    return enveloped.getEncoded();
}

This is sent to my program in the following format:

MIAGCSqGSIb3DQEHA6CAMIACAQAxggGAMIIBfAIBADBkM
FwxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJGTDEMMAoGA1UEBxMDSkFYMQwwCgYDVQQKEwNDU1gxCzAJB
gNVBAsTAlNJMRcwFQYDVQQDEw5CcmlhbiBPJ0dvcm1hbgIEUmaLjzANBgkqhkiG9w0BAQEFAASCAQCrt
gzZacBepOAJDskb8KC1AFLw4MF2bAu3D

I am trying to decrypt the message using the command line like this:

# openssl cms -decrypt -binary -in encmessage.msg -inkey key.pem

However, this returns the following error:

Error reading S/MIME message
140284038506312:error:0D0D40D1:asn1 encoding routines:SMIME_read_ASN1:no
content type:asn_mime.c:451:

I believe this is because the message returned from Java has no headers
attached, and therefore cannot be read properly.  Is there a way to set
openssl so that the headers are not needed for the decryption?  I have
tried using various flags, but the CMS documentation doesn't seem to have
what I need.  Any help would be much appreciated.

Thanks,
Nick

-- 


Nicholas Barone
Analyst III
Princeton Consultants, Inc.
2 Research Way
Princeton, NJ 08540
609.987.8787 x419

Reply via email to