public void Encrypt_To_File_Using_Main_Using_Manually_Filename()
        {
            const string encryptedOutputFile        = "manually.enc";
            var          merchantPublicKeyFileName  = @"Certificates\merchant.crt";
            var          mobilePayPublicKeyFileName = @"Certificates\mobilepay.crt";
            var          merchantSubscriptionKey    = Guid.NewGuid().ToString();

            string[] args = new[] { merchantSubscriptionKey, merchantPublicKeyFileName, mobilePayPublicKeyFileName, encryptedOutputFile };

            Program.Main(args);

            var csp          = new RSACryptoServiceProvider();
            var streamReader = File.OpenText(@"Certificates\mobilepay.pvk");
            var pr           = new PemReader(streamReader);

            var privateKey = (RsaPrivateCrtKeyParameters)pr.ReadObject();
            var rsa        = DotNetUtilities.ToRSAParameters(privateKey);

            csp.ImportParameters(rsa);
            var encryptedFile = File.ReadAllBytes(encryptedOutputFile);

            var decrypted = Encoding.UTF8.GetString(RSAEncryptionService.Decrypt(csp, encryptedFile));

            var decryptedSplits                  = decrypted.Split(';');
            var decryptedMerchantPublicKey       = decryptedSplits[0];
            var decryptedMerchantSubscriptionKey = decryptedSplits[1];

            var merchantPublicKey = File.ReadAllText(merchantPublicKeyFileName);

            Assert.Equal(merchantSubscriptionKey, decryptedMerchantSubscriptionKey);
            Assert.Equal(Regex.Replace(merchantPublicKey, @"\r\n?|\n", ""), Regex.Replace(decryptedMerchantPublicKey, @"\r\n?|\n", ""));
        }
Exemplo n.º 2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                RSAParameters rSAParameters = new RSAParameters
                {
                    Modulus  = Convert.FromBase64String(ModulusTextBox.Text),
                    Exponent = Convert.FromBase64String(ExponentTextBox.Text),
                    D        = Convert.FromBase64String(DTextBox.Text),
                    DP       = Convert.FromBase64String(DPTextBox.Text),
                    DQ       = Convert.FromBase64String(DQTextBox.Text),
                    InverseQ = Convert.FromBase64String(InverseQTextBox.Text),
                    P        = Convert.FromBase64String(PTextBox.Text),
                    Q        = Convert.FromBase64String(QTextBox.Text)
                };

                encryptionService = new RSAEncryptionService(rSAParameters);

                MessageBox.Show("Your private key have been set.");
            }
            catch (FormatException)
            {
                MessageBox.Show("The Values provided did not uphold the Base64 encoding");
            }
            catch (CryptographicException)
            {
                MessageBox.Show("The private Key that was provided was not good try again");
            }
        }
        public void TestEncryptDontReturnNull()
        {
            RSAEncryptionService service = new RSAEncryptionService();

            string testString = "Hello world encrypt me";

            Assert.NotNull(service.Encrypt(Encoding.UTF8.GetBytes(testString)));
        }
        public void TestGeneratedKeysAreNotEqual()
        {
            RSAParameters rSAParameters = RSAEncryptionService.GenerateKeys();

            RSAParameters rSAParameters2 = RSAEncryptionService.GenerateKeys();

            Assert.AreNotEqual(rSAParameters.Modulus, rSAParameters2.Modulus);
        }
        public void TestPrivateKeyReturnsFalseWhenPrivateKeyPresent()
        {
            RSAParameters privateAndPublicKey = RSAEncryptionService.GenerateKeys();

            RSAEncryptionService baseLineService = new RSAEncryptionService(privateAndPublicKey);

            Assert.True(baseLineService.PrivateKeyPresent());
        }
        public void TestEncryptedStringCanBeDecrypted()
        {
            RSAEncryptionService service = new RSAEncryptionService();

            string testString = "Hello world encrypt me";

            byte[] encrypted = service.Encrypt(Encoding.UTF8.GetBytes(testString));

            Assert.AreEqual(testString, Encoding.UTF8.GetString(service.Decrypt(encrypted)));
        }
        private void InitializeFetcherDependencies(string phoneNumber)
        {
            MessagingContext   fetcherMessagingContext  = new DesignTimeDbContextFactory().CreateDbContext(new string[] { });
            IMessageRepository fetcherMessageRepository = new EntityFrameworkMessageRepository(fetcherMessagingContext);
            IContactRepository fetcherContactRepository = new EntityFrameworkContactRepository(phoneNumber, fetcherMessagingContext);
            IKeySetRepository  fetcherKeySetRepository  = new EntityFrameworkKeySetRepository(phoneNumber, fetcherMessagingContext);
            IEncryptionService fetcherEncryptionService = new RSAEncryptionService(fetcherKeySetRepository, Encoding);

            FetcherMessageService = new MessageService(fetcherContactRepository, fetcherMessageRepository, fetcherEncryptionService, Encoding, phoneNumber);
        }
