/// <summary> /// Get file name or return default /// </summary> /// <param name="cert"></param> /// <param name="defaultName"></param> /// <returns></returns> public static string GetFileNameOrDefault(this X509CertificateModel cert, string defaultName) { try { var dn = Utils.ParseDistinguishedName(cert.Subject); var prefix = dn .FirstOrDefault(x => x.StartsWith("CN=", StringComparison.OrdinalIgnoreCase)).Substring(3); return(prefix + " [" + cert.Thumbprint + "]"); } catch { return(defaultName); } }
/// <summary> /// Get Raw data /// </summary> /// <returns></returns> public static byte[] ToRawData(this X509CertificateModel model) { const string certPemHeader = "-----BEGIN CERTIFICATE-----"; const string certPemFooter = "-----END CERTIFICATE-----"; if (model == null) { throw new ArgumentNullException(nameof(model)); } if (model.Certificate == null) { throw new ArgumentNullException(nameof(model.Certificate)); } switch (model.Certificate.Type) { case JTokenType.Bytes: return((byte[])model.Certificate); case JTokenType.String: var request = (string)model.Certificate; if (request.Contains(certPemHeader, StringComparison.OrdinalIgnoreCase)) { var strippedCertificateRequest = request.Replace( certPemHeader, "", StringComparison.OrdinalIgnoreCase); strippedCertificateRequest = strippedCertificateRequest.Replace( certPemFooter, "", StringComparison.OrdinalIgnoreCase); return(Convert.FromBase64String(strippedCertificateRequest)); } return(Convert.FromBase64String(request)); default: throw new ArgumentException( "Bad certificate data", nameof(model.Certificate)); } }
/// <summary> /// Convert to framework model /// </summary> /// <returns></returns> public static Certificate ToStackModel(this X509CertificateModel model) { return(CertificateEx.Create(model.ToRawData())); }