11.1. Modello di Dati degli Attestati Elettronici

Un modello di dati dell'Attestato Elettronico ha la seguente struttura:

  • Attributi di metadati:

    • Format-Agnostic: Sono attributi di metadati di alto livello che descrivono l'Attestato Elettronico indipendentemente dal suo formato di codifica. Rappresentano le informazioni semantiche sulla credenziale (ad esempio, credential_type, issuing_authority, expiry_date) e rimangono concettualmente coerenti tra i diversi formati. Quando una credenziale viene codificata, questi attributi di metadati comuni vengono mappati a parametri tecnici specifici del formato secondo le regole di codifica di ciascun formato (SD-JWT-VC o mdoc-CBOR).

    • Format-Specific: Sono parametri di metadati intrinseci al formato di codifica specifico e servono a scopi tecnici relativi al modello di sicurezza e ai requisiti di protocollo del formato.

  • Attributi dell'Utente: Informazioni sull'Utente, come identità o qualifiche.

Gli Attestati Elettronici di Attributi (Qualificati) ((Q)EAA) sono rilasciati dai Fornitori di (Q)EAA a un'Istanza del Wallet e DEVONO essere forniti in formato SD-JWT VC o mdoc-CBOR. Mentre il modello dati (Q)EAA è guidato dal caso d'uso e può includere diversi attributi dell'Utente, gli attributi di metadati specifici per ciascun formato dati sono forniti nelle sezioni seguenti.

11.1.1. Attributi di Metadati Format-Agnostic dell'Attestato Elettronico

La seguente tabella definisce gli attributi di metadati comuni che sono applicabili agli Attestati Elettronici indipendentemente dal loro formato di codifica. Questi attributi rappresentano le informazioni semantiche sulla credenziale.

Identificativo del dato

Descrizione

credential_type_identifier

OBBLIGATORIO. Identificatore unico e resistente alle collisioni che specifica il tipo e lo schema dell'Attestato Elettronico. Definisce l'insieme di claim/attributi che l'Attestato Elettronico contiene e la loro struttura.

issuing_authority

OBBLIGATORIO. Nome dell'autorità amministrativa che ha emesso l'Attestato Elettronico.

issuing_country

OBBLIGATORIO. Codice paese Alpha-2, come specificato in ISO 3166-1, del paese o territorio del Fornitore di Attestati Elettronici.

issuance_date

OPZIONALE. Data (e se possibile ora) in cui l'Attestato Elettronico è stato emesso e/o in cui è iniziato il periodo di validità amministrativa dell'Attestato Elettronico.

expiry_date

OPZIONALE. Data (e se possibile ora) di scadenza dell'Attestato Elettronico.

location_status

OPZIONALE. La posizione delle informazioni sullo stato di validità dell'Attestato Elettronico dove il Fornitore di Attestati Elettronici revoca l'Attestato Elettronico.

cryptographic_binding

OPZIONALE. Oggetto contenente il materiale crittografico per la prova di possesso.

verification

OPZIONALE. Oggetto contenente informazioni di Identity proofing e verifica dei dati dell'Utente.

Le sezioni seguenti forniscono gli attributi specifici del formato e una mappatura degli attributi di metadati sopra indicati ai parametri tecnici specifici del formato quando la credenziale è codificata in formato SD-JWT VC o mdoc-CBOR.

11.1.2. Formato Attestato Elettronico SD-JWT-VC

Quando gli Attestati Elettronici sono emessi in formato SD-JWT-VC, DEVONO essere conformi alle specifiche SD-JWT e SD-JWT-VC.

SD-JWT DEVE essere firmato utilizzando la chiave privata del Fornitore di Attestati Elettronici. SD-JWT DEVE essere fornito insieme a un Type Metadata relativo all'Attestato Elettronico emesso secondo le Sezioni 6 e 6.3 di [SD-JWT-VC]. Il payload DEVE contenere il claim _sd_alg descritto nella Sezione 4.1.1 SD-JWT e gli altri claim specificati in questa sezione.

Il claim _sd_alg indica l'algoritmo di hash utilizzato dal Fornitore di Attestati Elettronici per generare i digest come descritto nella Sezione 4.1.1 di SD-JWT. _sd_alg DEVE essere impostato su uno degli algoritmi specificati nella Sezione Cryptographic Algorithms.

I claim che non sono divulgabili selettivamente DEVONO essere inclusi nell'SD-JWT così come sono. I digest delle disclosure, insieme a eventuali decoy se presenti, DEVONO essere contenuti nell'array _sd, come specificato nella Sezione 4.2.4.1 di SD-JWT.

Le Disclosure vengono fornite al Titolare insieme all'SD-JWT nel Combined Format for Issuance che è una serie ordinata di valori codificati in base64url, ciascuno separato dal successivo da un singolo carattere tilde ('~') come segue:

<Issuer-Signed-JWT>~<Disclosure 1>~<Disclosure 2>~...~<Disclosure N>~

Vedere SD-JWT-VC e SD-JWT per ulteriori dettagli.

11.1.2.1. Attributi Metadata degli Attestati Elettronici SD-JWT

Il JOSE Header contiene i seguenti parametri obbligatori:

Claim

Descrizione

Riferimento

typ

OBBLIGATORIO. DEVE essere valorizzato con dc+sd-jwt come definito in SD-JWT-VC. NON DEVE essere valorizzato con none.

RFC 7515 Sezione 4.1.9.

alg

OBBLIGATORIO. Algoritmo di firma.

RFC 7515 Sezione 4.1.1.

kid

OBBLIGATORIO. Identificativo univoco della chiave pubblica.

RFC 7515 Sezione 4.1.8.

trust_chain

OPZIONALE. Array JSON contenente la catena di fiducia che dimostra l'affidabilità di chi emette il JWT.

[OID-FED] Sezione 4.3.

x5c

OBBLIGATORIO. Contiene il certificato della 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 payload JWT contiene i seguenti claim. Salvo diversamente specificato, i seguenti claim NON DEVONO essere divulgabili selettivamente.

Claim

Descrizione

Riferimento

iss

OBBLIGATORIO. Stringa. Stringa URL che rappresenta l'identificativo univoco del Fornitore di Attestati Elettronici.

[RFC7519, Sezione 4.1.1].

sub

OPZIONALE. Stringa. L'identificativo del soggetto dell'Attestato Elettronico, l'Utente, DEVE essere un valore opaco e NON DEVE corrispondere a nessun dato anagrafico o essere derivato dai dati anagrafici dell'Utente tramite pseudonimizzazione. Inoltre, è richiesto che due diverse Credenziali emesse NON DEVONO utilizzare lo stesso valore di sub.

[RFC7519, Sezione 4.1.2].

iat

OPZIONALE. Timestamp UNIX con l'orario di emissione del JWT, codificato come NumericDate come indicato in RFC 7519.

[RFC7519, Sezione 4.1.6].

exp

OBBLIGATORIO. Timestamp UNIX con l'orario di scadenza del JWT, codificato come NumericDate come indicato in RFC 7519.

[RFC7519, Sezione 4.1.4].

nbf

OPZIONALE. Timestamp UNIX con l'orario di inizio validità del JWT, codificato come NumericDate come indicato in RFC 7519.

[RFC7519, Sezione 4.1.4].

issuing_authority

OBBLIGATORIO. Stringa. Identificativo del dato issuing_authority codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico.

Regolamento di esecuzione della Commissione EU_2024/2977.

issuing_country

OBBLIGATORIO. Stringa. Identificativo del dato issuing_country codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico.

Regolamento di esecuzione della Commissione EU_2024/2977.

issuance_date

OPZIONALE. Stringa. Identificativo del dato issuance_date codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Questo attributo si riferisce alla data amministrativa di emissione dell'Attestato Elettronico, che è tipicamente diverso dalla data tecnica di emissione espresso dal claim JWT iat.

Sezione 2.6 dell'ARF PID Rulebook v1.3 [EIDAS-ARF].

date_of_expiry

OPZIONALE. Stringa. Identificativo del dato expiry_date codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Questo attributo si riferisce al periodo di validità amministrativa dell'Attestato Elettronico, che è tipicamente diverso dal periodo di validità tecnica espresso dal claim JWT exp.

