13.1. Endpoint del Fornitore di Wallet

Il Fornitore di Wallet, responsabile della fornitura di una Soluzione Wallet, DEVE esporre gli endpoint per supportare l'instaurazione della fiducia e le funzionalità essenziali dell'Istanza di Wallet. Questi includono l'endpoint di Federazione /.well-known/openid-federation che DEVE aderire alla specifica OpenID Federation 1.0 per stabilire in modo affidabile la fiducia con il Fornitore di Wallet, nonché endpoint per la registrazione dell'Istanza di Wallet, la generazione di nonce (richiesta per la registrazione), l'emissione di attestati e la revoca. A parte l'endpoint di Federazione, i dettagli di implementazione degli altri sono lasciati alla discrezione del Fornitore di Wallet.

13.1.1. Endpoint di Federazione

L'endpoint /.well-known/openid-federation serve come meccanismo di discovery per l'instaurazione della fiducia recuperando la Entity Configuration del Fornitore di Wallet.

Vedere la Sezione Entity Configuration del Fornitore di Wallet per i dettagli tecnici (WP_001–004).

13.1.2. Endpoint Nonce della Soluzione Wallet

Questo è un endpoint API RESTful che consente all'Istanza di Wallet di richiedere un nonce crittografico dal Fornitore di Wallet. Il nonce serve come sfida imprevedibile, monouso per garantire la freschezza e prevenire attacchi di replay.

Vedere Richiesta di Nonce dell'Applicazione Mobile e Risposta di Nonce dell'Applicazione Mobile per i dettagli sulla Richiesta di Nonce e sulla Risposta di Nonce (WP_131).

13.1.3. Endpoint di Gestione dell'Istanza di Wallet

Questi endpoint API RESTful sono forniti dal Fornitore di Wallet e consentono la gestione dell'Istanza di Wallet, inclusa la registrazione, il recupero dello stato, la revoca su richiesta (ad esempio, da parte dell'Utente) e l'eliminazione. Le seguenti sezioni descrivono le richieste di registrazione, recupero dello stato e revoca, insieme alle relative risposte, gestite da questo endpoint, che sono necessarie per le funzionalità di base dell'Funzionalità dell'Istanza del Wallet.

13.1.3.1. Richiesta di Registrazione dell'Istanza di Wallet

Per registrare un'Istanza di Wallet, la richiesta al Fornitore di Wallet DEVE utilizzare il metodo HTTP POST con Content-Type impostato su application/json. Il corpo della richiesta DEVE contenere i claim descritti in Richiesta di Inizializzazione dell'Istanza dell'Applicazione Mobile (WP_131–134).

13.1.3.2. Risposta alla Registrazione dell'Istanza di Wallet

Se una Richiesta di Registrazione dell'Istanza di Wallet viene convalidata con successo, il Fornitore di Wallet fornisce una Risposta HTTP con codice di stato 204 (No Content). Per i dettagli vedere Risposta di Inizializzazione dell'Istanza dell'Applicazione Mobile (WP_135–137).

13.1.3.3. Richiesta di Recupero dell'Istanza di Wallet

Per recuperare tutte le Istanze di Wallet associate a un Utente, una richiesta DEVE essere inviata utilizzando il metodo HTTP GET al Fornitore di Wallet (WP_145).

Nota

Per recuperare una specifica Istanza di Wallet, la richiesta DEVE includere l'ID dell'Istanza di Wallet come parametro di percorso.

13.1.3.4. Risposta al Recupero dell'Istanza di Wallet

Se una Richiesta di Recupero dell'Istanza di Wallet viene elaborata con successo, il Fornitore di Wallet DEVE restituire una Risposta HTTP con un codice di stato 200 (OK). Il corpo della risposta DEVE essere in formato JSON e includere le informazioni rilevanti dell'Istanza di Wallet, come il suo ID univoco, lo stato e la data di emissione. Quando si recuperano tutte le Istanze di Wallet, la risposta DEVE restituire un array contenente i dettagli di tutte le istanze associate (WP_146).

Se si verificano errori durante il processo di recupero, DEVE essere restituita una risposta di errore. Fare riferimento a Gestione degli Errori per la Gestione dell'Istanza di Wallet per i dettagli sui codici di errore e le descrizioni.

Di seguito è riportato un esempio non normativo di una risposta di errore:

HTTP/1.1 403 Forbidden
Content-Type: application/json
Cache-Control: no-store

{
  "error": "forbidden",
  "error_description": "User is not authorized to retrieve Wallet Instances."
}

13.1.3.5. Richiesta di Revoca dell'Istanza di Wallet

Per revocare un'Istanza di Wallet attiva, una richiesta di revoca DEVE essere inviata utilizzando il metodo HTTP PATCH con Content-Type impostato su application/json. Il corpo della richiesta DEVE contenere un parametro status impostato su REVOKED (WP_147).

Nota

Mentre PATCH è il metodo consigliato, la richiesta di revoca PUÒ anche essere inviata utilizzando il metodo POST, a seconda delle preferenze di implementazione.

