Я новичок в разработке Mac и концепциях цепочки для ключей.Я хотел бы получить некоторую ясность по темам, но у меня есть конкретный вопрос.
У меня есть приложение, которое распространяется в частном порядке, а не через магазин приложений.Мой сертификат подписи изменился раньше, поэтому теперь у нас есть старое приложение и новое приложение.Они имеют одинаковый идентификатор пакета и путь к файловой системе, но новое приложение выдает подсказку при попытке доступа к записям цепочки для ключей, созданным старым приложением.Мне нужно запускать это удаленно, чтобы запросы не были приняты.
Я понял после некоторых исследований, что редактирование ACL для старых записей цепочки для ключей невозможно без запроса, поэтому я вместо этого решил удалить эту цепочку для ключей.записи, если и только если новое приложение не имеет к ним доступа.Это должен определить установщик, который является третьим приложением, не связанным со старым или новым приложением.
Как проверить, находится ли данное приложение в списке контроля доступа к записи цепочки для ключей?
Вот подход, который я попробовал: я использовал SecACLCopyContents
на SecKeychainItemRef
, чтобы получить массив SecTrustedApplicationRef
s.
Затем я использовал SecTrustedApplicationCreateFromPath
, чтобы получить SecTrustedApplicationRef
для нового приложения.
Затем я перебрал массив SecTrustedApplicationRef
и сравнил их результаты с SecTrustedApplicationCopyData
, чтобы проверить, соответствует ли какое-либо приложение тому, которое я создал по пути.
Однако я получаюсовпадают для любых двух приложений, если они имеют одинаковый путь к файловой системе, даже если у них совершенно разный контент.Я, вероятно, неправильно понял назначение SecTrustedApplicationRef
и SecTrustedApplicationCopyData
.
TL; DR
Как правильно проверить, есть ли у какого-либо приложения доступ к записи цепочки для ключей, созданной давно?Учитывая то, что мы не можем предположить, что идентификатор пакета и путь к файловой системе являются уникальными идентификаторами содержимого приложения.
Дополнительный вопрос: Что на самом деле сравнивает безопасность, чтобы определить, имеет ли приложение разрешение на доступ к записи цепочки для ключей?