Regolamento di esecuzione della Commissione EU_2024/2977.

status

OBBLIGATORIO solo se l'Attestato Elettronico è long-lived. Oggetto JSON. Identificativo del dato location_status codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. DEVE contenere il membro JSON status_list.

Sezione 3.2.2.2 SD-JWT-VC.

cnf

OPZIONALE. Oggetto JSON. Identificativo del dato cryptographic_binding codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico, contenente il materiale crittografico per la prova di possesso. Includendo un claim cnf (confirmation) in un JWT, il Fornitore del JWT dichiara che il Titolare ha il controllo della chiave privata relativa a quella pubblica definita nel parametro cnf. Il destinatario DEVE verificare crittograficamente che il Titolare abbia effettivamente il controllo di quella chiave.

[RFC7800, Sezione 3.1] e Sezione 3.2.2.2 SD-JWT-VC.

vct

OBBLIGATORIO. Stringa. Identificativo del dato credential_type_identifier codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Il valore del tipo di Attestato Elettronico DEVE essere una URN e DEVE essere impostato utilizzando uno dei valori ottenuti dai metadata del Fornitore di Attestati Elettronici, il confronto dei caratteri letterali inclusi in questa URN DEVE essere eseguito in modo case-sensitive. È l'identificativo del tipo di SD-JWT VC e DEVE essere impostato con un valore resistente alle collisioni come definito nella Sezione 2 di RFC 7515. DEVE contenere anche il numero di versione del tipo di Attestato Elettronico. A meno che non sia diversamente specificato da EIDAS-ARF e dagli EUDI Rulebook, il vct DOVREBBE seguire una struttura come urn:it-wallet:{credential_type}:{credential_type_version}.

Sezione 3.2.2.2 SD-JWT-VC.

vct#integrity

OPZIONALE. Stringa. Il valore DEVE essere una stringa "integrity metadata" come definito nella Sezione 3 di [W3C-SRI]. SHA-256, SHA-384 e SHA-512 DEVONO essere supportati come funzioni crittografiche di hash. MD5 e SHA-1 NON DEVONO essere utilizzati. Questo claim DEVE essere verificato in base a quanto indicato nella Sezione 3.3.5 di [W3C-SRI].

Sezione 6.1 SD-JWT-VC, [W3C-SRI]

verification

OPZIONALE. Oggetto JSON. Identificativo del dato verification codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Include i seguenti sotto-valori:

  • trust_framework: OBBLIGATORIO. Stringa che identifica il trust framework utilizzato per l'autenticazione dell'Utente. DEVE essere impostato utilizzando uno dei valori descritti nella mappa trust_frameworks_supported fornita nei Metadata del Fornitore di Attestati Elettronici.

  • assurance_level: OBBLIGATORIO. Stringa che identifica il livello di garanzia dell'identità garantito durante il processo di autenticazione dell'Utente.

Estensione domestica.

_sd

OBBLIGATORIO. Array di stringhe, dove ogni stringa rappresenta un digest di una Disclosure.

4.2.4.1 SD-JWT

_sd_alg

OBBLIGATORIO. Stringa. Algoritmo di hash utilizzato dal Fornitore di Attestati Elettronici per generare i digest.

4.1.1 SD-JWT

Nota

I claim JWT standard nbf e exp sono utilizzati per esprimere il periodo di validità tecnica di un Attestato Elettronico conforme a SD-JWT VC.

Il parametro status_list di status DEVE essere un Oggetto JSON conforme alla Sezione 6.2 di TOKEN-STATUS-LIST.

11.1.2.2. Esempi Non Normativi di (Q)EAA

Di seguito è riportato un esempio non normativo di (Q)EAA in JSON.

{
    "iss": "https://issuer.example.org",
    "sub": "NzbLsXh8uDCcd7noWXFZAfHkxZsRGC9Xs",
    "iat": 1683000000,
    "exp": 1883000000,
    "issuing_authority": "Credential Issuer Organization",
    "issuing_country": "IT",
    "date_of_expiry": "2033-03-19",
    "status": {
        "status_list": {
            "idx": 5678,
            "uri": "https://issuer.example.org/status"
        }
    },
    "vct": "urn:it-wallet:disabilitycard:1",
    "vct#integrity": "2e40bcd6799008085ffb1a1f3517efee335298fd976b3e655bfb3f4eaa11d171",
    "verification": {
        "trust_framework": "it_wallet",
        "assurance_level": "high"
    },
    "document_number": "XXXXXXXXXX",
    "given_name": "Mario",
    "family_name": "Rossi",
    "birth_date": "1980-01-10",
    "expiry_date": "2024-01-01",
    "tax_id_code": "TINIT-XXXXXXXXXXXXXXXX",
    "constant_attendance_allowance": true
}

Il corrispondente SD-JWT è rappresentato di seguito, con header e payload decodificati in JSON.

{
    "alg": "ES256",
    "typ": "dc+sd-jwt",
    "kid": "dB67gL7ck3TFiIAf7N6_7SHvqk0MDYMEQcoGGlkUAAw",
    "x5c": [
        "<Issuer X.509 Certificate>"
    ]
}
{
    "_sd": [
        "D4VkWjnA0WON7HdCGFtU869MSvORHPf8p5fQRD5gNj0",
        "JOQk0kuBSVk80rFlv9VGY-yiIzsfzEJKk3d4RROfzkM",
        "Q7TX7kL8CNUp3BFBKP5xxIuPu5gRgkO6HplM3E1iMIc",
        "Wq3gFfmC0I9Lefw1mh-Bk5XPRtoSCg9aE23uOhxakas",
        "_ckhwGvTwFceg8jAFrQwqbw978ZHsaLJE_hs-rqV9lQ",
        "oF2qeWAbKO_qWGQ5z-HGKeifl2PMIEMbJe8L-PJ-wko",
        "qbRtUHp9Oax9dm5GeKnw_W12Yu1E2DoU6wrFPee7aBo"
    ],
    "exp": 1883000000,
    "iss": "https://issuer.example.org",
    "sub": "NzbLsXh8uDCcd7noWXFZAfHkxZsRGC9Xs",
    "iat": 1683000000,
    "issuing_authority": "Credential Issuer Organization",
    "issuing_country": "IT",
    "date_of_expiry": "2033-03-19",
    "status": {
        "status_list": {
            "idx": 5678,
            "uri": "https://issuer.example.org/status"
        }
    },
    "vct": "urn:it-wallet:disabilitycard:1",
    "vct#integrity": "2e40bcd6799008085ffb1a1f3517efee335298fd976b3e655bfb3f4eaa11d171",
    "verification": {
        "trust_framework": "it_wallet",
        "assurance_level": "high"
    },
    "_sd_alg": "sha-256",
    "cnf": {
        "jwk": {
            "kty": "EC",
            "crv": "P-256",
            "x": "TCAER19Zvu3OHF4j4W4vfSVoHIP1ILilDls7vCeGemc",
            "y": "ZxjiWWbZMQGHVWKVQ4hbSIirsVfuecCE6t4jT9F2HZQ"
        }
    }
}

Di seguito è riportato l'elenco delle disclosure:

Claim document_number:

  • Hash SHA-256: D4VkWjnA0WON7HdCGFtU869MSvORHPf8p5fQRD5gNj0

  • Disclosure: WyJrZ2h0ZTVNRE5IYlFmZEpIcDg4cENBIiwgImRvY3VtZW50X251bWJlciIs ICJYWFhYWFhYWFhYIl0

  • Contenuto: ["kghte5MDNHbQfdJHp88pCA", "document_number", "XXXXXXXXXX"]

Claim given_name:

  • Hash SHA-256: qbRtUHp9Oax9dm5GeKnw_W12Yu1E2DoU6wrFPee7aBo

  • Disclosure: WyJoWDFURXpfejg3N19YQXRyM0NPYVdnIiwgImdpdmVuX25hbWUiLCAiTWFy aW8iXQ

  • Contenuto: ["hX1TEz_z877_XAtr3COaWg", "given_name", "Mario"]

