baseid-eidas
The eidas crate provides EU eIDAS 2.0 compliance types, implementing the Person Identification Data (PID) model from the Architecture Reference Framework, qualified electronic attestations of attributes, level of assurance mapping, and ETSI TS 119 612 trust lists.
Key Features
Section titled “Key Features”- EU PID data model —
EuPidstruct with mandatory attributes (family_name, given_name, birth_date) and 9 optional attributes per the ARF specification, with field-length validation - QEAA attestations —
Attestationtype with three trust tiers: unqualified EAA, EAA from QTSP, and fully qualified QEAA with legal effect - Level of Assurance mapping — bidirectional mapping between eIDAS LoA strings (Low/Substantial/High) and
baseid-coreAssuranceLevel - Trust lists —
InMemoryTrustListimplementing ETSI TS 119 612 with service type classification (PID Provider, QTSP Signature/Seal, EAA/QEAA Issuer, Wallet Provider) - Service status tracking — Active/Suspended/Revoked/Deprecated status per trust list entry, with queries filtering to active services only
Quick Start
Section titled “Quick Start”use baseid_eidas::pid::{EuPid, EuPidOptional, EuPidMetadata};
// Create an EU PID with mandatory + optional attributeslet pid = EuPid { family_name: "Mustermann".to_string(), given_name: "Erika".to_string(), birth_date: "1984-01-26".to_string(), optional: EuPidOptional { age_over_18: Some(true), nationality: Some("DE".to_string()), resident_country: Some("DE".to_string()), ..Default::default() }, metadata: EuPidMetadata { issuance_date: "2025-01-01".to_string(), expiry_date: "2030-01-01".to_string(), issuing_authority: "Bundesdruckerei GmbH".to_string(), issuing_country: "DE".to_string(), },};
// Validate field lengths (max 150 chars per spec)pid.validate().unwrap();Trust Lists
Section titled “Trust Lists”use baseid_eidas::trust_list::{ InMemoryTrustList, TrustedServiceProvider, TrustService, TrustServiceType, TrustServiceStatus,};
let mut tl = InMemoryTrustList::new();tl.add_provider(TrustedServiceProvider { name: "German PID Provider".to_string(), country: "DE".to_string(), services: vec![TrustService { service_type: TrustServiceType::PidProvider, status: TrustServiceStatus::Active, name: "PID Issuance".to_string(), service_digital_identity: Some("did:web:pid.bdr.de".to_string()), }],});
// Query active services by typelet pid_providers = tl.find_active_services(TrustServiceType::PidProvider);
// Check if an identity is trusted for a service typeassert!(tl.is_trusted("did:web:pid.bdr.de", TrustServiceType::PidProvider));
// Filter providers by countrylet de_providers = tl.providers_by_country("DE");LoA Mapping
Section titled “LoA Mapping”use baseid_eidas::loa::{from_eidas_loa, to_eidas_loa};use baseid_core::types::AssuranceLevel;
let level = from_eidas_loa("high").unwrap();assert_eq!(level, AssuranceLevel::High);
let name = to_eidas_loa(AssuranceLevel::Substantial);assert_eq!(name, "Substantial");QEAA Attestation Tiers
Section titled “QEAA Attestation Tiers”| Tier | Description |
|---|---|
Eaa | Unqualified EAA — no formal trust requirements |
EaaFromQtsp | EAA from a Qualified Trust Service Provider |
Qeaa | Fully qualified — legal effect equivalent to paper attestations |
Trust Service Types
Section titled “Trust Service Types”| Type | Description |
|---|---|
PidProvider | Issues Person Identification Data |
QtspSignature | Qualified electronic signatures |
QtspSeal | Qualified electronic seals |
EaaIssuer | Electronic Attestation of Attributes |
QeaaIssuer | Qualified Electronic Attestation of Attributes |
WalletProvider | EUDI Wallet provider |
Related Crates
Section titled “Related Crates”- baseid-core —
AssuranceLeveltype used in LoA mapping - baseid-haip — HAIP profile for eIDAS 2.0 EUDI Wallet interoperability
- baseid-mdl — mDL format used as mdoc carrier for PID credentials
- baseid-oid4vci — credential issuance protocol for PID distribution