Exemplo n.º 8
0
            public void ShouldSuccessfullyEncryptData()
            {
                // Arrange
                const string testData = "This is a test";
                var          service  = new RSAEncryptionService();

                // Act
                var cipherText = service.EncryptString(testData, _TestData.PublicKey);

                // Assert
                Assert.True(!string.IsNullOrWhiteSpace(cipherText));
            }
Exemplo n.º 9
0
            public void ShouldReturnBase64EncodedString()
            {
                // Arrange
                const string testData   = "This is a test";
                var          service    = new RSAEncryptionService();
                var          cipherText = service.EncryptString(testData, _TestData.PublicKey);

                // Act
                var bytes = Convert.FromBase64String(cipherText);

                // Assert
                Assert.True(bytes.Length > 0);
            }
Exemplo n.º 10
0
            public void ShouldSuccessfullyDecryptData()
            {
                // Arrange
                const string testData   = "This is a test";
                var          service    = new RSAEncryptionService();
                var          cipherText = service.EncryptString(testData, _TestData.PublicKey);

                // Act
                var plainText = service.DecryptString(cipherText, _TestData.PrivateKey);

                // Assert
                Assert.Equal(testData, plainText);
            }
        public void TestPrivateKeyReturnsFalseWhenPrivateKeyNotPresent()
        {
            RSAParameters privateAndPublicKey = RSAEncryptionService.GenerateKeys();


            RSAParameters publicKey = new RSAParameters
            {
                Modulus  = privateAndPublicKey.Modulus,
                Exponent = privateAndPublicKey.Exponent
            };
            RSAEncryptionService baseLineService = new RSAEncryptionService(publicKey);

            Assert.False(baseLineService.PrivateKeyPresent());
        }
Exemplo n.º 12
0
        private void GenerateKeyPair_Click(object sender, RoutedEventArgs e)
        {
            encryptionService = new RSAEncryptionService();

            MessageBox.Show("Created a new Encryption Service");

            ModulusTextBox.Text  = Convert.ToBase64String(encryptionService.PublicKey.Modulus);
            ExponentTextBox.Text = Convert.ToBase64String(encryptionService.PublicKey.Exponent);
            DTextBox.Text        = Convert.ToBase64String(encryptionService.PrivateKey.D);
            DPTextBox.Text       = Convert.ToBase64String(encryptionService.PrivateKey.DP);
            DQTextBox.Text       = Convert.ToBase64String(encryptionService.PrivateKey.DQ);
            InverseQTextBox.Text = Convert.ToBase64String(encryptionService.PrivateKey.InverseQ);
            PTextBox.Text        = Convert.ToBase64String(encryptionService.PrivateKey.P);
            QTextBox.Text        = Convert.ToBase64String(encryptionService.PrivateKey.Q);
        }
        public static void ToFile(
            string merchantSubscriptionKey,
            string merchantPublicKeyFileName,
            string mobilePayPublicKeyFileName,
            string encryptedOutputFile = "merchant.enc")
        {
            if (string.IsNullOrWhiteSpace(merchantSubscriptionKey))
            {
                throw new ArgumentException("Argument 1, your merchant subscription key, is not valid");
            }

            string merchantPublicKeyCrt;

            try
            {
                var x509Certificate2 = new X509Certificate2(merchantPublicKeyFileName);
                merchantPublicKeyCrt = ExportToPem(x509Certificate2);
            }
            catch (Exception e)
            {
                throw new ArgumentException(
                          "Argument 2, your merchant public key file path, is not pointing to a valid X509Certificate file", e);
            }

            X509Certificate2 mobilePayPublicKeyCrt;

            try
            {
                mobilePayPublicKeyCrt = new X509Certificate2(mobilePayPublicKeyFileName);
            }
            catch (Exception e)
            {
                throw new ArgumentException(
                          "Argument 3, MobilePay's public key file path, is not pointing to a valid X509Certificate file", e);
            }

            var encryptedBytes = RSAEncryptionService.Encrypt(
                mobilePayPublicKeyCrt.PublicKey.Key as RSACryptoServiceProvider,
                Encoding.UTF8.GetBytes(merchantPublicKeyCrt + ';' + merchantSubscriptionKey));

            using (var outputFileStream = new FileStream(encryptedOutputFile, FileMode.Create, FileAccess.ReadWrite))
            {
                outputFileStream.Write(encryptedBytes, 0, encryptedBytes.Length);
            }
        }
