public void decryptTest()
 {
     RSA target = new RSA(997, 1009);
     string ciphertext = "020574605831590890042003081208907080676758075536003944600637156066894402548070478377";
     string expected = "I had a fun time today.";
     string actual = target.decrypt(ciphertext);
     Assert.AreEqual(expected, actual);
     //string fun = target.decrypt("1 He, that being often reproved hardeneth his neck, shall suddenly be destroyed, and that without remedy. 2 When the righteous are in authority, the people rejoice: but when the wicked beareth rule, the people mourn. 3 Whoso loveth wisdom rejoiceth his father: but he that keepeth company with harlots spendeth his substance. 4 The king by judgment establisheth the land: but he that receiveth gifts overthroweth it. 5 A man that flattereth his neighbour spreadeth a net for his feet. 6 In the transgression of an evil man there is a snare: but the righteous doth sing and rejoice.");
 }
        public static Server_keys get_keys()
        {
            RSA rsa = new RSA(Primes.getPrime(), Primes.getPrime());
            ulong public_key = 0;
            ulong private_key =0;
            ulong shared_key = 0;
            rsa.getPublicKey(ref public_key, ref shared_key);
            rsa.getPrivateKey(ref private_key, ref shared_key);

            // should be using scotts key generator
            //Random rand = new Random();
            return new Server_keys((long)public_key, (long)private_key, (long)shared_key);
        }
 //TODO: need to impliment with Scotts encrption
 public static string encrypt_message(long public_key, long shared_key, string message)
 {
     RSA rsa = new RSA();
     rsa.setPublicKey((ulong)(public_key), (ulong)shared_key);
     return rsa.encrypt(message);
 }
 public static string decrypt_message(long private_key, long remote_shared_key, string message)
 {
     RSA rsa = new RSA();
     rsa.setPrivateKey((ulong)private_key, (ulong)remote_shared_key);
     return rsa.decrypt(message);
 }
 public void encryptionConsistencyTest()
 {
     RSA target = new RSA(Primes.getPrime(), Primes.getPrime());
     string message = "asd, goga;=_hh1 He, that being often reproved hardeneth his neck, shall suddenly be destroyed, and that without remedy. 2 When the righteous are in authority, the people rejoice: but when the wicked beareth rule, the people mourn. 3 Whoso loveth wisdom rejoiceth his father: but he that keepeth company with harlots spendeth his substance. 4 The king by judgment establisheth the land: but he that receiveth gifts overthroweth it. 5 A man that flattereth his neighbour spreadeth a net for his feet. 6 In the transgression of an evil man there is a snare: but the righteous doth sing and rejoice.";// 7 The righteous considereth the cause of the poor: but the wicked regardeth not to know it. 8 Scornful men bring a city into a snare: but wise men turn away wrath. 9 If a wise man contendeth with a foolish man, whether he rage or laugh, there is no rest. 10 The bloodthirsty hate the upright: but the just seek his soul. 11 A fool uttereth all his mind: but a wise man keepeth it in till afterwards. 12 If a ruler hearken to lies, all his servants are wicked. 13 The poor and the deceitful man meet together: the LORD lighteneth both their eyes. 14 The king that faithfully judgeth the poor, his throne shall be established for ever. 15 The rod and reproof give wisdom: but a child left to himself bringeth his mother to shame. 16 When the wicked are multiplied, transgression increaseth: but the righteous shall see their fall. 17 Correct thy son, and he shall give thee rest; yea, he shall give delight unto thy soul. 18 Where there is no vision, the people perish: but he that keepeth the law, happy is he. 19 A servant will not be corrected by words: for though he understand he will not answer. 20 Seest thou a man that is hasty in his words? there is more hope of a fool than of him. 21 He that delicately bringeth up his servant from a child shall have him become his son at the length. 22 An angry man stirreth up strife, and a furious man aboundeth in transgression. 23 A man's pride shall bring him low: but honour shall uphold the humble in spirit. 24 Whoso is partner with a thief hateth his own soul: he heareth cursing, and bewrayeth it not. 25 The fear of man bringeth a snare: but whoso putteth his trust in the LORD shall be safe. 26 Many seek the ruler's favour; but every man's judgment cometh from the LORD. 27 An unjust man is an abomination to the just: and he that is upright in the way is abomination to the wicked.";
     string actual = target.decrypt(target.encrypt(message));
     Assert.AreEqual(message.Length, actual.Length);
     Assert.AreEqual(message, actual);
     //Assert.Inconclusive("Verify the correctness of this test method.");
 }
        public void setPublicKeyTest()
        {
            RSA target = new RSA();
            target.setPublicKey(13, 10);

            ulong exponentActual = 0;
            ulong modulusActual = 0;
            target.getPublicKey(ref exponentActual, ref modulusActual);

            ulong exponentExpected = 3;
            ulong modulusExpected = 10;
            Assert.AreEqual(exponentExpected, exponentActual);
            Assert.AreEqual(modulusExpected, modulusActual);
        }
 public void RSAConstructorTest()
 {
     RSA target = new RSA(5, 7);
     ulong expected = 2;
     Assert.AreEqual(expected, target.decryptUlong(target.encryptUlong(2)));
 }
 public void recalculateKeysTest()
 {
     RSA target = new RSA();
     target.recalculateKeys(2146861501, 2146861517);
 }
        public void randomInfoTest()
        {
            //string output = "";

            //for (int i = 0; i < 4; i++)
            //{
            //    output += "fun "[i] + ":" + Convert.ToInt64("fun "[i]) + "\n";
            //}

            //output = "1 He, that being often reproved hardeneth his neck, shall suddenly be destroyed, and that without remedy. 2 When the righteous are in authority, the people rejoice: but when the wicked beareth rule, the people mourn. 3 Whoso loveth wisdom rejoiceth his father: but he that keepeth company with harlots spendeth his substance. 4 The king by judgment establisheth the land: but he that receiveth gifts overthroweth it. 5 A man that flattereth his neighbour spreadeth a net for his feet. 6 In the transgression of an evil man there is a snare: but the righteous doth sing and rejoice.".Length.ToString();// 7 The righteous considereth the cause of the poor: but the wicked regardeth not to know it. 8 Scornful men bring a city into a snare: but wise men turn away wrath. 9 If a wise man contendeth with a foolish man, whether he rage or laugh, there is no rest. 10 The bloodthirsty hate the upright: but the just seek his soul. 11 A fool uttereth all his mind: but a wise man keepeth it in till afterwards. 12 If a ruler hearken to lies, all his servants are wicked. 13 The poor and the deceitful man meet together: the LORD lighteneth both their eyes. 14 The king that faithfully judgeth the poor, his throne shall be established for ever. 15 The rod and reproof give wisdom: but a child left to himself bringeth his mother to shame. 16 When the wicked are multiplied, transgression increaseth: but the righteous shall see their fall. 17 Correct thy son, and he shall give thee rest; yea, he shall give delight unto thy soul. 18 Where there is no vision, the people perish: but he that keepeth the law, happy is he. 19 A servant will not be corrected by words: for though he understand he will not answer. 20 Seest thou a man that is hasty in his words? there is more hope of a fool than of him. 21 He that delicately bringeth up his servant from a child shall have him become his son at the length. 22 An angry man stirreth up strife, and a furious man aboundeth in transgression. 23 A man's pride shall bring him low: but honour shall uphold the humble in spirit. 24 Whoso is partner with a thief hateth his own soul: he heareth cursing, and bewrayeth it not. 25 The fear of man bringeth a snare: but whoso putteth his trust in the LORD shall be safe. 26 Many seek the ruler's favour; but every man's judgment cometh from the LORD. 27 An unjust man is an abomination to the just: and he that is upright in the way is abomination to the wicked.".Length.ToString();

            //System.Windows.Forms.MessageBox.Show(output);

            RSA fun = new RSA(1301, 1061);

            ulong a = 0;
            ulong b = 0;
            ulong c = 0;

            fun.getPublicKey(ref a, ref c);
            fun.getPrivateKey(ref b, ref c);

            //System.Windows.Forms.MessageBox.Show("Pub:"+a.ToString()+"\nPriv:"+b.ToString()+"\nMod:"+c.ToString());
        }
        public void getPublicKeyTest()
        {
            RSA target = new RSA(53, 89, 16);

            ulong exponent = 0;
            ulong modulus = 0;
            target.getPublicKey(ref exponent, ref modulus);

            ulong exponentExpected = 17;
            ulong modulusExpected = 4717;
            Assert.AreEqual(exponentExpected, exponent);
            Assert.AreEqual(modulusExpected, modulus);
        }