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以降を対象とした場合、あなたはまた、新しい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
}