resolve darcs stupidity
[org.ibex.core.git] / src / org / bouncycastle / asn1 / x509 / DigestInfo.java
index b15d37e..5a2f27a 100644 (file)
@@ -3,7 +3,6 @@ package org.bouncycastle.asn1.x509;
 import java.util.Enumeration;
 
 import org.bouncycastle.asn1.*;
-import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
 
 /**
  * <pre>
@@ -13,11 +12,33 @@ import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
  * </pre>
  */
 public class DigestInfo
-    implements PKCSObjectIdentifiers, DEREncodable
+    implements DEREncodable
 {
     private byte[]                  digest;
     private AlgorithmIdentifier     algId;
 
+    public static DigestInfo getInstance(
+        ASN1TaggedObject obj,
+        boolean          explicit)
+    {
+        return getInstance(ASN1Sequence.getInstance(obj, explicit));
+    }
+
+    public static DigestInfo getInstance(
+        Object  obj)
+    {
+        if (obj instanceof DigestInfo)
+        {
+            return (DigestInfo)obj;
+        }
+        else if (obj instanceof ASN1Sequence)
+        {
+            return new DigestInfo((ASN1Sequence)obj);
+        }
+
+        throw new IllegalArgumentException("unknown object in factory");
+    }
+
     public DigestInfo(
         AlgorithmIdentifier  algId,
         byte[]               digest)
@@ -27,12 +48,12 @@ public class DigestInfo
     }
 
     public DigestInfo(
-        DERConstructedSequence  seq)
+        ASN1Sequence  obj)
     {
-        Enumeration             e = seq.getObjects();
+        Enumeration             e = obj.getObjects();
 
-        algId = new AlgorithmIdentifier((DERConstructedSequence)e.nextElement());
-        digest = ((DEROctetString)e.nextElement()).getOctets();
+        algId = AlgorithmIdentifier.getInstance(e.nextElement());
+        digest = ((ASN1OctetString)e.nextElement()).getOctets();
     }
 
     public AlgorithmIdentifier getAlgorithmId()
@@ -47,11 +68,11 @@ public class DigestInfo
 
     public DERObject getDERObject()
     {
-        DERConstructedSequence  seq = new DERConstructedSequence();
+        DEREncodableVector  v = new DEREncodableVector();
 
-        seq.addObject(algId);
-        seq.addObject(new DEROctetString(digest));
+        v.add(algId);
+        v.add(new DEROctetString(digest));
 
-        return seq;
+        return new DERSequence(v);
     }
 }