Title: [1063] trunk/jopenssl: Add support for the PKCS7_add_crl operation

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
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to