SecItemAdd返回状态0,同时将persistent_ref留空

时间:2014-10-11 19:06:32

标签: ios certificate identity keychain client-certificates

尝试将身份保存到我的钥匙串时,我使用以下代码。它只在某些情况下有效,但大多数时候都没有返回持久性引用。

我使用以下苹果提供的功能:

CFDataRef persistentRefForIdentity(SecIdentityRef identity)
{
    CFTypeRef persistent_ref = NULL;

    const void *keys[] = { kSecReturnPersistentRef, kSecValueRef };
    const void *values[] = { kCFBooleanTrue, identity };

    CFDictionaryRef dict = CFDictionaryCreate(NULL, keys, values, 2, NULL, NULL);

    OSStatus s = SecItemAdd(dict, &persistent_ref);

    if (dict)
        CFRelease(dict);

    return (CFDataRef)persistent_ref;
}

SecItemAdd返回的代码为0,但persistent_ref保持为NULL或0x0。这一切中最奇怪的部分是它有时会保存身份。发生了什么事?

0 个答案:

没有答案