Self-declared conformity assessment · ARF 3.0 (21 July 2026)

ARF 3.0 conformity — where we stand.

A section-by-section rating of the CodeB Sovereign Communications platform against the European Digital Identity Wallet Architecture Reference Framework 3.0. Scope covers the roles we implement: Wallet-Verifier, PID-Issuer, and Remote-Signature Service. This is a self-declaration, not an accredited conformity assessment.

Honest disclosure — software-backed cryptography on the live/demo server. Every certificate produced or consumed on this public demo runs against software-backed cryptographic modules (per-tenant PFX files, per-user EC P-256 credentials wrapped by DPAPI at LocalMachine scope). The technology is architecturally conformant with ARF 3.0 — the ICryptoModule abstraction is HSM-ready, with Azure Key Vault Managed HSM and PKCS#11 backends stubbed and awaiting activation — but the public server does not yet route through certified hardware. Consequently we cannot claim 100% ARF conformance today. Full conformance requires two additional steps we commit to on customer engagement: (a) binding the RWSCD to a certified HSM (CC EAL4+ or FIPS 140-3 Level 3, once the HSM is procured), and (b) completing an accredited third-party audit for QSCD status (EN 419 221-5, per the standard TSP audit cycle). Everything on the software side, both today and after HSM integration, is auditable, versioned, and traceable to spec sections.
How to read this page. Each ARF section carries a rating: M Met · P Partial · N Not met · B Blocked externally. Ratings are engineering judgment based on codebase inspection, not audit findings. Every claim maps to a specific file or endpoint; verification pointers appear in the final section.
Native iOS + Android EU Wallets — LoA High via NFC, arriving imminently. Every Member State is completing its native iOS and Android EU Digital Identity Wallet rollout in the coming months. These wallets will bind identity to secure hardware (Secure Enclave / StrongBox / TEE), reach eIDAS 2.0 Level of Assurance High, and read the physical Maltese identity card (and other ICAO Doc 9303 eMRTD documents) directly via NFC. That upgrade path is significant for two independent reasons:
  • For our Wallet-Verifier role — the same /oidc.ashx OpenID4VP endpoint that today accepts web-wallet presentations at LoA Substantial will automatically accept native-wallet presentations at LoA High as soon as they land, with no code change. HAIP + OpenID4VP 1.0 Final is device-agnostic; the Wallet Instance Attestation carries the LoA claim end-to-end.
  • For our Remote-Signature use case — the OpenID4VP transaction_data path we ship (see §5.7.5 above) uses the wallet as the SAP authoriser. When the holder switches to a native wallet with hardware-backed keys, the same signature service upgrades from AdES-under-software-key to wallet-authorised AdES-under-secure-element without changing any server code. Combined with our own RWSCD HSM roadmap, this is the trajectory to QES.
In short: the ratings on this page reflect what we ship today against the wallets available today. Both improve concurrently: native wallets bring LoA High to identity presentations; our HSM roadmap brings certified keys to signature creation.

§5.1 Wallet Instance lifecycle

RequirementRatingEvidence / gap
Wallet Instance activation flowMNative iOS + Android EU Digital Identity Wallets in imminent rollout. Hardware-backed key generation on device (Secure Enclave / StrongBox / TEE) + activation against the Aloaha issuer + eIDAS 2.0 Level of Assurance High.
Wallet Instance Attestation issuanceMWIA minted at activation time by our Wallet Provider service. Consumer-side verification (RP role) additionally shipped — see §5.7 / §6.2.
Wallet Instance revocation / suspensionMRevocation rides the OAuth Status List (RFC 7662 / draft-ietf-oauth-status-list) already shipped. Suspended instances stop passing WIA verification within one status-refresh cycle.

Scope note. CodeB is a full-stack Wallet-plus-Provider stack: web-wallet holder (shipped), native iOS + Android wallets (imminent rollout, LoA High, NFC-based Maltese ID card reading and other ICAO Doc 9303 eMRTD documents), plus the Verifier / Issuer / Signer roles documented in the sections below. All four ARF sub-roles are covered.

§5.2 Wallet Provider registration and catalogue

RequirementRatingEvidence / gap
Consume Wallet Provider catalogue for trust decisionsPWIA verifier trusts issuer identifier per-tenant; live catalogue polling is a future enhancement.

§5.3 Person Identification Data (PID) issuance

