Tag: 钥匙串

没有密码回退的Touch ID的SecItemCopyMatching

我正在使用SecItemCopyMatching来获取由Touch ID保护的钥匙串项目。 但是,如果Touch ID解锁失败(或者用户select“input密码”),我想呈现我自己的PINinputUI。 我不希望用户在任何时候出现系统密码inputUI。 LAContext的evaluatePolicy方法提供了这个,但是不提供任何实际的钥匙串安全性,仅仅是本地authentication。 因此,我不会使用LAContext来实现这一点。 这可能与SecItemCopyMatching ?

从KeyChain保存并加载 Swift

如何简单地在钥匙串中存储一个string,并在需要时加载。 有几个SO解决scheme主要是指Git回购。 但是我需要最新的Swift上最小和最简单的解决scheme。 当然,我不想在我的项目中添加git框架来存储密码。 也有类似的解决scheme通过KeyChain保存和检索值 ,这不适合我。 厌倦了编译器错误。

将NSDictionary存储在钥匙串中

使用KeychainItemWrapper (或不使用)可以将一个NSDictionary存储在iPhone钥匙KeychainItemWrapper ? 如果这是不可能的,你有另一种解决scheme吗?

如何将私钥添加到分发证书?

那么,我有我的开发人员证书链接到它的私钥。 工作正常。 我已经下载了我的iOS的configuration文件,但它说没有find有效的签名身份。 所以我检查了我的证书,确切地说,我的开发者证书与私钥链接,而不是我的分发证书。 我如何链接/添加我的私钥到这个证书!? 这将解决问题“有效签名身份未find”?

将应用程序还原到新设备时,iOS钥匙串存储是否存在?

我的问题直接与这个问题有关,但不同的是: iOS:新设备或恢复的钥匙串 。 如果您将信息存储在钥匙串存储中,它会被备份到iTunes和iCloud中,以便在将其恢复到其他设备时,数据将被保存。 对于OP自己的问题的部分回答是: 但是现在我读到只有在iTunes中encryption备份(不知道iCloud备份)时才能恢复钥匙串。 接受的答案是: 您可以使用iCloud传输数据,但这并不安全! 保存这个数据ENCRYPTED在你的服务器上,让应用程序读取这个数据将是一个解决scheme。 顺便说一句。 你不应该在钥匙串中保存未encryption的合理数据。 越狱后,钥匙链可以很容易被读取。 开发人员是否可以对代码中的数据进行encryption,或者通过iTunes或iCloud用户如何处理其备份来确定备份是否已encryption? 这个答案对我来说非常重要,因为我正在设置一个应用程序的初始启动date,这个应用程序决定了在应用程序订阅之前必须重新订阅多久。 这些信息必须在旧设备和新设备之间共享,即使应用程序在一段时间内被移除,也仍然保留在一台设备上。

无法在钥匙串中存储电子邮件(KeychainItemWrapper)