13.1.3.6. Risposta alla Revoca dell'Istanza di Wallet

Se una Richiesta di Revoca dell'Istanza di Wallet viene elaborata con successo, il Fornitore di Wallet fornisce una Risposta HTTP con un codice di stato 204 (No Content) come specificato in WP_148.

Se si verificano errori durante la Revoca dell'Istanza di Wallet, DEVE essere restituita una risposta di errore. Fare riferimento a Gestione degli Errori per la Gestione dell'Istanza di Wallet per i dettagli sui codici di errore e le descrizioni (WP_035–039, WP_043–044).

Di seguito è riportato un esempio non normativo di una risposta di errore:

HTTP/1.1 400 Bad Request
Content-Type: application/json
Cache-Control: no-store

{
  "error": "bad_request",
  "error_description": "The request is missing status parameter."
}

13.1.3.7. Gestione degli Errori per la Gestione dell'Istanza di Wallet

Per garantire robustezza e sicurezza, il Fornitore di Wallet DEVE gestire gli errori in modo coerente in tutte le richieste di Gestione dell'Istanza di Wallet, incluse Registrazione, Recupero e Revoca (WP_035–044, e WP_150–155).

In caso di errore, il Fornitore di Wallet DEVE restituire una risposta di errore come definito in RFC 7231, con ulteriori dettagli disponibili in RFC 7807. La risposta DEVE utilizzare il Content-Type impostato su application/json e DEVE includere i seguenti parametri:

  • error. Il codice di errore.

  • error_description. Testo in forma leggibile dall'uomo che fornisce ulteriori dettagli per chiarire la natura dell'errore riscontrato.

Le seguenti sezioni classificano gli errori in errori comuni, che si applicano a tutte le richieste, ed errori specifici della richiesta, che sono rilevanti per operazioni particolari.

13.1.3.8. Risposte di Errore Comuni

I seguenti errori si applicano a tutte le operazioni di Gestione dell'Istanza di Wallet (Registrazione, Recupero e Revoca) e DEVONO essere supportati per la risposta di errore, se non diversamente specificato (WP_035–039):

Codice di Stato HTTP

Codice di Errore

Descrizione

400 Bad Request

bad_request

La richiesta è malformata, mancano parametri richiesti o include parametri non validi e sconosciuti.

422 Unprocessable Content [OPZIONALE]

validation_error

La richiesta non aderisce al formato richiesto.

500 Internal Server Error

server_error

Si è verificato un errore interno durante l'elaborazione della richiesta.

503 Service Unavailable

temporarily_unavailable

Il servizio non è disponibile. Si prega di riprovare più tardi.

13.1.3.9. Risposte di Errore Specifiche della Richiesta

Gli errori in Risposta di Errore di Inizializzazione dell'Istanza dell'Applicazione Mobile DEVONO essere supportati per le risposte di errore relative alla Registrazione dell'Istanza di Wallet.

I seguenti errori DEVONO essere supportati per le risposte di errore relative al Recupero dell'Istanza di Wallet (WP_041–042):

Codice di Stato HTTP

Codice di Errore

Descrizione

403 Forbidden

forbidden

L'Utente non ha il permesso di recuperare questa Istanza di Wallet.

401 Unauthorized

unauthorized

La richiesta manca di Credenziali di autenticazione valide.

I seguenti errori DEVONO essere supportati per le risposte di errore relative alla Revoca dell'Istanza di Wallet (WP_043–044):

Codice di Stato HTTP

Codice di Errore

Descrizione

403 Forbidden

invalid_request

L'Utente non ha il permesso di revocare questa Istanza di Wallet.

401 Unauthorized

unauthorized

La richiesta non può essere autenticata o autorizzata.

13.1.4. Endpoint di Emissione della Wallet Instance Attestation

Questo è un endpoint API RESTful fornito dal Fornitore di Wallet che consente all'Istanza di Wallet di ottenere una Wallet Instance Attestation, inviando una Richiesta di Emissione della Wallet Instance Attestation.

13.1.4.1. Richiesta di Emissione della Wallet Instance Attestation

La richiesta di emissione della Wallet Instance Attestation utilizza il metodo HTTP POST con il Content-Type impostato su application/json (WP_026 e WP_140–142).

L'intestazione typ del JWT della richiesta di emissione della Wallet Instance Attestation assume il valore wia-request+jwt.

Il body della richiesta di emissione della Wallet Instance Attestation contiene un parametro assertion il cui valore è un JWT firmato che include tutti i parametri di intestazione e le claim descritti di seguito.

Di seguito è riportato un esempio non normativo di una richiesta di emissione della Wallet Instance Attestation.

POST /wallet-instance-attestation HTTP/1.1
Host: application-provider.example.org
Content-Type: application/json

{
  "assertion": "eyJpc3MiOiJodHRwczovL3dhbGxldC1wcm92aWRlc..."
}

In particolare, il JWT della richiesta di emissione della Wallet Instance Attestation include i seguenti parametri di intestazione HTTP:

Parametro