Claim family_name:

  • Hash SHA-256: Q7TX7kL8CNUp3BFBKP5xxIuPu5gRgkO6HplM3E1iMIc

  • Disclosure: WyJZV3RJMDZ4RGRDeXZUYWxjSW5URTNBIiwgImZhbWlseV9uYW1lIiwgIlJv c3NpIl0

  • Contenuto: ["YWtI06xDdCyvTalcInTE3A", "family_name", "Rossi"]

Claim birth_date:

  • Hash SHA-256: oF2qeWAbKO_qWGQ5z-HGKeifl2PMIEMbJe8L-PJ-wko

  • Disclosure: WyItejM0Y0oxZ0M1VUJQQ0l4OE9oTmlRIiwgImJpcnRoX2RhdGUiLCAiMTk4 MC0wMS0xMCJd

  • Contenuto: ["-z34cJ1gC5UBPCIx8OhNiQ", "birth_date", "1980-01-10"]

Claim expiry_date:

  • Hash SHA-256: _ckhwGvTwFceg8jAFrQwqbw978ZHsaLJE_hs-rqV9lQ

  • Disclosure: WyJYY1hsUFZDcWpITnZlQkNubFZQWWdBIiwgImV4cGlyeV9kYXRlIiwgIjIw MjQtMDEtMDEiXQ

  • Contenuto: ["XcXlPVCqjHNveBCnlVPYgA", "expiry_date", "2024-01-01"]

Claim tax_id_code:

  • Hash SHA-256: Wq3gFfmC0I9Lefw1mh-Bk5XPRtoSCg9aE23uOhxakas

  • Disclosure: WyJLTmM1LUdrOUNRaF9UZEdicUJLSTdBIiwgInRheF9pZF9jb2RlIiwgIlRJ TklULVhYWFhYWFhYWFhYWFhYWFgiXQ

  • Contenuto: ["KNc5-Gk9CQh_TdGbqBKI7A", "tax_id_code", "TINIT-XXXXXXXXXXXXXXXX"]

Claim constant_attendance_allowance:

  • Hash SHA-256: JOQk0kuBSVk80rFlv9VGY-yiIzsfzEJKk3d4RROfzkM

  • Disclosure: WyIyaFFtWXBIeVgtbVpKaHoyeHNVWWNRIiwgImNvbnN0YW50X2F0dGVuZGFu Y2VfYWxsb3dhbmNlIiwgdHJ1ZV0

  • Contenuto: ["2hQmYpHyX-mZJhz2xsUYcQ", "constant_attendance_allowance", true]

Il formato combinato per l'emissione del (Q)EAA è rappresentato di seguito:

eyJhbGciOiAiRVMyNTYiLCAidHlwIjogImRjK3NkLWp3dCIsICJraWQiOiAiZEI2N2dM
N2NrM1RGaUlBZjdONl83U0h2cWswTURZTUVRY29HR2xrVUFBdyIsICJ4NWMiOiBbIjxJ
c3N1ZXIgWC41MDkgQ2VydGlmaWNhdGU-Il19.eyJfc2QiOiBbIkQ0VmtXam5BMFdPTjd
IZENHRnRVODY5TVN2T1JIUGY4cDVmUVJENWdOajAiLCAiSk9RazBrdUJTVms4MHJGbHY
5VkdZLXlpSXpzZnpFSktrM2Q0UlJPZnprTSIsICJRN1RYN2tMOENOVXAzQkZCS1A1eHh
JdVB1NWdSZ2tPNkhwbE0zRTFpTUljIiwgIldxM2dGZm1DMEk5TGVmdzFtaC1CazVYUFJ
0b1NDZzlhRTIzdU9oeGFrYXMiLCAiX2NraHdHdlR3RmNlZzhqQUZyUXdxYnc5NzhaSHN
hTEpFX2hzLXJxVjlsUSIsICJvRjJxZVdBYktPX3FXR1E1ei1IR0tlaWZsMlBNSUVNYkp
lOEwtUEotd2tvIiwgInFiUnRVSHA5T2F4OWRtNUdlS253X1cxMll1MUUyRG9VNndyRlB
lZTdhQm8iXSwgImV4cCI6IDE4ODMwMDAwMDAsICJpc3MiOiAiaHR0cHM6Ly9pc3N1ZXI
uZXhhbXBsZS5vcmciLCAic3ViIjogIk56YkxzWGg4dURDY2Q3bm9XWEZaQWZIa3hac1J
HQzlYcyIsICJpYXQiOiAxNjgzMDAwMDAwLCAiaXNzdWluZ19hdXRob3JpdHkiOiAiQ3J
lZGVudGlhbCBJc3N1ZXIgT3JnYW5pemF0aW9uIiwgImlzc3VpbmdfY291bnRyeSI6ICJ
JVCIsICJkYXRlX29mX2V4cGlyeSI6ICIyMDMzLTAzLTE5IiwgInN0YXR1cyI6IHsic3R
hdHVzX2xpc3QiOiB7ImlkeCI6IDU2NzgsICJ1cmkiOiAiaHR0cHM6Ly9pc3N1ZXIuZXh
hbXBsZS5vcmcvc3RhdHVzIn19LCAidmN0IjogInVybjppdC13YWxsZXQ6ZGlzYWJpbGl
0eWNhcmQ6MSIsICJ2Y3QjaW50ZWdyaXR5IjogIjJlNDBiY2Q2Nzk5MDA4MDg1ZmZiMWE
xZjM1MTdlZmVlMzM1Mjk4ZmQ5NzZiM2U2NTViZmIzZjRlYWExMWQxNzEiLCAidmVyaWZ
pY2F0aW9uIjogeyJ0cnVzdF9mcmFtZXdvcmsiOiAiaXRfd2FsbGV0IiwgImFzc3VyYW5
jZV9sZXZlbCI6ICJoaWdoIn0sICJfc2RfYWxnIjogInNoYS0yNTYiLCAiY25mIjogeyJ
qd2siOiB7Imt0eSI6ICJFQyIsICJjcnYiOiAiUC0yNTYiLCAieCI6ICJUQ0FFUjE5WnZ
1M09IRjRqNFc0dmZTVm9ISVAxSUxpbERsczd2Q2VHZW1jIiwgInkiOiAiWnhqaVdXYlp
NUUdIVldLVlE0aGJTSWlyc1ZmdWVjQ0U2dDRqVDlGMkhaUSJ9fX0.rU0-nlNtkaqNS1h
8h23YMs1mBUIgJQDY6Ouq__Ih0gBEqviTrtkHZu_MgfLWRbAwnu59ubHo0PKkuy3c6D1
9SA~WyJrZ2h0ZTVNRE5IYlFmZEpIcDg4cENBIiwgImRvY3VtZW50X251bWJlciIsICJY
WFhYWFhYWFhYIl0~WyJoWDFURXpfejg3N19YQXRyM0NPYVdnIiwgImdpdmVuX25hbWUi
LCAiTWFyaW8iXQ~WyJZV3RJMDZ4RGRDeXZUYWxjSW5URTNBIiwgImZhbWlseV9uYW1lI
iwgIlJvc3NpIl0~WyItejM0Y0oxZ0M1VUJQQ0l4OE9oTmlRIiwgImJpcnRoX2RhdGUiL
CAiMTk4MC0wMS0xMCJd~WyJYY1hsUFZDcWpITnZlQkNubFZQWWdBIiwgImV4cGlyeV9k
YXRlIiwgIjIwMjQtMDEtMDEiXQ~WyJLTmM1LUdrOUNRaF9UZEdicUJLSTdBIiwgInRhe
F9pZF9jb2RlIiwgIlRJTklULVhYWFhYWFhYWFhYWFhYWFgiXQ~WyIyaFFtWXBIeVgtbV
pKaHoyeHNVWWNRIiwgImNvbnN0YW50X2F0dGVuZGFuY2VfYWxsb3dhbmNlIiwgdHJ1ZV
0~

11.1.2.3. Type Metadata dell'Attestato Elettronico

Il documento di Type Metadata, se fornito, DEVE essere un JSON object e DEVE contenere i seguenti parametri.

