APIs handled for data encryption

Information about app APIs that are intercepted for encryption and decryption.

Intercepted APIs

Unless otherwise indicated, these APIs are both encrypted and decrypted in the wrapper.

C APIs cannot be considered for interception. If the files handled by C APIs must be encrypted, switch to alternative Objective-C APIs.

NSData
Class Method
NSData - initWithContentsOfFile:
  - initWithContentsOfFile:options:error:
  - writeToFile:atomically:
  - writeToFile:options:error:
  + dataWithContentsOfFile:
  + dataWithContentsOfURL:
  - writeToURL:atomically:
NSString
Class Method
NSString - initWithContentsOfFile:encoding:error:
  - initWithContentsOfFile:usedEncoding:error:
  - writeToFile:atomically:encoding:error:
  - writeToURL:atomically:encoding:error:
NSFileHandle
Class Method
NSFileHandle + fileHandleForReadingAtPath:
  + fileHandleForReadingFromURL:error:
  + fileHandleForWritingAtPath:
  + fileHandleForWritingToURL:error:
  + fileHandleForUpdatingAtPath:
  + fileHandleForUpdatingURL:error:
  - initWithFileDescriptor:
  - initWithFileDescriptor:closeOnDealloc:
  - readDataOfLength:
  - writeData:
  - closeFile
  - readDataToEndOfFile
NSInputStream (Decryption only)
Class Method
NSInputStream - initWithURL:
  - read:maxLength:
  - close
NSOutputStream (Encryption only)
Class Method
NSOutputStream - initWithURL:append:
  - write:maxLength:
  - close
NSFileManager
Class Method
NSFileManager - createFileAtPath:contents:attributes:
  - removeItemAtPath:error:
  - copyItemAtPath:toPath:error:
  - moveItemAtPath:toPath:error:
NSUserDefaults
Class Method
NSUserDefaults - objectForKey:
  - setObject:forKey:
  - boolForKey:
  - integerForKey:
  - stringForKey:
  - persistentDomainForName:
AVPlayer (Decryption only)
Class Method
AVPlayer - initWithPlayerItem:
MPMoviePlayerController (Decryption only. Deprecated in iOS 9.0)
Class Method
MPMoviePlayerController - initWithContentURL:
NSPersistentStoreCoordinator
Class Method
NSPersistentStoreCoordinator - addPersistentStoreWithType:configuration:URL:options:error:
NSDictionary (Decryption only)
Class Method
NSDictionary + dictionaryWithContentsOfFile:
NSKeyedArchiver (Encryption only)
Class Method
NSKeyedArchiver + archiveRootObject:toFile:
NSKeyedUnarchiver
Class Method
NSKeyedUnarchiver + archiveRootObject:toFile:
(Decryption only)
UIImage (Decryption only)
Class Method
UIImage + imageWithContentsOfFile:
  + imageNamed:
AVURLAsset
Class Method
AVURLAsset - initWithURL:options:
   
(Decryption only)
sqlite3.c
Class Method
sqlite3.c sqlite3_open

Special Case - Support for Core Graphics PDF

To decrypt PDF files dynamically, you must use an Objective-C interface to intercept. MaaS360® provides an Objective-C wrapper for the C function that is used to create PDF references.

thePDFDocRef = [MaaS360AppWrapUtility CGPDFDocumentCreateWithURL:theURL];

You must download two files from MaaS360 Developer Support and include those files in your source code:

  • MaaS360AppWrapUtility.m
  • MaaS360AppWrapUtility.h

Include the new Objective-C class file in your source code to the target. The header of this file must be included in the files where the changes are needed.

Non-iOS APIs intercepted

Third-party APIs
Class Method Use
MaaS360AppWrapUtility + CGPDFDocumentCreateWithURL: Decryption
MFDocumentManager - initWithFileUrl: Decryption
ReaderDocument + isPDF: Decryption
SSZipArchive + unzipFileAtPath:toDestination: Decryption/Encryption
ZipArchive - addFileToZip:newName: Decryption/Encryption