Title: [1138] trunk/jopenssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.
java: Fix for JRUBY-2992: Bad cast in jruby-openssl X509Utils
- Revision
- 1138
- Author
- headius
- Date
- 2008-12-17 12:56:32 -0500 (Wed, 17 Dec 2008)
Log Message
Fix for JRUBY-2992: Bad cast in jruby-openssl X509Utils
Since it appears that the getName call may alternately return an X509Name or a DERSequence, I'm going with a modified version of Justin Coyne's patch that will handle either appropriately. Hopefully this will resolve all issues for everyone. I'd still love to know what I'm actually doing here...this is dart throwing for sure.
Modified Paths
Diff
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java (1137 => 1138)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java 2008-12-17 17:00:50 UTC (rev 1137)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/x509store/X509Utils.java 2008-12-17 17:56:32 UTC (rev 1138)
@@ -32,6 +32,7 @@
import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Sequence;
+import org.bouncycastle.asn1.DEREncodable;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.DERTaggedObject;
@@ -250,7 +251,14 @@
X509Name nm = null;
for(int i=0;i<gens.length;i++) {
if(gens[i].getTagNo() == GeneralName.directoryName) {
- nm = (X509Name)gens[i].getName();
+ DEREncodable nameTmp = gens[i].getName();
+ if (nameTmp instanceof X509Name) {
+ nm = (X509Name)nameTmp;
+ } else if (nameTmp instanceof DERSequence) {
+ nm = new X509Name((DERSequence)nameTmp);
+ } else {
+ throw new RuntimeException("unknown name type in X509Utils: " + nameTmp);
+ }
break;
}
}
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel