Attestation Rulebook for attestations of type Proof of Work Notification
Category: non-qualified EAA
- Author(s):
- Jo Antoons Fragomen Belgium
- Reviewer(s):
- Philipp Friedl, DRV Bund
- Laurent Loup, SICPA
-
Florin Coptil, Robert Bosch GmbH
-
Contact:
-
Jo Antoons, Fragomen Belgium, jantoons@fragomen.com
-
Feedback:
| Version | Date | Description |
|---|---|---|
| 1.1 | 2026-10-02 | Restructured onto the generic WE BUILD attestation rulebook template (11 chapters). No normative content removed. |
Written against: ARF version 3.0.0, WE BUILD template version 1.0 (generic)
Feedback: GitHub issues
1 Introduction
This attestation addresses the following question:
**Has a company fulfilled its legal obligation to notify the host EU Member State authorities prior to sending workers to provide cross-border services within the EU?
The Posted Worker Notification (PWN) Attestation provides a verifiable digital representation of the Posted Worker Notification, enabling structured exchange of posting information for use in cross-border labour compliance verification, supplier onboarding, and regulatory audit processes by host Member State authorities, procurers, and labour inspectorates.
The PWN is an administrative requirement for companies (legal employers) that provide intra-EU cross-border services with their employees, both EU and non-EU nationals, either to a customer or into another group entity. The notification must be filed with the authorities of the host EU Member State (usually on a government portal) prior to the start of the delivery of the service.
The PWN was introduced pursuant to EU Directive 2014/67/EU to enable EU Member States to monitor that Posted Workers are protected by the salary and labour conditions set out in host legislation and generally binding collective labour agreements, and therefore do not undercut local labour force. More or less half of the EU Member States have extended the scope of the PWN also to employers based outside the EU providing services with their personnel into the EU.
The labour law protection of posted workers is set out in the Posting of Workers Directive (PWD), which was adopted in 1996 and revised in 2018: EUR-Lex - 01996L0071-20200730 - EN - EUR-Lex
The Know Your Employee (KYE) scenario (Scenario 5) is part of BU1 and will lead to MVP and MVP+ implementations using both Natural Person Wallets and Legal Person Wallets. The high-level scenario is:
"A company A in a country A would like to send one of their employees to work and provide a service to company B in country B."
This scenario requires the issuance of three main credentials: - Employee Credentials - Portable Document (PD) A1 - Posted Worker Notification (PWN)
1.1 Document scope and purpose
The PWN Attestation provides a verifiable digital representation of the Posted Worker Notification. It enables structured exchange of posting information for use in cross-border labour compliance verification, supplier onboarding, and regulatory audit processes by host Member State authorities, procurers, and labour inspectorates.
The PWN Attestation captures all key attributes required by national host country authorities, including: - Subject (posted worker) identity attributes - Assignment-related information (start/end dates, work place(s)) - Home employer details - Host company details - Employee job duties abroad representing the services justifying the posting
The attestation schema is designed to be sufficiently generic to cover national PWN requirements across EU Member States, verified against the requirements of Spain and Netherlands as representative examples.
Design Decisions
This PWN Attestation Rulebook is based on: - EU Directive 2014/67/EU, Posted Workers Enforcement Directive - Posting of Workers Directive (PWD) 96/71/EC as revised in 2018 - National PWN portal requirements (Spain, Netherlands as reference implementations) - EUDI Wallet / eIDAS 2.0 framework for digital identity and verifiable attestations - ISO 3166-1 alpha-2 for country codes - ISO 8601 for date formatting - SD-JWT VC format for selective disclosure
1.2 Document structure
This Rulebook follows the generic WE BUILD attestation rulebook template. Chapter 2 states how it complies with the ARF and the applicable Regulations. Chapters 3 and 4 define the attributes and metadata in an encoding-independent manner. Chapter 5 states the formats in which this attestation is issued. Chapters 6 to 9 cover protocols, issuance, revocation and presentation. Chapter 10 sets out the trust framework, and chapter 11 lists references.
1.3 Key words
This document uses the capitalised key words 'SHALL', 'SHOULD' and 'MAY' as specified in [RFC 2119], to indicate requirements, recommendations and options.
In addition, 'must' (non-capitalised) indicates an external constraint, a requirement not mandated by this document but by an external document. The word 'can' indicates a capability. Other words such as 'will', 'is' and 'are' are statements of fact.
1.4 Terminology
Additional terminology specific to this attestation:
| Term | Description |
|---|---|
| PWN | Posted Worker Notification, an administrative requirement for companies providing intra-EU cross-border services with posted workers, filed with the host EU Member State authorities prior to service start |
| Posted Worker | A citizen employed in one EU/EFTA member state ("sending state") who is temporarily sent to work in another member state ("receiving state") for a defined period |
| Home Employer | The legal employer in the sending state that employs the posted worker and is responsible for filing the PWN |
| Host Company | The legal entity in the receiving/host member state that receives the posted worker's services |
| Sending State | The EU/EFTA member state where the home employer is established and from which the worker is posted |
| Receiving State | The EU/EFTA member state where the posted worker temporarily performs work (host country) |
| Administrative Representative | A designated person responsible for administrative PWN filings on behalf of the employer |
| Social Representative | A designated person responsible for social/labour matters related to the posting |
| KYE | Know Your Employee, a due diligence scenario (Scenario 5 / BU1) enabling companies to verify employee identity and posting status in cross-border work situations |
| Employee Credential | A credential issued by an employer to its employees certifying employment at a given point in time |
| PWD | Posting of Workers Directive, EU Directive 96/71/EC as revised in 2018, setting out labour law protection for posted workers |
| NACE | Nomenclature of Economic Activities, EU standard for classifying economic/industry sectors |
| VAT ID | Value Added Tax identification number, national tax identifier for legal entities |
| EAA | Electronic Attestation of Attributes, as defined under eIDAS 2.0 |
| QEAA | Qualified Electronic Attestation of Attributes, as defined under eIDAS 2.0 |
| ISO 3166-1 alpha-2 | International standard defining 2-digit country codes (e.g., DE, FR, ES, NL) |
| ISO 8601 | International standard for date and time representations (e.g., YYYY-MM-DD) |
2 Compliance
2.1 Compliance statement
This Rulebook complies with the applicable requirements of Topic 12, Attestation Rulebooks, in Annex 2 of the Architecture and Reference Framework, version 3.0.0. It uses the terminology of Annex 1 of the ARF.
2.2 Regulatory basis
This attestation is not a qualified electronic attestation of attributes. The data described in Annex V points b, c and e of Regulation (EU) 2024/1183 is addressed as required by EW-DM-12-018 and as recommended by EW-DM-12-020 and EW-DM-12-022. Where a recommendation is not followed, the reason is stated below.
2.3 Traceability
Every applicable requirement mapped to the section that satisfies it. Requirements marked not applicable carry a stated reason.
| Requirement | Legacy ID | Applies | Satisfied in section | Note |
|---|---|---|---|---|
| EW-DM-12-001 | ARB_01a | yes | 5 | W3C VCDM permitted for this category; no encoding defined in this version |
| EW-DM-12-002 | ARB_01b | yes | 5 | SD-JWT VC following the HAIP profile |
| EW-DM-12-003 | ARB_02 | no | Proximity presentation is not in scope | |
| EW-DM-12-005 | ARB_04 | no | No W3C VCDM encoding is defined in this version | |
| EW-DM-12-006 | ARB_05 | yes | 5 | Unique vct for this attestation type |
| EW-DM-12-007 | ARB_06 | yes | 3 | Attributes defined independently of encoding |
| EW-DM-12-008 | ARB_06a | no | No mdoc encoding is defined in this version | |
| EW-DM-12-009 | ARB_06b | yes | 5 | SD-JWT VC claim naming |
| EW-DM-12-010 | ARB_07 | yes | 3 | Attributes reused from the catalogued vocabulary where one exists |
| EW-DM-12-012 | ARB_09 | yes | 3, 4 | Mandatory, optional and conditional stated per attribute |
| EW-DM-12-013 | ARB_10 | no | No domestic namespace is defined | |
| EW-DM-12-014 | ARB_11 | no | Annex V and VII point a apply to QEAA and PuB-EAA | |
| EW-DM-12-015 | ARB_12 | yes | 4.1 | EAA indication for a non-qualified EAA |
| EW-DM-12-016 / EW-DM-12-017 / EW-DM-12-018 | ARB_13 / ARB_14 / ARB_15 | yes | 2.2, 4.1 | Point b, EW-DM-12-018 for the non-qualified case |
| EW-DM-12-019 / EW-DM-12-020 | ARB_16 / ARB_17 | yes | 2.2 | Point c, recommendation for non-qualified EAA |
| EW-DM-12-021 / EW-DM-12-022 | ARB_18 / ARB_19 | yes | 2.2, 4.2 | Point e, recommendation for non-qualified EAA |
| EW-DM-12-023 / EW-DM-12-024 | ARB_20 / ARB_21 | yes | 4.2, 10 | Trust anchor location and the trust framework |
| EW-DM-12-029 | ARB_25 | yes | 4.1 | Legal category attribute; see the note in section 4.1 |
| EW-DM-12-030 | ARB_26 | yes | 10 | Trust anchor publication for non-qualified EAA |
| EW-DM-12-031 | ARB_27 | no | This attestation does not require the Relying Party to verify a PID | |
| EW-DM-12-032 | ARB_28 | no | cryptographically_bound_to is not used by this attestation | |
| EW-DM-12-034 | ARB_30 | yes | 5 | Selective disclosure stated per claim |
| EW-DM-12-035 | ARB_31 | no | No Claim Selective Disclosure Metadata document is used | |
| EW-DM-12-038 | ARB_34 | yes | 7.1 | Device binding |
3 Attestation attributes
Attributes are defined here in an encoding-independent manner (EW-DM-12-007). The encoding of each attribute is given in chapter 5.
3.1 Introduction
The PWN Attestation is designed to provide a verifiable digital representation of the Posted Worker Notification. It captures all key attributes required by host Member State authorities for compliance verification, including subject identity, assignment details, home employer information, host company details, and employee job duties.
Data Model of the PWN in The Netherlands:
PWN Credential
├── Subject [1:1], mandatory
│ ├── pin (String), mandatory
│ ├── family_name (String), mandatory
│ ├── forename (String), mandatory
│ ├── date_of_birth (date), mandatory
│ ├── nationality (Code [1:n], ISO 3166-1 alpha-2), mandatory
│ ├── job_title_home_country (String), optional
│ ├── gender (String/Code), optional
│ ├── surname_at_birth (String), optional
│ ├── forename_at_birth (String), optional
│ ├── place_of_birth [1:1], optional
│ │ ├── town (String)
│ │ └── country_code (Code, ISO 3166-1 alpha-2)
│ └── address [1:n], optional
│ ├── address_residence [0:1], optional
│ │ ├── street_nr (String)
│ │ ├── town (String)
│ │ ├── post_code (String)
│ │ └── country_code (Code, ISO 3166-1 alpha-2)
│ └── address_stay [0:n], optional
│ ├── street_nr (String)
│ ├── town (String)
│ ├── post_code (String)
│ └── country_code (Code, ISO 3166-1 alpha-2)
│
├── Assignment Related Information [1:1], mandatory
│ ├── home_member_state (Code, ISO 3166-1 alpha-2), optional
│ ├── starting_date (date), mandatory
│ ├── ending_date (date), mandatory
│ ├── applies_for_duration (boolean), optional
│ ├── determination_provisional (boolean), optional
│ └── transitional_rules (boolean), optional
Project Sector : mandatory
Project Subsector : mandatory
Project SBI Code : mandatory
│
├── Details of Home Employer(s)/Self-employment [1:1], mandatory
│ ├── company_name (String), mandatory
│ ├── industry_sector_nace (String), optional
│ ├── construction_sector (boolean), optional
Chamber of Commerce registration number - mandatory
│ ├── vat_id (String), mandatory
│ ├── address_line_1 (String), mandatory
│ ├── address_line_2 (String), optional
│ ├── postal_code (String), mandatory
│ ├── city (String), mandatory
│ ├── municipality (String), optional
│ ├── state (String), optional
│ ├── country (Code, ISO 3166-1 alpha-2), mandatory
_ Legal representative - mandatory
last_name (string), mandatory
│ ├── first_name (String), mandatory
│ ├── date_of_birth (date), mandatory
│ ├── nationality (Code [1:n], ISO 3166-1 alpha-2), mandatory
│ ├── phone (String), mandatory
│ ├── email (String), mandatory
│ ├── administrative_representative [1:1], mandatory
│ │ ├── last_name (String) - mandatory
│ │ ├── first_name (String) - mandatory
│ │ ├── date_of_birth (date), mandatory
│ ├── nationality (Code [1:n], ISO 3166-1 alpha-2), mandatory
│ ├── phone (String), mandatory
│ ├── email (String), mandatory
│ │ ├── address_line_1 (String) - mandatory
│ │ ├── address_line_2 (String)
│ │ ├── postal_code (String) - mandatory
│ │ ├── city (String) - mandatory
│ │ ├── municipality (String)
│ │ ├── state (String)
│ │ └── country (Code, ISO 3166-1 alpha-2) : mandatory
│ └── Host company [1:1], mandatory
Type - mandatory
│ ├── ─ company_name (String), mandatory
country of establishment - mandatory
│ ├── Chamber of Commerce registration number - mandatory
_ Location number - mandatory
│ ├── vat_id (String), mandatory
│ ├── address_line_1 (String), mandatory
│ ├── address_line_2 (String), optional
│ ├── postal_code (String), mandatory
│ ├── city (String), mandatory
│ ├── municipality (String), optional
│ ├── state (String), optional
│ ├── country (Code, ISO 3166-1 alpha-2), mandatory
Contact person host company - mandatory
last_name (String) : mandatory
│ ├── first_name (String) : mandatory
│ ├── telephone (String) : mandatory
│ ├── email (String) : mandatory
│ ├──
│── │
├── Place(s) of Work [1:n], mandatory
│ ├── address_line_1 (String), mandatory
│ ├── address_line_2 (String), optional
│ ├── postal_code (String), mandatory
│ ├── city (String), mandatory
│ ├── municipality (String), optional
│ ├── state (String), optional
│ ├── country (Code, ISO 3166-1 alpha-2), mandatory
telephone (String) : mandatory
│ ├── email (String) : mandatory
│
│Employee : Mandatory
Permanent work permit issued by sending member state : mandatory
End date of work permit issued by the sending member state : mandatory
A1 Certificate of Coverage (Y/N): mandatory
Country of issuance of A1 Certificate : mandatory
Application for A1 Certificate of coverage (Y/N) : mandatory
Country of payment of social contributions : mandatory
Evidence of payment of social contributions (Y/N) : mandatory
└──PW Notifier : mandatory
├── last_name (String) - mandatory
│ ─ first_name (String) - mandatory
│ ─ phone (String), mandatory
│ ─ email (String), mandatory
│ │ ├──
Explanation:
-
Section 1 (Subject) contains personal identity attributes of the posted worker.
-
Section 2 (Assignment Related Information) mirrors the PD A1 member state legislation section, providing assignment start and end dates but also project information.
- Section 3 (Home Employer Details) provides comprehensive information about the sending employer, Chamber of Commerce and VAT ID, address, and designated legal and administrative representatives.
- Section 4 (Host Company) identifies the receiving entity in the host member state, including the contact person of that entity.
- Section 5 (Places of Work) requires information on place(s) of work.
- Section 6 (Employee) contains information on the work and social insurance status in the home country.
- Section 7 (PW Notifier) identifies the PW notifier.
Attestation Classification:
This attestation type MAY be classified as: - "EAA" when self-issued by the home employer filing the PWN on behalf of their posted worker(s). - "QEAA" when issued by a competent national authority (e.g., labour inspectorate) confirming receipt and acceptance of the PWN.
Top-Level Data Identifiers:
| Data Identifier | Semantic Reference | Definition | Data type |
|---|---|---|---|
| subject | postedWorker | Personal identity attributes of the posted worker | Object |
| assignment_info | assignment | Assignment-related information including posting dates and project classification | Object |
| home_employer | employer | Details of the home employer including company info and representatives | Object |
| host_company | hostEntity | Details of the host company in the receiving member state including contact person | Object |
| employee | employee | Employee-specific information | Object |
| places_of_work | placeOfWork | Place(s) where the posted worker performs work in the host country | Array [PlaceOfWork] |
| Posted Worker Notifier | ... | Details of the person filing the PWN | Object |
3.2 Mandatory attributes
Section 1, Subject Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| pin | identifier | Personal Identification Number / ID number of the posted worker | String | 1:1 |
| family_name | familyName | Family name(s) of the posted worker in full | String | 1:1 |
| forename | givenName | Forename(s) of the posted worker in full | String | 1:1 |
| date_of_birth | dateOfBirth | Date of birth of the posted worker (ISO 8601) | Date (YYYY-MM-DD) | 1:1 |
| nationality | citizenship | Nationality/ies of the posted worker | Code [1:n] (ISO 3166-1 alpha-2) | 1:n |
| job_title_home_country | jobTitle | Job title of the posted worker in the home country (PWN-specific) | String | 1:1 |
Section 2, Assignment Related Information Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| assignment_info.starting_date | duration | Start date of the posting assignment (ISO 8601) | Date (YYYY-MM-DD) | 1:1 |
| assignment_info.ending_date | duration | End date of the posting assignment (ISO 8601) | Date (YYYY-MM-DD) | 1:1 |
Section 3, Home Employer Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| home_employer.company_name | legalName | Full commercial name of the home employer | String | 1:1 |
| home_employer.industry_sector_nace | activity | Industry sector of the home employer (NACE classification) | String | 1:1 |
| home_employer.construction_sector | constructionSector | Indicates whether the employer operates in the construction sector (true / false) | Boolean | 1:1 |
| home_employer.vat_id | identifier | VAT identification number of the home employer | String | 1:1 |
| home_employer.address_line_1 | registeredAddress | Primary address line of the home employer's headquarters | String | 1:1 |
| home_employer.postal_code | postCode | Postal code of the home employer's headquarters | String | 1:1 |
| home_employer.city | postName | City of the home employer's headquarters | String | 1:1 |
| home_employer.country | adminUnitL1 | Country of the home employer's headquarters (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 1:1 |
| home_employer.phone | hasTelephone | Phone number of the home employer | String | 1:1 |
| home_employer.email | hasEmail | Email address of the home employer | String | 1:1 |
| home_employer.administrative_representative.last_name | familyName | Last name of the administrative representative | String | 1:1 |
| home_employer.administrative_representative.first_name | givenName | First name of the administrative representative | String | 1:1 |
| home_employer.administrative_representative.telephone | hasTelephone | Telephone number of the administrative representative | String | 1:1 |
| home_employer.administrative_representative.email | hasEmail | Email address of the administrative representative | String | 1:1 |
| home_employer.administrative_representative.city | postName | City of the administrative representative's address | String | 1:1 |
| home_employer.administrative_representative.country | adminUnitL1 | Country of the administrative representative's address (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 1:1 |
| home_employer.social_representative.last_name | familyName | Last name of the social representative | String | 1:1 |
| home_employer.social_representative.first_name | givenName | First name of the social representative | String | 1:1 |
| home_employer.social_representative.telephone | hasTelephone | Telephone number of the social representative | String | 1:1 |
| home_employer.social_representative.email | hasEmail | Email address of the social representative | String | 1:1 |
| home_employer.social_representative.city | postName | City of the social representative's address | String | 1:1 |
| home_employer.social_representative.country | adminUnitL1 | Country of the social representative's address (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 1:1 |
Section 4, Host Company Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| host_company.company_name | legalName | Full commercial name of the host company | String | 1:1 |
| host_company.email | hasEmail | Email address of the host company | String | 1:1 |
| host_company.telephone | hasTelephone | Telephone number of the host company | String | 1:1 |
| host_company.industry_sector | activity | Industry sector of the host company | String | 1:1 |
| host_company.vat_id | identifier | VAT identification number of the host company | String | 1:1 |
| host_company.address_line_1 | registeredAddress | Primary address line of the host company's headquarters | String | 1:1 |
| host_company.postal_code | postCode | Postal code of the host company's headquarters | String | 1:1 |
| host_company.city | postName | City of the host company's headquarters | String | 1:1 |
| host_company.country | adminUnitL1 | Country of the host company's headquarters (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 1:1 |
Section 5, Employee Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| employee.job_duties_abroad | description | Description of the job duties and activities to be performed abroad by the posted worker | String | 1:1 |
Section 6, Place(s) of Work Mandatory Fields
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| place_of_work.company_name | legalName | Name of the company or vessel at the place of work | String | 1:1 |
| place_of_work.town | postName | Town of the place of work | String | 1:1 |
| place_of_work.country_code | adminUnitL1 | Country of the place of work (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 1:1 |
| no_fixed_place_of_work.country_code | adminUnitL1 | Country code when no fixed place of work exists | Code (ISO 3166-1 alpha-2) | 1:1 |
Section 7, Competent Institution Mandatory Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| institution.institution_id | , | Identifier of the competent institution associated with the PWN | String | 1:1 |
| institution.institution_name | , | Name of the competent institution | String | 1:1 |
| institution.country_code | , | Country code of the competent institution (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 1:1 |
3.3 Optional attributes
Subject Optional Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| gender | gender | Gender of the posted worker (codelist tbd) | String / Code | 0:1 |
| surname_at_birth | birthName | Surname(s) of the posted worker at birth (if different from current) | String | 0:1 |
| forename_at_birth | birthName | Forename(s) of the posted worker at birth (if different from current) | String | 0:1 |
| place_of_birth.town | geographicName | Town/locality where the posted worker was born | String | 0:1 |
| place_of_birth.country_code | geographicIdentifier | Country where the posted worker was born (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 0:1 |
| address_residence.street_nr | domicile.thoroughfare | Street and number of the posted worker's residence address | String | 0:1 |
| address_residence.town | domicile.postName | Town of the posted worker's residence address | String | 0:1 |
| address_residence.post_code | domicile.postCode | Postal code of the posted worker's residence address | String | 0:1 |
| address_residence.country_code | domicile.adminUnitL1 | Country code of the posted worker's residence address (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 0:1 |
| address_stay.street_nr | temporaryAddress.thoroughfare | Street and number of the posted worker's stay address | String | 0:1 |
| address_stay.town | temporaryAddress.postName | Town of the posted worker's stay address | String | 0:1 |
| address_stay.post_code | temporaryAddress.postCode | Postal code of the posted worker's stay address | String | 0:1 |
| address_stay.country_code | temporaryAddress.adminUnitL1 | Country code of the posted worker's stay address (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 0:1 |
Assignment Related Information Optional Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| assignment_info.applies_for_duration | a1 | Indicates whether the certificate applies for the full duration of the activity | Boolean | 0:1 |
| assignment_info.determination_provisional | , | Indicates whether the determination is provisional | Boolean | 0:1 |
| assignment_info.transitional_rules | , | Indicates whether transitional rules apply | Boolean | 0:1 |
Home Employer Optional Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| home_employer.address_line_2 | , | Secondary address line of the home employer's headquarters | String | 0:1 |
| home_employer.municipality | registeredAddress.postName | Municipality of the home employer's headquarters | String | 0:1 |
| home_employer.state | registeredAddress.adminUnitL2 | State or region of the home employer's headquarters | String | 0:1 |
| home_employer.administrative_representative.address_line_1 | , | Primary address line of the administrative representative | String | 0:1 |
| home_employer.administrative_representative.address_line_2 | , | Secondary address line of the administrative representative | String | 0:1 |
| home_employer.administrative_representative.postal_code | domicile.postCode | Postal code of the administrative representative's address | String | 0:1 |
| home_employer.administrative_representative.municipality | domicile.postName | Municipality of the administrative representative's address | String | 0:1 |
| home_employer.administrative_representative.state | domicile.adminUnitL2 | State or region of the administrative representative's address | String | 0:1 |
| home_employer.social_representative.address_line_1 | , | Primary address line of the social representative | String | 0:1 |
| home_employer.social_representative.address_line_2 | , | Secondary address line of the social representative | String | 0:1 |
| home_employer.social_representative.postal_code | domicile.postCode | Postal code of the social representative's address | String | 0:1 |
| home_employer.social_representative.municipality | domicile.postName | Municipality of the social representative's address | String | 0:1 |
| home_employer.social_representative.state | domicile.adminUnitL2 | State or region of the social representative's address | String | 0:1 |
Host Company Optional Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| host_company.address_line_2 | , | Secondary address line of the host company's headquarters | String | 0:1 |
| host_company.address_line_3 | , | Tertiary address line of the host company's headquarters | String | 0:1 |
| host_company.municipality | registeredAddress.postName | Municipality of the host company's headquarters | String | 0:1 |
| host_company.state | registeredAddress.postName | State or region of the host company's headquarters | String | 0:1 |
| host_company.business_reg_nr | identifier | Business registration number of the host company | String | 0:1 |
Place of Work Optional Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| place_of_work.flag_base_home | flagState | Flag, base or home state of the vessel (maritime use case) | String | 0:1 |
| place_of_work.company_id | identifier | Identifier of the company at the place of work | String | 0:1 |
| place_of_work.id_type | , | Type of company identifier (per EESSI codelist, tbd) | Code | 0:1 |
| place_of_work.street_nr | thoroughfare | Street and number of the place of work | String | 0:1 |
| place_of_work.postal_code | postCode | Postal code of the place of work | String | 0:1 |
Competent Institution Optional Attributes
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| institution.fax | , | Office fax number of the competent institution | String | 0:1 |
| institution.phone | , | Office phone number of the competent institution | String | 0:1 |
| institution.email | , | Email address of the competent institution | String | 0:1 |
| institution.street_nr | , | Street and number of the competent institution's address | String | 0:1 |
| institution.town | , | Town of the competent institution's address | String | 0:1 |
| institution.postal_code | , | Postal code of the competent institution's address | String | 0:1 |
| institution.country_code_address | , | Country code of the competent institution's address (ISO 3166-1 alpha-2) | Code (ISO 3166-1 alpha-2) | 0:1 |
National-Specific Optional Attributes (Netherlands PWN)
| Data Identifier | Semantic Reference | Definition | Data type | Occurrence |
|---|---|---|---|---|
| employee.a1_certificate_applied | , | Indicates whether an A1 certificate of coverage has been applied for (yes/no) | Boolean | 0:1 |
| employee.a1_country_of_issuance | , | Country of issuance of the A1 certificate | Code (ISO 3166-1 alpha-2) | 0:1 |
| employee.a1_country_where_applied | , | Country where the A1 certificate was applied for | Code (ISO 3166-1 alpha-2) | 0:1 |
| employee.third_country_national | , | Indicates whether the posted worker is a third-country national | Boolean | 0:1 |
| employee.work_permit_end_date | , | End date of work permit issued by the sending country (for third-country nationals) | Date (YYYY-MM-DD) | 0:1 |
3.4 Conditional attributes
| Data Identifier | Condition | Definition | Data type |
|---|---|---|---|
| home_employer.administrative_representative.country | Country SHALL be NL when filing for the Netherlands PWN |
Country of the administrative representative's address; must be Netherlands for NL PWN | Code (ISO 3166-1 alpha-2) |
| employee.a1_certificate_applied | SHALL be present when filing for the Netherlands PWN portal | Indicates whether A1 has been applied for | Boolean |
4 Metadata
Metadata describes the attestation rather than its subject.
4.1 Mandatory metadata
| Data Identifier | Definition | Data type |
|---|---|---|
| issuance_date | The date and time when the PWN Attestation was issued (ISO 8601) | DateTime |
| expiry_date | The date and time when the PWN Attestation expires (ISO 8601) | DateTime |
| issuing_entity | The identifier of the entity that issued the attestation (home employer for EAA, or competent authority for QEAA) | String |
| attestation_legal_category | Indicates the legal category of this attestation ("EAA" or "QEAA") | String |
| vct | A unique identifier (URL or URN) for the credential type, indicating which claims must be present and which can be selectively disclosed | String |
| binding | Information on the holder binding type (e.g., PID binding, Wallet Instance binding, no binding) | String / tbd |
Legal category. This Rulebook retains the attestation_legal_category attribute.
Section 4.1 of the generic template replaces it with the category attribute of
[ETSI TS 119 472-1], whose value for this category is eaa:eu:non-qualified.
EW-DM-12-029, legacy ARB_25, of ARF version 3.0.0 is a SHALL that still requires
attestation_legal_category, so the template and the ARF disagree. The attribute is
left as written and the deviation is recorded for the rulebook quality assurance group.
4.2 Optional metadata
| Data Identifier | Definition | Data type |
|---|---|---|
| trust_anchor_url | URL where the trust anchor for verifying this attestation can be retrieved | URI |
| schema_version | Version of the schema used for this attestation | String |
| schema_id | Schema identifier for the PWN credential schema (tbd) | String |
| revocation | Reference to revocation information for this attestation (tbd) | String / tbd |
4.3 Conditional metadata
No conditional metadata elements are defined for this attestation type.
4.4 Code lists
4.4.1 Country Codes
All country code attributes SHALL use ISO 3166-1 alpha-2 codes:
| Example Code | Country |
|---|---|
| DE | Germany |
| FR | France |
| ES | Spain |
| NL | Netherlands |
| IT | Italy |
| PL | Poland |
| BE | Belgium |
| PT | Portugal |
| CH | Switzerland |
| NO | Norway |
For the full list of applicable EU/EFTA country codes, refer to the EESSI country code reference list.
4.4.2 Construction Sector Flag
| Value | Definition |
|---|---|
| true | The home employer operates in the construction sector |
| false | The home employer does not operate in the construction sector |
4.4.3 Employment Type Codes (for Place of Work section)
The id_type attribute for company identifiers at places of work SHALL use one of the
following standardized values (per EESSI, tbd):
| Code | Definition |
|---|---|
| 01 | Identifier type 01 (tbd) |
| 02 | Identifier type 02 (tbd) |
| 03 | Identifier type 03 (tbd) |
| 99 | Other / unspecified |
4.4.4 National PWN Context Codes
The PWN attestation SHOULD include a host_country_context indicator to enable
country-specific validation logic:
| Code | Definition |
|---|---|
| NL | Netherlands PWN, requires A1 certificate status, legal representative, HR representative |
| OTHER | Generic EU PWN for member states without specific national profile defined |
4.5 Integrity rules
The following integrity rules SHALL be enforced:
- The
subjectsection SHALL be present and SHALL contain at minimumpin,family_name,forename,date_of_birth,nationality, andjob_title_home_country. nationalitySHALL be an array of one or more valid ISO 3166-1 alpha-2 country codes.- The
assignment_infosection SHALL be present and SHALL containhome_member_state,starting_date, andending_date. assignment_info.home_member_stateSHALL be a valid ISO 3166-1 alpha-2 country code.starting_dateandending_dateSHALL be valid ISO 8601 dates (YYYY-MM-DD).ending_dateSHALL be equal to or later thanstarting_date.- The
home_employersection SHALL be present and SHALL containcompany_name,industry_sector_nace,construction_sector,vat_id,address_line_1,postal_code,city,country,phone,email,administrative_representative, andsocial_representative. home_employer.countrySHALL be a valid ISO 3166-1 alpha-2 country code.home_employer.construction_sectorSHALL be a boolean value (trueorfalse).administrative_representativeSHALL contain at minimumlast_name,first_name,telephone,email,city, andcountry.social_representativeSHALL contain at minimumlast_name,first_name,telephone,email,city, andcountry.- The
host_companysection SHALL be present and SHALL containcompany_name,email,telephone,industry_sector,vat_id,address_line_1,postal_code,city, andcountry. host_company.countrySHALL be a valid ISO 3166-1 alpha-2 country code.- The
employeesection SHALL be present and SHALL containjob_duties_abroad. places_of_workSHALL contain at least one entry (eitherno_fixed_place_of_workor one or moreplace_of_workentries).- Each
place_of_workentry SHALL containcompany_name,town, andcountry_code. - All country codes SHALL be valid ISO 3166-1 alpha-2 codes.
issuance_dateandexpiry_dateSHALL be valid ISO 8601 DateTimes.expiry_dateSHALL be later thanissuance_date.issuance_dateSHALL be in the past.attestation_legal_categorySHALL be one of"EAA"or"QEAA".vctSHALL be"PWNCredential".- Each attribute SHALL appear at most once within its respective object scope.
- For Netherlands PWN:
administrative_representative.countrySHALL beNL. - For Netherlands PWN:
employee.a1_certificate_appliedSHALL be present.
5 Formats
5.1 SD-JWT VC-based encoding
The PWN Attestation uses the SD-JWT VC format to allow for selective disclosure of posting and employer attributes.
Selective Disclosure: Top-level claims (e.g., subject, home_employer, host_company,
places_of_work) SHALL be individually selectively disclosable, enabling disclosure of only
the attributes requested by a Relying Party. Attributes nested within sub-objects MAY be
individually selectively disclosable.
The . notation is used to indicate the nesting of attributes.
Verifiable Credential Type (vct): vct: PWNCredential
5.1.1 Attribute Encoding Table
| Data Identifier | Attribute Identifier | Encoding Format | Reference / Notes | Disclosable |
|---|---|---|---|---|
| Subject | ||||
| pin | subject.pin | String | Personal Identification Number / ID number; mandatory | MUST |
| family_name | subject.family_name | String | Family name(s) of the posted worker in full; mandatory | MUST |
| forename | subject.forename | String | Forename(s) of the posted worker in full; mandatory | MUST |
| gender | subject.gender | String / Code | Gender of the posted worker; optional | MUST |
| surname_at_birth | subject.surname_at_birth | String | Surname(s) at birth; optional | MUST |
| forename_at_birth | subject.forename_at_birth | String | Forename(s) at birth; optional | MUST |
| date_of_birth | subject.date_of_birth | String (ISO 8601 YYYY-MM-DD) | Date of birth of the posted worker; mandatory | MUST |
| nationality | subject.nationality | Array of Codes (ISO 3166-1 alpha-2) | Nationality/ies of the posted worker; mandatory | MUST |
| job_title_home_country | subject.job_title_home_country | String | Job title in the home country; PWN-specific; mandatory | MUST |
| place_of_birth.town | subject.place_of_birth.town | String | Town where the posted worker was born; optional | MUST |
| place_of_birth.country_code | subject.place_of_birth.country_code | Code (ISO 3166-1 alpha-2) | Country where the posted worker was born; optional | MUST |
| address_residence.street_nr | subject.address_residence.street_nr | String | Street and number of residence address; optional | MUST |
| address_residence.town | subject.address_residence.town | String | Town of residence address; optional | MUST |
| address_residence.post_code | subject.address_residence.post_code | String | Postal code of residence address; optional | MUST |
| address_residence.country_code | subject.address_residence.country_code | Code (ISO 3166-1 alpha-2) | Country of residence address; optional | MUST |
| address_stay.street_nr | subject.address_stay[n].street_nr | String | Street and number of stay address; optional | MUST |
| address_stay.town | subject.address_stay[n].town | String | Town of stay address; optional | MUST |
| address_stay.post_code | subject.address_stay[n].post_code | String | Postal code of stay address; optional | MUST |
| address_stay.country_code | subject.address_stay[n].country_code | Code (ISO 3166-1 alpha-2) | Country of stay address; optional | MUST |
| Assignment Related Information | ||||
| home_member_state | assignment_info.home_member_state | Code (ISO 3166-1 alpha-2) | Home member state from which the worker is posted; mandatory | MUST |
| starting_date | assignment_info.starting_date | String (ISO 8601 YYYY-MM-DD) | Start date of the posting assignment; mandatory | MUST |
| ending_date | assignment_info.ending_date | String (ISO 8601 YYYY-MM-DD) | End date of the posting assignment; mandatory | MUST |
| applies_for_duration | assignment_info.applies_for_duration | Boolean | True if applies for full duration; optional | MUST |
| determination_provisional | assignment_info.determination_provisional | Boolean | True if determination is provisional; optional | MUST |
| transitional_rules | assignment_info.transitional_rules | Boolean | True if transitional rules apply; optional | MUST |
| Home Employer | ||||
| home_employer.company_name | home_employer.company_name | String | Full commercial name of the home employer; mandatory | MUST |
| home_employer.industry_sector_nace | home_employer.industry_sector_nace | String | Industry sector (NACE); mandatory | MUST |
| home_employer.construction_sector | home_employer.construction_sector | Boolean | True if construction sector; mandatory | MUST |
| home_employer.vat_id | home_employer.vat_id | String | VAT identification number; mandatory | MUST |
| home_employer.address_line_1 | home_employer.address_line_1 | String | Primary address line; mandatory | MUST |
| home_employer.address_line_2 | home_employer.address_line_2 | String | Secondary address line; optional | MUST |
| home_employer.postal_code | home_employer.postal_code | String | Postal code; mandatory | MUST |
| home_employer.city | home_employer.city | String | City; mandatory | MUST |
| home_employer.municipality | home_employer.municipality | String | Municipality; optional | MUST |
| home_employer.state | home_employer.state | String | State or region; optional | MUST |
| home_employer.country | home_employer.country | Code (ISO 3166-1 alpha-2) | Country of headquarters; mandatory | MUST |
| home_employer.phone | home_employer.phone | String | Phone number; mandatory | MUST |
| home_employer.email | home_employer.email | String | Email address; mandatory | MUST |
| admin_rep.last_name | home_employer.administrative_representative.last_name | String | Last name of administrative representative; mandatory | MUST |
| admin_rep.first_name | home_employer.administrative_representative.first_name | String | First name of administrative representative; mandatory | MUST |
| admin_rep.telephone | home_employer.administrative_representative.telephone | String | Telephone of administrative representative; mandatory | MUST |
| admin_rep.email | home_employer.administrative_representative.email | String | Email of administrative representative; mandatory | MUST |
| admin_rep.city | home_employer.administrative_representative.city | String | City of administrative representative; mandatory | MUST |
| admin_rep.country | home_employer.administrative_representative.country | Code (ISO 3166-1 alpha-2) | Country of administrative representative; mandatory (NL for NL PWN) | MUST |
| social_rep.last_name | home_employer.social_representative.last_name | String | Last name of social representative; mandatory | MUST |
| social_rep.first_name | home_employer.social_representative.first_name | String | First name of social representative; mandatory | MUST |
| social_rep.telephone | home_employer.social_representative.telephone | String | Telephone of social representative; mandatory | MUST |
| social_rep.email | home_employer.social_representative.email | String | Email of social representative; mandatory | MUST |
| social_rep.city | home_employer.social_representative.city | String | City of social representative; mandatory | MUST |
| social_rep.country | home_employer.social_representative.country | Code (ISO 3166-1 alpha-2) | Country of social representative; mandatory | MUST |
| Host Company | ||||
| host_company.company_name | host_company.company_name | String | Full commercial name of host company; mandatory | MUST |
| host_company.email | host_company.email | String | Email address of host company; mandatory | MUST |
| host_company.telephone | host_company.telephone | String | Telephone number of host company; mandatory | MUST |
| host_company.industry_sector | host_company.industry_sector | String | Industry sector of host company; mandatory | MUST |
| host_company.vat_id | host_company.vat_id | String | VAT identification number of host company; mandatory | MUST |
| host_company.address_line_1 | host_company.address_line_1 | String | Primary address line of host company; mandatory | MUST |
| host_company.address_line_2 | host_company.address_line_2 | String | Secondary address line; optional | MUST |
| host_company.postal_code | host_company.postal_code | String | Postal code of host company; mandatory | MUST |
| host_company.city | host_company.city | String | City of host company; mandatory | MUST |
| host_company.municipality | host_company.municipality | String | Municipality of host company; optional | MUST |
| host_company.state | host_company.state | String | State or region of host company; optional | MUST |
| host_company.country | host_company.country | Code (ISO 3166-1 alpha-2) | Country of host company; mandatory | MUST |
| host_company.business_reg_nr | host_company.business_reg_nr | String | Business registration number; optional | MUST |
| Employee | ||||
| employee.job_duties_abroad | employee.job_duties_abroad | String | Job duties and activities to be performed abroad; mandatory | MUST |
| employee.a1_certificate_applied | employee.a1_certificate_applied | Boolean | Whether A1 has been applied for; mandatory for NL PWN | MUST |
| employee.a1_country_of_issuance | employee.a1_country_of_issuance | Code (ISO 3166-1 alpha-2) | Country of A1 issuance; optional | MAY |
| employee.a1_country_where_applied | employee.a1_country_where_applied | Code (ISO 3166-1 alpha-2) | Country where A1 was applied for; optional | MAY |
| employee.third_country_national | employee.third_country_national | Boolean | Whether employee is a third-country national; optional | MAY |
| employee.work_permit_end_date | employee.work_permit_end_date | String (ISO 8601 YYYY-MM-DD) | End date of work permit issued by sending country; optional | MAY |
| Places of Work | ||||
| no_fixed_place.country_code | places_of_work[n].no_fixed_place.country_code | Code (ISO 3166-1 alpha-2) | Country for no fixed place of work; mandatory if no_fixed_place present | MUST |
| place_of_work.company_name | places_of_work[n].place_of_work.company_name | String | Name of company at place of work; mandatory if place_of_work present | MUST |
| place_of_work.flag_base_home | places_of_work[n].place_of_work.flag_base_home | String | Flag, base or home state of vessel; optional | MUST |
| place_of_work.company_id | places_of_work[n].place_of_work.company_id | String | Company identifier at place of work; optional | MUST |
| place_of_work.id_type | places_of_work[n].place_of_work.id_type | Code | Type of company identifier; optional | MUST |
| place_of_work.street_nr | places_of_work[n].place_of_work.street_nr | String | Street and number of place of work; optional | MUST |
| place_of_work.town | places_of_work[n].place_of_work.town | String | Town of place of work; mandatory if place_of_work present | MUST |
| place_of_work.postal_code | places_of_work[n].place_of_work.postal_code | String | Postal code of place of work; optional | MUST |
| place_of_work.country_code | places_of_work[n].place_of_work.country_code | Code (ISO 3166-1 alpha-2) | Country of place of work; mandatory if place_of_work present | MUST |
| Competent Institution | ||||
| institution_id | institution.institution_id | String | Identifier of the competent institution; mandatory | MUST |
| institution_name | institution.institution_name | String | Name of the competent institution; mandatory | MUST |
| institution.country_code | institution.country_code | Code (ISO 3166-1 alpha-2) | Country of the competent institution; mandatory | MUST |
| institution.fax | institution.fax | String | Office fax number; optional | MUST |
| institution.phone | institution.phone | String | Office phone number; optional | MUST |
| institution.email | institution.email | String | Email address of institution; optional | MUST |
| institution.street_nr | institution.street_nr | String | Street and number of institution address; optional | MUST |
| institution.town | institution.town | String | Town of institution address; optional | MUST |
| institution.postal_code | institution.postal_code | String | Postal code of institution address; optional | MUST |
| institution.country_code_address | institution.country_code_address | Code (ISO 3166-1 alpha-2) | Country of institution address; optional | MUST |
| Metadata | ||||
| issuance_date | iat | Number (Unix timestamp) | Date and time when the attestation was issued (ISO 8601); RFC 7519 | MUST NOT |
| expiry_date | exp | Number (Unix timestamp) | Date and time when the attestation expires (ISO 8601); RFC 7519 | MUST NOT |
| issuing_entity | iss | String (URI or DID) | Identifier of the entity that issued the attestation; RFC 7519 | MUST NOT |
| attestation_legal_category | attestation_legal_category | String | One of "EAA" or "QEAA" as defined by eIDAS 2 | MUST NOT |
| vct | vct | String | "PWNCredential" | MUST NOT |
| binding | binding | String / tbd | Holder binding type (e.g., PID binding, Wallet Instance binding, no binding) | MUST NOT |
| schema_version | schema_version | String | Version of the schema used; optional | MAY |
| trust_anchor_url | trust_anchor_url | String (URI) | URL where the trust anchor can be retrieved; optional | MAY |
Notes:
- MUST: The claim SHALL be selectively disclosable, the holder MAY choose to disclose or withhold this claim when presenting the credential to a Relying Party.
- MAY: The claim MAY be selectively disclosable if the issuer supports it.
- MUST NOT: The claim SHALL NOT be selectively disclosable, it is always present in plain text in the JWT header/payload.
iat,exp, andissfollow RFC 7519 standard JWT claim naming conventions.- Home employer blocks SHALL be disclosed as a whole when requested.
5.1.2 Status Claim
For SD-JWT VC-compliant PWN Attestations, the attestation MUST include a status claim if
the technical validity period is greater than 24 hours.
The status claim SHALL be a JSON object with the following members:
type(string): SHALL be"status-list".status_list_credential(string, URI): The URI of the Status List Credential document.status_list_index(integer, >= 0): The zero-based index into the status list bitstring.status_purpose(string): SHALL be"revocation"for this attestation.
Example:
{
"status": {
"type": "status-list",
"status_list_credential": "https://issuer.example.com/status/pwn/2025",
"status_list_index": 321,
"status_purpose": "revocation"
}
}
3.2.3 Example Payload
The following is a non-normative example of a PWN SD-JWT VC payload (Spain PWN):
{
"vct": "PWNCredential",
"attestation_legal_category": "EAA",
"iss": "did:example:example-gmbh-de",
"iat": 1746000000,
"exp": 1777536000,
"jti": "pwn-attestation-20260501-001",
"binding": "PID binding",
"subject": {
"pin": "12345678A",
"family_name": "Müller",
"forename": "Hans",
"date_of_birth": "1985-06-15",
"nationality": ["DE"],
"job_title_home_country": "Software Engineer",
"address_residence": {
"street_nr": "Hauptstrasse 5",
"town": "Berlin",
"post_code": "10115",
"country_code": "DE"
}
},
"assignment_info": {
"home_member_state": "DE",
"starting_date": "2026-06-01",
"ending_date": "2026-12-31",
"applies_for_duration": false,
"determination_provisional": false,
"transitional_rules": false
},
"home_employer": {
"company_name": "Example GmbH",
"industry_sector_nace": "J62.01",
"construction_sector": false,
"vat_id": "DE123456789",
"address_line_1": "Industriestrasse 20",
"postal_code": "60311",
"city": "Frankfurt",
"country": "DE",
"phone": "+49 69 123456",
"email": "hr@example-gmbh.de",
"administrative_representative": {
"last_name": "Schmidt",
"first_name": "Anna",
"telephone": "+49 69 123457",
"email": "anna.schmidt@example-gmbh.de",
"city": "Frankfurt",
"country": "DE"
},
"social_representative": {
"last_name": "Weber",
"first_name": "Klaus",
"telephone": "+49 69 123458",
"email": "klaus.weber@example-gmbh.de",
"city": "Frankfurt",
"country": "DE"
}
},
"host_company": {
"company_name": "Client SA",
"email": "contact@client-sa.es",
"telephone": "+34 91 123456",
"industry_sector": "IT Services",
"vat_id": "ES-B12345678",
"address_line_1": "Calle Mayor 10",
"postal_code": "28001",
"city": "Madrid",
"country": "ES"
},
"employee": {
"job_duties_abroad": "Software development and technical consulting for client project"
},
"places_of_work": [
{
"place_of_work": {
"company_name": "Client SA",
"street_nr": "Calle Mayor 10",
"town": "Madrid",
"postal_code": "28001",
"country_code": "ES"
}
}
],
"institution": {
"institution_id": "DE-DRV-001",
"institution_name": "Deutsche Rentenversicherung Bund",
"country_code": "DE"
},
"status": {
"type": "status-list",
"status_list_credential": "https://example.com/status/pwn-list-1",
"status_list_index": 321,
"status_purpose": "revocation"
},
"trust_anchor_url": "https://trust.webuildconsortium.eu/anchors/eidas-tl",
"schema_version": "0.1.0",
"cnf": {
"jwk": {
"kty": "EC",
"crv": "P-256",
"x": "abc-123_def-456_ghi-789_jkl-012",
"y": "mno-345_pqr-678_stu-901_vwx-234"
}
}
}
Sample payloads are provided under ../data-schemas/sd-jwt/sample-data/pwn-sd-jwt-sample.json
5.2 ISO/IEC 18013-5-compliant encoding
ISO/IEC 18013-5 (also called mdoc) is out of scope for this Rulebook, as offline proximity presentation is not a current requirement for the PWN attestation.
5.3 W3C Verifiable Credentials Data Model-based encoding
@TODO, To be discussed: which stakeholders will support this format and which use cases require it.
6 Protocols
This attestation is issued using OpenID for Verifiable Credential Issuance [OpenID4VCI] and presented using OpenID for Verifiable Presentations [OpenID4VP], both as profiled by [HAIP].
7 Issuance
7.1 Binding
| Field | Value | Source |
|---|---|---|
| Device-bound | MAY | EW-DM-12-038 |
| Cryptographically bound to | none | EW-DM-12-032 |
| Relying Party must also verify a PID | no | EW-DM-12-031 |
| Binding subject | legal person |
7.2 Issuance Policy
7.3 Lifecycle management
The issuer sets the validity period of the attestation and reissues it when the underlying facts change, revoking the superseded attestation as described in chapter 8.
7.4 Embedded disclosure policy
This attestation defines no embedded disclosure policy.
8 Revocation
This chapter will be completed in a future version of this Rulebook.
9 Presentation
Base Verification Process
The Relying Party SHALL perform the base attestation verification process as defined in the Base Verification specification: https://github.com/webuild-consortium/webuild-attestation-rulebooks-catalog/blob/main/rulebooks/rb-base/verifier-base-verification.md
9.1 Presentation Policy
To verify and validate a received presentation of an attestation of this type, the following steps SHALL be performed:
- verify the signature over the attestation using a trust anchor obtained as described in chapter 10;
- verify that the attestation is within its validity period;
- check revocation status as described in chapter 8, unless the attestation is short-lived, or its remaining lifetime is below the revocation time threshold;
- verify device binding where section 7.1 records the attestation as device-bound;
- request only those attributes that are necessary for the stated purpose of the transaction, and, where the trust model for this attestation requires Relying Party registration, only those attributes it is registered and authorised to request.
Obligations specific to this attestation type, carried over from the previous version of this Rulebook:
When receiving and processing an attestation, the Relying Party SHALL perform the following verification obligations.
9.2 Presentation modes
Remote presentation is in scope. Proximity presentation is in scope only where chapter 5 records an mdoc encoding.
9.3 Transactional data
This Rulebook defines no transactional data.
10 Trust Framework
This chapter will be completed in a future version of this Rulebook.
Trust anchor location
The attribute or metadata carrying the trust anchor location contains at least the URL at which a machine-readable version can be found or looked up.
11 References
This chapter will be completed in a future version of this Rulebook.
| Item Reference | Standard name/details |
|---|---|
| [European Digital Identity Regulation] | Regulation (EU) 2024/1183 of the European Parliament and of the Council of 11 April 2024 amending Regulation (EU) No 910/2014 as regards establishing the European Digital Identity Framework |
| [HAIP] | Yasuda, K. et al, OpenID4VC High Assurance Interoperability Profile, OpenId Foundation, Version draft-03 |
| [IANA-JWT-Claims] | IANA JSON Web Token Claims Registry. Available: https://www.iana.org/assignments/jwt/jwt.xhtml |
| [ISO/IEC 18013-5] | ISO/IEC 18013-5, Personal identification, ISO-compliant driving licence - Part 5: Mobile driving licence (mDL) application, First edition, 2021-09 |
| [ISO 4217] | ISO 4217, Currency codes. Available: https://www.iso.org/iso-4217-currency-codes.html |
| [ISO 8601] | ISO 8601, Date and time format. Available: https://www.iso.org/iso-8601-date-and-time-format.html |
| [OIDC] | Sakimura, N. et al., "OpenID Connect Core 1.0", OpenID Foundation. Available: https://openid.net/specs/openid-connect-core-1_0.html |
| [RFC 2119] | RFC 2119, Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, March 1997 |
| [RFC 3339] | RFC 3339, Date and Time on the Internet: Timestamps, G. Klyne et al., July 2002 |
| [RFC 8610] | RFC 8610, Concise Data Definition Language (CDDL): A Notational Convention to Express Concise Binary Object Representation (CBOR) and JSON Data Structures, H. Birkholz et al., June 2019 |
| [RFC 8943] | RFC 8943, Concise Binary Object Representation (CBOR) Tags for Date, M. Jones et al., November 2020 |
| [RFC 8949] | RFC 8949, Concise Binary Object Representation (CBOR), C. Bormann et al., December 2020 |
| [SD-JWT VC] | SD-JWT-based Verifiable Credentials (SD-JWT VC). Available: https://datatracker.ietf.org/doc/draft-ietf-oauth-sd-jwt-vc/, version draft-ietf-oauth-sd-jwt-vc-09 |
| [Topic 7] | ARF Annex 2 - Topic 7 - Attestation revocation and revocation checking. Available: https://eu-digital-identity-wallet.github.io/eudi-doc-architecture-and-reference-framework/latest/annexes/annex-2/annex-2-high-level-requirements/#a237-topic-7-attestation-revocation-and-revocation-checking |