[prev in list] [next in list] [prev in thread] [next in thread] 

List:       bouncycastle-crypto-dev
Subject:    Re: [dev-crypto] Trouble reading CMSEnvelopedData
From:       David Hook <dgh () autochthonous ! org>
Date:       2012-12-20 6:59:39
Message-ID: 50D2B75B.3050705 () autochthonous ! org
[Download RAW message or body]

Okay,

first thing, would you tell whoever produced the patch that they should 
find out the difference between implicit and explicit tagging and that 
if they do they will realise that all is required is:

ASN1OctetString data = 
ASN1OctetString.getInstance(ASN1TaggedObject.getInstance(sequence.getObjectAt(2)), 
false);

There is absolutely nothing strange about a constructed octet string.

Second thing, the data you've attached is a CMSSignedData object not a 
CMSEnvelopedData one.

Regards,

David

On 20/12/12 17:24, Matt Hauck wrote:
> I am trying to read some enveloped data and running into some trouble. 
> I am able to read the pkcs7 file below in JRuby running on bouncy 
> castle using this patch 
> <https://github.com/bigfix/jruby-ossl/commit/9dadbc17b05370f005acd6ad9ed6d4d498f30997>. I 
> was hoping that by calling the CMSEnvelopedData class directly, I 
> would expect that this workaround would not be necessary, but would 
> already be covered by the bouncy castle's CMS implementation.
>
> Am I doing something wrong? Or is there something weird about this 
> file that it still requires hacking the ASN1Sequence?
>
> The exception:
>
> Exception in thread "main" java.lang.IllegalArgumentException: unknown 
> object in factory: org.bouncycastle.asn1.DERTaggedObject
> at org.bouncycastle.asn1.x509.AlgorithmIdentifier.getInstance(Unknown 
> Source)
> at org.bouncycastle.asn1.cms.EncryptedContentInfo.<init>(Unknown Source)
> at org.bouncycastle.asn1.cms.EncryptedContentInfo.getInstance(Unknown 
> Source)
> at org.bouncycastle.asn1.cms.EnvelopedData.<init>(Unknown Source)
> at org.bouncycastle.asn1.cms.EnvelopedData.getInstance(Unknown Source)
> at org.bouncycastle.cms.CMSEnvelopedData.<init>(Unknown Source)
> at CMSTest.main(CMSTest.java:17)
>
> The code:
>
> public class CMSTest {
>     public static void main(String[] args) throws Exception {
>         PEMReader pr = new PEMReader(new FileReader(new File(args[0])));
>         ContentInfo ci = (ContentInfo) pr.readObject();
>         CMSEnvelopedData ced = new CMSEnvelopedData( ci );
>     }
> }
>
> The file:
>
> -----BEGIN PKCS7-----
> MIIG+wYJKoZIhvcNAQcCoIIG7DCCBugCAQExCzAJBgUrDgMCGgUAMIIDOAYJKoZI
> hvcNAQcBoIIDKQSCAyUwgAYJKoZIhvcNAQcDoIAwgAIBADGB8TCB7gIBADBXMFEx
> DzANBgNVBAoMBm1oYXVjazE+MDwGA1UEAww1bWhhdWNrIFJvb3QgQ0EgKGVhYTc0
> ODlkLTkxMTMtNGNhYi04NjJmLTMzNzM5ZTE4OTRkOCkCAihYMA0GCSqGSIb3DQEB
> AQUABIGAYoNy0Hq/pWYHblRGNoClX+Lzki5eZCqduKkIoaRxLFpzx+2/O4JXnRs5
> 9Nxu261A5v43zQIsk3xxZGL7kAVjnJLXPXf31NNMNwIhrDvjeRKcO3W1uCmla9jH
> oHsehgNxRBFzzXzNnx8S8lFQWwbcBAdlV/Pvsibc55yeMwesmkwwgAYJKoZIhvcN
> AQcBMBQGCCqGSIb3DQMHBAj9IdLE5DwUWqCABIIB4LwzY9cSc+bwmvJZOqOrhltU
> PROfU0q37TaTKAHa/3A2ANexdRBBAQhH6Wdt/9IFQ031a4Kq/s29nWYv0a5MKCe/
> rkyjzhEem7UuPzdzPSWFRh25D3xdlP8eG1u5+WzomtqfjH/lEUFGCgvUVfAbIBPZ
> uql3y+/yO4BaJ0/7oW3tFne3O3O8gzHIL4UFYsjYdWG7Q32dM5/oueNDhzmuK/RE
> +VtZUqX3gRnMBnTe8V8Iro1M4ZsKTvLyiHSBU9FGD5OC/MPZ8kivVLXRLOGYVe0F
> Va8JoeNj8CROXeD2KQT9y2/yHqWvbKEo5ma3G+4wosXikhen7qobg8RndFJ10s8B
> II1q6vPVCWSwRmHIVBHUj9hCuqL5sA2G7v2Aw/ckTkr8rTKMpSkPBZ1psWY0dayI
> HF6fpvvVrjLn7UuyAi4vFgZ/UWl3c04FPtaz/AlG1o5ZNBrJ8t+9TRNdX390a8G3
> OdObWVzVPjMLKR90dfZIUWC2ZNZ4nbH/3raGAg9/3cvm2+GXTw2uEofg2g5t6fUF
> SlaCvnJHFUS2DCNMxxmZal7njlZZ+JG2Bs7BSupCflozKfhv8CIw/bGrb0VhjAU2
> okHpQytJHzihjVlvqjwtOzsGJihDKOUiqJvksYM0XAQIvaUmbxPqFi8AAAAAAAAA
> AAAAoIIB6jCCAeYwggFPoAMCAQICAQEwDQYJKoZIhvcNAQEFBQAwLzEtMCsGA1UE
> AxMkMzAzNTQ0QjMtNzVENi00MkU3LUEwMkYtMjAyOUI4OUIyMkRBMB4XDTEyMTIy
> MDA0NDc1MVoXDTEzMTIyMDA0NDc1MVowLzEtMCsGA1UEAxMkMzAzNTQ0QjMtNzVE
> Ni00MkU3LUEwMkYtMjAyOUI4OUIyMkRBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB
> iQKBgQDDOKbuecgfTyYNhAm2ron/BYwf9e3hV/Tn3xwD2ZJ55/lhbm4GdFkHgnP5
> 4MWpRHhF53Uc5Q5lwv/KoMlNiiRoS6E6ozpT4toF2LAS+TR6KDTLuNsguIzB1bgg
> QIU5J0mcniXK+sk3EKbNPQZgAsraByeR6FlHu77+mqUUGwSfbwIDAQABoxIwEDAO
> BgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcNAQEFBQADgYEARKD3IenmsetbOEC3GDps
> /tDcvJ1f10GlXmkca69ysYY+//A8If9WWGSelDgeRhBvY+YdvtGiGZhU98u0W6d7
> C0ROpdo2ZjoxPo0MPE5BJyLv4qD93UPCqfqccGRfQKE26i5nsHheYD/UlPGXYDgE
> KxvhUw0Ks2aqh8mIbucld1wxggGqMIIBpgIBATA0MC8xLTArBgNVBAMTJDMwMzU0
> NEIzLTc1RDYtNDJFNy1BMDJGLTIwMjlCODlCMjJEQQIBATAJBgUrDgMCGgUAoIHN
> MBIGCmCGSAGG+EUBCQIxBBMCMTkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc
> BgkqhkiG9w0BCQUxDxcNMTIxMjIwMDQ0NzUxWjAgBgpghkgBhvhFAQkFMRIEEES2
> qA7R7tIszFNieBliy7swIwYJKoZIhvcNAQkEMRYEFLf+h/5hopOnYfz8QqQAPixY
> K+ThMDgGCmCGSAGG+EUBCQcxKhMoRUI2QkU5MTY3MjY3NzhCOTUzNEMzQkYyMzU4
> Q0ZBNkYxMTFEQkZBOTANBgkqhkiG9w0BAQEFAASBgEdfe5atC8yZWlhrEi9z8Wsm
> iV0F27NJ5IzYRPRFWr2buW1sx+w4WaIVzLFtaGGr6uH31KcNFjbjqO7Bl9szO7DL
> cvS6on8d3Bw7WRwWG9HryGOPg0GAPRAL1sLVGc5hKTup4sTE4SJUYWwI7JF/UsH0
> x6/+M+zvYK9ba0yER7+1
> -----END PKCS7-----
>
> -- 
> Matt Hauck
>


