diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/asn1/DERObjectIdentifier.java | 23 |
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) { |