Skip to main content
Didit Raises $2M and Joins Y Combinator (W26)
Didit
Back to blog
Blog · March 14, 2026

Building Cross-Platform EUDI Wallet SDKs: A Technical Deep Dive

Explore the architecture of cross-platform EUDI Wallet SDKs, focusing on modularity, security, and user experience. Learn how to design robust, compliant, and interoperable solutions for digital identity in the EU.

By DiditUpdated
cross-platform-eudi-wallet-sdk-architecture.png

Modular DesignEmphasize a layered, modular architecture to support diverse platforms and evolving EUDI specifications, ensuring flexibility and maintainability.

Security FirstImplement robust cryptographic measures, secure element integration, and adherence to eIDAS2 standards to protect sensitive identity data and prevent fraud.

Seamless UXPrioritize user-friendly interfaces and intuitive workflows for credential issuance, presentation, and management across different devices and operating systems.

InteroperabilityDesign the SDK to ensure compatibility with various EUDI Wallet implementations, relying on open standards and protocols for broad ecosystem adoption.

Understanding the EUDI Wallet and its Technical Mandate

The European Digital Identity (EUDI) Wallet represents a monumental step towards a unified, secure, and user-centric digital identity framework across the European Union. Mandated by the eIDAS2 regulation, this digital wallet allows citizens to securely store and share their identity attributes, such as age, address, and professional qualifications, in a verifiable and trustworthy manner. For developers, building Software Development Kits (SDKs) for EUDI Wallets presents both a significant opportunity and a complex technical challenge. The core mandate is to provide a highly secure, interoperable, and user-friendly experience across a multitude of devices and operating systems.

A cross-platform EUDI Wallet SDK must abstract away the underlying complexities of different mobile operating systems (iOS, Android) and potentially web environments, while strictly adhering to the technical specifications laid out by the European Commission. This includes cryptographic standards, data models for Verifiable Credentials (VCs) and Verifiable Presentations (VPs), communication protocols (e.g., OpenID for Verifiable Credential Issuance/Presentation), and reliance on secure hardware where available. The SDK's architecture must be resilient enough to handle future updates to these specifications without requiring a complete overhaul.

Core Architectural Components of a Cross-Platform EUDI Wallet SDK

A well-designed EUDI Wallet SDK will typically consist of several key layers, each responsible for a specific set of functionalities. This modular approach is crucial for cross-platform compatibility, maintainability, and scalability.

  1. Platform Abstraction Layer (PAL): This is the foundation, providing a unified interface to platform-specific functionalities. For instance, it would abstract access to secure storage (Keychain on iOS, Keystore on Android), biometric authentication (Face ID/Touch ID, Android BiometricPrompt), and network connectivity features. This layer ensures that the core logic of the SDK can remain platform-agnostic.

    // Example: iOS Secure Storage Interface
    protocol SecureStorageManager {
        func saveData(key: String, data: Data) throws
        func retrieveData(key: String) throws -> Data?
    }
    
    class iOSSecureStorage: SecureStorageManager {
        // ... Keychain implementation ...
    }
    
  2. Cryptography & Security Layer: This is arguably the most critical component. It handles all cryptographic operations, including key generation, digital signing, encryption/decryption, and secure element interaction. It must support various cryptographic algorithms (e.g., ECDSA, EdDSA) and ensure keys are stored and used securely, often leveraging hardware-backed security features. This layer is responsible for safeguarding the private keys associated with the user's digital identity.

  3. Verifiable Credential (VC) Management Layer: This layer handles the lifecycle of Verifiable Credentials. It includes functionalities for parsing, storing, and validating VCs received from Issuers. It also manages the user's consent for sharing specific VCs or attributes, and constructs Verifiable Presentations (VPs) according to the request from a Relying Party.

    // Example: VC Structure (simplified)
    interface VerifiableCredential {
        id: string;
        type: string[];
        issuer: string;
        issuanceDate: string;
        credentialSubject: {
            id: string;
            [key: string]: any;
        };
        proof: any;
    }
    
  4. Communication & Protocol Layer: This layer implements the various communication protocols required for interacting with Issuers and Relying Parties. This includes OpenID for Verifiable Credential Issuance (OID4VCI) and OpenID for Verifiable Credential Presentation (OID4VP), as well as potentially DIDComm for peer-to-peer interactions. It handles secure channel establishment, message formatting, and error handling.

  5. User Interface (UI) Layer (Optional but Recommended): While an SDK can be purely headless, a well-rounded EUDI Wallet SDK often includes configurable UI components. These components provide a consistent and compliant user experience for common tasks like credential acceptance, presentation consent, and biometric prompts. This layer should be designed with theming and customization in mind to allow integrators to match their brand.

