2011-09-20 4 views

答えて

5

証明書はキーチェーンアイテムのサブタイプですので、SecKeychainItemDeleteを使用してそれらを削除できます。コンパイラの警告を防ぐには、SecCertificateRefSecKeychainItemRefに明示的にキャストする必要があります。プレーン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 
}