/// <summary> /// Generates RSA key pair of desired size (note that keys larger than 4096 bits will have high impact on performance) /// </summary> /// <param name="keySize">Size of the key</param> /// <returns>Generated key pair</returns> public static RsaKeyPair GenerateKeyPairs(RsaKeySizes keySize) { using (var rsa = RSA.Create()) { rsa.KeySize = keySize.GetIntegerKeySize(); return(new RsaKeyPair(rsa.ExportParameters(true))); } }
/// <summary> /// Maps <see cref="RsaKeySizes"/> to integers /// </summary> /// <param name="size">Enum value</param> /// <returns>Integer value</returns> public static int GetIntegerKeySize(this RsaKeySizes size) { switch (size) { case RsaKeySizes.Rsa2048: return(2048); case RsaKeySizes.Rsa4096: return(4096); case RsaKeySizes.Rsa8192: return(8192); default: return(16384); } }