From e9f7e61e5598c312ce7f74a5b5362e6fa600b100 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Tue, 12 Jul 2022 19:37:04 +0700 Subject: Remove redundant utility methods and refactor --- crypto/src/pkix/PkixCertPathValidatorUtilities.cs | 18 +---- crypto/src/x509/extension/X509ExtensionUtil.cs | 85 +++-------------------- 2 files changed, 13 insertions(+), 90 deletions(-) (limited to 'crypto/src') diff --git a/crypto/src/pkix/PkixCertPathValidatorUtilities.cs b/crypto/src/pkix/PkixCertPathValidatorUtilities.cs index fccd0b3c5..2514f1df2 100644 --- a/crypto/src/pkix/PkixCertPathValidatorUtilities.cs +++ b/crypto/src/pkix/PkixCertPathValidatorUtilities.cs @@ -1042,23 +1042,9 @@ namespace Org.BouncyCastle.Pkix return certs; } - /// - /// Extract the value of the given extension, if it exists. - /// - /// The extension object. - /// The object identifier to obtain. - /// Asn1Object - /// if the extension cannot be read. - internal static Asn1Object GetExtensionValue( - IX509Extension ext, - DerObjectIdentifier oid) + internal static Asn1Object GetExtensionValue(IX509Extension extensions, DerObjectIdentifier oid) { - Asn1OctetString bytes = ext.GetExtensionValue(oid); - - if (bytes == null) - return null; - - return X509ExtensionUtilities.FromExtensionValue(bytes); + return X509ExtensionUtilities.FromExtensionValue(extensions, oid); } } } diff --git a/crypto/src/x509/extension/X509ExtensionUtil.cs b/crypto/src/x509/extension/X509ExtensionUtil.cs index b751658e1..e1f925b08 100644 --- a/crypto/src/x509/extension/X509ExtensionUtil.cs +++ b/crypto/src/x509/extension/X509ExtensionUtil.cs @@ -1,88 +1,25 @@ -using System; -using System.Collections.Generic; -using System.IO; - using Org.BouncyCastle.Asn1; -using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Security.Certificates; namespace Org.BouncyCastle.X509.Extension { public class X509ExtensionUtilities { - public static Asn1Object FromExtensionValue( - Asn1OctetString extensionValue) + public static Asn1Object FromExtensionValue(Asn1OctetString extensionValue) { return Asn1Object.FromByteArray(extensionValue.GetOctets()); } - public static IList> GetIssuerAlternativeNames(X509Certificate cert) - { - Asn1OctetString extVal = cert.GetExtensionValue(X509Extensions.IssuerAlternativeName); - - return GetAlternativeName(extVal); - } - - public static IList> GetSubjectAlternativeNames(X509Certificate cert) + /// + /// Extract the value of the given extension, if it exists. + /// + /// The extensions object. + /// The object identifier to obtain. + /// Asn1Object + /// if the extension cannot be read. + public static Asn1Object FromExtensionValue(IX509Extension extensions, DerObjectIdentifier oid) { - Asn1OctetString extVal = cert.GetExtensionValue(X509Extensions.SubjectAlternativeName); - - return GetAlternativeName(extVal); - } - - private static IList> GetAlternativeName( - Asn1OctetString extVal) - { - var result = new List>(); - - if (extVal != null) - { - try - { - Asn1Sequence seq = Asn1Sequence.GetInstance(FromExtensionValue(extVal)); - - foreach (Asn1Encodable primName in seq) - { - GeneralName genName = GeneralName.GetInstance(primName); - - var list = new List(2); - 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(Asn1OctetString.GetInstance(genName.Name).GetOctets()); - break; - default: - throw new IOException("Bad tag number: " + genName.TagNo); - } - - result.Add(list); - } - } - catch (Exception e) - { - throw new CertificateParsingException(e.Message); - } - } - - return result; + Asn1OctetString extensionValue = extensions.GetExtensionValue(oid); + return extensionValue == null ? null : FromExtensionValue(extensionValue); } } } -- cgit 1.5.1