123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- 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 extVal = cert.GetExtensionValue(X509Extensions.IssuerAlternativeName);
- return GetAlternativeName(extVal);
- }
- public static ICollection GetSubjectAlternativeNames(
- X509Certificate cert)
- {
- Asn1OctetString extVal = cert.GetExtensionValue(X509Extensions.SubjectAlternativeName);
- return GetAlternativeName(extVal);
- }
- private static ICollection GetAlternativeName(
- Asn1OctetString extVal)
- {
- IList temp = Org.BouncyCastle.Utilities.Platform.CreateArrayList();
- if (extVal != null)
- {
- try
- {
- Asn1Sequence seq = DerSequence.GetInstance(FromExtensionValue(extVal));
- foreach (GeneralName genName in seq)
- {
- IList list = Org.BouncyCastle.Utilities.Platform.CreateArrayList();
- list.Add(genName.TagNo);
- switch (genName.TagNo)
- {
- case GeneralName.EdiPartyName:
- case GeneralName.X400Address:
- case GeneralName.OtherName:
- list.Add(genName.Name.ToAsn1Object());
- break;
- case GeneralName.DirectoryName:
- list.Add(X509Name.GetInstance(genName.Name).ToString());
- break;
- case GeneralName.DnsName:
- case GeneralName.Rfc822Name:
- case GeneralName.UniformResourceIdentifier:
- list.Add(((IAsn1String)genName.Name).GetString());
- break;
- case GeneralName.RegisteredID:
- list.Add(DerObjectIdentifier.GetInstance(genName.Name).Id);
- break;
- case GeneralName.IPAddress:
- list.Add(DerOctetString.GetInstance(genName.Name).GetOctets());
- break;
- default:
- throw new IOException("Bad tag number: " + genName.TagNo);
- }
- temp.Add(list);
- }
- }
- catch (Exception e)
- {
- throw new CertificateParsingException(e.Message);
- }
- }
- return temp;
- }
- }
- }
- #endif
|