gpt4 book ai didi

ios - 为什么在使用 kSecAttrAccessibleWhenUnlocked 时设备锁定时可以访问钥匙串(keychain)?

转载 作者:行者123 更新时间:2023-11-28 22:23:32 25 4
gpt4 key购买 nike

我在向钥匙串(keychain)添加值时设置了 kSecAttrAccessibleWhenUnlocked 键。 documentation状态:

The data in the keychain item can be accessed only while the device is unlocked by the user.

我写了一个简单的测试应用,这里是 viewDidLoad 方法:

[[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:nil];

// Device (with passcode lock) is locked now

double delayInSeconds = 6.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

NSError * error = nil;

[MyKeychainWrapper setKeychainObject:@"abc"
forKey:@"key"
error:&error];
NSLog(@"Setting Error: %@", error); // No error logged

NSString * value = (NSString *) [MyKeychainWrapper keychainObjectForKey:@"key"
error:&error];
NSLog(@"value: %@", value); // Logs ABC when the device is locked
NSLog(@"Getting Error: %@", error); // No error logged
});

设备锁定时如何保存和读取数据?

最佳答案

有点不清楚你是如何测试这个的,我假设你正在运行你的代码然后按下手机上的电源按钮。按下电源按钮时钥匙串(keychain)锁定不会立即发生,因此您的应用程序将能够在按下电源按钮后的短时间内(大约 10 秒)访问钥匙串(keychain)项目。

适用于 iOS;如果您在开发人员模式下的手机上运行此代码,查看控制台,您会注意到在按下手机上的电源按钮后,钥匙串(keychain)实际锁定需要几秒钟。在我的 iPhone 5 上,它需要 10 秒,具体取决于正在运行的应用程序。解锁设备也是如此,需要一段时间才能解锁钥匙串(keychain)。这是我刚刚做的一个例子;请注意,从“Locking”到“Locked”打印输出大约需要 10 秒。

May  5 14:26:20 I50 kernel[0] <Debug>: AppleKeyStore::start_keybag_locking: Device Locking..
May 5 14:26:20 I50 kernel[0] <Debug>: ALS: AppleARMBacklight::handleMessageGated - framebufferState -> 0
May 5 14:26:30 I50 UserEventAgent[14] <Error>: LockStateNotifier aksNotificationCallback posting notification: com.apple.mobile.keybagd.lock_status
May 5 14:26:30 I50 kernel[0] <Debug>: AppleKeyStore:Sending lock change 1
May 5 14:26:30 I50 kernel[0] <Debug>: AppleKeyStore::device_state_transition: Device Locked, lockstate=1

据我所知,Apple 并未指定确切时间,但 6 秒可能不足以让钥匙串(keychain)锁定。

关于ios - 为什么在使用 kSecAttrAccessibleWhenUnlocked 时设备锁定时可以访问钥匙串(keychain)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19637614/

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