summaryrefslogtreecommitdiffstats
path: root/bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java')
-rw-r--r--bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java b/bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java
index e1de22a..3d4d04c 100644
--- a/bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java
+++ b/bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java
@@ -6,6 +6,9 @@ import java.math.BigInteger;
import org.bouncycastle.util.Arrays;
+/**
+ * Use ASN1ObjectIdentifier instead of this,
+ */
public class DERObjectIdentifier
extends ASN1Primitive
{
@@ -38,7 +41,22 @@ public class DERObjectIdentifier
if (obj instanceof byte[])
{
- return ASN1ObjectIdentifier.fromOctetString((byte[])obj);
+ byte[] enc = (byte[])obj;
+ if (enc[0] == BERTags.OBJECT_IDENTIFIER)
+ {
+ try
+ {
+ return (ASN1ObjectIdentifier)fromByteArray(enc);
+ }
+ catch (IOException e)
+ {
+ throw new IllegalArgumentException("failed to construct sequence from byte[]: " + e.getMessage());
+ }
+ }
+ else
+ { // TODO: this really shouldn't be supported here...
+ return ASN1ObjectIdentifier.fromOctetString((byte[])obj);
+ }
}
throw new IllegalArgumentException("illegal object in getInstance: " + obj.getClass().getName());
@@ -148,6 +166,9 @@ public class DERObjectIdentifier
this.body = Arrays.clone(bytes);
}
+ /**
+ * @deprecated use ASN1ObjectIdentifier constructor.
+ */
public DERObjectIdentifier(
String identifier)
{