Esempio n. 1
0
        public Keypair GetPrivateKey(string password)
        {
            var kp = new Keypair {
                Exponent = Exponent, Modulus = Modulus
            };

            if (PrivateExponent == null)
            {
                throw new InvalidOperationException();
            }
            kp.SetPrivateExponentAsync(PrivateExponent.Value.ToByteArray(), password).Wait();
            return(kp);
        }
        private async Task <Keypair> RsaParametersToKeyPairAsync(RSAParameters parameters,
                                                                 string password = null)
        {
            var kp = new Keypair {
                Modulus  = new BigInteger(parameters.Modulus),
                Exponent = new BigInteger(parameters.Exponent)
            };

            if (parameters.D != null && password == null)
            {
                throw new ArgumentException("Missing password");
            }
            if (parameters.D != null)
            {
                await kp.SetPrivateExponentAsync(parameters.D, password);
            }
            // TODO: find a better way, see Keypair#SystemAsymmetricEncryptionParameters
            kp.P        = parameters.P;
            kp.Q        = parameters.Q;
            kp.DP       = parameters.DP;
            kp.DQ       = parameters.DQ;
            kp.InverseQ = parameters.InverseQ;
            return(kp);
        }