private static bool InternalTryParse(string s, out string subject, out SmtpDomainWithSubdomains commonName, out string issuer, out SmtpDomainWithSubdomains[] domains, out bool invalidDomainError)
        {
            domains = null;
            Match match = Regex.Match(s, "^(<I>([^<]+))?(<S>([^<]+))(<D>(.+))?", RegexOptions.IgnoreCase);

            if (!SmtpX509Identifier.TryParseFromRegexMatch(match, out subject, out commonName, out issuer, out invalidDomainError))
            {
                return(false);
            }
            if (match.Success && !string.IsNullOrEmpty(match.Groups[6].Value))
            {
                string[] array = match.Groups[6].Value.Split(new string[]
                {
                    ";"
                }, StringSplitOptions.RemoveEmptyEntries);
                domains = new SmtpDomainWithSubdomains[array.Length];
                for (int i = 0; i < array.Length; i++)
                {
                    if (!SmtpDomainWithSubdomains.TryParse(array[i], out domains[i]))
                    {
                        invalidDomainError = true;
                        return(false);
                    }
                }
            }
            return(true);
        }
        private static bool InternalTryParse(string s, out string subject, out SmtpDomainWithSubdomains commonName, out string issuer, out bool invalidDomainError)
        {
            Match match = Regex.Match(s, "^(<I>([^<]+))?(<S>(.+))", RegexOptions.IgnoreCase);

            return(SmtpX509Identifier.TryParseFromRegexMatch(match, out subject, out commonName, out issuer, out invalidDomainError));
        }