100 lines
2.2 KiB
C#
100 lines
2.2 KiB
C#
using System;
|
|
using System.Text;
|
|
using Org.BouncyCastle.Utilities;
|
|
|
|
namespace Org.BouncyCastle.Asn1.X509;
|
|
|
|
public class DistributionPointName : Asn1Encodable, IAsn1Choice
|
|
{
|
|
public const int FullName = 0;
|
|
|
|
public const int NameRelativeToCrlIssuer = 1;
|
|
|
|
internal readonly Asn1Encodable name;
|
|
|
|
internal readonly int type;
|
|
|
|
public int PointType => type;
|
|
|
|
public Asn1Encodable Name => name;
|
|
|
|
public static DistributionPointName GetInstance(Asn1TaggedObject obj, bool explicitly)
|
|
{
|
|
return GetInstance(Asn1TaggedObject.GetInstance(obj, explicitly: true));
|
|
}
|
|
|
|
public static DistributionPointName GetInstance(object obj)
|
|
{
|
|
if (obj == null || obj is DistributionPointName)
|
|
{
|
|
return (DistributionPointName)obj;
|
|
}
|
|
if (obj is Asn1TaggedObject)
|
|
{
|
|
return new DistributionPointName((Asn1TaggedObject)obj);
|
|
}
|
|
throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj");
|
|
}
|
|
|
|
public DistributionPointName(int type, Asn1Encodable name)
|
|
{
|
|
this.type = type;
|
|
this.name = name;
|
|
}
|
|
|
|
public DistributionPointName(GeneralNames name)
|
|
: this(0, name)
|
|
{
|
|
}
|
|
|
|
public DistributionPointName(Asn1TaggedObject obj)
|
|
{
|
|
type = obj.TagNo;
|
|
if (type == 0)
|
|
{
|
|
name = GeneralNames.GetInstance(obj, explicitly: false);
|
|
}
|
|
else
|
|
{
|
|
name = Asn1Set.GetInstance(obj, explicitly: false);
|
|
}
|
|
}
|
|
|
|
public override Asn1Object ToAsn1Object()
|
|
{
|
|
return new DerTaggedObject(explicitly: false, type, name);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
string newLine = Platform.NewLine;
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|
stringBuilder.Append("DistributionPointName: [");
|
|
stringBuilder.Append(newLine);
|
|
if (type == 0)
|
|
{
|
|
appendObject(stringBuilder, newLine, "fullName", name.ToString());
|
|
}
|
|
else
|
|
{
|
|
appendObject(stringBuilder, newLine, "nameRelativeToCRLIssuer", name.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);
|
|
}
|
|
}
|