我正在使用github上提供的KeychainItemWrapper的ARCified版本,我无法获得它存储电子邮件和密码。 KeychainItemWrapper *keychainItem = [[KeychainItemWrapper alloc] initWithIdentifier:@"myApp" accessGroup:@"MY_APP.com.yourcompany.GenericKeychainSuite"]; [keychainItem setObject:[self.email dataUsingEncoding:NSUTF8StringEncoding] forKey:(__bridge id)kSecAttrAccount]; [keychainItem setObject:self.password forKey:(__bridge id)kSecValueData]; 只要我存储一封电子邮件,我就完美地工作了…没有符号(@)。 否则,我得到的错误 *** Assertion failure in -[KeychainItemWrapper writeToKeychain] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Couldn't add the Keychain Item.' 哪些来自这些线路 result = SecItemAdd((__bridge CFDictionaryRef)[self dictionaryToSecItemFormat:keychainItemData], NULL); NSAssert( result == noErr, @"Couldn't add the Keychain Item." […]

无法使用钥匙串访问(Mac OS X Mavericks)导入代码签名公钥或私钥

在试图构build一个iOS项目(在XCode),我需要导入我的同事的公钥和私钥的代码签名身份,但我无法这样做,因为我在Keychain访问中出现错误,说:“有错误发生无法导入项目/无法取得该项目的内容“ 完整的详细信息: 我从同事的电脑上拿到了两把钥匙,把它们从他的钥匙链上作为两个文件输出: Roomer Inc.p12(私钥) Roomer Inc.pem(公钥) 当他输出这些时,他把密码留空(虽然我们也用“test”的密码试过了,结果也一样)。 当我双击Roomer Inc.p12(用于私钥)时,它会在钥匙串访问中打开并提示我select钥匙串(默认情况下select“login” 我点击“添加”,然后提示input密钥链(我留空) 接下来我总是在Keychain访问中看到这条消息: 但是,尽pipe出现此消息,但单击“确定”后,我会看到“Roomer Inc”的新私钥条目。 请注意,这个条目是“login”钥匙链中的一个私钥,就像我所期望的那样,但没有过期date(应该是这样吗?) 接下来,对于Roomer Inc.pem文件(公钥),我被要求select钥匙串(“login”),然后单击添加 然后,我也得到了公钥的“发生错误,无法导入项目/该项目的内容不能被检索”的消息。 然而,在这种情况下(与私钥不同),我没有看到任何对应于我刚刚添加的项目。 因此,看起来私钥条目可能会或可能不会(我无法validation),并且没有此错误消息,Roomer的公钥条目不能安装在钥匙串中。 请注意,我也尝试使用安全导入命令来导入公钥: $ security import Roomer \ Inc.pem -f pkcs12〜/ Library / Keychains / login.keychain 1个密钥导入。 当我这样做,虽然命令返回“1键导入”我没有看到“Roomer公司”在我的钥匙串访问窗口(我closures了钥匙串访问并重新打开它)的公钥。 无论哪种方式,我们已经确定这是我们的阻挡者。 (当然的症状是XCode项目不会为与TestFlight一起使用的AdHoc供应configuration文件构build)。 我已经放弃了关于XCode构build和TestFlight设置的额外步骤,因为我们相信核心问题与上面所解释的导入键有关。

钥匙串:报告为errSecItemNotFound的项目,但在添加时收到errSecDuplicateItem

这个问题一直在困扰我,我希望有人对此有所了解。 从本质上讲,我有一小部分用户无法保存/更新项目到钥匙串。 有问题的控制stream程如下: 我们使用SecItemCopyMatching检查项目的存在。 这将返回错误代码errSecItemNotFound 然后我们尝试通过SecItemAdd添加项目,但是这会返回errSecDuplicateItem 。 因此,我们有一些用户根本无法更新钥匙串项目的一个子集,要求他们恢复他们的设备以清除钥匙串。 这显然是一个不可接受的解决方法。 它似乎以前为他们工作,但现在已经进入这个不可更新的周期。 经过研究,我看到有关SecItemCopyMatching使用的search查询的问题不够具体,但我的代码尽可能使用通用search查询。 + (NSMutableDictionary*)queryForUser:(NSString*)user key:(NSString*)key { if (!key || !user) { return nil; } NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier]; NSString* prefixedKey = [NSString stringWithFormat:@"%@.%@", bundleId, key]; NSMutableDictionary* query = [NSMutableDictionary dictionary]; [query addEntriesFromDictionary:@{(__bridge id)kSecClass : (__bridge id)kSecClassGenericPassword}]; [query addEntriesFromDictionary:@{(__bridge id)kSecAttrAccount : user}]; [query addEntriesFromDictionary:@{(__bridge id)kSecAttrService […]

在iOS上查找证书

注意这个问题在2001年被问到。事情已经改变了。 我有一个需要访问Junos VPN的iOS设备。 来自Junospipe理员的不透明指令表示,我必须检索已使用Apple IPCU提供给设备的证书。 我知道证书是在设备上(我可以在设置中看到它),我可以通过Mail,Safari和Junos App访问VPN。 苹果文档指出,每个应用程序都有自己的钥匙串,但所有这三个应用程序都可以看到证书。 Jusos可以访问IPCU提供的证书的事实意味着任何应用程序都可以访问此证书。 但是当我尝试find它时: CFTypeRef certificateRef = NULL; // will hold a ref to the cert we're trying to retrieve const char *certLabelString = "myCertificateName"; // c string of the certificate we're searching for. CFStringRef certLabel = CFStringCreateWithCString( NULL, certLabelString, kCFStringEncodingUTF8); // the search we need – a string […]

将私钥添加到证书中,反之亦然

问题是,我想创build一个新的私人/公共密钥对新的应用程序。 所以我跟着文档( http://developer.apple.com/ios/manage/certificates/team/howto.action ),它说,首先创build一个新的密钥对。 好吧,我得到了一个证书签名请求文件,我必须上传到开发者主页(证书>开发)。 在那里,我发现,(因为)我们已经在appstore中有一个应用程序,已经有一个证书。 所以我下载了现有的并在查找器中双击它。 钥匙串已打开,但没有将证书附加到新创build的私钥(正如我所阐述的那样)。 我做错了什么? 我必须做什么来激活这个密钥对? 有人可以帮我解决这个问题吗? 感谢Br Nic