[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.<init>(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.<init>(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.<init>(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