Files
SuperVPN/output/Libraries/BouncyCastle.Crypto/Org/BouncyCastle/Pkix/PkixPolicyNode.cs
2025-10-09 09:57:24 +09:00

138 lines
2.8 KiB
C#

using System.Collections;
using System.Text;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.Pkix;
public class PkixPolicyNode
{
protected IList mChildren;
protected int mDepth;
protected ISet mExpectedPolicies;
protected PkixPolicyNode mParent;
protected ISet mPolicyQualifiers;
protected string mValidPolicy;
protected bool mCritical;
public virtual int Depth => mDepth;
public virtual IEnumerable Children => new EnumerableProxy(mChildren);
public virtual bool IsCritical
{
get
{
return mCritical;
}
set
{
mCritical = value;
}
}
public virtual ISet PolicyQualifiers => new HashSet(mPolicyQualifiers);
public virtual string ValidPolicy => mValidPolicy;
public virtual bool HasChildren => mChildren.Count != 0;
public virtual ISet ExpectedPolicies
{
get
{
return new HashSet(mExpectedPolicies);
}
set
{
mExpectedPolicies = new HashSet(value);
}
}
public virtual PkixPolicyNode Parent
{
get
{
return mParent;
}
set
{
mParent = value;
}
}
public PkixPolicyNode(IList children, int depth, ISet expectedPolicies, PkixPolicyNode parent, ISet policyQualifiers, string validPolicy, bool critical)
{
if (children == null)
{
mChildren = Platform.CreateArrayList();
}
else
{
mChildren = Platform.CreateArrayList(children);
}
mDepth = depth;
mExpectedPolicies = expectedPolicies;
mParent = parent;
mPolicyQualifiers = policyQualifiers;
mValidPolicy = validPolicy;
mCritical = critical;
}
public virtual void AddChild(PkixPolicyNode child)
{
child.Parent = this;
mChildren.Add(child);
}
public virtual void RemoveChild(PkixPolicyNode child)
{
mChildren.Remove(child);
}
public override string ToString()
{
return ToString("");
}
public virtual string ToString(string indent)
{
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.Append(indent);
stringBuilder.Append(mValidPolicy);
stringBuilder.Append(" {");
stringBuilder.Append(Platform.NewLine);
foreach (PkixPolicyNode mChild in mChildren)
{
stringBuilder.Append(mChild.ToString(indent + " "));
}
stringBuilder.Append(indent);
stringBuilder.Append("}");
stringBuilder.Append(Platform.NewLine);
return stringBuilder.ToString();
}
public virtual object Clone()
{
return Copy();
}
public virtual PkixPolicyNode Copy()
{
PkixPolicyNode pkixPolicyNode = new PkixPolicyNode(Platform.CreateArrayList(), mDepth, new HashSet(mExpectedPolicies), null, new HashSet(mPolicyQualifiers), mValidPolicy, mCritical);
foreach (PkixPolicyNode mChild in mChildren)
{
PkixPolicyNode pkixPolicyNode3 = mChild.Copy();
pkixPolicyNode3.Parent = pkixPolicyNode;
pkixPolicyNode.AddChild(pkixPolicyNode3);
}
return pkixPolicyNode;
}
}