【发布时间】:2011-11-20 17:09:20
【问题描述】:
【问题讨论】:
标签: macos security certificate keychain
【问题讨论】:
标签: macos security certificate keychain
证书是钥匙串项的子类型,因此您可以使用SecKeychainItemDelete 删除它们。为防止编译器警告,您需要将 SecCertificateRef 显式转换为 SecKeychainItemRef — 普通 C 语言不支持子类。
SecCertificateRef certificate = ...;
OSStatus status = SecKeychainItemDelete((SecKeychainItemRef)certificate);
if (status) {
// Handle error
}
如果您的目标是 Mac OS 10.6 或更高版本,您还可以使用更新的 SecItemDelete API。它在最简单的情况下没有任何优势,但您可以更改查询参数以一次删除多个证书,或者删除证书而不直接引用它们。
SecCertificateRef certificate = ...;
NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
kSecClassCertificate, kSecClass,
[NSArray arrayWithObject:(id)certificate], kSecMatchItemList,
kSecMatchLimitOne, kSecMatchLimit,
nil];
OSStatus status = SecItemDelete((CFDictionaryRef)query);
if (status) {
// Handle error
}
【讨论】: