Tag: 钥匙扣

是否有可能更新Keychain项目的kSecAttrAccessible值?

是否有可能更新Keychain中现有项目的属性kSecAttrAccessible的值? 该项目被添加到钥匙串后,似乎无法更改。 以下步骤备份我的假设。 将一个新项目添加到钥匙串: NSData *encodedIdentifier = [@"BUNDLE_IDENTIFIER" dataUsingEncoding:NSUTF8StringEncoding]; NSData *encodedPassword = [@"PASSWORD" dataUsingEncoding:NSUTF8StringEncoding]; // Construct a Keychain item NSDictionary *keychainItem = [NSDictionary dictionaryWithObjectsAndKeys: kSecClassGenericPassword, kSecClass, encodedIdentifier, kSecAttrGeneric, encodedIdentifier, kSecAttrService, @"USERNAME", kSecAttrAccount, kSecAttrAccessibleWhenUnlocked, kSecAttrAccessible, encodedPassword, kSecValueData nil]; // Add item to Keychain OSStatus addItemStatus = SecItemAdd((CFDictionaryRef)keychainItem, NULL); 稍后,将属性kSecAttrAccessible从kSecAttrAccessibleWhenUnlocked为kSecAttrAccessibleAfterFirstUnlock : NSData *encodedIdentifier = [@"BUNDLE_IDENTIFIER" dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary […]

保存在KeyChainItemWrapper崩溃的密码

Apple在其GenericKeyChain示例代码中提供了KeyChainItemWrapper类。 在这里有一个ARC'ed解决scheme,我试图遵循: 封装存储在iOS上的KeyChain。 包装的使用是这样的: KeychainItemWrapper *keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"F11-email-auth" accessGroup:nil]; [keychain setObject:[emailTextfield text] forKey:(__bridge id)(kSecMatchEmailAddressIfPresent)]; [keychain setObject:[passwordTextfield text] forKey:(__bridge id)(kSecClassGenericPassword)]; 带有电子邮件文本字段的行被接受。 但是密码的第二行崩溃,出现以下exception。 Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.' *** First throw call stack: ( 0 CoreFoundation 0x01b445e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x018c78b6 objc_exception_throw + 44 2 […]

iOS SFHFKeychainUtils失败*有时*错误-25308 errSecInteractionNotAllowed

我有这个代码从给定的用户名NSString的钥匙串获取密码: NSError *error = nil; NSString *appName = [[[NSBundle mainBundle] infoDictionary] objectForKey:(NSString*)kCFBundleNameKey]; NSString *pw = [SFHFKeychainUtils getPasswordForUsername:username andServiceName:appName error:&error]; if(error != nil) // log the error 大多数用户大多数时候这一切都工作正常 – 但对于一些特定的用户,这个调用似乎失败(并继续失败),它返回以下错误: The operation couldn't be completed. (SFHFKeychainUtilsErrorDomain error -25308.) 这显然是errSecInteractionNotAllowed – 从我读过的,我认为这意味着需要访问钥匙串的某种用户交互。 有没有人有任何想法,为什么这个电话可能会失败的一些特定的用户只? 这个钥匙串条目是特定于我的应用程序 – 那么为什么需要任何用户交互来访问它? 任何指针赞赏…

使用ios钥匙串进行身份validation – touch id(这是可能的)

开发人员可以访问用户对象的touchId,而不是使用ios钥匙串中的用户对象和密码在应用程序中进行身份validation。 我不想存储指纹(我知道苹果不会允许这样做),我只想使用在硬件上encryption的指纹(touchid)进行身份validation。 我似乎无法在文档中find任何允许我使用touchId执行身份validation的子类或方法,而不是使用者和传递。 任何见解都会很棒。 谢谢!

SecCopyErrorMessageString在swift中给出“使用未parsing的标识符”

尝试使用SecCopyErrorMessageString来解释errorCode。 在迅速: var result: OSStatus result = SecItemAdd(query as CFDictionary, nil); if result != errSecSuccess { let errorDescription = SecCopyErrorMessageString(result,nil) // NSLog("Keychain Error: %@", errorDescription) “未parsing标识符”的错误从“SecCopyError …”开始

适用于iOS开发人员和Mac开发人员的Apple证书已过期“证书具有无效的颁发者”

证书有一个无效的发行者 IOS和Mac的苹果证书不能全部显示已经过期,但是没有过期。

错误:git-credential-osxkeychain死于信号11

我已经安装github版本0.8.4,但是当我尝试从git获取某些东西时,它显示此消息。 Fetching all tracking branches from Queue-iOS completed successfully. command: git fetch Queue-iOS error: git-credential-osxkeychain died of signal 11 error: git-credential-osxkeychain died of signal 11 error: git-credential-osxkeychain died of signal 11 error: git-credential-osxkeychain died of signal 11 From https://github.com/appstute/Queue-iOS 59bb075..b2da838 master -> Queue-iOS/master 这是关于钥匙串的问题,当我从git集线器拉,显示以下消息 Pulling all tracking branches from Queue-iOS encountered an error. command: git […]

将数据保存在Swift 3中只能通过Touch ID访问的Keychain中

我正在努力实现以下代码的和平: 将一些数据存储在钥匙串中。 只有用户通过Touch ID或Pass Codevalidation才能获取数据。 我观看了Keychain和Touch ID身份validation,并了解以下内容: 如果您在添加一个新的值到Keychain时设置了正确的参数,下一次您将尝试将其取出,系统将自动显示Touch IDpopup窗口。 我写了一些代码,我的假设不起作用。 这是我写的: // // Secret value to store // let valueData = "The Top Secret Message V1".data(using: .utf8)!; // // Create the Access Controll object telling how the new value // should be stored. Force Touch ID by the system on Read. // let sacObject = […]

我失去了我的公钥。 我可以从私钥恢复吗?

我为iOS / OSX开发创build了一个密钥对+签名证书。 一路上,我丢失了与我的私钥一起使用的公钥。 也许这是因为钥匙串访问不会将私钥和公钥集合在一起,就像它与证书和私钥一样(这太恼人了!为什么它不这样做!) 在钥匙串访问中,我仍然可以右键单击私钥 – >“请求证书”; 但没有可用的公钥,我得到错误“指定的项目不能在钥匙串中find”。 我很确定公钥是可以恢复的,但是如何呢? 显然,钥匙串访问不够智能自动执行。 我终于明白了这一点,几天后我的答案就会正确无误,除非有人给答案增加新的东西。

iOS 10.3 beta 3不会保存KeychainItem的数据

我观察到iOS 10.2.1设备和iOS 10.3 beta 3设备的应用程序的行为https://developer.apple.com/library/content/samplecode/GenericKeychain/Introduction/Intro.html iOS 10.3 beta 3中的钥匙串数据正在被删除。在早期版本中仍然可以find。 我们有别的办法吗?