Exemplo n.º 14
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                RSAParameters rSAParameters = new RSAParameters
                {
                    Modulus  = Convert.FromBase64String(ModulusTextBox.Text),
                    Exponent = Convert.FromBase64String(ExponentTextBox.Text)
                };

                encryptionService = new RSAEncryptionService(rSAParameters);
                MessageBox.Show("The Public key have been set, you can now encrypt messages");
            }
            catch (CryptographicException)
            {
                MessageBox.Show("There is something wrong with the provided values");
            }
        }
        public void TestDecryptingWithOnlyPublicKeyThrowsException()
        {
            RSAParameters privateAndPublicKey = RSAEncryptionService.GenerateKeys();

            RSAEncryptionService baseLineService = new RSAEncryptionService(privateAndPublicKey);
            string textToEncrypt = "Testing this encrypts";

            byte[] baselineEncrypted = baseLineService.Encrypt(Encoding.UTF8.GetBytes(textToEncrypt));

            RSAParameters publicKey = new RSAParameters
            {
                Modulus  = privateAndPublicKey.Modulus,
                Exponent = privateAndPublicKey.Exponent
            };
            RSAEncryptionService encryptionService = new RSAEncryptionService(publicKey);

            Assert.Throws <PrivateKeyNotPresentException>(() => encryptionService.Decrypt(baselineEncrypted));
        }
        public void TestCreatingRSAKeyCanBeSetInConstructor()
        {
            RSAParameters rSAParameters = RSAEncryptionService.GenerateKeys();

            RSAEncryptionService service = new RSAEncryptionService(rSAParameters);

            //Check Public key
            Assert.AreEqual(rSAParameters.Modulus, service.PublicKey.Modulus);
            Assert.AreEqual(rSAParameters.Exponent, service.PublicKey.Exponent);

            //Check Private Key
            Assert.AreEqual(rSAParameters.Modulus, service.PrivateKey.Modulus);
            Assert.AreEqual(rSAParameters.Exponent, service.PrivateKey.Exponent);
            Assert.AreEqual(rSAParameters.P, service.PrivateKey.P);
            Assert.AreEqual(rSAParameters.Q, service.PrivateKey.Q);
            Assert.AreEqual(rSAParameters.DP, service.PrivateKey.DP);
            Assert.AreEqual(rSAParameters.DQ, service.PrivateKey.DQ);
            Assert.AreEqual(rSAParameters.D, service.PrivateKey.D);
            Assert.AreEqual(rSAParameters.InverseQ, service.PrivateKey.InverseQ);
        }
        public void TestEncryptWorksWhenOnlyPublicKeyIsPresent()
        {
            RSAParameters privateAndPublicKey = RSAEncryptionService.GenerateKeys();

            RSAEncryptionService baseLineService = new RSAEncryptionService(privateAndPublicKey);
            string textToEncrypt = "Testing this encrypts";

            byte[] baselineEncrypted = baseLineService.Encrypt(Encoding.UTF8.GetBytes(textToEncrypt));

            RSAParameters publicKey = new RSAParameters
            {
                Modulus  = privateAndPublicKey.Modulus,
                Exponent = privateAndPublicKey.Exponent
            };
            RSAEncryptionService encryptionService = new RSAEncryptionService(publicKey);

            byte[] encryptedTest = encryptionService.Encrypt(Encoding.UTF8.GetBytes(textToEncrypt));

            //Assert That the encrypted text comes back as equals
            Assert.AreEqual(baseLineService.Decrypt(baselineEncrypted), baseLineService.Decrypt(encryptedTest));
        }
Exemplo n.º 18
0
 public RSAEncryptionServiceTests()
 {
     this._keySetRepository     = A.Fake <IKeySetRepository>();
     this._encoding             = Encoding.UTF8;
     this._rsaEncryptionService = new RSAEncryptionService(this._keySetRepository, this._encoding);
 }
        public void TestGetPrivateKeyDontReturnNull()
        {
            RSAEncryptionService service = new RSAEncryptionService();

            Assert.NotNull(service.PrivateKey);
        }
Exemplo n.º 20
0
 static HardwareInfoHelper()
 {
     RSAEncryptionService = new RSAEncryptionService();
 }