2
我查看了Apple's Certificate reference,我沒有看到任何有關從鑰匙串中刪除證書的信息。如何通過代碼從Mac Keychain中刪除證書?
允許嗎?
如果是這樣,怎麼樣?如果不是,爲什麼不呢?
我查看了Apple's Certificate reference,我沒有看到任何有關從鑰匙串中刪除證書的信息。如何通過代碼從Mac Keychain中刪除證書?
允許嗎?
如果是這樣,怎麼樣?如果不是,爲什麼不呢?
證書是鑰匙串項目的子類型,因此您可以使用SecKeychainItemDelete
刪除它們。爲了防止編譯器警告,您需要明確地將SecCertificateRef
轉換爲SecKeychainItemRef
- 普通的C語言不支持子類。
SecCertificateRef certificate = ...;
OSStatus status = SecKeychainItemDelete((SecKeychainItemRef)certificate);
if (status) {
// Handle error
}
如果目的MAC OS 10.6或更高版本,您還可以使用新的API SecItemDelete
。在最簡單的情況下,它沒有提供任何優勢,但您可以更改查詢參數以一次刪除多個證書,或刪除證書而不直接引用它們。
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
}