public void TestFullrun() { const string messageToEncrypt = "Important important!"; byte[] dataToEncrypt = Encoding.UTF8.GetBytes(messageToEncrypt); var hybridEncryper = new HybridRsaAes(); hybridEncryper.AssignNewRSAKeys(); RSAParameters publicKey = hybridEncryper.GetPublicRSAKey(); //public key receiver RSAParameters privateKey = hybridEncryper.GetPrivateRSAKey(); //private key receiver //Encrypt byte[] sessionKey = AbstractSecureCompareBase.GenerateRandomNumber(32); //256-bit byte[] iv = AbstractSecureCompareBase.GenerateRandomNumber(16); //128-bit byte[] encryptedData = hybridEncryper.EncryptAES(dataToEncrypt, sessionKey, iv); byte[] hmac = hybridEncryper.ComputeHmac(sessionKey, encryptedData); byte[] encryptedSessionKey = hybridEncryper.EncryptRSA(sessionKey, publicKey); //sending encrpyted file....(encryptedData, iv, hmac, encryptedSessionKey) //Decrypt byte[] decryptedSessionKey = hybridEncryper.DecryptRSA(encryptedSessionKey, privateKey); Assert.IsTrue(hybridEncryper.VerifyHmac(decryptedSessionKey, encryptedData, hmac)); byte[] decryptedData = hybridEncryper.DecryptAES(encryptedData, decryptedSessionKey, iv); Assert.IsTrue(Encoding.UTF8.GetString(decryptedData) == messageToEncrypt); }
public void GeSingleByName() { List<Contact> contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 0); List<MasterLogin> masterLogins = _dataAccess.GetAll<MasterLogin>(); Assert.IsTrue(masterLogins.Count == 0); var hybridEncrypter = new HybridRsaAes(); hybridEncrypter.AssignNewRSAKeys(); var contact = new Contact { Name = "Marcel", PublicKey = hybridEncrypter.GetPublicRSAKey() }; _dataAccess.Insert(contact); hybridEncrypter.AssignNewRSAKeys(); var contact2 = new Contact { Name = "Mario", PublicKey = hybridEncrypter.GetPublicRSAKey() }; _dataAccess.Insert(contact2); contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 2); var contact3 = _dataAccess.GetSingleByName<Contact>("Marcel"); Assert.IsTrue(contact3 != null); Assert.IsTrue(contact3.Name == "Marcel"); var salt = PBKDF2Impl.GenerateSalt(); hybridEncrypter = new HybridRsaAes(); hybridEncrypter.AssignNewRSAKeys(); var materLogin = new MasterLogin { Name = "MasterMan", Password = PBKDF2Impl.HashPassword(Encoding.UTF8.GetBytes("password123"), salt), Salt = salt, PrivateKey = hybridEncrypter.GetPrivateRSAKeyAsXml(), PublicKey = hybridEncrypter.GetPublicRSAKey() }; _dataAccess.Insert(materLogin); masterLogins = _dataAccess.GetAll<MasterLogin>(); Assert.IsTrue(masterLogins.Count == 1); var materLogin2 = _dataAccess.GetSingleByName<MasterLogin>("MasterMan"); Assert.IsTrue(materLogin2 != null); Assert.IsTrue(materLogin2.Name == "MasterMan"); }
public void TestConvertPublicKey() { var hybridEncryper = new HybridRsaAes(); hybridEncryper.AssignNewRSAKeys(); string keyString = hybridEncryper.GetPublicRSAKeyAsXml(); //sending public key string to friend.... var rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(keyString); Assert.IsTrue(hybridEncryper.GetPublicRSAKeyAsXml() == rsa.ToXmlString(false)); }
public void TestFullrunWithKeyShare() { const string messageToEncrypt = "Important important!"; byte[] dataToEncrypt = Encoding.UTF8.GetBytes(messageToEncrypt); var hybridEncryper = new HybridRsaAes(); hybridEncryper.AssignNewRSAKeys(); string keyString = hybridEncryper.GetPublicRSAKeyAsXml(); //sending public key string to friend.... var rsa = new RSACryptoServiceProvider(); rsa.FromXmlString(keyString); Assert.IsTrue(hybridEncryper.GetPublicRSAKeyAsXml() == rsa.ToXmlString(false)); //Encrypt RSAParameters publicKey = rsa.ExportParameters(false); //public key receiver byte[] sessionKey = AbstractSecureCompareBase.GenerateRandomNumber(32); //256-bit byte[] iv = AbstractSecureCompareBase.GenerateRandomNumber(16); //128-bit byte[] encryptedData = hybridEncryper.EncryptAES(dataToEncrypt, sessionKey, iv); byte[] hmac = hybridEncryper.ComputeHmac(sessionKey, encryptedData); byte[] encryptedSessionKey = hybridEncryper.EncryptRSA(sessionKey, publicKey); //sending encrpyted file....(encryptedData, iv, hmac, encryptedSessionKey) //Decrypt RSAParameters privateKey = hybridEncryper.GetPrivateRSAKey(); //private key receiver byte[] decryptedSessionKey = hybridEncryper.DecryptRSA(encryptedSessionKey, privateKey); Assert.IsTrue(hybridEncryper.VerifyHmac(decryptedSessionKey, encryptedData, hmac)); byte[] decryptedData = hybridEncryper.DecryptAES(encryptedData, decryptedSessionKey, iv); Assert.IsTrue(Encoding.UTF8.GetString(decryptedData) == messageToEncrypt); }
public void Update() { List<Contact> contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 0); var hybridEncrypter = new HybridRsaAes(); hybridEncrypter.AssignNewRSAKeys(); var contact = new Contact { Name = "Marcel", PublicKey = hybridEncrypter.GetPublicRSAKey() }; _dataAccess.Insert(contact); contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 1); Contact contact2 = contacts[0]; hybridEncrypter.AssignNewRSAKeys(); contact2.Name = "Marcel.Elz"; contact2.PublicKey = hybridEncrypter.GetPublicRSAKey(); _dataAccess.Update(contact2); contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 1); Assert.IsTrue(contacts[0].Name == "Marcel.Elz"); }
public CryptographyService() { _hybridEncrypter = new HybridRsaAes(); }