SecKeychainItemDelete возвращает -67701 (errSecInvalidRecord) в Mac OS X 10.7 - PullRequest
4 голосов
/ 29 сентября 2011

У меня есть программа, созданная с Xcode 3.2.5 в системе Mac 10.6, программе необходимо добавлять и удалять элементы из системной цепочки для ключей.Он хорошо работает на Mac OS X 10.6, но на 10.7, вызов SecKeychainItemDelete вернул код ошибки -67701, который не определен в 10.6 SDK.После некоторого поиска в Google я обнаружил, что -67701 (errSecInvalidRecord) недавно добавлен в 10.7 SDK.Кто-нибудь знает как это исправить?

Ответы [ 2 ]

4 голосов
/ 30 января 2013

Я столкнулся с той же проблемой. Это происходит потому, что брелок api кэширует объект SecKeychainItemRef каждый раз, когда вызывается один из методов SecKeychainFindInternetPassword и SecKeychainFindGenericPassword . Таким образом, всякий раз, когда вы вызываете любой из этих двух методов, обязательно очистите кэш API, используя метод SecKeychainItemFreeAttributesAndData . Также освободите объект SecKeychainItemRef, используя CFRelease.

2 голосов
/ 16 апреля 2012

Чтобы ответить на очень старый вопрос: я думаю, что это из-за новых функций песочницы в OS X Lion. Я думаю, что решение состоит в том, чтобы подписать ваше приложение и добавить функции для связки ключей.

Источник: TunnelBlick - туннель OSS VPN - предполагает, что это проблема

...