public static SigningKey CreateFromCertificate(X509Certificate2 certificate) { SafeCryptKeyHandle cryptKeyHandleFromCertificatePrivateKey = CngNative.GetCryptKeyHandleFromCertificatePrivateKey(certificate); string text = CngNative.NCryptGetPropertyString(cryptKeyHandleFromCertificatePrivateKey, "Algorithm Group"); if (text.Equals("RSA", StringComparison.OrdinalIgnoreCase)) { return(new RsaSigningKey(cryptKeyHandleFromCertificatePrivateKey, certificate)); } return(new DsaSigningKey(cryptKeyHandleFromCertificatePrivateKey, certificate)); }