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

63 lines
1.4 KiB
C#

using System;
using Org.BouncyCastle.Asn1;
using Org.BouncyCastle.Asn1.X509;
using Org.BouncyCastle.Utilities.Collections;
namespace Org.BouncyCastle.X509;
public abstract class X509ExtensionBase : IX509Extension
{
protected abstract X509Extensions GetX509Extensions();
protected virtual ISet GetExtensionOids(bool critical)
{
X509Extensions x509Extensions = GetX509Extensions();
if (x509Extensions != null)
{
HashSet hashSet = new HashSet();
{
foreach (DerObjectIdentifier extensionOid in x509Extensions.ExtensionOids)
{
X509Extension extension = x509Extensions.GetExtension(extensionOid);
if (extension.IsCritical == critical)
{
hashSet.Add(extensionOid.Id);
}
}
return hashSet;
}
}
return null;
}
public virtual ISet GetNonCriticalExtensionOids()
{
return GetExtensionOids(critical: false);
}
public virtual ISet GetCriticalExtensionOids()
{
return GetExtensionOids(critical: true);
}
[Obsolete("Use version taking a DerObjectIdentifier instead")]
public Asn1OctetString GetExtensionValue(string oid)
{
return GetExtensionValue(new DerObjectIdentifier(oid));
}
public virtual Asn1OctetString GetExtensionValue(DerObjectIdentifier oid)
{
X509Extensions x509Extensions = GetX509Extensions();
if (x509Extensions != null)
{
X509Extension extension = x509Extensions.GetExtension(oid);
if (extension != null)
{
return extension.Value;
}
}
return null;
}
}