In conformità con la Sezione 6.3.3 di SD-JWT-VC, il documento JSON del Type Metadata PUÒ essere recuperato tramite un well-known endpoint. Questo endpoint, fornito dal Fornitore di Attestati Elettronici, DEVE avere il seguente formato: https://{Dominio Credential Issuer}/.well-known/vct/{vct}. L'endpoint restituisce un codice di stato 200 OK e supporta application/json e application/jwt come content type.

Di seguito è riportato un esempio non normativo.

GET /.well-known/vct/urn:eudi:pid:it:1 HTTP/1.1
Host: issuer.example.it
Accept: application/jwt

HTTP/1.1 200 OK
Content-Type: application/jwt

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
GET /.well-known/vct/urn:eudi:pid:it:1 HTTP/1.1
Host: issuer.example.it
Accept: application/json

HTTP/1.1 200 OK
Content-Type: application/json

{
  "name": "...",
  "description": "...",
  ...
}

11.1.3. Formato Attestato Elettronico mdoc-CBOR

Gli Attestati Elettronici emessi in formato mdoc-CBOR DEVONO essere basati sullo standard ISO/IEC 18013-5. I dati in mdoc DEVONO essere codificati in CBOR come definito in RFC 8949.

Questo modello dati struttura gli Attestati Elettronici in componenti distinti: namespaces (nameSpaces) e prova crittografica (issuerAuth). I namespace categorizzano e strutturano i dati (o attributi, vedi Attributi dei Namespaces). Mentre la prova crittografica garantisce integrità e autenticità attraverso il Mobile Security Object (MSO).

L'MSO memorizza in modo sicuro i digest crittografici degli attributi all'interno dei nameSpaces. Ciò consente alle Relying Party di convalidare gli attributi divulgati rispetto ai valori digestID corrispondenti senza rivelare l'intero Attestato Elettronico. Vedere Mobile Security Object per i dettagli.

Un Attestato Elettronico in formato mdoc-CBOR DEVE avere la seguente struttura:

Parametro

Descrizione

Riferimento

nameSpaces

(map). I namespace all'interno dei quali sono definiti i dati. Un Attestato Elettronico PUÒ includere più namespace.