Cross-Platform Implementation Strategies

To achieve true cross-platform compatibility, developers can adopt several strategies:

  • Native Code with Shared Core Logic: The most common approach involves writing platform-specific wrappers (e.g., Swift/Kotlin) that expose a unified API to a shared core logic written in a language like C++ or Rust. This core logic handles the complex cryptographic, VC management, and protocol layers, ensuring consistency and reducing duplication of effort. The PAL is crucial here to bridge the core logic with native platform features.

  • Cross-Platform Frameworks (e.g., React Native, Flutter): For SDKs that include UI components, frameworks like React Native or Flutter can be used. These frameworks allow developers to write a single codebase that compiles to native iOS and Android applications. However, access to deeply native features like secure elements often still requires platform-specific modules or plugins, which the PAL would manage.

  • WebAssembly (Wasm): For web-based EUDI Wallet implementations or SDKs designed to be embedded in web applications, compiling the core logic to WebAssembly can offer significant performance and security benefits, enabling complex cryptographic operations directly in the browser.

Practical Example: Credential Issuance Flow

Consider a user obtaining a 'Verified Age' credential. The SDK would:

  1. A Relying Party (e.g., an online store) requests an age verification.
  2. The SDK initiates an OID4VP flow, prompting the user for consent to present their 'Verified Age' credential.
  3. Upon user approval and biometric authentication, the SDK constructs a signed Verifiable Presentation containing the age attribute.
  4. The SDK transmits this VP securely to the Relying Party.
  5. The Relying Party validates the VP's authenticity and the credential's content using the SDK's verification module.

Security, Compliance, and Interoperability Considerations

The success of an EUDI Wallet SDK hinges on its ability to meet rigorous security and compliance standards, while ensuring broad interoperability.

  • eIDAS2 Compliance: Adherence to the technical standards and legal requirements of the eIDAS2 regulation is paramount. This includes data protection (GDPR), secure processing of personal data, and the use of qualified electronic signatures or seals where applicable.

  • Secure Element Integration: Where available, leveraging hardware-backed secure elements (e.g., TEE on Android, Secure Enclave on iOS) is crucial for protecting cryptographic keys and sensitive data against advanced attacks. The SDK must provide mechanisms to securely generate, store, and use keys within these environments.

  • Zero-Knowledge Proofs (ZKPs): While not strictly mandated for all EUDI Wallet use cases initially, an advanced SDK might consider supporting ZKPs. This allows users to prove specific facts about their identity (e.g., 'I am over 18') without revealing the underlying sensitive data (e.g., their exact date of birth), significantly enhancing privacy.

  • Interoperability with Decentralized Identifiers (DIDs): The EUDI Wallet ecosystem is expected to integrate with Decentralized Identifiers, which provide a globally unique, persistent, and cryptographically verifiable identifier for individuals and organizations. The SDK should support DID resolution and DID-based communication protocols like DIDComm.

  • Auditing and Logging: Comprehensive auditing and logging capabilities are essential for compliance and debugging. The SDK should securely record relevant events, such as credential issuance, presentation, and access attempts, without compromising user privacy.

How Didit Helps

Didit provides a robust, all-in-one identity platform that can significantly accelerate the development and integration of EUDI Wallet functionalities. Our platform offers a full suite of identity primitives, including advanced biometrics, secure identity verification, and fraud detection, all orchestrated through a single API. For developers building EUDI Wallet SDKs, Didit's modular architecture and compliance-first approach can serve as a powerful backend, handling the complexities of secure identity management. Our iBeta Level 1 certified liveness detection, SOC 2 Type II and ISO 27001 certifications, and GDPR compliance ensure that the underlying identity verification processes meet the highest standards required for EUDI. By leveraging Didit, you can focus on the user-facing aspects of your EUDI Wallet SDK, confident that the core identity verification and security infrastructure is handled by an expert.

Ready to Get Started?

Developing a cross-platform EUDI Wallet SDK is a complex yet rewarding endeavor. By focusing on a modular architecture, prioritizing security and compliance, and ensuring seamless interoperability, developers can contribute to a future of secure, private, and user-centric digital identity. Explore Didit's technical documentation to see how our identity platform can support your EUDI Wallet initiatives. Want to see it in action? Watch our product demo video or visit our Demo Center. For direct inquiries, reach out to hello@didit.me.

Infrastructure for identity and fraud.

One API for KYC, KYB, Transaction Monitoring, and Wallet Screening. Integrate in 5 minutes.

Ask an AI to summarise this page