init commit
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
|
||||
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 || obj is IssuingDistributionPoint)
|
||||
{
|
||||
return (IssuingDistributionPoint)obj;
|
||||
}
|
||||
if (obj is Asn1Sequence)
|
||||
{
|
||||
return new IssuingDistributionPoint((Asn1Sequence)obj);
|
||||
}
|
||||
throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "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();
|
||||
if (distributionPoint != null)
|
||||
{
|
||||
asn1EncodableVector.Add(new DerTaggedObject(explicitly: true, 0, distributionPoint));
|
||||
}
|
||||
if (onlyContainsUserCerts)
|
||||
{
|
||||
asn1EncodableVector.Add(new DerTaggedObject(explicitly: false, 1, DerBoolean.True));
|
||||
}
|
||||
if (onlyContainsCACerts)
|
||||
{
|
||||
asn1EncodableVector.Add(new DerTaggedObject(explicitly: false, 2, DerBoolean.True));
|
||||
}
|
||||
if (onlySomeReasons != null)
|
||||
{
|
||||
asn1EncodableVector.Add(new DerTaggedObject(explicitly: false, 3, onlySomeReasons));
|
||||
}
|
||||
if (indirectCRL)
|
||||
{
|
||||
asn1EncodableVector.Add(new DerTaggedObject(explicitly: false, 4, DerBoolean.True));
|
||||
}
|
||||
if (onlyContainsAttributeCerts)
|
||||
{
|
||||
asn1EncodableVector.Add(new DerTaggedObject(explicitly: 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, explicitly: true);
|
||||
break;
|
||||
case 1:
|
||||
_onlyContainsUserCerts = DerBoolean.GetInstance(instance, isExplicit: false).IsTrue;
|
||||
break;
|
||||
case 2:
|
||||
_onlyContainsCACerts = DerBoolean.GetInstance(instance, isExplicit: false).IsTrue;
|
||||
break;
|
||||
case 3:
|
||||
_onlySomeReasons = new ReasonFlags(DerBitString.GetInstance(instance, isExplicit: false));
|
||||
break;
|
||||
case 4:
|
||||
_indirectCRL = DerBoolean.GetInstance(instance, isExplicit: false).IsTrue;
|
||||
break;
|
||||
case 5:
|
||||
_onlyContainsAttributeCerts = DerBoolean.GetInstance(instance, isExplicit: false).IsTrue;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentException("unknown tag in IssuingDistributionPoint");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override Asn1Object ToAsn1Object()
|
||||
{
|
||||
return seq;
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
string newLine = Platform.NewLine;
|
||||
StringBuilder stringBuilder = new StringBuilder();
|
||||
stringBuilder.Append("IssuingDistributionPoint: [");
|
||||
stringBuilder.Append(newLine);
|
||||
if (_distributionPoint != null)
|
||||
{
|
||||
appendObject(stringBuilder, newLine, "distributionPoint", _distributionPoint.ToString());
|
||||
}
|
||||
if (_onlyContainsUserCerts)
|
||||
{
|
||||
bool onlyContainsUserCerts = _onlyContainsUserCerts;
|
||||
appendObject(stringBuilder, newLine, "onlyContainsUserCerts", onlyContainsUserCerts.ToString());
|
||||
}
|
||||
if (_onlyContainsCACerts)
|
||||
{
|
||||
bool onlyContainsUserCerts = _onlyContainsCACerts;
|
||||
appendObject(stringBuilder, newLine, "onlyContainsCACerts", onlyContainsUserCerts.ToString());
|
||||
}
|
||||
if (_onlySomeReasons != null)
|
||||
{
|
||||
appendObject(stringBuilder, newLine, "onlySomeReasons", _onlySomeReasons.ToString());
|
||||
}
|
||||
if (_onlyContainsAttributeCerts)
|
||||
{
|
||||
bool onlyContainsUserCerts = _onlyContainsAttributeCerts;
|
||||
appendObject(stringBuilder, newLine, "onlyContainsAttributeCerts", onlyContainsUserCerts.ToString());
|
||||
}
|
||||
if (_indirectCRL)
|
||||
{
|
||||
bool onlyContainsUserCerts = _indirectCRL;
|
||||
appendObject(stringBuilder, newLine, "indirectCRL", onlyContainsUserCerts.ToString());
|
||||
}
|
||||
stringBuilder.Append("]");
|
||||
stringBuilder.Append(newLine);
|
||||
return stringBuilder.ToString();
|
||||
}
|
||||
|
||||
private void appendObject(StringBuilder buf, string sep, string name, string val)
|
||||
{
|
||||
string value = " ";
|
||||
buf.Append(value);
|
||||
buf.Append(name);
|
||||
buf.Append(":");
|
||||
buf.Append(sep);
|
||||
buf.Append(value);
|
||||
buf.Append(value);
|
||||
buf.Append(val);
|
||||
buf.Append(sep);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user