Reputation: 452
I wrote below code in xamarin c# to store sensitive data in iPhone Keychain.
void StoreKeysInKeychain(string key, string value)
{
var user = Settings.CurrentUser;
var userstring = JsonConvert.SerializeObject(user);
if (value == "logout")
{
userstring = string.Empty;
};
var record = new SecRecord(SecKind.GenericPassword)
{
ValueData = NSData.FromString(userstring),
Generic = NSData.FromString(key),
Label="Sanket",
};
SecKeyChain.Remove(record);
SecKeyChain.Add(record);
}
SecRecord GetRecordsFromKeychain(string key)
{
SecStatusCode res;
var rec = new SecRecord(SecKind.GenericPassword)
{
Generic = NSData.FromString(key)
};
return SecKeyChain.QueryAsRecord(rec, out res);
}
Tested with the same code on another MAC simulator and it is working there but not on my MAC.
Both the MAC has same iOS 10.13.3 and simulator version 11.2. Even I tried to change the simulators but it doesn't store the data.
I tried to browse Keychain contents stored in sqlite format. Refer below link how to browse content stored in Keychain of simulator.
Link to : Browse Keychain Data stored in Simulator
I Tried to reset content of simulator but no luck.
Any help will be appreciated. Thanks :(
Upvotes: 1
Views: 2677
Reputation: 4652
In iOS 10 keychain on the simulator broke. Check out this Xamarin forums post: https://forums.xamarin.com/discussion/77760/ios-10-keychain and the correlated apple post: https://forums.developer.apple.com/thread/51071.
Here is the issue: Issue: SecKeyChain.Add() returns -34018 on iOS 10 simulator unless Enable Keychain Access Groups has been enabled in Entitlements.plist.
You need to update your Entitlements.plist
for the simulator build configuration.
Upvotes: 0