public void GivenEncryptingData_WhenDecryptingData_FromImportedKey_ThenDataIsDecrypted() { var currentUser = WindowsIdentity.GetCurrent() .Name; var target = new RSAEncryption("target", currentUser); var signatureContainer = new RSAEncryption("signatureContainer", currentUser); var signaturePublicKey = signatureContainer.ExportKey(false); var targetPublicKey = target.ExportKey(false); HybridEncryption hybridEncryption = HybridEncryption.CreateEncryption(targetPublicKey, "signatureContainer"); HybridDecryption hybridDecryption = HybridDecryption.CreateDecryption("target", signaturePublicKey); RandomNumberGenerator random = new RNGCryptoServiceProvider(); var data = new byte[512]; var sessionKey = new byte[32]; var iv = new byte[16]; random.GetBytes(sessionKey); random.GetBytes(iv); random.GetBytes(data); (EncryptionSettings key, byte[] encryptedData)encryptedResult = hybridEncryption.EncryptData(sessionKey, data, iv); var keyBlob = encryptedResult.key.ExportToBlob(); var keyFromBlob = EncryptionSettings.FromBlob(keyBlob); var decryptedData = hybridDecryption.DecryptData(keyFromBlob, encryptedResult.encryptedData); Assert.That(decryptedData, Is.EqualTo(data)); }
public void ThenEncryptedFileCanBeDecryptedWithKey() { var encryptedFile = $"{Guid.NewGuid()}"; Program.Main(new[] { "encrypt", $"-{WellKnownCommandArguments.IMPORT_KEY}", _keyFile, $"-{WellKnownCommandArguments.SIGNATURE_CONTAINER}", _signatureContainerName, $"-{WellKnownCommandArguments.FILE_PATH}", "appsettings.json", $"-{WellKnownCommandArguments.ENCRYPTED_FILE_OUT}", encryptedFile }); var expectedFile = File.ReadAllBytes("appsettings.json"); var encryptedKey = EncryptionSettings.FromBlob(File.ReadAllBytes("decryptionkey")); var encryptedData = File.ReadAllBytes(encryptedFile); IHybridDecryption hybridDecryption = HybridDecryption.CreateDecryption(_containerName, File.ReadAllText(_signaturekeyFile)); var decryptedFile = hybridDecryption.DecryptData(encryptedKey, encryptedData); Assert.That(expectedFile, Is.EqualTo(decryptedFile)); }