/// <summary> /// Generates a new RSA key. /// </summary> /// <param name="embeddedData">The embedded data or null if none.</param> /// <returns>The RSA key.</returns> public static RsaKey Generate(IEnumerable <byte> embeddedData) { var rsa = new RSACryptoServiceProvider(RsaKey.KeySize); var rsaParameters = rsa.ExportParameters(true); var key = new RsaKey(parameters: rsaParameters, embeddedData: embeddedData); return(key); }
/// <summary> /// Generates a new RSA key. /// </summary> /// <returns>The RSA key.</returns> public static RsaKey Generate() { var rsa = new RSACryptoServiceProvider(RsaKey.KeySize); var rsaParameters = rsa.ExportParameters(true); var key = new RsaKey(parameters: rsaParameters); return(key); }
/// <summary> /// Generates a new signed RSA key. /// </summary> /// <param name="signKeyCallback">The callback method to invoke for signing the key.</param> /// <returns>The RSA key.</returns> public static RsaKey Generate(Func <IHash, RsaSignature> signKeyCallback) { if (signKeyCallback == null) { throw new ArgumentNullException(nameof(signKeyCallback)); } var rsa = new RSACryptoServiceProvider(RsaKey.KeySize); var rsaParameters = rsa.ExportParameters(true); var key = new RsaKey(parameters: rsaParameters); var signature = signKeyCallback?.Invoke( Helpers.ComputeRsaHash( rsaParameters: rsaParameters, includePrivateParameters: false, embeddedData: null)); key = new RsaKey( parameters: rsaParameters, signature: signature); return(key); }