Ios kSecAttrAccount和kSecAttrGeneric
我想把钱存到一个账户里marta@domain.com两个价值观。词典示例:Ios kSecAttrAccount和kSecAttrGeneric,ios,swift,security,keychain,Ios,Swift,Security,Keychain,我想把钱存到一个账户里marta@domain.com两个价值观。词典示例: 值1。 kSecAttrAccount=marta@domain.com kSecAttrGeneric=value1Key kSecValueData=value1 值2。 kSecAttrAccount=marta@domain.com kSecAttrGeneric=value2Key kSecValueData=value2 可能吗?当我试图保留第二个值时,执行查询时出错 我附加了一段代码: func
- 值1。
- 值2。
可能吗?当我试图保留第二个值时,执行查询时出错 我附加了一段代码:
func addCredentials(_ credentials: KeychainCredentials) throws {
let account = credentials.account
let password = credentials.password.data(using: String.Encoding.utf8)!
let generic = credentials.generic
let accessControl = SecAccessControlCreateWithFlags(kCFAllocatorDefault,
kSecAttrAccessibleWhenPasscodeSetThisDeviceOnly,
.userPresence,
nil)
// Build the query
let query: [String: Any] = [kSecClass as String: kSecClassGenericPassword,
kSecAttrService as String: serviceName,
kSecAttrAccount as String: account,
kSecAttrGeneric as String: generic,
kSecAttrAccessControl as String: accessControl as Any,
kSecValueData as String: password]
let status = SecItemAdd(query as CFDictionary, nil)
guard status == errSecSuccess else { throw KeychainError(status: status) }
}
对于
kSecClassGenericPassword
,服务和帐户的组合必须是唯一的。有关哪些属性是主键的一部分的列表,请参阅的文档
当给定钥匙链已经具有具有相同组合主键集的相同类别的项目时,系统将该项目视为该钥匙链的副本。每一类keychain项都有一组不同的主键,尽管在所有类中有一些属性是通用的。特别是,在适用的情况下,kSecAttrSynchronizable和kSecAttrAccessGroup是主键集的一部分。下面列出了其他每类主键:
对于通用密码,主键包括kSecAttrAccount和kSecAttrService
对于internet密码,主键包括kSecAttrAccount、kSecAttrSecurityDomain、kSecAttrServer、kSecAttrProtocol、kSecAttrAuthenticationType、kSecAttrPort和kSecAttrPath
对于证书,主键包括kSecAttrCertificateType、kSecAttrIssuer和kSecAttrSerialNumber
对于关键项,主键包括kSecAttrKeyClass、kSecAttrKeyType、KSECATTRAPPLICATION标签、KSECATTRAPPLICATION标签、kSecAttrKeySizeInBits和kSecAttrEffectiveKeySize
对于绑定在一起的证书和私钥等标识项,主键与证书的主键相同。由于私钥可以多次认证,因此证书的唯一性决定身份的唯一性
如果我正在构建它,我可能会将所有键/值放入一个字典中,并将其序列化到单个kSecAttrAccount记录中
或者,您可以将您的帐户和服务值合并到帐户中(如果您有服务),并将value1Key
放入服务属性中。然后,帐户+服务对于给定的键是唯一的。非常感谢您,Rob(:我将开发第一个选项,一个包含所有键/值的字典。