Diff
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/ASN1Registry.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -50,7 +50,7 @@
}
public static String ln2oid(String ln) {
- return SYM_TO_OID.get(ln).getId();
+ return SYM_TO_OID.get(ln.toLowerCase()).getId();
}
public static Integer obj2nid(DERObjectIdentifier oid) {
@@ -67,11 +67,11 @@
}
public static DERObjectIdentifier sym2oid(String name) {
- return SYM_TO_OID.get(name);
+ return SYM_TO_OID.get(name.toLowerCase());
}
public static int sym2nid(String name) {
- return OID_TO_NID.get(SYM_TO_OID.get(name));
+ return OID_TO_NID.get(SYM_TO_OID.get(name.toLowerCase()));
}
public static String nid2ln(int nid) {
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/BIO.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/BIO.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/BIO.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -189,7 +189,7 @@
*
*/
public void crlfCopy(byte[] in, int flags) throws IOException {
- // throw new UnsupportedOperationException();
+ throw new RuntimeException("TODO: implement");
}
/** c: BIO_gets
@@ -255,6 +255,20 @@
*
*/
public BIO findType(int type) {
+ int mask = type & 0xFF;
+ BIO bio = this;
+ do {
+ int mt = bio.getType();
+ if(mask == 0) {
+ if((mt & type) != 0) {
+ return bio;
+ }
+ } else if(mt == type) {
+ return bio;
+ }
+ bio = bio.nextBio;
+ } while(bio != null);
+
return null;
}
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -155,12 +155,8 @@
return p7;
} catch(IOException e) {
- // TODO: Handle correctly
- } catch(PKCS7Exception e) {
- // Equiv of err:
- // TODO: Handle different exceptions correctly here
+ throw new PKCS7Exception(F_PKCS7_ENCRYPT, R_PKCS7_DATAFINAL_ERROR, e.toString());
}
- return null;
}
/** c: PKCS7_set_type
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Data.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -44,8 +44,14 @@
public abstract int getType();
public Object ctrl(int cmd, Object v, Object ignored) {
- // TODO: Error
- return Integer.valueOf(0);
+ switch(cmd) {
+ case PKCS7.OP_SET_DETACHED_SIGNATURE:
+ throw new PKCS7Exception(PKCS7.F_PKCS7_CTRL,PKCS7.R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE);
+ case PKCS7.OP_GET_DETACHED_SIGNATURE:
+ throw new PKCS7Exception(PKCS7.F_PKCS7_CTRL,PKCS7.R_OPERATION_NOT_SUPPORTED_ON_THIS_TYPE);
+ default:
+ throw new PKCS7Exception(PKCS7.F_PKCS7_CTRL,PKCS7.R_UNKNOWN_OPERATION);
+ }
}
public Envelope getEnveloped() {
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7DataSigned.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -76,8 +76,7 @@
}
break;
default:
- // TODO: ERR
- ret = 0;
+ throw new RuntimeException("TODO: implement error handling");
}
return Integer.valueOf(ret);
}
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/PKCS7Exception.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -41,7 +41,7 @@
}
public PKCS7Exception(int method, int reason, String errorData) {
- super();
+ super("PKCS7[Method: " + method + ", Reason: " + reason + ", Data: " + errorData + "]");
this.method = method;
this.reason = reason;
this.errorData = errorData;
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/RecipInfo.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -27,13 +27,18 @@
***** END LICENSE BLOCK *****/
package org.jruby.ext.openssl.impl;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.math.BigInteger;
import java.security.cert.X509Certificate;
+import org.bouncycastle.asn1.ASN1InputStream;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.DEREncodable;
import org.bouncycastle.asn1.DERInteger;
import org.bouncycastle.asn1.DERSequence;
import org.bouncycastle.asn1.pkcs.IssuerAndSerialNumber;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
+import org.bouncycastle.asn1.x509.X509Name;
/** PKCS7_RECIP_INFO
*
@@ -53,9 +58,17 @@
/** c: PKCS7_RECIP_INFO_set
*
*/
- public void set(X509Certificate cert) {
- // TODO: implement
- setCert(cert);
+ public void set(X509Certificate cert) {
+ version = 0;
+ try {
+ X509Name issuer = X509Name.getInstance(new ASN1InputStream(new ByteArrayInputStream(cert.getIssuerX500Principal().getEncoded())).readObject());
+ BigInteger serial = cert.getSerialNumber();
+ issuerAndSerial = new IssuerAndSerialNumber(issuer, serial);
+ keyEncAlgor = new AlgorithmIdentifier(ASN1Registry.sym2oid(cert.getPublicKey().getAlgorithm()));
+ this.cert = cert;
+ } catch(IOException e) {
+ throw new PKCS7Exception(-1, -1);
+ }
}
@Override
Modified: trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java (1093 => 1094)
--- trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/src/java/org/jruby/ext/openssl/impl/Signed.java 2008-08-08 10:54:26 UTC (rev 1094)
@@ -238,7 +238,7 @@
signed.setCert(certificatesFromASN1Set(certificates));
}
if(crls != null) {
- throw new RuntimeException("TODO implement CRL part");
+ throw new RuntimeException("TODO: implement CRL part");
}
signed.setSignerInfo(signerInfosFromASN1Set(signerInfos));
@@ -248,7 +248,6 @@
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) {
Modified: trunk/jopenssl/test/test_java_pkcs7.rb (1093 => 1094)
--- trunk/jopenssl/test/test_java_pkcs7.rb 2008-08-08 10:54:21 UTC (rev 1093)
+++ trunk/jopenssl/test/test_java_pkcs7.rb 2008-08-08 10:54:26 UTC (rev 1094)
@@ -122,7 +122,6 @@
p7 = PKCS7.new
p7.type = ASN1Registry::NID_pkcs7_data
- p7.detached = 1
assert !p7.detached?
end