目前,我有一个用Swift编写的iOS应用程序,将通过Xamarin Forms替换为新版本。 我无法访问旧的(Swift)Keychain,在那里只返回ItemNotFound
请求代码。 两个应用程序都使用相同的Bundle ID。
这是我正在使用的代码:
byte[] _LegacyGetKeychainItem<T>(string key)
{
using (var record = ExistingRecordForKey(key))
using (var match = SecKeyChain.QueryAsData(record, false, out var resultCode))
{
if (resultCode == SecStatusCode.Success)
{
return match.ToArray();
}
}
throw new InvalidOperationException(string.Format("GetKeychainItem: data was null for key: {0}", key));
}
SecRecord ExistingRecordForKey(string key)
{
return new SecRecord(SecKind.GenericPassword)
{
Service = SEC_SERVICE, // Same as Bundle ID
Account = key
};
}