用途:为 iOS/macOS 开发者提供 Keychain Services 的 API 速查参考,用于安全存储密码、令牌与密钥。
主要能力:
- SecItem 函数:SecItemAdd、SecItemCopyMatching、SecItemUpdate、SecItemDelete 的签名与字典参数规则。
- 条目类别:kSecClassGenericPassword、kSecClassInternetPassword、kSecClassCertificate、kSecClassKey、kSecClassIdentity 及其属性键与类型。
- 唯一性约束:各类别的主键属性组合,重复添加返回 errSecDuplicateItem (-25299)。
- 搜索与返回属性:kSecMatchLimit、kSecMatchCaseInsensitive、kSecReturnData/Attributes/Ref/PersistentRef。
- 可访问性常量:WhenUnlocked、AfterFirstUnlock、ThisDeviceOnly 变体及备份/同步行为。
- 访问控制:SecAccessControlCreateFlags 标志(.userPresence、.biometryAny、.biometryCurrentSet、.devicePasscode、.privateKeyUsage、.applicationPassword、.watch、.or、.and)与组合方式。
- LocalAuthentication 集成:用 LAContext 预评估生物识别后传入查询,避免二次提示。
使用方式:以 Swift 字典构造查询,调用对应 SecItem 函数并检查 OSStatus。示例:SecItemAdd(addQuery as CFDictionary, nil)。
限制:kSecAttrAccessible 与 kSecAttrAccessControl 互斥;SecItemAdd 不接受 kSecMatch* 搜索属性;SecItemCopyMatching 不接受 kSecValueData 作为搜索条件;SecItemDelete 默认删除全部匹配项且无确认;kSecClassIdentity 为证书与密钥的虚拟组合,不能直接添加。kSecAttrAccessibleAlways 等已废弃。
适用场景:需要查阅钥匙串 API 细节、设计安全存储或排查重复项与可访问性问题的开发工作。
其他:具体平台版本要求、错误码完整列表及官方文档链接暂未提供。