static String getEntryName(X509CRL2 crl) { X509PublishedCrlLocationsExtension pubCrl = (X509PublishedCrlLocationsExtension)crl.Extensions[X509CertExtensions.X509PublishedCrlLocations]; return(pubCrl == null ? getEntryNameFromIssuer(crl) : getEntryNameFromUrl(pubCrl)); }
static String getEntryNameFromUrl(X509PublishedCrlLocationsExtension pubCrl) { String[] urls = pubCrl.GetUrLs().Where(x => x.ToUpper().Contains("LDAP://")).ToArray(); if (urls.Length == 0) { throw new ArgumentException("Cannot find target location."); } String[] tokens = urls[0].Split(new[] { "CN=" }, StringSplitOptions.RemoveEmptyEntries); return(HttpUtility.UrlDecode(tokens[1].TrimEnd(','))); }
static String getHostName(String suggestedHostName, X509CRL2 crl) { if (String.IsNullOrWhiteSpace(suggestedHostName)) { X509PublishedCrlLocationsExtension pubCrl = (X509PublishedCrlLocationsExtension)crl.Extensions[X509CertExtensions.X509PublishedCrlLocations]; if (pubCrl == null) { throw new ArgumentException("Cannot find target location."); } String[] urls = pubCrl.GetUrLs().Where(x => x.ToUpper().Contains("LDAP://")).ToArray(); if (urls.Length == 0) { throw new ArgumentException("Cannot find target location."); } var tokens = urls[0].ToUpper().Split(new[] { "CN=" }, StringSplitOptions.RemoveEmptyEntries); suggestedHostName = tokens[2]; } return(suggestedHostName); }