void m_decode(Byte[] rawData) { Asn1Reader asn = new Asn1Reader(rawData); if (asn.Tag != 48) { throw new Asn1InvalidTagException(asn.Offset); } asn.MoveNextAndExpectTags((Byte)Asn1Type.OBJECT_IDENTIFIER); Oid = Asn1Utils.DecodeObjectIdentifier(asn.GetTagRawData()); asn.MoveNext(); Asn1Type[] types = { Asn1Type.IA5String, Asn1Type.PrintableString, Asn1Type.VisibleString, Asn1Type.UTF8String, Asn1Type.UniversalString, Asn1Type.BMPString, Asn1Type.TeletexString }; encodingTag = (Asn1Type)asn.Tag; Value = Asn1Utils.DecodeAnyString(asn.GetTagRawData(), types); RawData = rawData; }
public static X500RdnAttribute[] GetRdnAttributes(this X500DistinguishedName name) { if (name == null) { throw new ArgumentNullException("name"); } if (name.RawData == null || name.RawData.Length == 0) { return(null); } Asn1Reader asn = new Asn1Reader(name.RawData); if (!asn.MoveNext()) { return(null); } if (asn.NextCurrentLevelOffset == 0) { return(null); } var retValue = new List <X500RdnAttribute>(); do { Asn1Reader asn2 = new Asn1Reader(asn.GetPayload()); asn2.MoveNext(); Oid oid = Asn1Utils.DecodeObjectIdentifier(asn2.GetTagRawData()); asn2.MoveNext(); String value = Asn1Utils.DecodeAnyString(asn2.GetTagRawData(), null); retValue.Add(new X500RdnAttribute(oid, value)); } while (asn.MoveNextCurrentLevel()); return(retValue.ToArray()); }
void m_decode(Byte[] rawData) { Asn1Reader asn = new Asn1Reader(rawData); if (asn.Tag != 48) { throw new Asn1InvalidTagException(asn.Offset); } asn.MoveNext(); Oid oid = Asn1Utils.DecodeObjectIdentifier(asn.GetTagRawData()); switch (oid.Value) { case "1.3.6.1.5.5.7.2.1": Type = X509PolicyQualifierType.CpsUrl; asn.MoveNext(); PolicyUrl = new Uri(Asn1Utils.DecodeIA5String(asn.GetTagRawData()).Replace("\0", null)); break; case "1.3.6.1.5.5.7.2.2": Type = X509PolicyQualifierType.UserNotice; if (!asn.MoveNext()) { return; } if (asn.Tag != 48) { throw new Asn1InvalidTagException(asn.Offset); } asn.MoveNext(); if (asn.Tag == 48) { Int32 offset = asn.Offset; asn.MoveNext(); NoticeReference = Asn1Utils.DecodeAnyString(asn.GetTagRawData(), new[] { Asn1Type.IA5String, Asn1Type.VisibleString, Asn1Type.BMPString, Asn1Type.UTF8String }); asn.MoveNext(); asn.MoveNext(); NoticeNumber = (Int32)Asn1Utils.DecodeInteger(asn.GetTagRawData()); asn.MoveToPosition(offset); if (asn.MoveNextCurrentLevel()) { NoticeText = Asn1Utils.DecodeAnyString(asn.GetTagRawData(), new[] { Asn1Type.IA5String, Asn1Type.VisibleString, Asn1Type.BMPString, Asn1Type.UTF8String }); } } else { NoticeText = Asn1Utils.DecodeAnyString(asn.GetTagRawData(), new[] { Asn1Type.IA5String, Asn1Type.VisibleString, Asn1Type.BMPString, Asn1Type.UTF8String }); } break; default: m_reset(); return; } }
void m_decode(Byte[] rawData) { Asn1Reader asn = new Asn1Reader(rawData); if (asn.Tag != 48) { throw new Exception(); } asn.MoveNext(); if (asn.Tag != 6) { throw new Exception(); } Oid = Asn1Utils.DecodeObjectIdentifier(asn.GetTagRawData()); asn.MoveNext(); Value = Asn1Utils.DecodeAnyString(asn.GetTagRawData(), null); RawData = rawData; }