SDK reference · Android SDK / Android Getting Started

End-to-End Encryption

End-to-end encryption (E2EE) adds an extra layer of security by encrypting the data transmitted between the server and client. The process begins with a key exchange; the client and server share keys for encrypting and decrypting messages. This exchange ensures all later communications are encrypted. Only the intended server and client can decrypt the messages.


Security

The Incode Android SDK uses CryptoKit for all cryptographic operations:

  • RSA-OAEP with SHA-256 asymmetric encryption for secure key exchange
  • AES-GCM symmetric encryption for securing server requests and responses

Enable End-to-End Encryption

Complete the following steps in order.

Set Up a Custom Server for E2EE

Initialize the Welcome SDK with a custom server for E2EE, supplying the E2EE_URL:

IncodeWelcome.Builder(this, WELCOME_API_URL, WELCOME_API_KEY, E2EE_URL)
    .build()
new IncodeWelcome.Builder(this, WELCOME_API_URL, WELCOME_API_KEY, E2EE_URL)
    .build();

Enable E2EE via SessionConfig

Turn on E2EE when building your SessionConfig:

val sessionConfig: SessionConfig = SessionConfig.Builder()
    .setE2eEncryptionEnabled(true)
    .build()
SessionConfig sessionConfig = new SessionConfig.Builder()
    .setE2eEncryptionEnabled(true)
    .build();

Start Onboarding

Pass the SessionConfig to startOnboarding, setupOnboardingSession, startFlow, or startWorkflow, depending on your integration approach.


Was this page helpful?