Title: [1079] trunk/jopenssl:
Finish implementation of reading of Signed PKCS#7 stuff
- Revision
- 1079
- Author
- olabini
- Date
- 2008-07-27 12:10:46 -0400 (Sun, 27 Jul 2008)
Log Message
Finish implementation of reading of Signed PKCS#7 stuff
Modified Paths
Diff
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java (1078 => 1079)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java 2008-07-27 16:10:44 UTC (rev 1078)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java 2008-07-27 16:10:46 UTC (rev 1079)
@@ -27,6 +27,7 @@
***** END LICENSE BLOCK *****/
package org.jruby.ext.openssl.impl;
+import java.security.cert.CertificateParsingException;
import java.security.cert.X509CRL;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
@@ -42,6 +43,8 @@
import org.bouncycastle.asn1.DERTaggedObject;
import org.bouncycastle.asn1.pkcs.SignerInfo;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
+import org.bouncycastle.asn1.x509.X509CertificateStructure;
+import org.bouncycastle.jce.provider.X509CertificateObject;
/** PKCS7_SIGNED
*
@@ -56,12 +59,12 @@
/**
* Describe crl here.
*/
- private List<X509CRL> crl = new ArrayList<X509CRL>();
+ private Set<X509CRL> crl = new HashSet<X509CRL>();
/**
* Describe cert here.
*/
- private List<X509Certificate> cert = new ArrayList<X509Certificate>();
+ private Set<X509Certificate> cert = new HashSet<X509Certificate>();
/**
* Describe mdAlgs here.
@@ -150,9 +153,9 @@
/**
* Get the <code>Cert</code> value.
*
- * @return a <code>List<X509Certificate></code> value
+ * @return a <code>Set<X509Certificate></code> value
*/
- public final List<X509Certificate> getCert() {
+ public final Set<X509Certificate> getCert() {
return cert;
}
@@ -161,16 +164,16 @@
*
* @param newCert The new Cert value.
*/
- public final void setCert(final List<X509Certificate> newCert) {
+ public final void setCert(final Set<X509Certificate> newCert) {
this.cert = newCert;
}
/**
* Get the <code>Crl</code> value.
*
- * @return a <code>List<X509CRL></code> value
+ * @return a <code>Set<X509CRL></code> value
*/
- public final List<X509CRL> getCrl() {
+ public final Set<X509CRL> getCrl() {
return crl;
}
@@ -179,7 +182,7 @@
*
* @param newCrl The new Crl value.
*/
- public final void setCrl(final List<X509CRL> newCrl) {
+ public final void setCrl(final Set<X509CRL> newCrl) {
this.crl = newCrl;
}
@@ -232,16 +235,28 @@
signed.setMdAlgs(algorithmIdentifiersFromASN1Set(digestAlgos));
signed.setContents(PKCS7.fromASN1(contentInfo));
if(certificates != null) {
- System.err.println("Certs: " + certificates);
+ signed.setCert(certificatesFromASN1Set(certificates));
}
if(crls != null) {
- System.err.println("CRLs: " + crls);
+ throw new RuntimeException("TODO implement CRL part");
}
signed.setSignerInfo(signerInfosFromASN1Set(signerInfos));
return signed;
}
+ private static Set<X509Certificate> certificatesFromASN1Set(DEREncodable content) {
+ Set<X509Certificate> result = new HashSet<X509Certificate>();
+ X509CertificateStructure struct = X509CertificateStructure.getInstance(content);
+ // TODO: This needs to check for the possibility of PKCS#6 ExtendedCertificate too
+ try {
+ result.add(new X509CertificateObject(struct));
+ } catch(CertificateParsingException ex) {
+ throw new PKCS7Exception(PKCS7.F_B64_READ_PKCS7, PKCS7.R_CERTIFICATE_VERIFY_ERROR, "exception: " + ex);
+ }
+ return result;
+ }
+
private static Set<AlgorithmIdentifier> algorithmIdentifiersFromASN1Set(DEREncodable content) {
ASN1Set set = (ASN1Set)content;
Set<AlgorithmIdentifier> result = new HashSet<AlgorithmIdentifier>();
Modified: trunk/jopenssl/test/test_java_pkcs7.rb (1078 => 1079)
--- trunk/jopenssl/test/test_java_pkcs7.rb 2008-07-27 16:10:44 UTC (rev 1078)
+++ trunk/jopenssl/test/test_java_pkcs7.rb 2008-07-27 16:10:46 UTC (rev 1079)
@@ -626,7 +626,7 @@
p7.type = PKCS7::NID_pkcs7_signed
p7.add_certificate(X509Cert)
assert_equal 1, p7.get_sign.cert.size
- assert_equal X509Cert, p7.get_sign.cert.get(0)
+ assert_equal X509Cert, p7.get_sign.cert.iterator.next
end
def test_add_certificate_on_signedAndEnveloped_adds_the_certificate
@@ -674,7 +674,7 @@
p7.type = PKCS7::NID_pkcs7_signed
p7.add_crl(X509CRL)
assert_equal 1, p7.get_sign.crl.size
- assert_equal X509CRL, p7.get_sign.crl.get(0)
+ assert_equal X509CRL, p7.get_sign.crl.iterator.next
end
def test_add_crl_on_signedAndEnveloped_adds_the_crl
Modified: trunk/jopenssl/test/test_java_smime.rb (1078 => 1079)
--- trunk/jopenssl/test/test_java_smime.rb 2008-07-27 16:10:44 UTC (rev 1078)
+++ trunk/jopenssl/test/test_java_smime.rb 2008-07-27 16:10:46 UTC (rev 1079)
@@ -161,7 +161,6 @@
bio = BIO::from_string(MultipartSignedString)
mime = Mime::DEFAULT
p7 = SMIME.new(mime).readPKCS7(bio, nil)
- puts p7
end
end
end
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel