/// <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;
		}
Beispiel #2
0
 /// <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>();
 }