/// <summary> /// Generate a new key with the given length. /// </summary> /// <param name="length">Length of the key to be generated. Usually given in bits, but depends on the algorithm.</param> /// <returns>New RSAPrivateKey with the PublicKey-property set to the corresponding RSAPublicKey.</returns> public Key generateKey(short length) { Debug.Assert(length >= 2048, "The key must be at least 2048 bits in length."); Debug.Assert(((length % 1024) == 0), "The key must be a power of 1024."); RsaKeyPairGenerator generator = new RsaKeyPairGenerator(); generator.Init(new KeyGenerationParameters(new SecureRandom(), length)); AsymmetricCipherKeyPair pair = generator.GenerateKeyPair(); RSAPrivateKey privateKey = new RSAPrivateKey(pair.Private); RSAPublicKey publicKey = new RSAPublicKey(pair.Public); privateKey.PublicKey = publicKey; return privateKey; }
/// <summary> /// Generate a new key with the given length. /// </summary> /// <param name="length">Length of the key to be generated. Usually given in bits, but depends on the algorithm.</param> /// <returns>New RSAPrivateKey with the PublicKey-property set to the corresponding RSAPublicKey.</returns> public Key generateKey(short length) { Debug.Assert(length >= 2048, "The key must be at least 2048 bits in length."); Debug.Assert(((length % 1024) == 0), "The key must be a power of 1024."); RsaKeyPairGenerator generator = new RsaKeyPairGenerator(); generator.Init(new KeyGenerationParameters(new SecureRandom(), length)); AsymmetricCipherKeyPair pair = generator.GenerateKeyPair(); RSAPrivateKey privateKey = new RSAPrivateKey(pair.Private); RSAPublicKey publicKey = new RSAPublicKey(pair.Public); privateKey.PublicKey = publicKey; return(privateKey); }