protected override string DerStringToManagedString(byte[] anyString) { DerSequenceReader reader = DerSequenceReader.CreateForPayload(anyString); var tag = (DerSequenceReader.DerTag)reader.PeekTag(); string value = null; switch (tag) { case DerSequenceReader.DerTag.BMPString: value = reader.ReadBMPString(); break; case DerSequenceReader.DerTag.IA5String: value = reader.ReadIA5String(); break; case DerSequenceReader.DerTag.PrintableString: value = reader.ReadPrintableString(); break; case DerSequenceReader.DerTag.UTF8String: value = reader.ReadUtf8String(); break; // Ignore anything we don't know how to read. } return(value); }
private static string ReadString(DerSequenceReader tavReader) { var tag = (DerSequenceReader.DerTag)tavReader.PeekTag(); switch (tag) { case DerSequenceReader.DerTag.BMPString: return(tavReader.ReadBMPString()); case DerSequenceReader.DerTag.IA5String: return(tavReader.ReadIA5String()); case DerSequenceReader.DerTag.PrintableString: return(tavReader.ReadPrintableString()); case DerSequenceReader.DerTag.UTF8String: return(tavReader.ReadUtf8String()); case DerSequenceReader.DerTag.T61String: return(tavReader.ReadT61String()); default: throw new CryptographicException(SR.Cryptography_Der_Invalid_Encoding); } }
private static IEnumerable <KeyValuePair <string, string> > ReadReverseRdns(X500DistinguishedName name) { DerSequenceReader x500NameReader = new DerSequenceReader(name.RawData); var rdnReaders = new Stack <DerSequenceReader>(); while (x500NameReader.HasData) { rdnReaders.Push(x500NameReader.ReadSet()); } while (rdnReaders.Count > 0) { DerSequenceReader rdnReader = rdnReaders.Pop(); while (rdnReader.HasData) { DerSequenceReader tavReader = rdnReader.ReadSequence(); string oid = tavReader.ReadOidAsString(); var tag = (DerSequenceReader.DerTag)tavReader.PeekTag(); string value = null; switch (tag) { case DerSequenceReader.DerTag.BMPString: value = tavReader.ReadBMPString(); break; case DerSequenceReader.DerTag.IA5String: value = tavReader.ReadIA5String(); break; case DerSequenceReader.DerTag.PrintableString: value = tavReader.ReadPrintableString(); break; case DerSequenceReader.DerTag.UTF8String: value = tavReader.ReadUtf8String(); break; case DerSequenceReader.DerTag.T61String: value = tavReader.ReadT61String(); break; // Ignore anything we don't know how to read. } if (value != null) { yield return(new KeyValuePair <string, string>(oid, value)); } } } }