public static void ItDecryptsLicense() { using (var key = RSA.Create()) { string expected; string encryptedLicenseWithGrants = GenerateLicenseXmlWithEncryptedGrants(key, out expected); Assert.Contains("hello", expected); Assert.DoesNotContain("hello", encryptedLicenseWithGrants); XmlNamespaceManager nsManager; XmlDocument toDecrypt = LoadXmlWithLicenseNs(encryptedLicenseWithGrants, out nsManager); var decryptor = new XmlLicenseEncryptedRef(); var transform = new XmlLicenseTransform() { Decryptor = decryptor, Context = FindLicenseTransformContext(toDecrypt, nsManager) }; decryptor.AddAsymmetricKey(key); // Context is the input for this transform, argument is always ignored transform.LoadInput(null); XmlDocument decryptedDoc = transform.GetOutput() as XmlDocument; Assert.NotNull(decryptedDoc); string decrypted = decryptedDoc.OuterXml; Assert.Equal(expected, decrypted); } }
public static void ItRoundTrips() { byte[] input = new byte[] { 1, 2, 7, 4 }; MemoryStream ms = new MemoryStream(input); KeyInfo keyInfo; EncryptionMethod encMethod; CipherData cipherData; using (RSA rsa = RSA.Create()) { Encrypt(ms, rsa, out keyInfo, out encMethod, out cipherData); XmlLicenseEncryptedRef decr = new XmlLicenseEncryptedRef(); decr.AddAsymmetricKey(rsa); using (var encrypted = new MemoryStream(cipherData.CipherValue)) using (Stream decrypted = decr.Decrypt(encMethod, keyInfo, encrypted)) { byte[] decryptedBytes = new byte[decrypted.Length]; decrypted.Read(decryptedBytes, 0, (int)decrypted.Length); Assert.Equal(input, decryptedBytes); } } }