internal static void Decode(AsnReader reader, Asn1Tag expectedTag, out Asn1Change decoded) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } decoded = new Asn1Change(); AsnReader sequenceReader = reader.ReadSequence(expectedTag); decoded.Operation = sequenceReader.GetEnumeratedValue <ChangeOperation>(); Asn1PartialAttribute.Decode(sequenceReader, out decoded.Modification); sequenceReader.ThrowIfNotEmpty(); }
internal static void Decode(AsnReader reader, Asn1Tag expectedTag, out Asn1SearchResultEntry decoded) { if (reader == null) { throw new ArgumentNullException(nameof(reader)); } decoded = new Asn1SearchResultEntry(); AsnReader sequenceReader = reader.ReadSequence(expectedTag); AsnReader collectionReader; if (sequenceReader.TryGetPrimitiveOctetStringBytes(out ReadOnlyMemory <byte> tmpObjectName)) { decoded.ObjectName = tmpObjectName; } else { decoded.ObjectName = sequenceReader.ReadOctetString(); } // Decode SEQUENCE OF for Attributes { collectionReader = sequenceReader.ReadSequence(); var tmpList = new List <Asn1PartialAttribute>(); Asn1PartialAttribute tmpItem; while (collectionReader.HasData) { Asn1PartialAttribute.Decode(collectionReader, out tmpItem); tmpList.Add(tmpItem); } decoded.Attributes = tmpList.ToArray(); } sequenceReader.ThrowIfNotEmpty(); }