The encryption of the app described without giving away too much:
- It uses
HTTPSwithNSUrlConnectionto communicate with the backend server - It generates an RSA keypair (using
SecKeyGenerateKeyPair) and stores the private key inKeychainand sends the public key to the backend server. This public key is used on the server to encrypt specific data sent to that user from other users. That data can then be requested from the server and the user app decrypts it (withSecKeyDecrypt) with its private key. - It can connect to a specific BLE device for a specific purpose. The app then exchanges keys using DH the first time they connect. After that, the app and BLE device can communicate specific things using the exchanged keys by utilizing
AES128usingCCCryptfromCommonCryptor.
App Store compliance
- Assume we need to say "YES" to using non-exempt encryption and add to Info.plist
- But is our app upholding:
Your app uses encryption limited to that within the Apple operating system? If so, we "only" need to submit a self-classification report as per https://help.apple.com/app-store-connect/#/devc3f64248f - We only use OS provided libraries for our encryption (as described above). But it is thewithin the Apple operating systemthat feels a bit confusing. We only use OS provided libraries but our communication goes "in and out of the operating system"
How would you classify an app that meets the given description? Hope it's described well enough to render a good answer!