Affecto.Pdf.Toolkit.CertificateHelper.GetSubjectFields C# (CSharp) Method

GetSubjectFields() public static method

public static GetSubjectFields ( X509Certificate x509Certificate ) : string>.Dictionary
x509Certificate Org.BouncyCastle.X509.X509Certificate
return string>.Dictionary
        public static Dictionary<string, string> GetSubjectFields(X509Certificate x509Certificate)
        {
            Dictionary<string, string> fields = new Dictionary<string, string>();
            string issuer = x509Certificate.SubjectDN.ToString();

            string[] issuerFields = issuer.Split(',');
            foreach (string field in issuerFields)
            {
                string[] fieldSplit = field.Split('=');
                string key = fieldSplit[0].Trim();
                string value = fieldSplit[1].Trim();

                if (!fields.Keys.Contains(key))
                {
                    fields.Add(key, value);
                }
                else
                {
                    fields[key] = value;
                }
            }

            return fields;
        }

Usage Example

        private static string GetSignatureText(X509Certificate x509Certificate, PdfSignatureParameters parameters)
        {
            Dictionary <string, string> subjectFields = CertificateHelper.GetSubjectFields(x509Certificate);
            string surName   = subjectFields.Keys.Contains("SURNAME") ? subjectFields["SURNAME"] : string.Empty;
            string givenName = subjectFields.Keys.Contains("GIVENNAME") ? subjectFields["GIVENNAME"] : string.Empty;
            string signDate  = DateTime.Now.ToString("d.M.yyyy");

            return(parameters.SignatureTemplate
                   .Replace("{lastname}", UppercaseFirst(surName))
                   .Replace("{firstname}", UppercaseFirst(givenName))
                   .Replace("{signdate}", signDate));
        }