/// <summary> /// Returns a <see cref="NSData"/> instance from the serialization context. /// </summary> private static NSData DataFromSerialization (SerializationInfo info) { SerializationInfoEnumerator enumerator = info.GetEnumerator (); while (enumerator.MoveNext()) { if (String.Equals (enumerator.Name, "Data", StringComparison.OrdinalIgnoreCase)) { try { byte[] buffer = (byte[])enumerator.Value; if (buffer != null) { // Wraps the byte array into a NSdata NSData data = new NSData (buffer); return data.SafeAutorelease<NSData> (); } } catch (Exception) { // Do nothing } } } return null; }
/// <summary> /// Decrypts the given data by using the <see cref="ArtworkEncrypter"/> tool. /// </summary> /// <param name="encryptedData">The encrypted artwork data.</param> /// <param name="encryptionSeed">The encryption seed to use.</param> /// <returns>The decrypted artwork data.</returns> public static NSData DecryptData(NSData encryptedData, NSString encryptionSeed) { NSData result; try { Aes aes = FileEncrypter.GetProvider(encryptionSeed); byte[] encryptedBytes = encryptedData.GetBuffer(); byte[] decryptedBytes = FileEncrypter.Decrypt(encryptedBytes, aes); result = new NSData(decryptedBytes); } catch (Exception e) { Logger.Warn("NSData", "Cannot decrypt encrypted data: " + e); result = NSData.Data.Copy<NSData>(); } return result.SafeAutorelease<NSData>(); }