Integrate the VPN SDK

Integrate the VPN SDK into your application

Prerequisites

Get Started

Integrate the iOS SDK

Client Initialization

When setting up, ensure that you include a PersonalVPNentitlement capability on the application id.

To instantiate a client in your application, add the following

import SudoVPN

let userClient = // ... see "Users" docs

do {
    let vpnClient = DefaultSudoVPNClient(userClient: userClient)
} catch {
    // Handle initialization error. An error might be thrown due to invalid
    // or missing configuration file.
}

Client Preparation

To ensure that the correct data is returned from API calls in the iOS client, please ensure that the prepare method is called.

To call the prepare method:

vpnClient.prepare { result in
    switch result {
    case .success:
        // Handle success result
    case .failure(let error):
        // Handle failure result
}

User Sign Out

To prevent re-use of user credentials, when the user signs out of the VPN application, ensure that the iOS profile is uninstalled.

import SudoVPN

do {
    if try await vpnClient.isProfileInstalled() {
        try await vpnClient.uninstallProfile()
    }
} catch {
    // errors returned specifically by the profile management interface include:
    // SudoVPNError.profileStale: the profile has been changed since last read
    // SudoVPNError.profileReadWriteFailed: the system was unable to read or write the profile
    // SudoVPNError.unknown: an unexpected or unknown error occurred when uninstalling the profile (includes an error message)
}
try await userClient.signOut()

Integrate the Android SDK

The Android SDK is compatible with Android 6 (API level 23) and above.

Client Initialization

In order to instantiate a VPN client, make sure you have followed instructions for Getting Started and User SDK (see Prerequisities above)

To instantiate a client in your application, add the following:

val userClient = // ... see "Users" docs

val vpnClient = SudoVPNClient.builder()
    .setContext(appContext)
    .setSudoUserClient(userClient)
    .build()

Integrate the JS SDK

Client Initialization

When setting up on macOS, ensure that you include a PersonalVPNentitlement capability on the application id.

To use the VPN SDK in a Web or Node.js project, you must add @sudoplatform/sudo-vpn and @sudo-platform/sudo-vpn-provider as dependencies to your project. This provider package provides native binaries for 64-bit Windows, and Intel and Apple silicon macOS.

yarn add '@sudoplatform/sudo-vpn'
yarn add '@sudoplatform/sudo-vpn-provider'
# or
npm install --save '@sudoplatform/sudo-vpn'
npm install --save '@sudoplatform/sudo-vpn-provider'

In order to instantiate a VPN client, make sure you have followed instructions for Getting Started, User SDK and Sudo Entitlements SDK (see Prerequisites above).

To instantiate and initialize a client in your application, add the following:

import { DefaultSudoVPNClient } from '@sudoplatform/sudo-virtual-cards'
import { DefaultSudoKeyManager } from '@sudoplatform/sudo-common'
import { DefaultSudoUserClient } from '@sudoplatform/sudo-user'
import { WebSudoCryptoProvider } from '@sudoplatform/sudo-web-crypto-provider'
// OR
import { NativeSudoCryptoProvider } from '@sudoplatform/sudo-native-crypto-provider'

const sudoUserClient = new DefaultSudoUserClient(/* refer to Users documentation */)
const sudoKeyManager = environment == 'web' ? /* if using browser 'secure storage' */
    new WebSudoCryptoProvider('your.keymanager.namespace', 'your.servicename') :
    new NativeSudoCryptProvider('your.keymanager.namespace', 'your.servicename')
const logPath = 'your path to log files'

const vpnClient = new DefaultSudoVpnClient({
    userClient,
    logPath,
    sudoKeyManager
)

Client Preparation

Once the user has been entitled, call sudoVpnClient.registerWithService() to complete the registration process and permit access to all vpnClient interfaces.

Entitlement Redemption

Before VPN SDK APIs can be called, the user must be entitled. To ensure the user is entitled first call the redeemEntitlements API in the Sudo Entitlements SDK.

Last updated