evgenyneu / keychain-swift

Helper functions for saving text in Keychain securely for iOS, OS X, tvOS and watchOS.
MIT License
2.85k stars 345 forks source link

Added macos support #151

Open bananaRanger opened 2 years ago

bananaRanger commented 2 years ago

Hi @evgenyneu! thank you for keychain-swift. It saves my time!

But I want to share with you some behavior for macOS.

There was a problem:

I am using keychain in my macOS app to store jwt tokens (access and refresh)(kSecClassGenericPassword) and I have figured out that I can't manage existed data via the same app with another name. I have built two equal applications with different app names:

for example App1.app and App2.app Note: it's the same build, but with only a different - app file name.

And if I create the keychain item using the first app (App1.app) I can't remove it from the second one.

If I double click on the keychain item in Keychain Access default App I can see that there is only one app in Access Control tab (with the name App1.app).

The Solution

Finally, I have found the solution in this article: Making macOS Keychain behave as iOS keychain

And have made a pull request based on this article.

aehlke commented 2 years ago

this is unnecessary if kSecAttrSynchronizable is used right?

bananaRanger commented 2 years ago

@aehlke absolutely, it needs for the case when you don't want use iCloud sync for macOS