diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2021-11-18 13:46:18 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2021-11-18 13:46:18 +0700 |
commit | 4fccb8f490eefe7181558b2c3376ab23c33632ee (patch) | |
tree | fe8c1877bb5567cb4823823af77e5c8a38423db8 /crypto/src/asn1/Asn1RelativeOid.cs | |
parent | ASN.1: Staged encoding (diff) | |
download | BouncyCastle.NET-ed25519-4fccb8f490eefe7181558b2c3376ab23c33632ee.tar.xz |
ASN.1: Port of bc-java TYPE instances
- we use Meta.Instance here due to syntax restrictions - also reworked some ASN.1 string types
Diffstat (limited to 'crypto/src/asn1/Asn1RelativeOid.cs')
-rw-r--r-- | crypto/src/asn1/Asn1RelativeOid.cs | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/crypto/src/asn1/Asn1RelativeOid.cs b/crypto/src/asn1/Asn1RelativeOid.cs index a960b50bf..9c4f917f2 100644 --- a/crypto/src/asn1/Asn1RelativeOid.cs +++ b/crypto/src/asn1/Asn1RelativeOid.cs @@ -10,6 +10,18 @@ namespace Org.BouncyCastle.Asn1 public class Asn1RelativeOid : Asn1Object { + internal class Meta : Asn1UniversalType + { + internal static readonly Asn1UniversalType Instance = new Meta(); + + private Meta() : base(typeof(Asn1RelativeOid), Asn1Tags.RelativeOid) {} + + internal override Asn1Object FromImplicitPrimitive(DerOctetString octetString) + { + return CreatePrimitive(octetString.GetOctets(), false); + } + } + public static Asn1RelativeOid FromContents(byte[] contents) { return CreatePrimitive(contents, true); @@ -31,7 +43,7 @@ namespace Org.BouncyCastle.Asn1 { try { - return GetInstance(FromByteArray((byte[])obj)); + return (Asn1RelativeOid)FromByteArray((byte[])obj); } catch (IOException e) { @@ -44,14 +56,7 @@ namespace Org.BouncyCastle.Asn1 public static Asn1RelativeOid GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { - Asn1Object baseObject = taggedObject.GetObject(); - - if (declaredExplicit || baseObject is Asn1RelativeOid) - { - return GetInstance(baseObject); - } - - return FromContents(Asn1OctetString.GetInstance(baseObject).GetOctets()); + return (Asn1RelativeOid)Meta.Instance.GetContextInstance(taggedObject, declaredExplicit); } private const long LongLimit = (Int64.MaxValue >> 7) - 0x7F; |