On 12/11/14 09:07, Sheldon Hearn wrote:
> The AES-IV is present, but the ciphertext is not. I've boiled the ruby
> code down for the purposes of asking this question:
>
> #>>>>>>>>>>>>>>>>>>>>>>>
>
> require 'openssl'
>
> cleartext = "The cake is a lie!"
>
> cipher = OpenSSL::Cipher::AES256.new(:CBC)
> cipher.encrypt
> cipher.random_key
> iv = cipher.random_iv
> ciphertext = cipher.update(cleartext) + cipher.final
>
> cms = OpenSSL::ASN1::Sequence.new([
> OpenSSL::ASN1::ObjectId.new("1.2.840.113549.1.7.6"),
> OpenSSL::ASN1::Sequence.new([
> OpenSSL::ASN1::Integer.new(0),
> OpenSSL::ASN1::Sequence.new([
> OpenSSL::ASN1::ObjectId.new("1.2.840.113549.1.7.1"),
> OpenSSL::ASN1::Sequence.new([
> OpenSSL::ASN1::ObjectId.new("2.16.840.1.101.3.4.1.42"),
> OpenSSL::ASN1::OctetString.new(iv)
> ]),
> OpenSSL::ASN1::OctetString.new(ciphertext, 0, :IMPLICIT)
> ]),
> OpenSSL::ASN1::Set.new([], 1, :IMPLICIT)
> ], 0, :EXPLICIT)
> ])
>
> $stdout.write cms.to_der
>
> #>>>>>>>>>>>>>>>>>>>>>>>
>
> I feed it to openssl asn1parse as follows:
>
> ruby mail-list-question.rb | openssl asn1parse -inform DER
>
> What am I doing wrong?
Why are you building this yourself using the ASN1 routines, rather than
just using OpenSSL's own CMS routines, e.g.:
https://www.openssl.org/docs/crypto/CMS_encrypt.html
Matt
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List [email protected]
Automated List Manager [email protected]