[ISO 18013-5#8.3.2.1.2]

issuerAuth

(COSE_Sign1). Contiene il Mobile Security Object (MSO), un documento COSE Sign1, emesso dal Fornitore di Attestati Elettronici.

[ISO 18013-5#9.1.2.4]

Nota

Gli attributi mDL obbligatori utilizzano il namespace standard org.iso.18013.5.1. Tuttavia, PUÒ avere anche un namespace domestico, come org.iso.18013.5.1.IT, per includere attributi aggiuntivi definiti in questo profilo di implementazione. Ogni namespace all'interno di nameSpaces DEVE condividere lo stesso valore del tipo di documento emesso (docType), che identifica la natura dell'Attestato Elettronico, come definito in issuerAuth.

La struttura di una Credenziale in formato mdoc-CBOR è ulteriormente descritta nelle sezioni seguenti.

11.1.3.1. Mobile Security Object

L'issuerAuth rappresenta il Mobile Security Object che è un Documento COSE Sign1 definito in RFC 9052. Ha la seguente struttura di dati:

  • protected header

  • unprotected header

  • payload

  • signature

Il protected header DEVE contenere il seguente parametro codificato in formato CBOR:

Elemento

Descrizione

Riferimento

1

(int). Algoritmo utilizzato per verificare la firma crittografica dell'Attestato Elettronico in formato mdoc.

RFC 9053

Nota

Solo l'algoritmo di firma DEVE essere presente nel protected header, altri elementi NON DOVREBBERO essere presenti.

L'unprotected header DEVE contenere i seguenti parametri, se non diversamente specificato:

Elemento

Descrizione

Riferimento

4

(tstr, OPZIONALE). Identificativo univoco del JWK dell'Emittente. Richiesto quando l'Emittente del documento mdoc utilizza OpenID Federation.

L'Infrastruttura di Trust

33

(array). Catena di certificati X.509 relativa all'Emittente. Obbligatorio se l'autenticazione è basata su certificato X.509.

RFC 9360

Nota

x5chain è incluso nell'unprotected header con lo scopo di consentire al Titolare di aggiornare la catena di certificati X.509, relativa all'emittente del Mobile Security Object, senza invalidare la firma.

Il payload DEVE contenere il MobileSecurityObject, senza il parametro di header COSE Sign content-type e codificato come una byte string (bstr) utilizzando il CBOR Tag 24.

Il MobileSecurityObject DEVE avere i seguenti attributi, se non diversamente specificato:

Elemento

Descrizione

Riferimento

docType

(tstr). Codifica formato dell'Identificativo del dato credential_type_identifier come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico.

  • Se definito da uno standard ISO, DEVE essere una stringa della forma iso.org.{iso-number}.{part}.{version}.{credential_type} (per esempio, per una mDL, il valore DEVE essere org.iso.18013.5.1.mDL).

  • Se definito a livello europeo, DEVE essere una stringa della forma eu.europa.ec.{credential_type}.{version} (ad es., eu.europa.ec.eudi.pid.1).

  • Se definito a livello nazionale, DEVE essere una stringa della forma {Trust Anchor reverse domain}.{credential_type}.{version} (ad es., it-wallet.trust-registry.pid.1).

[ISO 18013-5#9.1.2.4]

version

(tstr). Versione del MobileSecurityObject.

[ISO 18013-5#9.1.2.4]

validityInfo

(map, REQUIRED). Contiene le date e gli orari di emissione e scadenza del MobileSecurityObject. Include i seguenti sub-valori:

  • signed (tdate, OPTIONAL). Il timestamp che indica quando il MobileSecurityObject è stato firmato.

  • validFrom (tdate, OPTIONAL). Timestamp prima del quale il MobileSecurityObject non è considerato valido. Quando presente, DEVE essere uguale o successivo a signed.

  • validUntil (tdate, REQUIRED). Timestamp dopo il quale il MobileSecurityObject non è più considerato valido.

[ISO 18013-5#9.1.2.4]

digestAlgorithm

(tstr). Identificativo dell'algoritmo di digest, che DEVE corrispondere all'algoritmo definito nel protected header.

[ISO 18013-5#9.1.2.4]

valueDigests

(map). Associa ogni namespace a un insieme di digest, dove ogni digest è indicizzato da un digestID univoco e contiene il valore del digest.

[ISO 18013-5#9.1.2.4]

deviceKeyInfo

(map). Contiene le informazioni relative alla chiave pubblica dell'Istanza del Wallet. DEVE includere i seguenti sub parametri, se non diversamente specificato:

  • deviceKey (COSE_Key). Contiene i parametri relativi alla chiave pubblica.

  • keyAuthorizations (map, OPZIONALE). Definisce le autorizzazioni per gli interi namespaces o per i singoli dati.

  • keyInfo (map, OPZIONALE). Contiene metadati aggiuntivi della chiave.

[ISO 18013-5#9.1.2.4]

status

(map, CONDIZIONALE). OBBLIGATORIO solo se l'Attestato Elettronico ha durata maggiore di 24 ore (long-lived). Identificativo del dato location_status codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Contiene le informazioni relative allo stato di revoca del MSO. Se presente, include una status_list basata sul meccanismo definito nella Sezione6.3 di TOKEN-STATUS-LIST.

[ISO 18013-5#9.1.2.6]

Nota

La chiave privata relativa alla chiave pubblica memorizzata nel deviceKey viene utilizzata per firmare i DeviceSignedItems e per dimostrare il possesso dell'Attestato Elettronico durante la fase di presentazione (vedere la fase di presentazione con mdoc-CBOR).

11.1.3.2. Attributi dei Namespaces

nameSpaces contiene una o più voci nameSpace, ciascuna identificata da un nome. All'interno di ogni nameSpace, sono inclusi uno o più IssuerSignedItemBytes, ciascuno codificato in una stringa di byte codificata in CBOR con Tag 24 (#6.24(bstr .cbor)), che appare come 24(<<... >>) nella notazione diagnostica. Essa rappresenta le informazioni da divulgare, una per ogni digest presente all'interno del Mobile Security Object e DEVE contenere i seguenti attributi:

Nome

Descrizione

Riferimento

digestID

(uint). Valore identificativo di uno dei ValueDigests forniti nel Mobile Security Object.

[ISO 18013-5#9.1.2.5]

random

(bstr). Valore di byte casuale utilizzato come salt per la funzione di hash. Questo valore DEVE essere diverso per ogni IssuerSignedItem e DEVE avere una lunghezza minima di 16 byte.

[ISO 18013-5#9.1.2.5]

elementIdentifier

(tstr). Nome identificativo del dato.

[ISO 18013-5#8.3.2.1.2.3]

elementValue

(any). Valore del dato.

[ISO 18013-5#8.3.2.1.2.3]

11.1.3.3. Attributi Metadata degli Attestati Elettronici mdoc-CBOR

I seguenti elementIdentifiers che rappresentano attributi metadata format-encoded sono definiti per gli Attestati Elettronici in formato mdoc-CBOR all'interno del rispettivo nameSpace:

Element Identifier

Descrizione

Riferimento

issuing_country

(tstr, OBBLIGATORIO). Identificativo del dato format-encoded issuing_country come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Codice paese Alpha-2 come definito in [ISO 3166-1].

[ISO 18013-5#7.2]

issuing_authority

(tstr, OBBLIGATORIO). Identificativo del dato format-encoded issuing_authority come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Il valore DEVE contenere solo caratteri Latin1b e deve avere una lunghezza massima di 150 caratteri.

[ISO 18013-5#7.2]

issuance_date

(tdate o full-date, OPZIONALE). Identificativo del dato issuance_date codificato nel formato come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. Questo attributo si riferisce alla data amministrativa di emissione dell'Attestato Elettronico, che è tipicamente diverso dalla data tecnica di emissione espresso dai parametri signed or validFrom del MobileSecurityObject.

Sezione 2.6 dell'ARF PID Rulebook v1.3 [EIDAS-ARF].

expiry_date

(tdate o full-date, OPZIONALE). Identificativo del dato format-encoded expiry_date come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. DEVE essere conforme al formato ISO 8601-1 YYYY-MM-DD.

Sezione 3 dell'ARF PID Rulebook v1.3 [EIDAS-ARF]

sub

(uuid, OPZIONALE). Identifica il soggetto dell'Attestato Elettronico mdoc (l'Utente). L'identificativo DEVE essere opaco, NON DEVE corrispondere a nessun dato anagrafico e NON DEVE essere derivato dai dati anagrafici dell'Utente attraverso la pseudonimizzazione. Inoltre, Attestati Elettronici diversi emessi allo stesso Utente o a Utenti diversi NON DEVONO utilizzare lo stesso valore sub.

Estensione domestica.

verification

(map, OPZIONALE). Identificativo del dato format-encoded verification come definito nella Sezione Attributi di Metadati Format-Agnostic dell'Attestato Elettronico. La CBOR map include i seguenti membri:

  • trust_framework (tstr, OBBLIGATORIO): trust framework utilizzato per l'autenticazione dell'Utente.

  • assurance_level (tstr, OBBLIGATORIO): livello di garanzia dell'identità garantito durante l'autenticazione dell'Utente.

Estensione domestica.

Nota

Gli attributi specifici dell'Utente dell'Attestato Elettronico sono definiti nel Catalogo degli Attestati Elettronici. Gli attributi specifici dell'Utente per gli Attestati Elettronici in formato mdoc come quelli del PID o mDL sono inclusi facendo riferimento agli corrispettivi elementIdentifiers definiti in ISO/IEC 18013-5 o nella specifica EIDAS-ARF.

Nota

Indipendentemente dal tipo di Attestato Elettronico, il valore di sub NON DEVE essere mostrato all'Utente, in quanto non è un attributo dello stesso. È utilizzato per scopi di identificazione dagli Emittenti di Credenziali.

11.1.3.4. Esempi mdoc-CBOR

Un esempio non normativo di un mDL codificato in CBOR è mostrato di seguito in codifica binaria.

a26a6e616d65537061636573a2716f72672e69736f2e31383031332e352e318cd818a100a4686469676573744944006672616e646f6d5820790401ed5d0822d1aced942e4b0c41f754eee67b89c5ee3b8fd2c97491a9640671656c656d656e744964656e7469666965726b66616d696c795f6e616d656c656c656d656e7456616c756565526f737369d818a101a4686469676573744944016672616e646f6d58201442881e24514517333019ec24aecaa70bba927d7f2d38ad7cdc3ce82d8561db71656c656d656e744964656e7469666965726a676976656e5f6e616d656c656c656d656e7456616c7565654d6172696fd818a102a4686469676573744944026672616e646f6d582051b4f3831d910861e81da746b221fd89498507476418cedc3709b5d28a7c41d071656c656d656e744964656e7469666965726a62697274685f646174656c656c656d656e7456616c7565d903ec6a313938302d30312d3130d818a103a4686469676573744944036672616e646f6d58200c8f68d1ec3aa445ef68aa10b7a5875fa18ca222a821e23890a227cdc7d25e8f71656c656d656e744964656e7469666965726a69737375655f646174656c656c656d656e7456616c7565d903ec6a323032352d30332d3237d818a104a4686469676573744944046672616e646f6d58200a9ed0d4937673152e52fb3fac0722baf4252e0d0c9869919e3339670203178e71656c656d656e744964656e7469666965726b6578706972795f646174656c656c656d656e7456616c7565d903ec6a323033302d30332d3237d818a105a4686469676573744944056672616e646f6d58204b315ff17cf3a4754a94a6cf1e9ddfdd99f6e86b177b74f173348968ca74e80b71656c656d656e744964656e7469666965726f69737375696e675f636f756e7472796c656c656d656e7456616c7565624954d818a106a4686469676573744944066672616e646f6d5820f8c82c4103f603435d0bc7762074ccc7c2c74925314a1fb5a8ab9cf2a960221f71656c656d656e744964656e7469666965727169737375696e675f617574686f726974796c656c656d656e7456616c75657828497374697475746f20506f6c696772616669636f2065205a656363612064656c6c6f20537461746fd818a107a4686469676573744944076672616e646f6d58201f7a77a353da7bfc4da12691185249c31d421afd59ddac34f9e4fb4d92b8ec5071656c656d656e744964656e7469666965726b62697274685f706c6163656c656c656d656e7456616c756564526f6d61d818a108a4686469676573744944086672616e646f6d582088e94c0365c611b523518d9a1b179ae52e242383576249f4965c40c6c97cf21471656c656d656e744964656e7469666965726f646f63756d656e745f6e756d6265726c656c656d656e7456616c756569585831323334353637d818a109a4686469676573744944096672616e646f6d5820944758b43602b01ad68911b062349845492c04c6a78129bcf8cb5fb1396af2fc71656c656d656e744964656e74696669657268706f7274726169746c656c656d656e7456616c7565590412ffd8ffe000104a46494600010101009000900000ffdb004300130d0e110e0c13110f11151413171d301f1d1a1a1d3a2a2c2330453d4947443d43414c566d5d4c51685241435f82606871757b7c7b4a5c869085778f6d787b76ffdb0043011415151d191d381f1f38764f434f7676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676767676ffc00011080018006403012200021101031101ffc4001b00000301000301000000000000000000000005060401020307ffc400321000010303030205020309000000000000010203040005110612211331141551617122410781a1163542527391b2c1f1ffc4001501010100000000000000000000000000000001ffc4001a110101010003010000000000000000000000014111213161ffda000c03010002110311003f00a5bbde22da2329c7d692bc7d0d03f52cfb0ff75e7a7ef3e7709723a1d0dae146ddfbb3c039ce07ad2bd47a7e32dbb8dd1d52d6ef4b284f64a480067dfb51f87ffb95ff00eb9ff14d215de66af089ce44b7dbde9cb6890a2838eddf18078f7add62d411ef4db9b10a65d6b95a147381ea0d495b933275fe6bba75c114104a8ba410413e983dff004f5af5d34b4b4cde632d0bf1fd1592bdd91c6411f3934c2fa6af6b54975d106dcf4a65ae56e856001ebc03c7ce29dd9eef1ef10fc447dc9da76ad2aee93537a1ba7e4f70dd8eff0057c6dffb5e1a19854a83758e54528750946ec6704850cd037bceb08b6d7d2cc76d3317fc7b5cc04fb6707269c5c6e0c5b60ae549242123b0e493f602a075559e359970d98db89525456b51c951c8afa13ea8e98e3c596836783d5c63f5a61a99fdb7290875db4be88ab384bbbbbfc7183fdeaa633e8951db7da396dc48524fb1a8bd611a5aa2a2432f30ab420a7a6d3240c718cf031fa9ef4c9ad550205aa02951df4a1d6c8421b015b769db8c9229837ea2be8b1b0d39d0eba9c51484efdb8c0efd8d258daf3c449699f2edbd4584e7af9c64e3f96b9beb28d4ac40931e6478c8e76a24a825449501d867d2b1dcdebae99b9c752ae4ecd6dde4a179c1c1e460938f9149ef655e515c03919a289cb3dca278fb7bf177f4faa829dd8ce3f2ac9a7ecde490971fafd7dce15eed9b71c018c64fa514514b24e8e4f8c5c9b75c1e82579dc1233dfec08238f6add62d391acc1c5256a79e706d52d431c7a0145140b9fd149eb3a60dc5e88cbbc2da092411e9dc71f39a7766b447b344e847dcac9dcb5abba8d145061d43a6fcf1e65cf15d0e90231d3dd9cfe62995c6dcc5ca12a2c904a15f71dd27d451453e09d1a21450961cbb3ea8a956433b781f1ce33dfed54f0e2b50a2b71d84ed6db18028a28175f74fc6bda105c529a791c25c4f3c7a11f71586268f4a66b726e33de9ea6f1b52b181c760724e47b514520a5a28a283ffd9d818a10aa46864696765737449440a6672616e646f6d5820577e4822125f55fe923117aba01fdaefcc67d4aea80018fc22efa8d48e17982f71656c656d656e744964656e7469666965727264726976696e675f70726976696c656765736c656c656d656e7456616c756581a37576656869636c655f63617465676f72795f636f646561416a69737375655f64617465d903ec4b6a323032302d30392d31376b6578706972795f64617465d903ec4b6a323033312d30362d3130d818a10ba46864696765737449440b6672616e646f6d5820fa21d3d890af5f4ea2760d08fd9a6256004cd5aa9d5e697ba5873fb0cddd555e71656c656d656e744964656e74696669657276756e5f64697374696e6775697368696e675f7369676e6c656c656d656e7456616c75656149746f72672e69736f2e31383031332e352e312e697482d818a10ca46864696765737449440c6672616e646f6d58200c3fe75be952ec3c2257031a71f2f54aeabfe7445705cec147fbb2c0f69ad56171656c656d656e744964656e746966696572637375626c656c656d656e7456616c75657820334234684b326d376641395464567a714c72477036573858794a31734e745163d818a10da46864696765737449440d6672616e646f6d5820d22c6db3dd27e066deb2ace6161e47fc6abc7a87c84a10320f14bc66d6e08d4971656c656d656e744964656e7469666965726c766572696669636174696f6e6c656c656d656e7456616c7565a36f74727573745f6672616d65776f726b6969745f77616c6c65746f6173737572616e63655f6c6576656c64686967686865766964656e636581a3647479706565766f7563686474696d656a323032352d30332d32376b6174746573746174696f6ea46474797065736469676974616c5f6174746573746174696f6e707265666572656e63655f6e756d62657273363438352d313631392d333937362d3636373170646174655f6f665f69737375616e63656a323032352d30332d323767766f7563686572a16c6f7267616e697a6174696f6e754d6f746f72697a7a617a696f6e6520436976696c656a69737375657241757468590815d284590229a30126045369707a732d6d646c2d6973737565722d6b6579182159020c30820208308201afa00302010202142eb39c647c81836bcf79fa9cd0b201ec0bf52307300a06082a8648ce3d0403023064310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f31133011060355040a0c0a4d7920436f6d70616e793113301106035504030c0a6d79736974652e636f6d301e170d3235303332373135353532305a170d3235303430363135353532305a3064310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f31133011060355040a0c0a4d7920436f6d70616e793113301106035504030c0a6d79736974652e636f6d3059301306072a8648ce3d020106082a8648ce3d03010703420004f33da72d0dd0009b62221b0e839099b12dab5e01021124ebf9060422e648f3c3ec6614a86da1e91e552b2ae35e04d3058ae82b5c65a7f1f26800cb4499652a09a33f303d303b0603551d1104343032863068747470733a2f2f63726564656e7469616c2d6973737565722e6f6964632d66656465726174696f6e2e6f6e6c696e65300a06082a8648ce3d040302034700304402204d1f0819971652b79ebe4825547de3d5554d2f41410225e6b13dab949cda125e022079ba71b823619e49719dce5daa565bf745d3d97e2b87c7f7d6a626f981e653eda1182159020c30820208308201afa00302010202142eb39c647c81836bcf79fa9cd0b201ec0bf52307300a06082a8648ce3d0403023064310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f31133011060355040a0c0a4d7920436f6d70616e793113301106035504030c0a6d79736974652e636f6d301e170d3235303332373135353532305a170d3235303430363135353532305a3064310b30090603550406130255533113301106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e636973636f31133011060355040a0c0a4d7920436f6d70616e793113301106035504030c0a6d79736974652e636f6d3059301306072a8648ce3d020106082a8648ce3d03010703420004f33da72d0dd0009b62221b0e839099b12dab5e01021124ebf9060422e648f3c3ec6614a86da1e91e552b2ae35e04d3058ae82b5c65a7f1f26800cb4499652a09a33f303d303b0603551d1104343032863068747470733a2f2f63726564656e7469616c2d6973737565722e6f6964632d66656465726174696f6e2e6f6e6c696e65300a06082a8648ce3d040302034700304402204d1f0819971652b79ebe4825547de3d5554d2f41410225e6b13dab949cda125e022079ba71b823619e49719dce5daa565bf745d3d97e2b87c7f7d6a626f981e653ed590390a76776657273696f6e63312e306f646967657374416c676f726974686d667368613235366c76616c756544696765737473a2716f72672e69736f2e31383031332e352e31ac005820f46b65d5060ad060ab9be62ff22ea8633437619ebdc7fa81f2d151159e92bffe015820e506545f6a6fd5d982670b4d62fc2b0688dc8f26754e7b0c574d63f5d72a85ac025820cfcf96fa12d100eeed5f00183d3b6a0888baa47eae85b5b95037eca7bbc0d07e0358208b0772252b0e06b611676b6b3402eb33bf866eb145e49f4d5f23215e6a04777204582014135c96693e2ab08d956876ee491357d906a6dd125557196dfb9811ba54aa8d05582086dcbd99233fbb84a9a2dce3a864a425e6e809300067a4475e3ea2a4d233dc740658202e9512d35ea225e69e7b2180ecc1678dcc3e77a16e36427e64b4f0e2861b4d3a0758204efe55c36f6249d23c473a125afc5181aa30633936494781554971b72ff13700085820cc44a4f9983c5b0b1efc0e82e2867c8d5bbdf89c34bff16a1953c923bb4e4b3e095820775eb2af0aa55f2071d62662b35c99698ae3bc0e2c4af5724ff88476cddd152f0a5820915d0ad53dd23dace34968c263d307c04701a9bb9dc9865af91dc409786fd8330b582047d89ff4fb513044e6f2394236755ac0abf3e4f4a46f40454a458a59f8b7a6fb746f72672e69736f2e31383031332e352e312e6974a20c582016d2098702e896b4614dff1859bd3b42105cac2e62ce7f87dcacc249a656db320d5820755fd7c0f9272a8589c4a661a8aa80dc916018e500884eba316899d653fcb8d16d6465766963654b6579496e666fa1696465766963654b6579a4613102622d3101622d325820f96b29873b61f05403e2963a7ecbc799c9aab28d8a6629e5848cfdef85442866622d335820a9fef033a900c63e3894d8deb805a2a1fb55ef0d2b88e3c0d3336408186485ef67646f6354797065756f72672e69736f2e31383031332e352e312e6d444c6c76616c6964697479496e666fa3667369676e656456c074323032352d30332d32375430303a30303a30305a6976616c696446726f6d56c074323032352d30332d32375430303a30303a30305a6a76616c6964556e74696c56c074323032362d30332d32375430303a30303a30305a66737461747573a16b7374617475735f6c697374a26369647819053c63757269783168747470733a2f2f73746174757370726f76696465722e6578616d706c652e6f72672f2f7374617475736c697374732f315840d09f9acdf7a6be5e4aeb405bfb3b297b1b8003bcf52558a2f39fc6e5cffed40f18f49d2cc0e72a2a56458d8aade591dee8d6540e639bca637f94bd9fa56f345c

La Notazione Diagnostica del mDL codificato in CBOR è riportata di seguito.

{
"nameSpaces": {
  "org.iso.18013.5.1": [
    24(<<
        {
        "digestID": 0,
        "random": h'790401ed5d0822d1aced942e4b0c41f754eee67b89c5ee3b8fd2c97491a96406',
        "elementIdentifier": "family_name",
        "elementValue": "Rossi"
        }
      >>),
    24(<<
        {
        "digestID": 1,
        "random": h'1442881e24514517333019ec24aecaa70bba927d7f2d38ad7cdc3ce82d8561db',
        "elementIdentifier": "given_name",
        "elementValue": "Mario"
        }
      >>),
    24(<<
        {
        "digestID": 2,
        "random": h'51b4f3831d910861e81da746b221fd89498507476418cedc3709b5d28a7c41d0',
        "elementIdentifier": "birth_date",
        "elementValue": 1004(1980-01-10)
        }
      >>),
    24(<<
        {
        "digestID": 3,
        "random": h'0c8f68d1ec3aa445ef68aa10b7a5875fa18ca222a821e23890a227cdc7d25e8f',
        "elementIdentifier": "issue_date",
        "elementValue": 1004(2025-03-27)
        }
      >>),
    24(<<
        {
        "digestID": 4,
        "random": h'0a9ed0d4937673152e52fb3fac0722baf4252e0d0c9869919e3339670203178e',
        "elementIdentifier": "expiry_date",
        "elementValue": 1004(2030-03-27)
        }
      >>),
    24(<<
        {
        "digestID": 5,
        "random": h'4b315ff17cf3a4754a94a6cf1e9ddfdd99f6e86b177b74f173348968ca74e80b',
        "elementIdentifier": "issuing_country",
        "elementValue": "IT"
        }
      >>),
    24(<<
        {
        "digestID": 6,
        "random": h'f8c82c4103f603435d0bc7762074ccc7c2c74925314a1fb5a8ab9cf2a960221f',
        "elementIdentifier": "issuing_authority",
        "elementValue": "Istituto Poligrafico e Zecca dello Stato"
        }
      >>),
    24(<<
        {
        "digestID": 7,
        "random": h'1f7a77a353da7bfc4da12691185249c31d421afd59ddac34f9e4fb4d92b8ec50',
        "elementIdentifier": "birth_place",
        "elementValue": "Roma"
        }
      >>),
    24(<<
        {
        "digestID": 8,
        "random": h'88e94c0365c611b523518d9a1b179ae52e242383576249f4965c40c6c97cf214',
        "elementIdentifier": "document_number",
        "elementValue": "XX1234567"
        }
      >>),
    24(<<
        {
        "digestID": 9,
        "random": h'944758b43602b01ad68911b062349845492c04c6a78129bcf8cb5fb1396af2fc',
        "elementIdentifier": "portrait",
        "elementValue": h'ffd8ffe000104a46494600010101009000900000ffdb004300130d0e110e0c
        13110f11151413171d301f1d1a1a1d3a2a2c2330453d4947443d43414c566d5d4c51685241435f82
        606871757b7c7b4a5c869085778f6d787b76ffdb0043011415151d191d381f1f38764f434f767676
        76767676767676767676767676767676767676767676767676767676767676767676767676767676
        76767676767676ffc00011080018006403012200021101031101ffc4001b00000301000301000000
        000000000000000005060401020307ffc40032100001030303020502030900000000000001020304
        0005110612211331141551617122410781a1163542527391b2c1f1ffc40015010101000000000000
        00000000000000000001ffc4001a110101010003010000000000000000000000014111213161ffda
        000c03010002110311003f00a5bbde22da2329c7d692bc7d0d03f52cfb0ff75e7a7ef3e7709723a1
        d0dae146ddfbb3c039ce07ad2bd47a7e32dbb8dd1d52d6ef4b284f64a480067dfb51f87ffb95ff00
        eb9ff14d215de66af089ce44b7dbde9cb6890a2838eddf18078f7add62d411ef4db9b10a65d6b95a
        147381ea0d495b933275fe6bba75c114104a8ba410413e983dff004f5af5d34b4b4cde632d0bf1fd
        1592bdd91c6411f3934c2fa6af6b54975d106dcf4a65ae56e856001ebc03c7ce29dd9eef1ef10fc4
        47dc9da76ad2aee93537a1ba7e4f70dd8eff0057c6dffb5e1a19854a83758e54528750946ec67048
        50cd037bceb08b6d7d2cc76d3317fc7b5cc04fb6707269c5c6e0c5b60ae549242123b0e493f602a0
        75559e359970d98db89525456b51c951c8afa13ea8e98e3c596836783d5c63f5a61a99fdb7290875
        db4be88ab384bbbbbfc7183fdeaa633e8951db7da396dc48524fb1a8bd611a5aa2a2432f30ab420a
        7a6d3240c718cf031fa9ef4c9ad550205aa02951df4a1d6c8421b015b769db8c9229837ea2be8b1b
        0d39d0eba9c51484efdb8c0efd8d258daf3c449699f2edbd4584e7af9c64e3f96b9beb28d4ac4093
        1e6478c8e76a24a825449501d867d2b1dcdebae99b9c752ae4ecd6dde4a179c1c1e460938f9149ef
        655e515c03919a289cb3dca278fb7bf177f4faa829dd8ce3f2ac9a7ecde490971fafd7dce15eed9b
        71c018c64fa514514b24e8e4f8c5c9b75c1e82579dc1233dfec08238f6add62d391acc1c5256a79e
        706d52d431c7a0145140b9fd149eb3a60dc5e88cbbc2da092411e9dc71f39a7766b447b344e847dc
        ac9dcb5abba8d145061d43a6fcf1e65cf15d0e90231d3dd9cfe62995c6dcc5ca12a2c904a15f71dd
        27d451453e09d1a21450961cbb3ea8a956433b781f1ce33dfed54f0e2b50a2b71d84ed6db18028a2
        8175f74fc6bda105c529a791c25c4f3c7a11f71586268f4a66b726e33de9ea6f1b52b181c760724e
        47b514520a5a28a283ffd9'        
        }
      >>),
    24(<<
        {
        "digestID": 10,
        "random": h'577e4822125f55fe923117aba01fdaefcc67d4aea80018fc22efa8d48e17982f',
        "elementIdentifier": "driving_privileges",
        "elementValue": [
          {
            "vehicle_category_code": "A",
            "issue_date": 1004("2020-09-17"),
            "expiry_date": 1004("2031-06-10")
            }
          ]
        }
      >>),
    24(<<
        {
        "digestID": 11,
        "random": h'fa21d3d890af5f4ea2760d08fd9a6256004cd5aa9d5e697ba5873fb0cddd555e',
        "elementIdentifier": "un_distinguishing_sign",
        "elementValue": "I"
        }
      >>)
    ],
  "org.iso.18013.5.1.IT": [
    24(<<
        {
        "digestID": 12,
        "random": h'0c3fe75be952ec3c2257031a71f2f54aeabfe7445705cec147fbb2c0f69ad561',
        "elementIdentifier": "sub",
        "elementValue": "3B4hK2m7fA9TdVzqLrGp6W8XyJ1sNtQc"
        }
      >>),
    24(<<
        {
        "digestID": 13,
        "random": h'd22c6db3dd27e066deb2ace6161e47fc6abc7a87c84a10320f14bc66d6e08d49',
        "elementIdentifier": "verification",
        "elementValue": {
          "trust_framework": "it_wallet",
          "assurance_level": "high",
          }
        }
      >>)
    ]
  },
"issuerAuth": [
    << {1: -7} >>,                 
    {                         
        33: h'30820208308201afa00302010202142eb39c647c81836bcf79fa9cd0b201ec0bf52307300a0
        6082a8648ce3d0403023064310b30090603550406130255533113301106035504080c0a43616c6966
        6f726e69613116301406035504070c0d53616e204672616e636973636f31133011060355040a0c0a4
        d7920436f6d70616e793113301106035504030c0a6d79736974652e636f6d301e170d323530333237
        3135353532305a170d3235303430363135353532305a3064310b30090603550406130255533113301
        106035504080c0a43616c69666f726e69613116301406035504070c0d53616e204672616e63697363
        6f31133011060355040a0c0a4d7920436f6d70616e793113301106035504030c0a6d79736974652e6
        36f6d3059301306072a8648ce3d020106082a8648ce3d03010703420004f33da72d0dd0009b62221b
        0e839099b12dab5e01021124ebf9060422e648f3c3ec6614a86da1e91e552b2ae35e04d3058ae82b5
        c65a7f1f26800cb4499652a09a33f303d303b0603551d1104343032863068747470733a2f2f637265
        64656e7469616c2d6973737565722e6f6964632d66656465726174696f6e2e6f6e6c696e65300a060
        82a8648ce3d040302034700304402204d1f0819971652b79ebe4825547de3d5554d2f41410225e6b1
        3dab949cda125e022079ba71b823619e49719dce5daa565bf745d3d97e2b87c7f7d6a626f981e653ed'
    }, 
    << 24(<<    
        {  
            "version": "1.0",
            "digestAlgorithm": "SHA-256",
            "valueDigests": {
              "org.iso.18013.5.1": {
                  0: h'f46b65d5060ad060ab9be62ff22ea8633437619ebdc7fa81f2d151159e92bffe',
                  1: h'e506545f6a6fd5d982670b4d62fc2b0688dc8f26754e7b0c574d63f5d72a85ac',
                  2: h'cfcf96fa12d100eeed5f00183d3b6a0888baa47eae85b5b95037eca7bbc0d07e',
                  3: h'8b0772252b0e06b611676b6b3402eb33bf866eb145e49f4d5f23215e6a047772',
                  4: h'14135c96693e2ab08d956876ee491357d906a6dd125557196dfb9811ba54aa8d',
                  5: h'86dcbd99233fbb84a9a2dce3a864a425e6e809300067a4475e3ea2a4d233dc74',
                  6: h'2e9512d35ea225e69e7b2180ecc1678dcc3e77a16e36427e64b4f0e2861b4d3a',
                  7: h'4efe55c36f6249d23c473a125afc5181aa30633936494781554971b72ff13700',
                  8: h'cc44a4f9983c5b0b1efc0e82e2867c8d5bbdf89c34bff16a1953c923bb4e4b3e',
                  9: h'775eb2af0aa55f2071d62662b35c99698ae3bc0e2c4af5724ff88476cddd152f',
                 10: h'915d0ad53dd23dace34968c263d307c04701a9bb9dc9865af91dc409786fd833',
                 11: h'47d89ff4fb513044e6f2394236755ac0abf3e4f4a46f40454a458a59f8b7a6fb'
                },
              "org.iso.18013.5.1.IT": {
                 12: h'16d2098702e896b4614dff1859bd3b42105cac2e62ce7f87dcacc249a656db32',
                 13: h'755fd7c0f9272a8589c4a661a8aa80dc916018e500884eba316899d653fcb8d1'
                }
              },
            "deviceKeyInfo": {
              "deviceKey": {
                 1: 2,
                -1: 1,
                -2: h'f96b29873b61f05403e2963a7ecbc799c9aab28d8a6629e5848cfdef85442866',
                -3: h'a9fef033a900c63e3894d8deb805a2a1fb55ef0d2b88e3c0d3336408186485ef'
                  }
              },
            "docType": "org.iso.18013.5.1.mDL",
            "validityInfo": {
                "signed": 0("2025-03-27T00:00:00Z"),
                "validFrom": 0("2025-03-27T00:00:00Z"),
                "validUntil": 0("2026-03-27T00:00:00Z")
             },
           "status": {
            "status_list": {
              "idx": 1340,
              "uri": "https://statusprovider.example.org/statuslists/1"
            }
        }
        }
    >>) >>,
    h'd09f9acdf7a6be5e4aeb405bfb3b297b1b8003bcf52558a2f39fc6e5cffed40f18f49d2cc0e72a2a5645
      8d8aade591dee8d6540e639bca637f94bd9fa56f345c'
]
}

11.1.3.5. Acronimi CBOR

Acronimo

Significato

tstr

Text String (Stringa di Testo)

bstr

Byte String (Stringa di Byte)

int

Signed Integer (Intero con Segno)

uint

Unsigned Integer (Intero Senza Segno)

uuid

Universally Unique Identifier (Identificativo Univoco Universale)

bool

Boolean (Booleano) (vero/falso)

tdate

Tagged Date (ad esempio, il Tag 0 è usato per indicare una stringa di data/ora in formato RFC 3339)

11.1.4. Mappatura dei Parametri degli Attestati Elettronici tra i vari Formati

La seguente tabella fornisce una mappatura comparativa tra le strutture dati degli Attestati Elettronici nei formati SD-JWT VC e mdoc-CBOR. Essa riporta gli elementi e i parametri chiave utilizzati in ciascun formato, evidenziando sia le somiglianze che le differenze. In particolare, evidenzia come i concetti fondamentali - come le informazioni sul Fornitore di Attestati Elettronici, la validità, l'Associazione Crittografica e le disclosure - sono rappresentati nei vari formati possibili di un Attestato Elettronico.

Per SD-JWT-VC, i parametri sono contrassegnati con (hdr) se si trovano nell'header JOSE e con (pld) se appaiono nel payload del JWT. In mdoc-CBOR, questi parametri sono identificati all'interno delle strutture issuerAuth o nameSpaces.

Informazioni Relative A

Parametri SD-JWT-VC

Parametri mdoc-CBOR

Definizione della Tipologia di Attestato Elettronico

vct (pld)

issuerAuth.doctype

Emittente

iss (pld)
issuing_authority (pld)
issuing_country (pld)
-
nameSpaces.elementIdentifier.issuing_authority
nameSpaces.elementIdentifier.issuing_country

Soggetto

sub (pld)

nameSpaces.elementIdentifier.sub

Periodo di validità

iat (pld)
exp (pld)
nbf (pld)
expiry_date (pld)
issuerAuth.validityInfo.signed
issuerAuth.validityInfo.validUntil
issuerAuth.validityInfo.validFrom
nameSpaces.elementIdentifier.expiry_date

Meccanismo di verifica dello stato

status_list (pld)
issuerAuth.status_list

Firma

alg (hdr)
kid (hdr)
issuerAuth.1 (alg)
issuerAuth.4 (kid)

Trust Anchors

trust_chain (OID-FED) (hdr)
x5c (hdr)
-
issuerAuth.33 (x5chain)

Associazione Crittografica

cnf.jwk (pld)

issuerAuth.deviceKeyInfo.deviceKey

Divulgazione Selettiva

_sd_alg (pld)
_sd (pld)
issuerAuth.digestAlgorithm
issuerAuth.valueDigests

Integrità

vct#integrity (pld)
Type_Metadata.extends#integrity (hdr)

-

Formato dell'Attestato Elettronico

typ (hdr)


-

Verificabilità dell'Attestato Elettronico

verification (pld)

nameSpaces.elementIdentifier.verification

Disclosure

salt
claim name
claim value

nameSpaces