CertificatePolicies
using Org.BouncyCastle.Utilities;
using System;
using System.Text;
namespace Org.BouncyCastle.Asn1.X509
{
public class CertificatePolicies : Asn1Encodable
{
private readonly PolicyInformation[] m_policyInformation;
public static CertificatePolicies GetInstance(object obj)
{
if (obj == null)
return null;
CertificatePolicies certificatePolicies = obj as CertificatePolicies;
if (certificatePolicies != null)
return certificatePolicies;
return new CertificatePolicies(Asn1Sequence.GetInstance(obj));
}
public static CertificatePolicies GetInstance(Asn1TaggedObject obj, bool isExplicit)
{
return new CertificatePolicies(Asn1Sequence.GetInstance(obj, isExplicit));
}
public static CertificatePolicies GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit)
{
return new CertificatePolicies(Asn1Sequence.GetTagged(taggedObject, declaredExplicit));
}
public static CertificatePolicies FromExtensions(X509Extensions extensions)
{
return GetInstance(X509Extensions.GetExtensionParsedValue(extensions, X509Extensions.CertificatePolicies));
}
private CertificatePolicies(Asn1Sequence seq)
{
m_policyInformation = seq.MapElements(PolicyInformation.GetInstance);
}
public CertificatePolicies(PolicyInformation name)
{
PolicyInformation[] obj = new PolicyInformation[1];
if (name == null)
throw new ArgumentNullException("name");
obj[0] = name;
m_policyInformation = obj;
}
public CertificatePolicies(PolicyInformation[] policyInformation)
{
if (Arrays.IsNullOrContainsNull(policyInformation))
throw new NullReferenceException("'policyInformation' cannot be null, or contain null");
m_policyInformation = Copy(policyInformation);
}
public virtual PolicyInformation[] GetPolicyInformation()
{
return Copy(m_policyInformation);
}
public virtual PolicyInformation GetPolicyInformation(DerObjectIdentifier policyIdentifier)
{
PolicyInformation[] policyInformation = m_policyInformation;
foreach (PolicyInformation policyInformation2 in policyInformation) {
if (policyInformation2.PolicyIdentifier.Equals(policyIdentifier))
return policyInformation2;
}
return null;
}
public override Asn1Object ToAsn1Object()
{
Asn1Encodable[] policyInformation = m_policyInformation;
return DerSequence.FromElements(policyInformation);
}
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder("CertificatePolicies:");
if (m_policyInformation.Length != 0) {
stringBuilder.Append(' ');
stringBuilder.Append(m_policyInformation[0]);
for (int i = 1; i < m_policyInformation.Length; i++) {
stringBuilder.Append(", ");
stringBuilder.Append(m_policyInformation[i]);
}
}
return stringBuilder.ToString();
}
private static PolicyInformation[] Copy(PolicyInformation[] policyInformation)
{
return (PolicyInformation[])policyInformation.Clone();
}
}
}