I ran into some kind of problem and found two common ways to securely store In-App purchases:
1) Using the secure version of NSUserDefaults:
a) "Safe NSUserDefaults". This version of NSUserDefaults generates a hash for any stored secret item and provides you with a check for that hash for the item after. Thus, you can easily cope with this situation by “hacking” the default .plist by the user.
Check here: https://github.com/matthiasplappert/Secure-NSUserDefaults
b) "SecureNSUserDefaults". NSUserDefaults with AES encryption. I can advise here not only to store safe bool values for purchases, but also some obfuscation of the line to indicate payment or not.
Check here: https://github.com/nielsmouthaan/SecureNSUserDefaults
2) Using KeyChain
a) "RSSecrets" A simple class for storing key value elements in KeyChain. See also discussion here: Storage in app Purchasing receipts in Keychain app
And check out the project: https://github.com/jeffargast/RSSecrets
b) "STKeychain" This class is mainly used to store login / password in KeyChain, but in the MKStroreKit project (the popular In-App Purchase StoreKit for iOS devices) they actually use this class to store purchases in applications.
Check here: https://github.com/ldandersen/STUtils/blob/master/Security/STKeychain.h
PS I haven’t used any of these classes in my project yet, but I’m thinking of using RSSecrets.
source share