IssuingDistributionPoint
using System;
using System.Text;
namespace Org.BouncyCastle.Asn1.X509
{
public class IssuingDistributionPoint : Asn1Encodable
{
private readonly DistributionPointName _distributionPoint;
private readonly bool _onlyContainsUserCerts;
private readonly bool _onlyContainsCACerts;
private readonly ReasonFlags _onlySomeReasons;
private readonly bool _indirectCRL;
private readonly bool _onlyContainsAttributeCerts;
private readonly Asn1Sequence seq;
public bool OnlyContainsUserCerts => _onlyContainsUserCerts;
public bool OnlyContainsCACerts => _onlyContainsCACerts;
public bool IsIndirectCrl => _indirectCRL;
public bool OnlyContainsAttributeCerts => _onlyContainsAttributeCerts;
public DistributionPointName DistributionPoint => _distributionPoint;
public ReasonFlags OnlySomeReasons => _onlySomeReasons;
public static IssuingDistributionPoint GetInstance(Asn1TaggedObject obj, bool explicitly)
{
return GetInstance(Asn1Sequence.GetInstance(obj, explicitly));
}
public static IssuingDistributionPoint GetInstance(object obj)
{
if (obj == null)
return null;
IssuingDistributionPoint issuingDistributionPoint = obj as IssuingDistributionPoint;
if (issuingDistributionPoint != null)
return issuingDistributionPoint;
return new IssuingDistributionPoint(Asn1Sequence.GetInstance(obj));
}
public IssuingDistributionPoint(DistributionPointName distributionPoint, bool onlyContainsUserCerts, bool onlyContainsCACerts, ReasonFlags onlySomeReasons, bool indirectCRL, bool onlyContainsAttributeCerts)
{
_distributionPoint = distributionPoint;
_indirectCRL = indirectCRL;
_onlyContainsAttributeCerts = onlyContainsAttributeCerts;
_onlyContainsCACerts = onlyContainsCACerts;
_onlyContainsUserCerts = onlyContainsUserCerts;
_onlySomeReasons = onlySomeReasons;
Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(6);
if (distributionPoint != null)
asn1EncodableVector.Add(new DerTaggedObject(true, 0, distributionPoint));
if (onlyContainsUserCerts)
asn1EncodableVector.Add(new DerTaggedObject(false, 1, DerBoolean.True));
if (onlyContainsCACerts)
asn1EncodableVector.Add(new DerTaggedObject(false, 2, DerBoolean.True));
if (onlySomeReasons != null)
asn1EncodableVector.Add(new DerTaggedObject(false, 3, onlySomeReasons));
if (indirectCRL)
asn1EncodableVector.Add(new DerTaggedObject(false, 4, DerBoolean.True));
if (onlyContainsAttributeCerts)
asn1EncodableVector.Add(new DerTaggedObject(false, 5, DerBoolean.True));
seq = new DerSequence(asn1EncodableVector);
}
private IssuingDistributionPoint(Asn1Sequence seq)
{
this.seq = seq;
for (int i = 0; i != seq.Count; i++) {
Asn1TaggedObject instance = Asn1TaggedObject.GetInstance(seq[i]);
switch (instance.TagNo) {
case 0:
_distributionPoint = DistributionPointName.GetInstance(instance, true);
break;
case 1:
_onlyContainsUserCerts = DerBoolean.GetInstance(instance, false).IsTrue;
break;
case 2:
_onlyContainsCACerts = DerBoolean.GetInstance(instance, false).IsTrue;
break;
case 3:
_onlySomeReasons = new ReasonFlags(DerBitString.GetInstance(instance, false));
break;
case 4:
_indirectCRL = DerBoolean.GetInstance(instance, false).IsTrue;
break;
case 5:
_onlyContainsAttributeCerts = DerBoolean.GetInstance(instance, false).IsTrue;
break;
default:
throw new ArgumentException("unknown tag in IssuingDistributionPoint");
}
}
}
public override Asn1Object ToAsn1Object()
{
return seq;
}
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine("IssuingDistributionPoint: [");
if (_distributionPoint != null)
AppendObject(stringBuilder, "distributionPoint", _distributionPoint.ToString());
bool flag;
if (_onlyContainsUserCerts) {
StringBuilder buf = stringBuilder;
flag = _onlyContainsUserCerts;
AppendObject(buf, "onlyContainsUserCerts", flag.ToString());
}
if (_onlyContainsCACerts) {
StringBuilder buf2 = stringBuilder;
flag = _onlyContainsCACerts;
AppendObject(buf2, "onlyContainsCACerts", flag.ToString());
}
if (_onlySomeReasons != null)
AppendObject(stringBuilder, "onlySomeReasons", _onlySomeReasons.ToString());
if (_onlyContainsAttributeCerts) {
StringBuilder buf3 = stringBuilder;
flag = _onlyContainsAttributeCerts;
AppendObject(buf3, "onlyContainsAttributeCerts", flag.ToString());
}
if (_indirectCRL) {
StringBuilder buf4 = stringBuilder;
flag = _indirectCRL;
AppendObject(buf4, "indirectCRL", flag.ToString());
}
stringBuilder.AppendLine("]");
return stringBuilder.ToString();
}
private void AppendObject(StringBuilder buf, string name, string val)
{
string value = " ";
buf.Append(value);
buf.Append(name);
buf.AppendLine(":");
buf.Append(value);
buf.Append(value);
buf.Append(val);
buf.AppendLine();
}
}
}