Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        /// <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);
        }