VPN не работает на Ma c Catalyst SecKeychainItemCopyContent возвращается Содержимое этого элемента не может быть получено - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь запустить мое приложение VPN iOS на платформе ОС Ma c с Ma c Catalyst.

Мой код работает на iOS приложениях, но почему-то не работает на Ма c ОС.

VPN не подключен. Но, кажется, доступно в сети из системных настроек на Ma c Catalina.

А также содержит информацию о наших VPN-соединениях, такую ​​как имя сервера, пароль. Это все правильно. В Keychain я бы увидел psk и пароль. Насколько я знаю, psk - это общий секретный ключ. Но если я щелкаю, чтобы подключиться из сетевой части, я сталкиваюсь с ошибкой общего секретного ключа. Но на самом деле он хранится в доступе цепочки для ключей.

Мой тип подключения IPSe c.

В XCode После этого нажмите кнопку для подключения VPN, я бы увидел

Не удалось скопировать содержимое, возвращено SecKeychainItemCopyContent. Содержимое этого элемента не может быть получено с ошибкой <в консоли </p>

Я поставил эту часть подключения здесь. Но напоминание, что мой код работает без ошибок в приложениях iOS , Тот же код не работает на ОС Ma c. Вот в чем проблема.

Любая помощь будет отличной!

public func connectIKEv2(config: Configuration, onError: @escaping (String)->Void) {
        let p = NEVPNProtocolIPSec()
        if config.pskEnabled {
            p.authenticationMethod = NEVPNIKEAuthenticationMethod.sharedSecret
        } else {
            p.authenticationMethod = NEVPNIKEAuthenticationMethod.none
        }
        p.serverAddress = config.server
        p.disconnectOnSleep = false
        p.username = config.account
        p.passwordReference = config.getPasswordRef()
        p.sharedSecretReference = config.getPSKRef()
        // I catch password and psk without no mistake.
        p.useExtendedAuthentication = true

        // two lines bellow may depend of your server configuration
        p.remoteIdentifier = config.server
        //  p.localIdentifier = config.account

        loadProfile { _ in
            self.manager.protocolConfiguration = p
            if config.onDemand {
                self.manager.onDemandRules = [NEOnDemandRuleConnect()]
                self.manager.isOnDemandEnabled = true
            }
            self.manager.isEnabled = true
            self.saveProfile { success in
                if !success {
                    onError("Unable to save vpn profile")
                    return
                }
                self.loadProfile() { success in
                    if !success {
                        onError("Unable to load profile")
                        return
                    }
                    let result = self.startVPNTunnel()
                    if !result {
                        onError("Can't connect")
                    }
                }
            }
        }
    }
...