init commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.IO;
|
||||
using Org.BouncyCastle.Asn1;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using Org.BouncyCastle.Security.Certificates;
|
||||
using Org.BouncyCastle.Utilities;
|
||||
|
||||
namespace Org.BouncyCastle.X509.Extension;
|
||||
|
||||
public class X509ExtensionUtilities
|
||||
{
|
||||
public static Asn1Object FromExtensionValue(Asn1OctetString extensionValue)
|
||||
{
|
||||
return Asn1Object.FromByteArray(extensionValue.GetOctets());
|
||||
}
|
||||
|
||||
public static ICollection GetIssuerAlternativeNames(X509Certificate cert)
|
||||
{
|
||||
Asn1OctetString extensionValue = cert.GetExtensionValue(X509Extensions.IssuerAlternativeName);
|
||||
return GetAlternativeName(extensionValue);
|
||||
}
|
||||
|
||||
public static ICollection GetSubjectAlternativeNames(X509Certificate cert)
|
||||
{
|
||||
Asn1OctetString extensionValue = cert.GetExtensionValue(X509Extensions.SubjectAlternativeName);
|
||||
return GetAlternativeName(extensionValue);
|
||||
}
|
||||
|
||||
private static ICollection GetAlternativeName(Asn1OctetString extVal)
|
||||
{
|
||||
IList list = Platform.CreateArrayList();
|
||||
if (extVal != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Asn1Sequence instance = Asn1Sequence.GetInstance(FromExtensionValue(extVal));
|
||||
foreach (Asn1Encodable item in instance)
|
||||
{
|
||||
IList list2 = Platform.CreateArrayList();
|
||||
GeneralName instance2 = GeneralName.GetInstance(item);
|
||||
list2.Add(instance2.TagNo);
|
||||
switch (instance2.TagNo)
|
||||
{
|
||||
case 0:
|
||||
case 3:
|
||||
case 5:
|
||||
list2.Add(instance2.Name.ToAsn1Object());
|
||||
break;
|
||||
case 4:
|
||||
list2.Add(X509Name.GetInstance(instance2.Name).ToString());
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
case 6:
|
||||
list2.Add(((IAsn1String)instance2.Name).GetString());
|
||||
break;
|
||||
case 8:
|
||||
list2.Add(DerObjectIdentifier.GetInstance(instance2.Name).Id);
|
||||
break;
|
||||
case 7:
|
||||
list2.Add(Asn1OctetString.GetInstance(instance2.Name).GetOctets());
|
||||
break;
|
||||
default:
|
||||
throw new IOException("Bad tag number: " + instance2.TagNo);
|
||||
}
|
||||
list.Add(list2);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new CertificateParsingException(ex.Message);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user