gpt4 book ai didi

objective-c - iOS8 + Apple的KeychainItemWrapper导致崩溃

转载 作者:太空狗 更新时间:2023-10-30 03:32:39 24 4
gpt4 key购买 nike

我一直在 Apple 论坛和 SO 上搜索这个问题,但无济于事。使用 Apple 的 KeychainItemWrapper (ARCIfied),尝试设置 kSecAttrAccessible将属性设置为除默认值 (kSecAttrAccessibleWhenUnlocked) 之外的任何值都会导致 SecItemUpdate 断言失败并返回错误。

KeychainItemWrapper *wrapper = [[KeyChainItemWrapper alloc] initWithIdentifier:kMyIdentifier accessGroup:nil];
[wrapper setObject:kMyServiceName forKey:(__bridge NSString*)kSecAttrService];
[wrapper setObject:kMyAccountToken forKey:(__bridge NSString*)kSecAttrAccount];
[wrapper setObject:(__bridge NSString*)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly forKey:(__bridge NSString*)kSecAttrAccessible];

我们其余的钥匙串(keychain)更新似乎都进行得很顺利,但最后一行结果是:

*** Assertion failure in -[KeychainItemWrapper writeToKeychain], /Users/john.hammerlund/.../KeychainItemWrapper.m:299

断言失败是由于 SecItemUpdate() 返回状态 -50,这似乎是一般的“无效参数”错误。

立即设置 kSecAttrAccessible key 没有影响,但将其设置为默认值 kSecAttrAccessibleWhenUnlocked减轻了这个问题(但消除了这一点)。 This other question是我发现的与导致 KeychainItemWrapper 崩溃的 iOS 8 有关的唯一附加信息。使用 iOS 7 或 iOS 7/8 上的模拟器构建到设备可以消除该问题;它只会在使用 iOS 8 的真实设备上出现。

更新

下面是查询字典的广泛概述:

{
accc = "<SecAccessControlRef: 0x1687cc70>";
acct = ...;
agrp = ...;
cdat = "2014-10-13 22:22:47 +0000";
desc = "";
gena = ...;
labl = "";
mdat = "2014-10-13 22:34:16 +0000";
pdmn = cku; <-- kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly
svce = ...;
sync = 0;
tomb = 0;
"v_Data" = <>;
}

和 attributesToUpdate 参数:

{
accc = "<SecAccessControlRef: 0x1687cc70>";
acct = ...;
agrp = ...;
cdat = "2014-10-13 22:22:47 +0000";
desc = "";
gena = ...;
labl = "";
mdat = "2014-10-13 22:34:16 +0000";
pdmn = ak; <-- kSecAttrAccessibleWhenUnlocked
svce = ...;
sync = 0;
tomb = 0;
"v_Data" = <>;
}

我已经确认更改其他字段(即 kSecAttrService、kSecAttrAccount)对字典中的相应字段具有相同的效果,但预期状态为 0。

最佳答案

我遇到了同样的问题。我最终测试了 kSecAttrAccessibile,如果它不是我想要的,我将钥匙串(keychain)中的值和属性记录在局部变量中,重置钥匙串(keychain),根据需要设置 kSecAttrAccessible,然后将钥匙串(keychain)中的值和属性设置为其原始设置。

关于objective-c - iOS8 + Apple的KeychainItemWrapper导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com