Descrizione

Riferimento

alg

Identificatore dell'algoritmo di firma digitale, come definito nel registro IANA "JSON Web Signature and Encryption Algorithms". DEVE essere uno degli algoritmi supportati elencati in Algoritmi Crittografici e non DEVE essere impostato su none né su alcun identificatore di algoritmo simmetrico (MAC).

[RFC 7516#section-4.1.1]

kid

thumbprint della JWK dell'Istanza del Wallet contenuta nella dichiarazione cnf.

[RFC 7638#section_3]

typ

Il tipo del JWT, che DEVE essere impostato su wia-request+jwt.

Il JWT della richiesta include le seguenti claim nel body:

Claim

Descrizione

Riferimento

iss

L'identificatore del Fornitore di Wallet concatenato con l'impronta digitale (thumbprint) della JWK nella dichiarazione cnf.

[RFC 9126], [RFC 7519].

exp

UNIX timestamp che rappresenta il tempo di scadenza del JWT.

[RFC 9126], [RFC 7519].

iat

UNIX timestamp che rappresenta il tempo di emissione del JWT.

[RFC 9126], [RFC 7519].

nonce

Il nonce ottenuto dal Nonce Endpoint.

hardware_signature

la firma di client_data_hash ottenuta utilizzando la Chiave Crittografica Hardware, codificata nel formato base64url.

integrity_assertion

L'Integrity Assertion per la Wallet Instance Attestation ottenuta dalle Device Integrity Service APIs con il binding di client_data_hash.

hardware_key_tag

Il valore del Tag della Chiave Crittografica Hardware.

cnf

Oggetto JSON contenente la parte pubblica di una coppia di chiavi asimmetriche posseduta dall'istanza del Wallet.

RFC 7800.

platform

Stringa contenente il valore del sistema operativo del dispositivo.

wallet_solution_id

Stringa contenente l'identificatore della Wallet Solution.

wallet_solution_version

Stringa contenente la versione della Wallet Solution.

Di seguito è riportato un esempio non normativo dell'intestazione e del payload del JWT della Wallet Instance Attestation Request.

{
  "alg": "ES256",
  "kid": "OnsiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiL",
  "typ": "wia-request+jwt"
}
{
  "iss": "https://wallet-provider.example.org/instance/OnsiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiL",
  "nonce": "f3b29a81-45c7-4d12-b8b5-e1f6c9327aef",
  "hardware_signature": "KoZIhvcNAQcCoIAwgAIB...",
  "integrity_assertion": "o2NmbXRvYXBwbGUtYXBwYXNzZXJ0aW9uLXBheWxvYWQtYXBw...",
  "attested_key": "o2CFbXRvYXBwbGUtYXBwYXNzTYU0aW9uLXBheWxvYWQtZvRM..."
  "hardware_key_tag": "QW12DylRTmF89iGkpydNDWW7m8bVpa2Fn9KBeXGYtfX"
  "cnf": {
    "jwk": {
      "crv": "P-256",
      "kty": "EC",
      "x": "8FJtI-yr3pjyRKGMnz4WmdnQD_uJSq4R95Nj98b44",
      "y": "MKZnSB39vFJhYgS3k7jXE4r3-CoGFQwZtPBIRqpNlrg"
    }
  },
  "platform": "iOS",
  "wallet_solution_id": "Wallet-mobile",
  "wallet_solution_version": "1.1.0"
}

13.1.4.2. Risposta all'Emissione della Wallet Instance Attestation

Se la Richiesta di Emissione della Wallet Instance Attestation viene convalidata con successo, il Fornitore di Wallet restituisce una risposta HTTP con un codice di stato 200 OK e Content-Type application/json. L'Oggetto JSON restituito DEVE possedere il parametro wallet_instance-attestations (vedi Emissione della Wallet Instance Attestation). wallet_insatnce_attestation sono oggetti JSON che contengono rispettivamente la Wallet Instance Attestation. Entrambe le attestazioni sono firmate dal Fornitore di Wallet (WP_027–029 e WP_143–144). La Wallet Instance Attestation JWT deve essere utilizzato per la fase di Emissione di un Attestato Elettronico, come OAuth Client Attestation, e sarà inviato al Fornitore di Attestati Elettronici come discusso in Emissione di Attestati Elettronici.

L'Oggetto JSON restituito nella risposta ha il seguente claim:

Parametro

Descrizione

Riferimento

wallet_instance-attestation

OBBLIGATORIO. Una stringa contenente una Wallet Instance Attestation.

Questa specifica.

I valori di wallet_instance_attestation sono stringha che contenente rispettivamento la Wallet Instance Attestation in formato JWT.

Se si verifica un errore durante il processo, viene restituita una risposta di errore. La risposta utilizza application/json come Content-Type e include i seguenti parametri:

  • error: il codice di errore.

  • error_description: testo in formato leggibile dall'uomo che fornisce ulteriori dettagli per chiarire la natura dell'errore riscontrato (WP_035).

Di seguito è riportato un esempio non normativo di una Wallet Instance Attestation Issuance Response.

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "invalid_request",
  "error_description": "The provided challenge is invalid, expired, or already used."
}

La seguente tabella elenca i codici di stato HTTP e i relativi codici di errore supportati per la risposta di errore, salvo diversa indicazione (WP_036–039 e WP_150–155):

HTTP Status Code

Error Code

Descrizione

400 Bad Request

bad_request

La richiesta è malformata, mancano parametri obbligatori (ad esempio parametri di intestazione, o Integrity Assertion), oppure include parametri non validi o sconosciuti.

403 Forbidden

invalid_request

L'istanza del Wallet è stata revocata.

403 Forbidden

integrity_check_error

Il dispositivo non soddisfa i requisiti minimi di sicurezza del Fornitore di Wallet.

403 Forbidden

invalid_request

La firma della Wallet Instance Attestation Request non è valida oppure non corrisponde alla chiave pubblica (JWK) associata.

403 Forbidden

invalid_request

La validazione della Integrity Assertion non è riuscita; la Integrity Assertion è stata manomessa o firmata in modo non corretto.

403 Forbidden

invalid_request

Il nonce fornito non è valido, è scaduto oppure è già stato utilizzato.

403 Forbidden

invalid_request

La Proof of Possession (hardware_signature) non è valida.

403 Forbidden

invalid_request

Il parametro iss non corrisponde all'identificatore URL previsto dal Fornitore di Wallet.

404 Not Found

not_found

L'istanza del Wallet non è stata trovata.

422 Unprocessable Content [OPTIONAL]

validation_error

La richiesta non rispetta il formato richiesto.

500 Internal Server Error

server_error

Si è verificato un errore interno del server durante l'elaborazione della richiesta.

503 Service Unavailable

temporarily_unavailable

Il servizio non è disponibile. Si prega di riprovare più tardi.

13.1.4.3. JWT della Wallet Instance Attestation

L'header JOSE del JWT della Wallet Instance Attestation contiene i seguenti parametri:

Header JOSE

Descrizione

Riferimento

alg

OBBLIGATORIO. Un identificatore di algoritmo di firma digitale come da registro IANA "JSON Web Signature and Encryption Algorithms". DEVE essere uno degli algoritmi supportati elencati nella Sezione Algoritmi Crittografici e NON DEVE essere impostato su none o qualsiasi identificatore di algoritmo simmetrico (MAC).

RFC 7516#section-4.1.1.

kid

OBBLIGATORIO. Identificatore univoco della chiave pubblica associata alla chiave privata che il Fornitore di Wallet ha utilizzato per firmare la Wallet Instance Attestation.

RFC 7638#section_3.

typ

OBBLIGATORIO. DEVE essere impostato su oauth-client-attestation+jwt

OPENID4VC-HAIP.

trust_chain

OPZIONALE. Sequenza di Entity Statement che compone la Catena di Fiducia relativa al Fornitore di Wallet.

OID-FED Sezione 4.3 Trust Chain Header Parameter.

x5c

OBBLIGATORIO. Contiene il certificato di chiave pubblica X.509 o la catena di certificati (RFC 5280) corrispondente alla chiave utilizzata per firmare digitalmente il JWT.

RFC 7515 Sezione 4.1.8, SD-JWT-VC Sezione 3.5 e OPENID4VC-HAIP.

Il corpo del JWT della Wallet Instance Attestation contiene i seguenti claim:

Claim

Descrizione

Riferimento

iss

OBBLIGATORIO. Identificatore del Fornitore di Wallet.

RFC 9126 e RFC 7519.

exp

OBBLIGATORIO. Timestamp UNIX con il tempo di scadenza del JWT.

RFC 9126 e RFC 7519.

iat

OBBLIGATORIO. Timestamp UNIX con il tempo di emissione del JWT.

RFC 9126 e RFC 7519.

nbf

OPZIONALE. Timestamp UNIX con data e orario prima del quale il JWT NON DEVE essere accettato.

RFC 9126 e RFC 7519.

cnf

OBBLIGATORIO. Oggetto JSON, contenente la parte pubblica di una coppia di chiavi asimmetriche posseduta dall'Istanza di Wallet.

RFC 7800.

wallet_link

OBBLIGATORIO. Stringa contenente un URL per ottenere ulteriori informazioni sul Wallet e sul Fornitore di Wallet.

OpenID4VCI.

wallet_name

OBBLIGATORIO. Stringa contenente un nome leggibile dall'uomo del Wallet.

OpenID4VCI.

status

OBBLIGATORIO. Stringa contenente le informazioni su come leggere lo stato della Wallet App Attestation come definito nella Sezione 6.2 di TOKEN-STATUS-LIST.

OpenID4VCI.

eudi_wallet_info

OPTIONAL. Oggetto JSON contenente le informazioni generali sul Wallet e sul Wallet Provider. Il seguente parametro DEVE essere incluso:

  • general_info: OBBLIGATORIO. Un oggetto che contiene i seguenti parametri:

    • wallet_provider_name: OBBLIGATORIO. Valore stringa del nome del Wallet Provider come riportato nella lista fidata dei Wallet Provider.

    • wallet_solution_id: OBBLIGATORIO. Valore stringa dell'identificatore della Wallet Solution come riportato nella lista fidata dei Wallet Provider.

    • wallet_solution_version: OBBLIGATORIO. Valore stringa della versione della Wallet Solution.

    • wallet_solution_certification_information: OBBLIGATORIO. Valore stringa che contiene un URL che rimanda alla certificazione della Wallet Solution.

EUDI-TS 3.

sub

OBBLIGATORIO. Identificatore dell'Istanza di Wallet che è l'impronta digitale della JWK della Wallet Instance Attestation.

RFC 9126 e RFC 7519.

Di seguito è riportato un esempio non normativo dell'header e del payload della Wallet Instance Attestation JWT senza codifica e firma applicata:

{
    "typ": "oauth-client-attestation+jwt",
    "x5c": [
      "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"
    ],
    "alg": "ES256",
    "kid": "8UkfrvttLkpAQOOp"
  }
{
    "cnf": {
      "jwk": {
        "kty": "EC",
        "x": "8g9qKk3tRCBHsu57pNy3oMPc-jeJW8zU1LvfG9H5__M",
        "y": "KD0MNCPtJqUd1RGiTdAxEL6OCw5trfzqSrU6BHKOy2g",
        "crv": "P-256",
        "kid": "dd762e6f8b613193"
      }
    },
    "eudi_wallet_info": {
      "general_info": {
        "wallet_provider_name": "ExampleOrg",
        "wallet_solution_id": "Wallet-mobile",
        "wallet_solution_version": "1.0.0",
        "wallet_solution_certification_information": ""
      }
    },
    "iss": "https://wallet-provider.example.org",
    "sub": "vbeXJksM45xphtANnCiG6mCyuU4jfGNzopGuKvogg9c",
    "iat": 1772444318,
    "exp": 1772447918
  }

Nota

Poiché lo schema di certificazione non è ancora stato definito, il contenuto esatto di wallet_solution_certification_information è indefinito. Questo contenuto sarà definito in un aggiornamento futuro.

13.1.5. Endpoint di Emissione della Wallet Unit Attestation

Questo è un endpoint API RESTful fornito dal Wallet Provider che consente alla Wallet Instance di ottenere una Wallet Unit Attestation, inviando una Richiesta di Emissione della Wallet Unit Attestation.

13.1.5.1. Richiesta di Emissione della Wallet Unit Attestation

La richiesta di emissione della Wallet Unit Attestation utilizza il metodo HTTP POST con Content-Type impostato a application/json. (WP_026 e WP_140–142).

L'header typ del JWT della richiesta di emissione Wallet Unit Attestation Issuance assume il valore wua-request+jwt.

Il body della richiesta di emissione Wallet Unit Attestation contiene un parametro assertion il cui valore è un JWT firmato che include tutti i parametri di header e i claim del body descritti di seguito.

Di seguito è riportato un esempio non normativo di una Wallet Unit Attestation Request.

POST /wallet-unit-attestation HTTP/1.1
Host: application-provider.example.org
Content-Type: application/json

{
  "assertion": "eyJpc3MiOiJodHRwczovL3dhbGxldC1wcm92aWRlc..."
}

In particolare, il JWT della Wallet Unit Attestation Issuance include i seguenti parametri di header HTTP:

Parameter

Description

Reference

alg

Identificatore di algoritmo di firma digitale, come definito dal registro IANA "JSON Web Signature and Encryption Algorithms". DEVE essere uno degli algoritmi supportati elencati in Algoritmi Crittografici e NON DEVE essere impostato a none né a un identificatore di algoritmo simmetrico (MAC).

[RFC 7516#section-4.1.1]

kid

Thumbprint della JWK della Wallet Instance contenuta nel claim cnf.

[RFC 7638#section_3]

typ

Il tipo del JWT; DEVE essere impostato a wua-request+jwt.

Il JWT della Wallet Unit Attestation Request include i seguenti claim nel body:

Claim

Description

Reference

iss

L'identificatore del Wallet Provider concatenato con la thumbprint della JWK nel claim cnf.

[RFC 9126], [RFC 7519].

aud

L'identificatore del Wallet Provider.

[RFC 9126], [RFC 7519].

exp

Timestamp UNIX che rappresenta il tempo di scadenza del JWT.

[RFC 9126], [RFC 7519].

iat

Timestamp UNIX che rappresenta il tempo di emissione del JWT.

[RFC 9126], [RFC 7519].

nonce

Il nonce ottenuto dal Nonce Endpoint.

keys_to_attest

Array JSON di stringhe JWT, ciascuna delle quali rappresenta una Key_Attestation_Requests.

hardware_signature

La firma di client_data_hash ottenuta utilizzando la Cryptographic Hardware Key, codificata nel formato base64url.

integrity_assertion

L'Integrity Assertion per la Wallet Instance Attestation ottenuta dalle Device Integrity Service APIs con holder binding di client_data_hash.

hardware_key_tag

Il valore del Cryptographic Hardware Key Tag.

cnf

Oggetto JSON contenente la parte pubblica della prima coppia di chiavi asimmetriche (primo elemento di keys_to_attest) posseduta dalla Wallet Instance.

RFC 7800.

platform

Stringa contenente il valore del sistema operativo del dispositivo.

wallet_solution_id

Stringa contenente l'identificatore della Wallet Solution.

wallet_solution_version

Stringa contenente la versione della Wallet Solution.

Di seguito è riportato un esempio non normativo dell'header e del payload JWT di una Wallet Unit Attestation Request.

{
  "alg": "ES256",
  "kid": "OnsiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiL",
  "typ": "wua-request+jwt"
}
{
  "iss": "https://wallet-provider.example.org/instance/OnsiandrIjp7ImNydiI6IlAtMjU2Iiwia3R5IjoiRUMiL",
  "aud": "https://wallet-provider.example.org/",
  "nonce": "f3b29a81-45c7-4d12-b8b5-e1f6c9327aef",
  "hardware_signature": "KoZIhvcNAQcCoIAwgAIB...",
  "integrity_assertion": "o2NmbXRvYXBwbGUtYXBwYXNzZXJ0aW9uLXBheWxvYWQtYXBw...",
  "hardware_key_tag": "QW12DylRTmF89iGkpydNDWW7m8bVpa2Fn9KBeXGYtfX",
  "cnf": {
    "jwk": {
      "crv": "P-256",
      "kty": "EC",
      "x": "8FJtI-yr3pjyRKGMnz4WmdnQD_uJSq4R95Nj98b44",
      "y": "MKZnSB39vFJhYgS3k7jXE4r3-CoGFQwZtPBIRqpNlrg"
    }
  },
  "keys_to_attest": [
    "eyJ0eXAiOiJrZXktYXR0ZXN0YXRpb24tcmVxdWVzdCtqd3QiLCJhbGciOiJFUzI1NiIsImtpZCI6Ik9LSEhrVk5PckthUFZKdWZsREt3MVNRSEZOWTVpeTlPaXdBdHBBMGNvSUEifQ.eyJ3c2NkX2tleV9hdHRlc3RhdGlvbiI6eyJzdG9yYWdlX3R5cGUiOiJMT0NBTF9OQVRJVkUifSwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsIngiOiJ4QUg5U05mYXE5SjVkbWt6WFlRTGVrNVlmcFBjOGlfUHBNUlQzMTVoak1rIiwieSI6IlBFMlhMY3BXNmVYSDRGbFlHTlA5Qmh3UVFkRWlaRTF0QWRULUVpaEFDQzgiLCJjcnYiOiJQLTI1NiIsImtpZCI6Ik9LSEhrVk5PckthUFZKdWZsREt3MVNRSEZOWTVpeTlPaXdBdHBBMGNvSUEifX0sImlhdCI6MTc3MzA1Mzg2MSwiZXhwIjoxNzczMDU3NDYxfQ.Rn3D0GwYYZJaupzJ6617V0xav_HH6bGnttoGrD4lwY8ICPH9NiEbTF9ZBYD3aHh20Z9GCjQ8Fhit5Fbps8v9Aw",
    "eyJ0eXAiOiJrZXktYXR0ZXN0YXRpb24tcmVxdWVzdCtqd3QiLCJhbGciOiJFUzI1NiIsImtpZCI6IkViUUJSQ2dLNWJrVzlZNU1idGEwZlpzMVdhVTBLZVpiek9iTXVvY2NLb28ifQ.eyJ3c2NkX2tleV9hdHRlc3RhdGlvbiI6eyJzdG9yYWdlX3R5cGUiOiJMT0NBTF9OQVRJVkUifSwiY25mIjp7Imp3ayI6eyJrdHkiOiJFQyIsIngiOiJEVVFWTGhLMUtRUmQtZ3g3UU5jYVNhWENnOXg0S3R6QmstNWIxWTNkeWU0IiwieSI6IkZxVjk0TWVrVm5fQ05mNTIxdm1vLVFIcWZObk12eGdIR3NFeDlCTlc4aFEiLCJjcnYiOiJQLTI1NiIsImtpZCI6IkViUUJSQ2dLNWJrVzlZNU1idGEwZlpzMVdhVTBLZVpiek9iTXVvY2NLb28ifX0sImlhdCI6MTc3MzA1Mzg2MSwiZXhwIjoxNzczMDU3NDYxfQ.wIYOmX8-dmuRnuaCVg1kFoTHhsvv01vbapQ8-3er-HIiAF819Kt3Uy0PUN_WgxP7eWMGwhkn_9tQnnhdgXLYyw"
  ],
  "platform": "iOS",
  "wallet_solution_id": "Wallet-mobile",
  "wallet_solution_version": "1.1.0"
}

13.1.5.2. Risposta all'Emissione della Wallet Unit Attestation

Se la Wallet Unit Attestation Issuance Request viene validata con successo, il Wallet Provider restituisce una risposta HTTP con codice di stato 200 OK e Content-Type application/json. L'oggetto JSON restituito include wallet_unit_attestation (si veda Emissione della Wallet Unit Attestation). wallet_unit_attestation è firmata dal Wallet Provider (WP_027–029 e WP_143–144). La Wallet Unit Attestation JWT deve essere utilizzata nella fase di Emissione di un Attestato Elettronico, come intestazione JOSE key_attestation nel JWT di tipo proof, e verrà inviata al Fornitore di Attestati Elettronici come discusso in Emissione di Attestati Elettronici.

L'oggetto JSON restituito nella risposta contiene il seguente parametro:

Parameter

Description

Reference

wallet_unit_attestation

OBBLIGATORIO. Una stringa che rappresenta la Wallet Unit Attestation rilasciata.

Questa specifica.

Il valore del parametro wallet_unit_attestation è una stringa che rappresenta la Wallet Unit Attestation in formato JWT.

Se durante il processo si verificano errori, viene restituita una risposta di errore come definito nella sezione precedente.

La tabella seguente elenca i codici di stato HTTP e i relativi codici di errore per i casi che differiscono da quanto già riportato:

HTTP Status Code

Error Code

Description

400 Bad Request

bad_request

La richiesta è malformata, mancano parametri obbligatori (ad esempio parametri di header, Integrity Assertion o keys_to_attest), oppure include parametri non validi o sconosciuti.

403 Forbidden

invalid_request

La validazione dell'Integrity Assertion o della Key Attestation (keys_to_attest) non è riuscita; l'Integrity Assertion o la Key Attestation (keys_to_attest) è stata manomessa oppure firmata in modo non corretto.

403 Forbidden

invalid_request

La firma della Wallet Unit Attestation Request non è valida oppure non corrisponde alla chiave pubblica associata (JWK).

13.1.5.3. Wallet Unit Attestation JWT

L'intestazione JOSE del Wallet Unit Attestation JWT contiene i seguenti parametri:

JOSE header

Descrizione

Riferimento

alg

OBBLIGATORIO. Un identificatore di algoritmo di firma digitale come da registro IANA "JSON Web Signature and Encryption Algorithms". DEVE essere uno degli algoritmi supportati elencati in Algoritmi Crittografici e NON DEVE essere impostato su none o qualsiasi identificatore di algoritmo simmetrico (MAC).

RFC 7516#section-4.1.1.

kid

OBBLIGATORIO. Identificatore univoco della chiave pubblica associata alla chiave privata che il Fornitore di Wallet ha utilizzato per firmare la Wallet Unit Attestation.

RFC 7638#section_3.

typ

OBBLIGATORIO. Deve essere impostato su key-attestation+jwt

OPENID4VC-HAIP.

trust_chain

OPZIONALE. Sequenza di Entity Statement che compone la Catena di Fiducia relativa al Fornitore di Wallet.

OID-FED Sezione 4.3 Trust Chain Header Parameter.

x5c

OBBLIGATORIO. Contiene il certificato di chiave pubblica X.509 o la catena di certificati (RFC 5280) corrispondente alla chiave utilizzata per firmare digitalmente il JWT.

RFC 7515 Sezione 4.1.8 e SD-JWT-VC Sezione 3.5.

Il corpo del Wallet Unit Attestation JWT contiene le seguenti dichiarazioni (claims):

Claim

Descrizione

Riferimento

iss

OBBLIGATORIO. Identificatore del Fornitore di Wallet.

RFC 9126 e RFC 7519.

exp

OBBLIGATORIO. Timestamp UNIX con il tempo di scadenza del JWT.

RFC 9126 e RFC 7519.

iat

OBBLIGATORIO. Timestamp UNIX con il tempo di emissione del JWT.

RFC 9126 e RFC 7519.

attested_keys

OBBLIGATORIO. Un array non vuoto di chiavi attestate provenienti dallo stesso componente di archiviazione delle chiavi, utilizzando la sintassi JWK, contenente la parte pubblica di una coppia di chiavi asimmetriche posseduta dall'istanza del Wallet.

RFC 7517.

key_storage

OBBLIGATORIO. Un array non vuoto di stringhe sensibili alle maiuscole che dichiarano la resistenza al potenziale di attacco del componente di archiviazione delle chiavi e delle chiavi attestate nel parametro attested_keys. I seguenti valori sono definiti come possibili valori per questa dichiarazione claim:

  • iso_18045_high: Deve essere utilizzato quando l'archiviazione delle chiavi è resistente ad attacchi con potenziale di attacco High.

  • iso_18045_moderate: Deve essere utilizzato quando l'archiviazione delle chiavi è resistente ad attacchi con potenziale di attacco Moderate.

  • iso_18045_basic: Deve essere utilizzato quando l'archiviazione delle chiavi è resistente ad attacchi con potenziale di attacco Basic.

OpenID4VCI.

user_authentication

OBBLIGATORIO. Un array non vuoto di stringhe sensibili alle maiuscole che dichiarano la resistenza al potenziale di attacco dei metodi di autenticazione utente autorizzati ad accedere alle chiavi private dal parametro attested_keys. I seguenti valori sono definiti come possibili valori per questa dichiarazione claim:

  • iso_18045_high: Deve essere utilizzato quando l'autenticazione dell'utente è resistente ad attacchi con potenziale di attacco High.

  • iso_18045_moderate: Deve essere utilizzato quando l'autenticazione dell'utente è resistente ad attacchi con potenziale di attacco Moderate.

  • iso_18045_basic: Deve essere utilizzato quando l'autenticazione dell'utente è resistente ad attacchi con potenziale di attacco Basic.

OpenID4VCI.

status

OBBLIGATORIO. Oggetto JSON che rappresenta i meccanismi supportati per la verifica della revoca, come ad esempio OAuth Status List.

OpenID4VCI.

certification

OPZIONALE. Una stringa che contiene un URL che rimanda alla certificazione del componente di archiviazione delle chiavi.

OpenID4VCI.

eudi_wallet_info

OPZIONALE. Oggetto JSON contenente le informazioni generali sul Wallet e sul Wallet Provider. Il seguente parametro DEVE essere incluso:

  • general_info: OBBLIGATORIO. Un oggetto che contiene i seguenti parametri:

    • wallet_provider_name: OBBLIGATORIO. Valore stringa del nome del Wallet Provider come riportato nella lista fidata dei Wallet Provider.

    • wallet_solution_id: OBBLIGATORIO. Valore stringa dell'identificatore della Wallet Solution come riportato nella lista fidata dei Wallet Provider.

    • wallet_solution_version: OBBLIGATORIO. Valore stringa della versione della Wallet Solution.

    • wallet_solution_certification_information: OBBLIGATORIO. Valore stringa che contiene un URL che rimanda alla certificazione della Wallet Solution.

EUDI-TS 3.

Di seguito è riportato un esempio non normativo dell'intestazione e del payload del Wallet Unit Attestation JWT, senza codifica né firma applicata:

{
    "typ": "key-attestation+jwt",
    "x5c": [
      "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"
    ],
    "alg": "ES256",
    "kid": "8UkfrvttLkpAQOOp"
  }
{
    "iss": "https://wallet-provider.example.org",
    "attested_keys": [
        {
            "crv": "P-256",
            "kty": "EC",
            "x": "4HNptI-xr2pjyRJKGMnz4WmdnQD_uJSq4R95Nj98b44",
            "y": "LIZnSB39vFJhYgS3k7jXE4r3-CoGFQwZtPBIRqpNlrg"
        }
    ],
    "status": {
        "status_list": {
            "idx": 412,
            "uri": "https://revocation_url/statuslists/1"
        }
    },
    "iat": 1687281195,
    "exp": 1687288395,
    "key_storage": [ "iso_18045_moderate" ],
    "user_authentication": [ "iso_18045_moderate" ],
    "eudi_wallet_info": {
        "general_info": {
            "wallet_provider_name": "ExampleOrg", 
            "wallet_solution_id": "Wallet-mobile",
            "wallet_solution_version": "1.0.0",
            "wallet_solution_certification_information": ""
        },
        "key_storage_info": {
           "storage_type" : "LOCAL_NATIVE",	
           "keys_exportable": false,
           "storage_certification_information" : ""
        }
      }
}

Nota

Poiché lo schema di certificazione non è ancora stato definito, il contenuto esatto di wallet_solution_certification_information è indefinito. Questo contenuto sarà definito in un aggiornamento futuro. Analogamente, il contenuto esatto di storage_certification_information è attualmente indefinito e sarà specificato in un aggiornamento futuro, ma DOVRÀ fornire informazioni sufficienti per determinare se l'archiviazione della chiave è un WSCD. Si noti che la specifica OID4VCI definisce un attributo certification nell'elemento key_attestation che potrebbe essere utilizzato al posto di storage_certification_information.

13.1.6. Catalogo e-Service PDND del Fornitore di Wallet

La morte dell'Utente porta alla revoca delle Istanze di Wallet dell'Utente e all'eliminazione dell'account dell'Utente presso il Fornitore di Wallet. Per questo motivo, il Fornitore di Wallet fornisce il seguente e-service tramite PDND. Un Fornitore di Attestati Elettronici di Dati di Identificazione Personale che è stato notificato dalla Fonte Autentica del PID della morte dell'Utente DEVE inviare una notifica ai Fornitori di Wallet utilizzando questo endpoint.

Nota

Una Specifica OpenAPI completa è disponibile qui.

13.1.6.1. Notifica Morte Utente

Descrizione

Questo servizio viene utilizzato per notificare al Fornitore di Wallet la necessità di revocare l'Istanza di Wallet ed eliminare l'account dell'Utente a causa della morte dell'Utente.

Fornitore

Fornitore di Wallet

Consumatore

Fornitore di Attestati Elettronici di Dati di Identificazione Personale