eSIM RSP Knowledge Base

Comprehensive technical knowledge base covering 12 GSMA eSIM specifications. 84+ articles on Remote SIM Provisioning — SGP.02, SGP.22, SGP.32, SGP.41, SGP.29, SGP.23, SGP.25, SGP.26 and more.


Project maintained by AlexsCodingAgent Hosted on GitHub Pages — Theme by mattgraham

Testing the LPA: LDS, LPD, and LUI Conformance

🏠 eUICC.tech > SGP.23 Test Specifications > Testing the LPA: LDS, LPD, and LUI Conformance

💡 Why this matters: The LPA is the bridge between the user and the eUICC: and between the device and the SM-DP+/SM-DS. Get the LPA wrong, and profile downloads fail, discovery breaks, or users can’t switch carriers. SGP.23 dedicates two complete testing chapters (eUICC ES10x and LPAd interfaces) to ensuring this bridge works correctly in every scenario.

Key takeaways:

  • ES10a (LDS → eUICC) is tested for two functions: discovery address retrieval and default SM-DP+ configuration
  • ES10b (LPD → eUICC) covers 12 functions: the full profile download pipeline from challenge generation to CRL loading
  • ES10c (LUI → eUICC) covers 8 functions for local profile management: list, enable, disable, delete, reset, EID, nickname
  • LPAd interface testing (Section 4.4) verifies that the device-side LPA correctly relays commands and handles responses
  • ES11 (LDS → SM-DS) event retrieval is tested from both the eUICC side (Section 4.2) and the LPAd side (Section 4.4)
  • Device-level procedure testing (Section 5.4) verifies full workflows: Add Profile, Enable/Disable/Delete, Set Nickname, eUICC Memory Reset

The LPA (Local Profile Assistant) is the most interface-heavy component in the eSIM ecosystem. It has three sub-components: LDS (discovery), LPD (download), and LUI (user interface) : and touches four interfaces: ES10a, ES10b, ES10c (to the eUICC) and ES9+, ES11 (to remote servers). SGP.23 tests both the eUICC’s implementation of the LPA services and the LPAd/Device’s implementation as a client.


ES10a: Profile Discovery Functions

The LDS sub-component uses ES10a to query the eUICC about discovery configuration. Two functions are tested:

GetEuiccConfiguredAddresses

Returns the SM-DP+ address (if set as default) and/or the Root SM-DS address configured on the eUICC. Test cases verify:

SetDefaultDPAddress

Configures the eUICC’s default SM-DP+ address: the fallback server used when no explicit SM-DP+ address is provided in an Activation Code. Test cases verify:


ES10b: Profile Download Pipeline

The LPD sub-component is the workhorse. Twelve ES10b functions are tested:

GetEUICCChallenge / GetEUICCInfo

The two functions that kick off mutual authentication. GetEUICCInfo returns the eUICC’s capabilities, supported CI public key identifiers (for signing and verification), and SAS accreditation number. GetEUICCChallenge generates a fresh random challenge. Test cases verify:

AuthenticateServer

The eUICC verifies the SM-DP+’s identity. The test tool sends a simulated AuthenticateServerRequest containing the SM-DP+’s certificate chain and signature. The eUICC must:

Test cases cover valid authentication, wrong certificates, expired certificates, mismatched matching IDs, and unsupported CI public key identifiers.

PrepareDownload

The eUICC prepares to receive a profile. It verifies the SM-DP+’s profile binding certificate (CERT.DPpb.ECDSA) and generates a one-time key pair (otPK.eUICC.ECKA / otSK.eUICC.ECKA) for the encrypted download channel. Test cases verify:

LoadBoundProfilePackage

The critical function that delivers encrypted profile data to the eUICC. The eUICC receives the BoundProfilePackage (encrypted specifically for this eUICC) and processes it internally: the LPA never sees the decrypted content. Test cases verify:

Notification Functions

Three functions manage the eUICC’s notification queue:

Test cases verify ordered delivery, sequence number management, and that notifications persist until explicitly removed.

LoadCRL

Loads a Certificate Revocation List onto the eUICC. Test cases verify correct parsing of the CRL ASN.1 structure and that subsequent authentications reject certificates listed in the CRL.

CancelSession / GetRAT


ES10c: Local Profile Management

The LUI sub-component uses ES10c for all user-facing profile operations:

GetProfilesInfo

Returns information about all installed profiles: ICCID, ISD-P AID, profile state (Enabled/Disabled), profile nickname, Service Provider Name, Profile Name, Profile Class, and PPRs. Test cases verify:

EnableProfile / DisableProfile

Enable makes a profile the active subscription (deactivating the previously enabled one). Disable makes it dormant while keeping it installed. Test cases verify:

DeleteProfile

Permanently removes an ISD-P and all its contents. Test cases verify:

eUICCMemoryReset / GetEID / SetNickname


LPAd Interface Testing (Section 4.4)

When testing the LPAd (device-side LPA), the perspective flips: the test tool simulates the eUICC and remote servers, and the Device Under Test exercises the ES10x, ES9+, and ES11 interfaces:

The S_EndUser simulator (person or software) drives all user interactions, following the vendor’s documented confirmation mechanisms (#IUT_LPAd_Confirmation).


Device-Level Procedure Testing (Section 5.4)

Beyond interface-level testing, Section 5.4 tests complete workflows:


📋 Summary


← Previous: The GSMA eSIM Test Infrastructure · 🏠 Home Next: Testing the SM-DP+ and SM-DS

Based on GSMA SGP.23 v1.16 (29 April 2025) : RSP Test Specification, Sections 4.2 (eUICC Interfaces), 4.4 (LPAd Interfaces), 5.2 (eUICC Behaviour), 5.4 (Device Procedures)


← Previous: The GSMA eSIM Test Infrastructure Section Index Next: Testing the SM-DP+ and SM-DS