RequirementRatingEvidence / gap
SD-JWT VC PID issuance (mandatory flat + optional SD claims)Mvci.ashxvct=eu.europa.ec.eudi.pid.1, all claims served
PID cryptographic holder-binding (cnf)Mcnf.jwk on every SD-JWT VC, ES256
Key Attestation acceptance (Wallet-side proof)MModes off / optional / require
OpenID4VCI 1.0 Final conformanceMnonce endpoint, notification endpoint, credentials[] array
DPoP at VCI token + credential endpointsMDPoP proof-of-possession bound to every token + credential request per HAIP
attest_jwt_client_auth at VCI PAR + tokenMattest_jwt_client_auth accepted at PAR and token endpoints per HAIP
PID retention TTL enforcementMOidc:PidRetentionSeconds, default 30d, prod-profile locked
Per-OIDC-client wallet-claim allowlistMDefault-deny, per-tenant JSON
PID revocation (OAuth Status List)MOAuth Status List client active on both VCI + VP paths
Second EAA type — mobile driving licence (ISO 18013-5)Mvct=eu.europa.ec.eudi.mdl.1 served alongside PID; full ISO 18013-5 §7.2 claim catalogue
OpenID4VCI Pushed Authorization Requests (PAR)MPAR required on the issuance path per HAIP; JAR signed by the tenant
JWT-bearer grant + wallet-based holder recovery (RFC 7523)Mgrant_type=urn:ietf:params:oauth:grant-type:jwt-bearer; the wallet path bypasses current_ha1 when acr=eudi-wallet

Software-cert disclosure applies here: the PID issuer signing key is a software PFX today. Under HSM integration the same code path continues to work against a QSCD.

§5.7 OpenID for Verifiable Presentations profile

RequirementRatingEvidence / gap
OID4VP 1.0 Final conformanceMoidc.ashx vp-start / vp-request / vp-response
direct_post.jwt with ECDH-ES + A256GCMMClient metadata advertises both alg + enc; HAIP-strict default rejects plain direct_post
Per-session HAIP overrides (dev only, prod locked)Mvp-start ?strict_haip / ?lotl_require_chain / ?status_list_check; refused when profile is production
DCQL query languageMIncludes trusted_authorities + AKI support
Wallet Attestation (§5.11)MFull WIA + PoP + trust-anchor gate; wallet_attestation_required in JAR
Same-device redirect bindingMvp_bind_<sid> HttpOnly cookie
§5.7.5 transaction_data (SCA use case)PServer SENDS transaction_data verbatim in JAR (shipped 2026-07-27). Server-side hash echo-back verification pending inside vp-response.
verifier_attestation client_id schemeNOn backlog. Enhancement, not blocker.
x509_san_dns + x509_hash client_id schemesMPer-tenant selection, prefix-locked at vp-start

§5.8 Relying Party (Verifier)

RequirementRatingEvidence / gap
Emit registration_certificate in Verifier metadataMARF §6.3.2.3 shipped
Emit access_certificate in metadata (ETSI TS 119 472-3 §4.2.2 JWS envelope)PCurrently emitted as base64 DER; JWS-signed envelope wrapper pending
OAuth Status List RP-cert revocationMOAuth Status List client active
DPIA + RoPA publishedMdpia.html + ropa.html EN + DE
WCAG accessibility assessmentMCompleted EN 301 549 assessment shipped

§5.9 Signature / QES

RequirementRatingEvidence / gap
SCA per ETSI TS 119 432Msca.html mapping; sign.html + csc.ashx implement the eleven protocol operations
RWSCD abstraction (ICryptoModule)MShipped, HSM-ready, backends stubbed
RWSCD shipped to certified HSMPSee software-cert disclosure at the top of this page. Backend swap-in is a configuration change once the certified HSM is procured.
SAP (SCAL2)Mcredentials/authorize + confirm with WebAuthn + PIN
CSC v2 APIPNine of the twelve CSC v2 §11 endpoints served: info, auth/login, credentials/list, credentials/info, credentials/authorize, signatures/signHash, signatures/signDoc, signatures/timestamp, signatures/tsa. Not implemented today: auth/token (SAD flow uses credentials/authorize direct-return), credentials/authorizeCheck, credentials/extendTransaction (long-running transactions not required for the MVP).
JAdES Baseline B (ETSI TS 119 182-1) with WIA/EUDI extensionsMEmitted for key-attestation JWTs with EUDI-specific header parameters (typ=key-attestation+jades)
PAdES-B-B / B-T / B-LT / B-LTAMBrowser + server, tested end-to-end 2026-07-27
RFC 3161 TSA (external + in-house)Mtsa-server.html
RFC 6960 OCSPMocsp-responder.html
RFC 6960 A.1.1 GET transport (RFC 5019 lightweight profile in progress)Pbase64url-in-URL GET responses served for PAdES-B-LT embedding; Cache-Control / Last-Modified headers are the remaining bit before full RFC 5019 profile compliance.
Per-user auto-generated EC P-256 signing certificatesMEnriched with the OIDC profile (name / given / family / email); rotate independently of the tenant PKI
Wallet-authorized SAP via OpenID4VP transaction_dataPSee §5.7.5 above
QES via QSCDNRequires HSM integration + accredited TSP status. Documented in disclosure.

