In watchOS 2, there are no more shared keychains.
If I want to send a keychain value from the iOS app to the Watch app, is it safe to send it via WCSession updateApplicationContext?
In watchOS 2, there are no more shared keychains.
If I want to send a keychain value from the iOS app to the Watch app, is it safe to send it via WCSession updateApplicationContext?
Response from Apple:
As per the Apple Security guideline:-
Keychain Services Ease of Use https://developer.apple.com/library/ios/documentation/Security/Conceptual/keychainServConcepts/02concepts/concepts.html
Yes.
If your keychain value doesn't change, and you repeatedly update your application context, you may want to arrange to only send the value one time (for the watch to add to its keychain), instead of repeatedly resending the keychain value.
An Apple engineer discusses using Watch Connectivity to send keychain items on the developer forum:
Update:
In watchOS 2, Watch Connectivity is the mechanism for transferring data between a paired phone and its watch. Communication between devices is encrypted, according to the iOS Security Guide.
As for whether the dictionary may be accessible while in-memory, or how it might be persisted before your extension ever receives it, I think you have to rely on Apple to address any possible vulnerabilities.
It's probably reasonable to say that the info isn't in as safe a place as the keychain, until your extension wakes, receives the update, then stores the value in the keychain.