private static string GetDisplayName(X509Certificate2 certificate)
{
if (!String.IsNullOrEmpty(certificate.FriendlyName))
{
return certificate.FriendlyName;
}
string name = certificate.Subject;
// find the common name delimiter.
int index = name.IndexOf("CN", StringComparison.Ordinal);
if (index == -1)
{
return name;
}
StringBuilder buffer = new StringBuilder(name.Length);
// skip characters until finding the '=' character
for (int ii = index + 2; ii < name.Length; ii++)
{
if (name[ii] == '=')
{
index = ii + 1;
break;
}
}
// skip whitespace.
for (int ii = index; ii < name.Length; ii++)
{
if (!Char.IsWhiteSpace(name[ii]))
{
index = ii;
break;
}
}
// read the common until finding a ','.
for (int ii = index; ii < name.Length; ii++)
{
if (name[ii] == ',')
{
break;
}
buffer.Append(name[ii]);
}
return buffer.ToString();
}