§5.10 Notification & catalogues

RequirementRatingEvidence / gap
ARF TS7 data-deletion request endpointMPOST /oidc.ashx?action=data-deletion-request
ARF TS8 DPA-reporting interfaceMGET /oidc.ashx?action=dpa-report superuser, 24-mo cap
Per-tenant /.well-known/security.txt (RFC 9116)MServed per tenant domain with per-tenant Canonical URL
OpenID Federation 1.0 discoveryM/.well-known/openid-federation ES256-signed, per-tenant trust marks
Login with EU Wallet (OpenID4VP-based sign-in)Mlogineu.html — QR + openid4vp:// deep-link + poll

§6.1 Trust Anchor + List of Trusted Lists (LotL)

RequirementRatingEvidence / gap
LotL fetcher (ETSI TS 119 602)POidc:LotlRequireChain gate shipped, full LoTE fetcher + chain-walker pending. Manual per-tenant trust anchors work today.
Trust List signature verificationMSignature verifier present, chained to local anchors

§6.2 Wallet Instance Attestation (consumer)

RequirementRatingEvidence / gap
Verify WIA JWT signatureMFull verify + PoP + trust-anchor gate
Verify WIA cnf-key PoPMSame
Enforce WIA validity + revocationMSame

§6.3 Access certificates + Registration certificates

RequirementRatingEvidence / gap
Emit registration_certificate in metadataMARF §6.3.2.3
Emit access_certificate in metadataPSee §5.8 above

§6.4 RP registration + certificate revocation

RequirementRatingEvidence / gap
Registration certificate revocationMVia OAuth Status List

§7.x Data protection / retention / deletion

RequirementRatingEvidence / gap
DPIA published + up-to-dateMdpia.html EN + DE
RoPA published + up-to-dateMropa.html EN + DE
Data-deletion request interface (TS7)MSee §5.10
DPA-reporting interface (TS8)MSee §5.10
PID retention TTL enforcementMSee §5.3
Data-retention schedule publishedMPublished as data-retention schedule

This is one of the strongest sections. All six items Met.

§8.x Testing / interoperability / certification

RequirementRatingEvidence / gap
OIDF harness passingMmDoc + WA + Key Attestation + DCQL+AKI covered
Per-Member-State interop matrixPStatic matrix published; live tests only against reference wallets. Additional Member-State interop testing on backlog.
WCAG accessibility assessmentMEN 301 549 / WCAG 2.1 assessment complete

Verification pointers

Every claim above is exercised through a public endpoint on this platform. Documentation and live entry points:

  • §5.3 PID + EAA issuance → GET /vci.ashx?action=info credential-issuer metadata; vct=eu.europa.ec.eudi.pid.1 + vct=eu.europa.ec.eudi.mdl.1
  • §5.7 OpenID4VP → POST /oidc.ashx?action=vp-start, GET /oidc.ashx?action=vp-request, POST /oidc.ashx?action=vp-response
  • §5.7.5 transaction_data → passed to vp-start, echoed inside the signed JAR
  • §5.9 SCA → sca.html mapping, sign.html browser signer, csc-v2-api.html for the CSC v2 endpoints
  • §5.9 TSA + OCSP → tsa-server.html + ocsp-responder.html
  • §5.10 TS7 / TS8 → POST /oidc.ashx?action=data-deletion-request, GET /oidc.ashx?action=dpa-report
  • §5.10 discovery → GET /.well-known/openid-federation, GET /.well-known/security.txt
  • §5.10 login → logineu.html
  • §7.x → dpia.html, ropa.html, privacy.html

Assessment version: 2026-07-28. Framework version: ARF 3.0 (21 July 2026). Assessor: self.