Вы устанавливаете sharedSecretReference
как NSData
, но это противоречит его определению.
NEVPNProtocolIPSec::sharedSecretReference
определяется как:
Постоянная ссылка цепочки для ключей на элемент цепочки для ключей, содержащий общий секрет IKE.
Вам необходимо создать элемент цепочки для ключей типа kSecClassGenericPassword
для использования в качестве общего секрета и предоставить постоянную ссылку на элемент цепочки для ключей. Постоянная ссылка имеет решающее значение, так как она может храниться на диске или передаваться между процессами, что требуется для NEVPNManager
для доступа к общему секрету и подключения к вашей VPN. Я подозреваю, что хотя passwordReference
кажется установленным элементом цепочки для ключей, он может не возвращать постоянную ссылку.
Вам нужно будет использовать SecItemCopyMatching
с типом возврата kSecReturnPersistentRef
для достижения этой цели.