Title: [1062] trunk/jopenssl: Add support for PKCS7_add_certificate

Diff

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java (1061 => 1062)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java	2008-07-21 18:41:27 UTC (rev 1062)
@@ -158,6 +158,13 @@
         this.data.addSigner(psi);
     }
 
+    /** c: PKCS7_add_certificate
+     *
+     */
+    public void addCertificate(X509Certificate cert) {
+        this.data.addCertificate(cert);
+    }
+
     /** c: PKCS7_add_recipient_info
      *
      */

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java (1061 => 1062)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java	2008-07-21 18:41:27 UTC (rev 1062)
@@ -31,6 +31,7 @@
 import org.bouncycastle.asn1.ASN1Encodable;
 import javax.crypto.Cipher;
 import java.util.List;
+import java.security.cert.X509Certificate;
 
 /**
  * @author <a href="" PROTECTED]">Ola Bini</a>
@@ -120,4 +121,8 @@
     public List<SignerInfo> getSignerInfo() {
         return null;
     }
+
+    public void addCertificate(X509Certificate cert) {
+        throw new PKCS7Exception(PKCS7.F_PKCS7_ADD_CERTIFICATE,PKCS7.R_WRONG_CONTENT_TYPE);
+    }
 }// PKCS7Data

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java (1061 => 1062)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java	2008-07-21 18:41:27 UTC (rev 1062)
@@ -28,6 +28,7 @@
 package org.jruby.ext.openssl.impl;
 
 import java.util.List;
+import java.security.cert.X509Certificate;
 
 /**
  *
@@ -95,4 +96,8 @@
     public List<SignerInfo> getSignerInfo() {
         return this.sign.getSignerInfo();
     }
+
+    public void addCertificate(X509Certificate cert) {
+        this.sign.getCert().add(cert);
+    }
 }// PKCS7DataSigned

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java (1061 => 1062)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSignedAndEnveloped.java	2008-07-21 18:41:27 UTC (rev 1062)
@@ -29,6 +29,7 @@
 
 import javax.crypto.Cipher;
 import java.util.List;
+import java.security.cert.X509Certificate;
 
 /**
  *
@@ -72,4 +73,8 @@
     public List<SignerInfo> getSignerInfo() {
         return this.signedAndEnveloped.getSignerInfo();
     }
+
+    public void addCertificate(X509Certificate cert) {
+        this.signedAndEnveloped.getCert().add(cert);
+    }
 }// PKCS7DataSignedAndEnveloped

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java (1061 => 1062)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignEnvelope.java	2008-07-21 18:41:27 UTC (rev 1062)
@@ -31,6 +31,7 @@
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.Set;
+import java.security.cert.X509Certificate;
 
 /** PKCS7_SIGN_ENVELOPE
  *
@@ -45,6 +46,11 @@
     private EncContent encData = new EncContent();
 
     /**
+     * Describe cert here.
+     */
+    private List<X509Certificate> cert = new ArrayList<X509Certificate>();
+
+    /**
      * Describe mdAlgs here.
      */
     private Set<String> mdAlgs = new HashSet<String>();
@@ -148,4 +154,22 @@
     public final void setMdAlgs(final Set<String> newMdAlgs) {
         this.mdAlgs = newMdAlgs;
     }
+
+    /**
+     * Get the <code>Cert</code> value.
+     *
+     * @return a <code>List<X509Certificate></code> value
+     */
+    public final List<X509Certificate> getCert() {
+        return cert;
+    }
+
+    /**
+     * Set the <code>Cert</code> value.
+     *
+     * @param newCert The new Cert value.
+     */
+    public final void setCert(final List<X509Certificate> newCert) {
+        this.cert = newCert;
+    }
 }// SignEnvelope

Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java (1061 => 1062)


--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java	2008-07-21 18:41:27 UTC (rev 1062)
@@ -31,6 +31,7 @@
 import java.util.ArrayList;
 import java.util.Set;
 import java.util.HashSet;
+import java.security.cert.X509Certificate;
 
 /** PKCS7_SIGNED
  *
@@ -43,6 +44,11 @@
     private int version;
 
     /**
+     * Describe cert here.
+     */
+    private List<X509Certificate> cert = new ArrayList<X509Certificate>();
+
+    /**
      * Describe mdAlgs here.
      */
     private Set<String> mdAlgs = new HashSet<String>();
@@ -125,4 +131,22 @@
     public final void setContents(final PKCS7 newContents) {
         this.contents = newContents;
     }
+
+    /**
+     * Get the <code>Cert</code> value.
+     *
+     * @return a <code>List<X509Certificate></code> value
+     */
+    public final List<X509Certificate> getCert() {
+        return cert;
+    }
+
+    /**
+     * Set the <code>Cert</code> value.
+     *
+     * @param newCert The new Cert value.
+     */
+    public final void setCert(final List<X509Certificate> newCert) {
+        this.cert = newCert;
+    }
 }// Signed

Modified: trunk/jopenssl/test/test_java_pkcs7.rb (1061 => 1062)


--- trunk/jopenssl/test/test_java_pkcs7.rb	2008-07-21 18:41:25 UTC (rev 1061)
+++ trunk/jopenssl/test/test_java_pkcs7.rb	2008-07-21 18:41:27 UTC (rev 1062)
@@ -734,6 +734,55 @@
         p7.content_new(PKCS7::NID_pkcs7_encrypted)
         assert p7.get_sign.contents.encrypted?
       end
+
+    
+      def test_add_certificate_on_data_throws_exception
+        p7 = PKCS7.new
+        p7.type = PKCS7::NID_pkcs7_data
+        assert_raises NativeException do 
+          p7.add_certificate(X509Cert)
+        end
+      end
+
+      def test_add_certificate_on_enveloped_throws_exception
+        p7 = PKCS7.new
+        p7.type = PKCS7::NID_pkcs7_enveloped
+        assert_raises NativeException do 
+          p7.add_certificate(X509Cert)
+        end
+      end
+
+      def test_add_certificate_on_encrypted_throws_exception
+        p7 = PKCS7.new
+        p7.type = PKCS7::NID_pkcs7_encrypted
+        assert_raises NativeException do 
+          p7.add_certificate(X509Cert)
+        end
+      end
+
+      def test_add_certificate_on_digest_throws_exception
+        p7 = PKCS7.new
+        p7.type = PKCS7::NID_pkcs7_digest
+        assert_raises NativeException do 
+          p7.add_certificate(X509Cert)
+        end
+      end
+
+      def test_add_certificate_on_signed_adds_the_certificate
+        p7 = PKCS7.new
+        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)
+      end
+
+      def test_add_certificate_on_signedAndEnveloped_adds_the_certificate
+        p7 = PKCS7.new
+        p7.type = PKCS7::NID_pkcs7_signedAndEnveloped
+        p7.add_certificate(X509Cert)
+        assert_equal 1, p7.get_signed_and_enveloped.cert.size
+        assert_equal X509Cert, p7.get_signed_and_enveloped.cert.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