Here is an example of extracting the common name of the directory address of the subject alternative name of a certificate using the bouncycastle library
X509Certificate cert = ...
foreach (ArrayList sName in cert.GetSubjectAlternativeNames() as ArrayList)
{
if ((int)sName[0] == 4) //tag 4 is for DirectoryAddress
{
string dirName = sName[1].ToString();
X509Name x500Name = new (dirName);
string altCn = x500Name.GetValues(X509Name.CN)[0].ToString();
Console.WriteLine(altCn);
}
}
Other possible general names:
public const int OtherName = 0;
public const int Rfc822Name = 1;
public const int DnsName = 2;
public const int X400Address = 3;
public const int DirectoryName = 4;
public const int EdiPartyName = 5;
public const int UniformResourceIdentifier = 6;
public const int IPAddress = 7;
public const int RegisteredID = 8;