[Attachment #3 (text/html)]

<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix"><br>
      Okay, <br>
      <br>
      first thing, would you tell whoever produced the patch that they
      should find out the difference between implicit and explicit
      tagging and that if they do they will realise that all is required
      is:<br>
      <br>
      ASN1OctetString data =
      ASN1OctetString.getInstance(ASN1TaggedObject.getInstance(sequence.getObjectAt(2)),
  false);<br>
      <br>
      There is absolutely nothing strange about a constructed octet
      string.<br>
      <br>
      Second thing, the data you've attached is a CMSSignedData object
      not a CMSEnvelopedData one.<br>
      <br>
      Regards,<br>
      <br>
      David<br>
      <br>
      On 20/12/12 17:24, Matt Hauck wrote:<br>
    </div>
    <blockquote cite="mid:A268365516524A70A4136ADD89B8AEEA@gmail.com"
      type="cite">
      <div>
        <div>I am trying to read some enveloped data and running into
          some trouble. I am able to read the pkcs7 file below in JRuby
          running on bouncy castle using <a moz-do-not-send="true"
href="https://github.com/bigfix/jruby-ossl/commit/9dadbc17b05370f005acd6ad9ed6d4d498f30997"
  style="color: rgb(0, 106, 227); ">this patch</a>. I was
          hoping that by calling the CMSEnvelopedData class directly, I
          would expect that this workaround would not be necessary, but
          would already be covered by the bouncy castle's CMS
          implementation. </div>
        <div><br>
        </div>
        <div>Am I doing something wrong? Or is there something weird
          about this file that it still requires hacking the
          ASN1Sequence?</div>
        <div><br>
        </div>
        <div>The exception:</div>
        <div><br>
        </div>
        <div>
          <div><font face="'Courier New'">Exception in thread "main"
              java.lang.IllegalArgumentException: unknown object in
              factory: org.bouncycastle.asn1.DERTaggedObject</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at
              org.bouncycastle.asn1.x509.AlgorithmIdentifier.getInstance(Unknown
              Source)</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at
              org.bouncycastle.asn1.cms.EncryptedContentInfo.&lt;init&gt;(Unknown
              Source)</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at
              org.bouncycastle.asn1.cms.EncryptedContentInfo.getInstance(Unknown
              Source)</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at
              org.bouncycastle.asn1.cms.EnvelopedData.&lt;init&gt;(Unknown
              Source)</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at
              org.bouncycastle.asn1.cms.EnvelopedData.getInstance(Unknown
              Source)</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at
              org.bouncycastle.cms.CMSEnvelopedData.&lt;init&gt;(Unknown
              Source)</font></div>
          <div><font face="'Courier New'"><span style="white-space: pre;
                "> </span>at CMSTest.main(CMSTest.java:17)</font></div>
        </div>
        <div><br>
        </div>
        <div>The code: </div>
        <div><br>
        </div>
        <div>
          <div><font face="'Courier New'">public class CMSTest {</font></div>
          <div><font face="'Courier New'">    public static void
              main(String[] args) throws Exception {</font></div>
          <div><font face="'Courier New'">        PEMReader pr = new
              PEMReader(new FileReader(new File(args[0])));</font></div>
          <div><font face="'Courier New'">        ContentInfo ci =
              (ContentInfo) pr.readObject();</font></div>
          <div><font face="'Courier New'">        CMSEnvelopedData ced =
              new CMSEnvelopedData( ci );</font></div>
          <div><font face="'Courier New'">    }</font></div>
          <div><font face="'Courier New'">}</font></div>
        </div>
        <div>
          <div><br>
          </div>
          <div>The file:</div>
          <div><br>
          </div>
          <div>
            <div><font face="'Courier New'">-----BEGIN PKCS7-----</font></div>
            <div><font face="'Courier \
                New'">MIIG+wYJKoZIhvcNAQcCoIIG7DCCBugCAQExCzAJBgUrDgMCGgUAMIIDOAYJKoZI</font></div>
                
            <div><font face="'Courier \
                New'">hvcNAQcBoIIDKQSCAyUwgAYJKoZIhvcNAQcDoIAwgAIBADGB8TCB7gIBADBXMFEx</font></div>
                
            <div><font face="'Courier \
                New'">DzANBgNVBAoMBm1oYXVjazE+MDwGA1UEAww1bWhhdWNrIFJvb3QgQ0EgKGVhYTc0</font></div>
                
            <div><font face="'Courier \
                New'">ODlkLTkxMTMtNGNhYi04NjJmLTMzNzM5ZTE4OTRkOCkCAihYMA0GCSqGSIb3DQEB</font></div>
                
            <div><font face="'Courier \
                New'">AQUABIGAYoNy0Hq/pWYHblRGNoClX+Lzki5eZCqduKkIoaRxLFpzx+2/O4JXnRs5</font></div>
                
            <div><font face="'Courier \
                New'">9Nxu261A5v43zQIsk3xxZGL7kAVjnJLXPXf31NNMNwIhrDvjeRKcO3W1uCmla9jH</font></div>
                
            <div><font face="'Courier \
                New'">oHsehgNxRBFzzXzNnx8S8lFQWwbcBAdlV/Pvsibc55yeMwesmkwwgAYJKoZIhvcN</font></div>
                
            <div><font face="'Courier \
                New'">AQcBMBQGCCqGSIb3DQMHBAj9IdLE5DwUWqCABIIB4LwzY9cSc+bwmvJZOqOrhltU</font></div>
                
            <div><font face="'Courier \
                New'">PROfU0q37TaTKAHa/3A2ANexdRBBAQhH6Wdt/9IFQ031a4Kq/s29nWYv0a5MKCe/</font></div>
                
            <div><font face="'Courier \
                New'">rkyjzhEem7UuPzdzPSWFRh25D3xdlP8eG1u5+WzomtqfjH/lEUFGCgvUVfAbIBPZ</font></div>
                
            <div><font face="'Courier \
                New'">uql3y+/yO4BaJ0/7oW3tFne3O3O8gzHIL4UFYsjYdWG7Q32dM5/oueNDhzmuK/RE</font></div>
                
            <div><font face="'Courier \
                New'">+VtZUqX3gRnMBnTe8V8Iro1M4ZsKTvLyiHSBU9FGD5OC/MPZ8kivVLXRLOGYVe0F</font></div>
                
            <div><font face="'Courier \
                New'">Va8JoeNj8CROXeD2KQT9y2/yHqWvbKEo5ma3G+4wosXikhen7qobg8RndFJ10s8B</font></div>
                
            <div><font face="'Courier \
                New'">II1q6vPVCWSwRmHIVBHUj9hCuqL5sA2G7v2Aw/ckTkr8rTKMpSkPBZ1psWY0dayI</font></div>
                
            <div><font face="'Courier \
                New'">HF6fpvvVrjLn7UuyAi4vFgZ/UWl3c04FPtaz/AlG1o5ZNBrJ8t+9TRNdX390a8G3</font></div>
                
            <div><font face="'Courier \
                New'">OdObWVzVPjMLKR90dfZIUWC2ZNZ4nbH/3raGAg9/3cvm2+GXTw2uEofg2g5t6fUF</font></div>
                
            <div><font face="'Courier \
                New'">SlaCvnJHFUS2DCNMxxmZal7njlZZ+JG2Bs7BSupCflozKfhv8CIw/bGrb0VhjAU2</font></div>
                
            <div><font face="'Courier \
                New'">okHpQytJHzihjVlvqjwtOzsGJihDKOUiqJvksYM0XAQIvaUmbxPqFi8AAAAAAAAA</font></div>
                
            <div><font face="'Courier \
                New'">AAAAoIIB6jCCAeYwggFPoAMCAQICAQEwDQYJKoZIhvcNAQEFBQAwLzEtMCsGA1UE</font></div>
                
            <div><font face="'Courier \
                New'">AxMkMzAzNTQ0QjMtNzVENi00MkU3LUEwMkYtMjAyOUI4OUIyMkRBMB4XDTEyMTIy</font></div>
                
            <div><font face="'Courier \
                New'">MDA0NDc1MVoXDTEzMTIyMDA0NDc1MVowLzEtMCsGA1UEAxMkMzAzNTQ0QjMtNzVE</font></div>
                
            <div><font face="'Courier \
                New'">Ni00MkU3LUEwMkYtMjAyOUI4OUIyMkRBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB</font></div>
                
            <div><font face="'Courier \
                New'">iQKBgQDDOKbuecgfTyYNhAm2ron/BYwf9e3hV/Tn3xwD2ZJ55/lhbm4GdFkHgnP5</font></div>
                
            <div><font face="'Courier \
                New'">4MWpRHhF53Uc5Q5lwv/KoMlNiiRoS6E6ozpT4toF2LAS+TR6KDTLuNsguIzB1bgg</font></div>
                
            <div><font face="'Courier \
                New'">QIU5J0mcniXK+sk3EKbNPQZgAsraByeR6FlHu77+mqUUGwSfbwIDAQABoxIwEDAO</font></div>
                
            <div><font face="'Courier \
                New'">BgNVHQ8BAf8EBAMCBaAwDQYJKoZIhvcNAQEFBQADgYEARKD3IenmsetbOEC3GDps</font></div>
                
            <div><font face="'Courier \
                New'">/tDcvJ1f10GlXmkca69ysYY+//A8If9WWGSelDgeRhBvY+YdvtGiGZhU98u0W6d7</font></div>
                
            <div><font face="'Courier \
                New'">C0ROpdo2ZjoxPo0MPE5BJyLv4qD93UPCqfqccGRfQKE26i5nsHheYD/UlPGXYDgE</font></div>
                
            <div><font face="'Courier \
                New'">KxvhUw0Ks2aqh8mIbucld1wxggGqMIIBpgIBATA0MC8xLTArBgNVBAMTJDMwMzU0</font></div>
                
            <div><font face="'Courier \
                New'">NEIzLTc1RDYtNDJFNy1BMDJGLTIwMjlCODlCMjJEQQIBATAJBgUrDgMCGgUAoIHN</font></div>
                
            <div><font face="'Courier \
                New'">MBIGCmCGSAGG+EUBCQIxBBMCMTkwGAYJKoZIhvcNAQkDMQsGCSqGSIb3DQEHATAc</font></div>
                
            <div><font face="'Courier \
                New'">BgkqhkiG9w0BCQUxDxcNMTIxMjIwMDQ0NzUxWjAgBgpghkgBhvhFAQkFMRIEEES2</font></div>
                
            <div><font face="'Courier \
                New'">qA7R7tIszFNieBliy7swIwYJKoZIhvcNAQkEMRYEFLf+h/5hopOnYfz8QqQAPixY</font></div>
                
            <div><font face="'Courier \
                New'">K+ThMDgGCmCGSAGG+EUBCQcxKhMoRUI2QkU5MTY3MjY3NzhCOTUzNEMzQkYyMzU4</font></div>
                
            <div><font face="'Courier \
                New'">Q0ZBNkYxMTFEQkZBOTANBgkqhkiG9w0BAQEFAASBgEdfe5atC8yZWlhrEi9z8Wsm</font></div>
                
            <div><font face="'Courier \
                New'">iV0F27NJ5IzYRPRFWr2buW1sx+w4WaIVzLFtaGGr6uH31KcNFjbjqO7Bl9szO7DL</font></div>
                
            <div><font face="'Courier \
                New'">cvS6on8d3Bw7WRwWG9HryGOPg0GAPRAL1sLVGc5hKTup4sTE4SJUYWwI7JF/UsH0</font></div>
                
            <div><font face="'Courier New'">x6/+M+zvYK9ba0yER7+1</font></div>
            <div><font face="'Courier New'">-----END PKCS7-----</font></div>
          </div>
        </div>
      </div>
      <div>
        <div><br>
        </div>
        <div>-- </div>
        <div>Matt Hauck<br>
        </div>
        <div><br>
        </div>
      </div>
    </blockquote>
    <br>
  </body>
</html>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic