<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

PolicyMappings

public class PolicyMappings : Asn1Encodable
using System; using System.Collections.Generic; namespace Org.BouncyCastle.Asn1.X509 { public class PolicyMappings : Asn1Encodable { public class Element : Asn1Encodable { private readonly DerObjectIdentifier m_issuerDomainPolicy; private readonly DerObjectIdentifier m_subjectDomainPolicy; public DerObjectIdentifier IssuerDomainPolicy => m_issuerDomainPolicy; public DerObjectIdentifier SubjectDomainPolicy => m_subjectDomainPolicy; public static Element GetInstance(object obj) { if (obj == null) return null; Element element = obj as Element; if (element != null) return element; return new Element(Asn1Sequence.GetInstance(obj)); } public static Element GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new Element(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } private Element(Asn1Sequence seq) { int count = seq.Count; if (count != 2) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_issuerDomainPolicy = DerObjectIdentifier.GetInstance(seq[0]); m_subjectDomainPolicy = DerObjectIdentifier.GetInstance(seq[1]); } public Element(DerObjectIdentifier issuerDomainPolicy, DerObjectIdentifier subjectDomainPolicy) { if (issuerDomainPolicy == null) throw new ArgumentNullException("issuerDomainPolicy"); m_issuerDomainPolicy = issuerDomainPolicy; if (subjectDomainPolicy == null) throw new ArgumentNullException("subjectDomainPolicy"); m_subjectDomainPolicy = subjectDomainPolicy; } public override Asn1Object ToAsn1Object() { return new DLSequence(m_issuerDomainPolicy, m_subjectDomainPolicy); } } private readonly Asn1Sequence m_elements; public Asn1Sequence Elements => m_elements; public static PolicyMappings GetInstance(object obj) { if (obj == null) return null; PolicyMappings policyMappings = obj as PolicyMappings; if (policyMappings != null) return policyMappings; return new PolicyMappings(Asn1Sequence.GetInstance(obj)); } public static PolicyMappings GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new PolicyMappings(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public PolicyMappings(Asn1Sequence seq) { m_elements = DLSequence.Map(seq, Element.GetInstance); } public PolicyMappings(IDictionary<string, string> mappings) { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(mappings.Count); foreach (KeyValuePair<string, string> mapping in mappings) { DerObjectIdentifier issuerDomainPolicy = new DerObjectIdentifier(mapping.Key); DerObjectIdentifier subjectDomainPolicy = new DerObjectIdentifier(mapping.Value); asn1EncodableVector.Add(new Element(issuerDomainPolicy, subjectDomainPolicy)); } m_elements = DLSequence.FromVector(asn1EncodableVector); } public PolicyMappings(IDictionary<DerObjectIdentifier, DerObjectIdentifier> mappings) { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(mappings.Count); foreach (KeyValuePair<DerObjectIdentifier, DerObjectIdentifier> mapping in mappings) { asn1EncodableVector.Add(new Element(mapping.Key, mapping.Value)); } m_elements = DLSequence.FromVector(asn1EncodableVector); } public Element[] GetElements() { return m_elements.MapElements(Element.GetInstance); } public override Asn1Object ToAsn1Object() { return m_elements; } } }