Diff
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java (1062 => 1063)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java 2008-07-21 18:41:30 UTC (rev 1063)
@@ -33,6 +33,7 @@
import javax.crypto.Cipher;
import java.util.List;
import org.bouncycastle.asn1.DEROctetString;
+import java.security.cert.X509CRL;
/** c: PKCS7
*
@@ -165,6 +166,13 @@
this.data.addCertificate(cert);
}
+ /** c: PKCS7_add_crl
+ *
+ */
+ public void addCRL(X509CRL crl) {
+ this.data.addCRL(crl);
+ }
+
/** c: PKCS7_add_recipient_info
*
*/
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java (1062 => 1063)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java 2008-07-21 18:41:30 UTC (rev 1063)
@@ -27,11 +27,12 @@
***** END LICENSE BLOCK *****/
package org.jruby.ext.openssl.impl;
+import java.security.cert.X509Certificate;
+import java.util.List;
+import javax.crypto.Cipher;
+import org.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1OctetString;
-import org.bouncycastle.asn1.ASN1Encodable;
-import javax.crypto.Cipher;
-import java.util.List;
-import java.security.cert.X509Certificate;
+import java.security.cert.X509CRL;
/**
* @author <a href="" PROTECTED]">Ola Bini</a>
@@ -125,4 +126,8 @@
public void addCertificate(X509Certificate cert) {
throw new PKCS7Exception(PKCS7.F_PKCS7_ADD_CERTIFICATE,PKCS7.R_WRONG_CONTENT_TYPE);
}
+
+ public void addCRL(X509CRL crl) {
+ throw new PKCS7Exception(PKCS7.F_PKCS7_ADD_CRL,PKCS7.R_WRONG_CONTENT_TYPE);
+ }
}// PKCS7Data
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java (1062 => 1063)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java 2008-07-21 18:41:30 UTC (rev 1063)
@@ -28,6 +28,8 @@
package org.jruby.ext.openssl.impl;
import java.util.List;
+import java.security.cert.X509CRL;
+
import java.security.cert.X509Certificate;
/**
@@ -100,4 +102,8 @@
public void addCertificate(X509Certificate cert) {
this.sign.getCert().add(cert);
}
+
+ public void addCRL(X509CRL crl) {
+ this.sign.getCrl().add(crl);
+ }
}// PKCS7DataSigned
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java (1062 => 1063)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java 2008-07-21 18:41:30 UTC (rev 1063)
@@ -27,8 +27,10 @@
***** END LICENSE BLOCK *****/
package org.jruby.ext.openssl.impl;
+import java.util.List;
import javax.crypto.Cipher;
-import java.util.List;
+import java.security.cert.X509CRL;
+
import java.security.cert.X509Certificate;
/**
@@ -77,4 +79,8 @@
public void addCertificate(X509Certificate cert) {
this.signedAndEnveloped.getCert().add(cert);
}
+
+ public void addCRL(X509CRL crl) {
+ this.signedAndEnveloped.getCrl().add(crl);
+ }
}// PKCS7DataSignedAndEnveloped
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java (1062 => 1063)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java 2008-07-21 18:41:30 UTC (rev 1063)
@@ -27,11 +27,12 @@
***** END LICENSE BLOCK *****/
package org.jruby.ext.openssl.impl;
-import java.util.List;
+import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
-import java.security.cert.X509Certificate;
+import java.security.cert.X509CRL;
/** PKCS7_SIGN_ENVELOPE
*
@@ -46,6 +47,11 @@
private EncContent encData = new EncContent();
/**
+ * Describe crl here.
+ */
+ private List<X509CRL> crl = new ArrayList<X509CRL>();
+
+ /**
* Describe cert here.
*/
private List<X509Certificate> cert = new ArrayList<X509Certificate>();
@@ -172,4 +178,22 @@
public final void setCert(final List<X509Certificate> newCert) {
this.cert = newCert;
}
+
+ /**
+ * Get the <code>Crl</code> value.
+ *
+ * @return a <code>List<X509CRL></code> value
+ */
+ public final List<X509CRL> getCrl() {
+ return crl;
+ }
+
+ /**
+ * Set the <code>Crl</code> value.
+ *
+ * @param newCrl The new Crl value.
+ */
+ public final void setCrl(final List<X509CRL> newCrl) {
+ this.crl = newCrl;
+ }
}// SignEnvelope
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java (1062 => 1063)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java 2008-07-21 18:41:30 UTC (rev 1063)
@@ -27,11 +27,12 @@
***** END LICENSE BLOCK *****/
package org.jruby.ext.openssl.impl;
+import java.security.cert.X509CRL;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
-import java.util.ArrayList;
import java.util.Set;
-import java.util.HashSet;
-import java.security.cert.X509Certificate;
/** PKCS7_SIGNED
*
@@ -44,6 +45,11 @@
private int version;
/**
+ * Describe crl here.
+ */
+ private List<X509CRL> crl = new ArrayList<X509CRL>();
+
+ /**
* Describe cert here.
*/
private List<X509Certificate> cert = new ArrayList<X509Certificate>();
@@ -149,4 +155,22 @@
public final void setCert(final List<X509Certificate> newCert) {
this.cert = newCert;
}
+
+ /**
+ * Get the <code>Crl</code> value.
+ *
+ * @return a <code>List<X509CRL></code> value
+ */
+ public final List<X509CRL> getCrl() {
+ return crl;
+ }
+
+ /**
+ * Set the <code>Crl</code> value.
+ *
+ * @param newCrl The new Crl value.
+ */
+ public final void setCrl(final List<X509CRL> newCrl) {
+ this.crl = newCrl;
+ }
}// Signed
Modified: trunk/jopenssl/test/openssl/utils.rb (1062 => 1063)
--- trunk/jopenssl/test/openssl/utils.rb 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/test/openssl/utils.rb 2008-07-21 18:41:30 UTC (rev 1063)
@@ -121,6 +121,9 @@
crl.add_extension(ef.create_extension(oid, value, critical))
}
crl.sign(issuer_key, digest)
+ File.open("crls", "a") do |f|
+ f.puts crl
+ end
crl
end
Modified: trunk/jopenssl/test/test_java_pkcs7.rb (1062 => 1063)
--- trunk/jopenssl/test/test_java_pkcs7.rb 2008-07-21 18:41:27 UTC (rev 1062)
+++ trunk/jopenssl/test/test_java_pkcs7.rb 2008-07-21 18:41:30 UTC (rev 1063)
@@ -22,6 +22,10 @@
Signed = org.jruby.ext.openssl.impl.Signed unless defined?(Signed)
SignerInfo = org.jruby.ext.openssl.impl.SignerInfo unless defined?(SignerInfo)
+ CertificateFactory = java.security.cert.CertificateFactory unless defined?(CertificateFactory)
+ BCP = org.bouncycastle.jce.provider.BouncyCastleProvider unless defined?(BCP)
+ ByteArrayInputStream = java.io.ByteArrayInputStream unless defined?(ByteArrayInputStream)
+
X509CertString = <<CERT
-----BEGIN CERTIFICATE-----
MIICijCCAXKgAwIBAgIBAjANBgkqhkiG9w0BAQUFADA9MRMwEQYKCZImiZPyLGQB
@@ -40,8 +44,23 @@
dqbS54IKvzElD+R0QVS2z6TIGJSpuSBnZ4yfuNuq
-----END CERTIFICATE-----
CERT
+
+ X509CRLString = <<CRL
+----BEGIN X509 CRL-----
+MIIBlTB/AgEBMA0GCSqGSIb3DQEBBQUAMD0xEzARBgoJkiaJk/IsZAEZFgNvcmcx
+GTAXBgoJkiaJk/IsZAEZFglydWJ5LWxhbmcxCzAJBgNVBAMMAkNBFw0wODA3MTgx
+NzQxMjhaFw0wODA3MTgxODA4MDhaoA4wDDAKBgNVHRQEAwIBATANBgkqhkiG9w0B
+AQUFAAOCAQEASJaj1keN+tMmsF3QmjH2RhbW/9rZAl4gjv+uQQqrcS2ByfkXLU1d
+l/8rCHeT/XMoeU6xhQNHPP3uZBwfuuETcp65BMBcZFOUhUR0U5AaGhvSDS/+6EsP
+zFdQgAagmThFdN5ei9guTLqWwN0ZyqiaHyevFJuk+L9qbKavaSeKqfJbU7Sj/Z3J
+WLKoixvyj3N6W7evygH80lTvjZugmxJ1/AjICVSYr1hpHHd6EWq0b0YFrGFmg27R
+WmsAXd0QV5UChfAJ2+Cz5U1bPszvIJGrzfAIoLxHv5rI5rseQzqZdPaFSe4Oehln
+9qEYmsK3PS6bYoQol0cgj97Ep4olS8CulA==
+-----END X509 CRL-----
+CRL
- X509Cert = java.security.cert.CertificateFactory.getInstance("X.509").generateCertificate(java.io.ByteArrayInputStream.new(X509CertString.to_java_bytes))
+ X509Cert = CertificateFactory.getInstance("X.509",BCP.new).generateCertificate(ByteArrayInputStream.new(X509CertString.to_java_bytes))
+ X509CRL = CertificateFactory.getInstance("X.509",BCP.new).generateCRL(ByteArrayInputStream.new(X509CRLString.to_java_bytes))
class TestJavaSignerInfo < Test::Unit::TestCase
def test_get_attribute_with_nonexisting_nid
@@ -783,6 +802,54 @@
assert_equal 1, p7.get_signed_and_enveloped.cert.size
assert_equal X509Cert, p7.get_signed_and_enveloped.cert.get(0)
end
+
+ def test_add_crl_on_data_throws_exception
+ p7 = PKCS7.new
+ p7.type = PKCS7::NID_pkcs7_data
+ assert_raises NativeException do
+ p7.add_crl(X509CRL)
+ end
+ end
+
+ def test_add_crl_on_enveloped_throws_exception
+ p7 = PKCS7.new
+ p7.type = PKCS7::NID_pkcs7_enveloped
+ assert_raises NativeException do
+ p7.add_crl(X509CRL)
+ end
+ end
+
+ def test_add_crl_on_encrypted_throws_exception
+ p7 = PKCS7.new
+ p7.type = PKCS7::NID_pkcs7_encrypted
+ assert_raises NativeException do
+ p7.add_crl(X509CRL)
+ end
+ end
+
+ def test_add_crl_on_digest_throws_exception
+ p7 = PKCS7.new
+ p7.type = PKCS7::NID_pkcs7_digest
+ assert_raises NativeException do
+ p7.add_crl(X509CRL)
+ end
+ end
+
+ def test_add_crl_on_signed_adds_the_crl
+ p7 = PKCS7.new
+ 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)
+ end
+
+ def test_add_crl_on_signedAndEnveloped_adds_the_crl
+ p7 = PKCS7.new
+ p7.type = PKCS7::NID_pkcs7_signedAndEnveloped
+ p7.add_crl(X509CRL)
+ assert_equal 1, p7.get_signed_and_enveloped.crl.size
+ assert_equal X509CRL, p7.get_signed_and_enveloped.crl.get(0)
+ end
end
end
end