Title: [1059] trunk/jopenssl: Add support for getting attributes from SignerInfo
- Revision
- 1059
- Author
- olabini
- Date
- 2008-07-21 14:41:20 -0400 (Mon, 21 Jul 2008)
Log Message
Add support for getting attributes from SignerInfo
Modified Paths
Diff
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Attribute.java (1058 => 1059)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Attribute.java 2008-07-21 18:41:18 UTC (rev 1058)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Attribute.java 2008-07-21 18:41:20 UTC (rev 1059)
@@ -61,6 +61,10 @@
return set;
}
+ public boolean isSingle() {
+ return this.single;
+ }
+
@Override
public boolean equals(Object obj) {
boolean ret = this == obj;
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignerInfo.java (1058 => 1059)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignerInfo.java 2008-07-21 18:41:18 UTC (rev 1058)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/SignerInfo.java 2008-07-21 18:41:20 UTC (rev 1059)
@@ -86,7 +86,7 @@
}
- /** c: add_attribute
+ /** c: static(pk7_doit.c) add_attribute
*
*/
private void addAttribute(List<Attribute> sk, int nid, int atrtype, ASN1Encodable value) {
@@ -100,4 +100,36 @@
}
sk.add(attr);
}
+
+ /** c: PKCS7_get_signed_attribute
+ *
+ */
+ public ASN1Encodable getSignedAttribute(int nid) {
+ return getAttribute(authAttr, nid);
+ }
+
+ /** c: PKCS7_get_attribute
+ *
+ */
+ public ASN1Encodable getAttribute(int nid) {
+ return getAttribute(unauthAttr, nid);
+ }
+
+
+ /** c: static(pk7_doit.c) get_attribute
+ *
+ */
+ private ASN1Encodable getAttribute(List<Attribute> sk, int nid) {
+ for(int i=0,j=sk.size(); i<j; i++) {
+ Attribute attr = sk.get(i);
+ if(attr.getType() == nid) {
+ if(!attr.isSingle() && attr.getSet().size() > 0) {
+ return attr.getSet().get(0);
+ } else {
+ return null;
+ }
+ }
+ }
+ return null;
+ }
}// SignerInfo
Modified: trunk/jopenssl/test/test_java_pkcs7.rb (1058 => 1059)
--- trunk/jopenssl/test/test_java_pkcs7.rb 2008-07-21 18:41:18 UTC (rev 1058)
+++ trunk/jopenssl/test/test_java_pkcs7.rb 2008-07-21 18:41:20 UTC (rev 1059)
@@ -44,6 +44,51 @@
X509Cert = java.security.cert.CertificateFactory.getInstance("X.509").generateCertificate(java.io.ByteArrayInputStream.new(X509CertString.to_java_bytes))
class TestJavaSignerInfo < Test::Unit::TestCase
+ def test_get_attribute_with_nonexisting_nid
+ assert_nil SignerInfo.new.get_attribute(321)
+ val = ASN1::OctetString.new("foo".to_java_bytes)
+
+ si = SignerInfo.new
+ si.add_attribute(123, 444, val)
+ assert_nil si.get_attribute(321)
+ end
+
+ def test_get_attribute_with_existing_nid
+ val = ASN1::OctetString.new("foo".to_java_bytes)
+ val2 = ASN1::OctetString.new("bar".to_java_bytes)
+
+ si = SignerInfo.new
+ si.add_attribute(123, 444, val)
+ assert_equal val, si.get_attribute(123)
+
+ si.add_attribute(124, 444, val2)
+ assert_equal val, si.get_attribute(123)
+ assert_equal val2, si.get_attribute(124)
+ end
+
+ def test_get_signed_attribute_with_nonexisting_nid
+ assert_nil SignerInfo.new.get_signed_attribute(321)
+ val = ASN1::OctetString.new("foo".to_java_bytes)
+ attr1 = Attribute.create(123, 444, val)
+
+ si = SignerInfo.new
+ si.add_signed_attribute(123, 444, val)
+ assert_nil si.get_signed_attribute(321)
+ end
+
+ def test_get_signed_attribute_with_existing_nid
+ val = ASN1::OctetString.new("foo".to_java_bytes)
+ val2 = ASN1::OctetString.new("bar".to_java_bytes)
+
+ si = SignerInfo.new
+ si.add_signed_attribute(123, 444, val)
+ assert_equal val, si.get_signed_attribute(123)
+
+ si.add_signed_attribute(124, 444, val2)
+ assert_equal val, si.get_signed_attribute(123)
+ assert_equal val2, si.get_signed_attribute(124)
+ end
+
def test_add_signed_attribute
val = ASN1::OctetString.new("foo".to_java_bytes)
val2 = ASN1::OctetString.new("bar".to_java_bytes)
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel