Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Asn1/X509/DistributionPointName.cs
2025-10-09 09:57:24 +09:00

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);
}
}