/// <summary> /// Export RSA public key /// </summary> /// <param name="rsa"></param> /// <param name="type"></param> /// <param name="usePemFormat">Only valid if the public key type is PKCS#1 and PKCS#8.</param> /// <returns></returns> public static string ExportPublicKey(this RSA rsa, RSAKeyType type, bool usePemFormat = false) { var key = type switch { RSAKeyType.Pkcs1 => Convert.ToBase64String(rsa.ExportRSAPublicKey()), RSAKeyType.Pkcs8 => Convert.ToBase64String(rsa.ExportPkcs8PublicKey()), RSAKeyType.Xml => rsa.ExportXmlPublicKey(), _ => string.Empty }; if (usePemFormat && type != RSAKeyType.Xml) { key = PemFormatUtil.GetPublicKeyFormat(type, key); } return(key); }
/// <summary> /// Export RSA public key /// </summary> /// <param name="rsa"></param> /// <param name="type"></param> /// <param name="usePemFormat">Only valid if the public key type is PKCS#1 and PKCS#8.</param> /// <returns></returns> public static string ExportPublicKey(this RSA rsa, RSAKeyType type, bool usePemFormat = false) { var key = string.Empty; switch (type) { case RSAKeyType.Pkcs1: case RSAKeyType.Pkcs8: key = Convert.ToBase64String(rsa.ExportRSAPublicKey()); break; case RSAKeyType.Xml: key = rsa.ExportXmlPublicKey(); break; } if (usePemFormat && type != RSAKeyType.Xml) { key = PemFormatUtil.GetPublicKeyFormat(type, key); } return(key); }