diff --git a/README.md b/README.md index 4fcc77efa..96c17573a 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,6 @@ SPDX-License-Identifier: CC-BY-4.0

Digital Product Pass Application

- - ## Description The digital product passport application provides a consumer user interface to request a battery passport from a battery manufacturer using the standardized components and technologies in a Catena-X network. The passport will be displayed in a human-readable from any browser. The data exchange standards given by Catena-X are used to provide the battery passport to different personas (roles) in the network. @@ -80,6 +78,15 @@ To get started you can have a look into our documentation: | [Changelog](./CHANGELOG.md) | Changelog | | [Helm Charts](https://github.com/eclipse-tractusx/digital-product-pass/tree/main/charts/digital-product-pass) | Project's Helm Charts | +## Digital Product Pass Verification Add-on + +The Digital Product Pass Verification Add-on aims to create a second layer of trust over the EDC data exchanges between consumers and data providers. It enables auditors to verify specific attributes or complete aspect models for data providers and allowing consumers to retrieve and verify the "validity" of the verification done. Using a simple wallet, a Data Provider is able to certify its attributes or the complete semantic models from Catena-X and include it in a Verifiable Credential, which can then be verified on the Data Consumer side. + +| Name | Description | +| ------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [DPP Verification Docs](./dpp-verification/README.md) | The main documentation of the Digital Product Pass Verification Add-on contains the complete architecture blueprint and details about implementation in the application. | + [DPP Simple Wallet Docs](./dpp-verification/simple-wallet/README.md) | This documentation contains the description of the simple wallet functionality, API specification and how to configure it. | + ## Base Images | Language | Container Base Image | diff --git a/dpp-verification/README.md b/dpp-verification/README.md index 6b7857b2d..a258b7606 100644 --- a/dpp-verification/README.md +++ b/dpp-verification/README.md @@ -24,22 +24,19 @@ SPDX-License-Identifier: CC-BY-4.0
DPP Verificaion Logo

- Version:  v1.0 + Version:  v2.0 STATUS: RELEASED -

A Catena-X Data Verification Framework

+

A Catena-X Data Certification/Verification Framework

Digital Product Pass Verification Add-on

-> [!IMPORTANT] -> This is the first version of the Digital Product Pass Verification Framework, more details will be added in the next release R24.08 regarding the implementation. And a first PoC will be implemented in the application for consumer verification. More information can be found in the issue: [eclipse-tractusx/sig-release#655](https://github.com/eclipse-tractusx/sig-release/issues/655) - # Metadata | | Date | Authors & Reviewers | | -------------------- | ----------------- | ----------------------------------------------------- | | **Created** | December 29, 2023 | [Mathias Brunkow Moser](https://github.com/matbmoser) | -| **Lastest Revision** | May 16, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | +| **Lastest Revision** | July 19, 2024 | [Mathias Brunkow Moser](https://github.com/matbmoser) | ## Authors @@ -54,13 +51,29 @@ SPDX-License-Identifier: CC-BY-4.0 > [!NOTE] > #Cybersecurity #DataVerification #DataCertification #Catena-X #DigitalProductPassVerification #DPP #SignedDocuments #DataCredentials # Framework -> #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdenties #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 +> #DigitalProductPass #VerifiableCredentials #Wallets #DecentralIdentities #SSI #ProductDataExchangeTrust #Verification #Innovation #Ed25519 #JWS #Web3.0 + +## Knowledge Prerequisites + +This concept contains detailed technical content and uses Catena-X vocabulary. More information about the technical abbreviations is available at the [Glossary](#glossary). +For a better understanding of this documentation, it is recommended to read and inform yourself about the following topics: + +- [Learn the Catena-X Network & Basic Principles](https://catena-x.net/en/about-us) +- [Learn the W3C Basic DID Principles](https://www.w3.org/TR/did-core/) +- [Learn the W3C Verifiable Credential Basics](https://www.w3.org/TR/vc-data-model-2.0/) +- [Learn the Tractus-X Context](https://github.com/eclipse-tractusx) +- [Learn the EcoPass KIT or Digital Product Pass Context](https://eclipse-tractusx.github.io/docs-kits/kits/Eco_Pass_KIT/page-adoption-view) +This documentation of interest can be useful during the reading and understanding of this Catena-X Data Verification/Certification Concept. +Here are also additional recommended documentation for understanding the Digital Product Pass Application Architecture basics: -# Abstract +- [Consult the Digital Product Pass Arc42](../docs/architecture/Arc42.md) +- [Consult the Digital Product Pass Data Retrieval Guide](../docs/data-retrieval/README.md) -When talking about increasing trust in data ecosystems there are multiple possible ways to be followed. Contractual and Policy solutions can be taken into consideration to ensure data sovereignty based on analog framework agreement contracts. Blockchain solutions can be implemented to assure that transactions and ownership is mathematically proofed, creating a assertive level of trust in the complete chain. Artificial Intelligence can be used as a neutral party for doing moderation and certification of data of partners and member of the network. However if you want to maintain your data and identify under your control assuring data sovereignty and keeping it decentral the best option to choose are Decentral Identities from the W3C. +# Introduction + +When talking about increasing trust in data ecosystems there are multiple possible ways to be followed. Contractual and Policy solutions can be taken into consideration to ensure data sovereignty based on analog framework agreement contracts. Blockchain solutions can be implemented to assure that transactions and ownership is mathematically proofed, creating an assertive level of trust in the complete chain. Artificial Intelligence can be used as a neutral party for doing moderation and certification of data of partners and member of the network. However, if you want to maintain your data and identify under your control assuring data sovereignty and keeping it decentralized the best option to choose are Decentralized Identities from the W3C. Decentralized Identities are already used in the Catena-X Network to digitally identify parties and authorizations across all data exchanges done through an EDC from a peer to peer perspective. This technology is implemented in the current SSI concept used in the network and has been proofed to work and also to be successful when bringing trust to all the data exchanges done which take place in the network. @@ -68,7 +81,7 @@ The data exchanged during the peer to peer connections between EDCs can have dif Product Information Certification is the way to go when it comes to creating trust over complete or partial data provided in peer to peer connections between two partners in a network. Once the consumer is allowed to visualize the data he can verify if it was certified by its data issuer or by an external auditor party. This is relevant when we start to talk about bringing the Catena-X Automotive Network to a productive environment, specially where human lives are at stake and mistakes can cause huge monetary and image losses. -This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing itself in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. +This Digital Product Pass Verification and Certification concept aims to create an assertive second layer of trust over the actual peer to peer data exchanges of Product Information. Basing itself in the SSI technology already in place in Catena-X, this concept sets the first steps for data verification statements creation starting with the CX Generic Digital Product Pass Aspect Model. Giving the data providers the possibility of creating self-signed documents confirming the information placed into the aspect models and gives data auditors the possibility to certify one or more specific attributes from Aspect Model documents that are relevant to the data provider business cases. It allows the data consumer to base its processes and decisions based on actual production data which has been assertive verified by external auditors, giving safety that not just the data issuer by also a third party has certified that specific data is true or compliant to standards. The technology concept consists of creating Signed Documents (Verification Statements) using the Verifiable Credentials 2.0 Technology. Which is in resume a JSON-LD structure standardized by the W3C Consortium for Web 3.0 for data trust and identity assurance. Using JSON Web Signatures (JWS) and a wallet component which is connected to Catena-X and identified by the unique company Business Partner Number (BPN), the data issuer and auditor can sign using their Ed25519 private key and the data consumer can access their public key by resolving the DID contained in the signature proof at the certified document credential. The certified data will be stored in the Data Provider infrastructure sub-model server, in order to assure the data sovereignty. Data consumer can access this data if they are allowed by the data provider simply by looking for the Digital Twin from the specific asset type or instance depending on the specific use case. This data will be retrieved using the EDC connector proxy which is protected by Policies and require data consumers to sign "odrl" contracts to maintain data sovereignty. @@ -81,72 +94,140 @@ This concept has been proved to be of high interest from the Certification and V - [Metadata](#metadata) - [Authors](#authors) - [Tags](#tags) -- [Abstract](#abstract) - - [Table of Contents](#table-of-contents) + - [Knowledge Prerequisites](#knowledge-prerequisites) - [Introduction](#introduction) + - [Table of Contents](#table-of-contents) +- [Scope](#scope) - [Context Diagram](#context-diagram) - [Value Proposition Motivators](#value-proposition-motivators) - [Objectives](#objectives) - [Use Cases](#use-cases) - [Previous Investigation](#previous-investigation) +- [Assumptions](#assumptions) - [Processes Terminology](#processes-terminology) - - [**Roles/Actors**](#rolesactors) - - [Abstract Interaction (Business Interaction)](#abstract-interaction-business-interaction) - - [Document Exchange Details](#document-exchange-details) -- [Asumptions](#asumptions) -- [Verification Statements](#verification-statements) - - [Abstract Types](#abstract-types) - - [Verification Statements Documents/Credentials](#verification-statements-documentscredentials) + - [Abstract Interaction (Business Interaction)](#abstract-interaction-business-interaction) + - [Roles/Actors](#rolesactors) - [Creating Trust and Risk Mitigation Assets](#creating-trust-and-risk-mitigation-assets) - [Verifiable Credential Documents](#verifiable-credential-documents) - [What is a Verifiable Credential?](#what-is-a-verifiable-credential) - [Credential Schema](#credential-schema) +- [Verification Statements](#verification-statements) + - [Abstract Types](#abstract-types) + - [Verification Statements Documents/Credentials](#verification-statements-documentscredentials) + - [Document Exchange Details](#document-exchange-details) + - [Trust and Value of having certified aspects](#trust-and-value-of-having-certified-aspects) + - [Maximum Trust Model](#maximum-trust-model) - [Certification Processes](#certification-processes) - [Attribute Certification Process](#attribute-certification-process) - [Self-Testify Certification Process](#self-testify-certification-process) - [Total Certification Process](#total-certification-process) - [Certification and Verification Methods](#certification-and-verification-methods) - - [Certified Snapshot Credential](#certified-snapshot-credential) - - [Certified Data Credential](#certified-data-credential) - - [Complete Data Certification Verification](#complete-data-certification-verification) + - [Certified Snapshot Credential Certification](#certified-snapshot-credential-certification) + - [Certified Data Credential Certification](#certified-data-credential-certification) + - [Complete Data Certification](#complete-data-certification) - [Verification Processes](#verification-processes) + - [Certified Data Credential Verification](#certified-data-credential-verification) + - [Certified Snapshot Credential Verification](#certified-snapshot-credential-verification) - [Flow Diagrams](#flow-diagrams) - [CDC Technical Verification Flow](#cdc-technical-verification-flow) - [CSC Technical Verification Flow](#csc-technical-verification-flow) - [Technical Specification](#technical-specification) - - [Certification Aspects Schemas](#certification-aspects-schemas) + - [Certification Aspects Specification](#certification-aspects-specification) + - [Verifiable Credential Required Fields](#verifiable-credential-required-fields) + - [Issuer Structure](#issuer-structure) + - [Context Definition](#context-definition) + - [Cryptography Signatures \& Keys in Self-Descriptions](#cryptography-signatures--keys-in-self-descriptions) + - [Signature Header](#signature-header) + - [Signature Payload](#signature-payload) + - [Signature Generation](#signature-generation) + - [Signature Verification](#signature-verification) - [Certified Data Credential Schema](#certified-data-credential-schema) + - [CDC Semantic](#cdc-semantic) + - [CDC SemanticId](#cdc-semanticid) + - [CDC Reference to Parent](#cdc-reference-to-parent) + - [CDC JSON-LD Context Schema](#cdc-json-ld-context-schema) + - [Wrapped Aspect Model](#wrapped-aspect-model) + - [CDC Credential Types Definition](#cdc-credential-types-definition) + - [CDC Example](#cdc-example) - [Certified Snapshot Credential Schema](#certified-snapshot-credential-schema) - - [Attribute Certification Registry](#attribute-certification-registry) + - [CSC Semantic](#csc-semantic) + - [CSC SemanticId](#csc-semanticid) + - [CSC Reference to Origin](#csc-reference-to-origin) + - [CSC JSON-LD Context Schema](#csc-json-ld-context-schema) + - [Attribute List Description](#attribute-list-description) + - [Validation Method Description](#validation-method-description) + - [Validation Method Types](#validation-method-types) + - [Attribute Verification Logic](#attribute-verification-logic) + - [CSC Credential Types Definition](#csc-credential-types-definition) + - [CSC Example](#csc-example) + - [Attribute Certification Record Schema](#attribute-certification-record-schema) + - [ACR Credential Fields Definition](#acr-credential-fields-definition) + - [ACR JSON-LD Context Schema](#acr-json-ld-context-schema) + - [ACR Semantic](#acr-semantic) + - [ACR SemanticId](#acr-semanticid) + - [ACR CSC Verifiable Credentials List](#acr-csc-verifiable-credentials-list) + - [ACR Submodel Reference](#acr-submodel-reference) + - [ACR Example](#acr-example) - [Technical Integration Design](#technical-integration-design) - [Interfaces](#interfaces) - - [Certification Sequence Diagrams](#certification-sequence-diagrams) - - [CSC Certification Sequence Diagram](#csc-certification-sequence-diagram) - - [CDC + CSC Certification Sequence Diagram](#cdc--csc-certification-sequence-diagram) - - [Verification Sequence Diagrams](#verification-sequence-diagrams) - - [CSC Verification Sequence Diagram](#csc-verification-sequence-diagram) - - [CDC + CSC Verification Sequence Diagram](#cdc--csc-verification-sequence-diagram) + - [Self-Testify Data Certification and Verification Implementation](#self-testify-data-certification-and-verification-implementation) + - [Simple Wallet](#simple-wallet) + - [Attribute Certification Blueprint](#attribute-certification-blueprint) + - [Attribute Certification Components](#attribute-certification-components) + - [Attribute Certification Registry](#attribute-certification-registry) + - [Attribute Certification System](#attribute-certification-system) + - [Attribute Certification Journey](#attribute-certification-journey) + - [Complete Component Interaction Context](#complete-component-interaction-context) + - [Digital Twin Configuration](#digital-twin-configuration) + - [Certified Data Credential Submodel](#certified-data-credential-submodel) + - [CDC Semantic ID Keys](#cdc-semantic-id-keys) + - [CDC ID Short](#cdc-id-short) + - [CDC Submodel Example](#cdc-submodel-example) + - [Attribute Certification Record Submodel](#attribute-certification-record-submodel) + - [AMR Semantic ID Keys](#amr-semantic-id-keys) + - [AMR ID Short](#amr-id-short) + - [AMR Submodel Example](#amr-submodel-example) +- [Verification Implementation in the Digital Product Pass](#verification-implementation-in-the-digital-product-pass) + - [Challenges](#challenges) + - [Sequence Diagram](#sequence-diagram) + - [API Verification Backend Specification](#api-verification-backend-specification) + - [Verification Status and Loading](#verification-status-and-loading) + - [Frontend Verification Add-on User Manual](#frontend-verification-add-on-user-manual) + - [\[Verified\] Verification Successful](#verified-verification-successful) + - [\[NOT VERIFIED\] Verification Failed](#not-verified-verification-failed) + - [\[UNVERIFIED\] Verification Not Supported](#unverified-verification-not-supported) + - [Add-on Charts Configurations](#add-on-charts-configurations) +- [Additional Information](#additional-information) + - [Linking Digital Twins in Type Level](#linking-digital-twins-in-type-level) + - [Cardinality](#cardinality) + - [Instance to Type Level and Vice Versa](#instance-to-type-level-and-vice-versa) + - [Type Level to Type Level](#type-level-to-type-level) - [References](#references) - [Special Thanks](#special-thanks) - [Glossary](#glossary) - [NOTICE](#notice) - [AUTHORS](#authors-1) - -# Introduction +# Scope The Digital Product Pass Verification Add-on aims to create a second layer of trust over the EDC data exchanges between consumers and data providers. It enables auditors to verify specific attributes or complete aspect models for data providers and allowing consumers to retrieve and verify the "validity" of the verification done. Using a simple wallet, a Data Provider is able to certify its attributes or the complete semantic models from Catena-X and include it in a Verifiable Credential, which can then be verified on the Data Consumer side. +As found during the [previous investigation phase](#previous-investigation), this concept is the **First Aspect Model Verification/Certification Concept in Catena-X**. It aims to provide a **"lighthouse"** for any other aspect model verification/certification that **MUST** be done in Catena-X using SAMM Aspect Models. + +It provides a generic concept for **Attribute Verification/Certification** by external/internal auditors, and also provides a **Self-Testification** option for Data Providers to certify their data while still maintaining data sovereighty at all costs. By using the EDC connector for the data exchanges this concept uses the **current Catena-X Architecture**. + +Furthermore, it gives guidance and ready to use components for verifying the data received from their Data Providers. The Digital Product Pass Add-on offers the consumers components like the [simple-wallet](./simple-wallet/), an **MVP decentral wallet** able to issue and verify aspect model Verifiable Credential Documents. It also provides a proof of concept (PoC) in the `dpp-backend` and `dpp-frontend` components for complete data payloads to be verified. + ## Context Diagram ![Context Diagram](./resources/implementation/context-diagram.svg) In this context diagram we can see how a provider generates a `@context` for its verifiable credential and then issues it using the `simple wallet` component, then he registers its data in the standardized Catena-X infrastructure (Digital Twin Registry + Data Service) so that it can be retrieved by data consumers or auditors. -The auditor is responsible for retriving data from the data provider and "certifying" specific attributes from the data provider credential or json payload. In this way when the data is retrieved from the data provider the signature contained in the Verifiable Credential can be verified by the data consumer. +The auditor is responsible for retrieving data from the data provider and "certifying" specific attributes from the data provider credential or JSON payload. In this way when the data is retrieved from the data provider the signature contained in the Verifiable Credential can be verified by the data consumer. The data consumer retrieves the data (Aspect Model Payload Verifiable Credential) from the data provider using the EDC proxy, then the data consumer will "verify" in his own wallet the "proof" contained in the credential, resolving the `DID Web` and checking the integrity of the content in the signature. @@ -167,7 +248,7 @@ When defining for the first time the way of doing certification and verification In case of the use case we are aiming our objectives are the following: 1. **Create Value and Draft a Verification Process** - - Get external verifiers to check the data and generate verifiable credentials or certificates. + - Get external auditors to check the data and generate verifiable credentials or certificates. - Define a process for the business verification of data - Investigate on the existing market solutions - Talk with Catena-X Partners for defining a solid Verification Process draft @@ -185,7 +266,7 @@ In case of the use case we are aiming our objectives are the following: - Talk with different use cases/components in Catena-X to find a common way of using the network to Certify and Verify data. - Following the CX Standards and ideas like Data Sovereignty, Decentralization and Self Sovereign Identities (SSI) -Once this objectives are achieved we will be able to scale the solution and implemented in real life so the benefits of the technology and process defined here can contribute to the automotive industry and increase trust in data exchanges using Catena-X. +Once these objectives are achieved we will be able to scale the solution and implemented in real life so the benefits of the technology and process defined here can contribute to the automotive industry and increase trust in data exchanges using Catena-X. ## Use Cases @@ -199,13 +280,47 @@ When talking about the certification and verification of data we can find severa | **Production Inefficiency Detection** | When assets are not performing as they were “design” for, external verified attributes **can certify inefficiency** of the product performance in use. Leading to future changes in manufacturing and design. | | **Human Life Handling Products** | Products which handle human lives like Cars, Airplanes and Trains have a strict regulation when it comes to Data Quality requiring the **critical specification data to be “certified/verified** **”** before production for safety reasons | | **Easing Decision Taking** | When companies need to take important decisions, having external verified attributes/aspect can make a huge difference in which way to go or which product to choose. | -| **Secure Data Against Fraud** | The data providers by verifying and signing digitately their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditors or their internal quality management. | +| **Secure Data Against Fraud** | The data providers by verifying and signing digitally their data when issued, are **transparently being protected against fraud or false accusations**, because they can demonstrate the data was verified by an external auditor or their internal quality management. | # Previous Investigation - -> [!WARNING] -> Previous investigation is still not available in this version. +For gathering the requirements and scope of the Verification Concept several interviews were done with different Catena-X Stakeholders/Products at the Consortia Phase. +Different options and architecture decisions were found during the concept review phases. + +The following Tractus-X products teams & Demonstrators were considered to be important stakeholders for the concept design and development phase during the previous investigation phase. Different alignment meetings were conducted in order to investigate needs and requirements from the Catena-X community. + +|Product | Description | Reference | +|:- | ---- | --- | +| CX Data Integrity Demonstrator | Important Catena-X example of usage of verifiable credentials to trace changes and modification in the supply chain with version control | https://github.com/boschresearch/cx-data-integrity-demonstrator | +| Eclipse Dataspace Connector | Important alignment when it comes to PUSHING and PULLING data. It was found that both actions are possible and can be used to exchange data between parties | https://github.com/eclipse-edc/Connector - https://github.com/eclipse-tractusx/tractusx-edc | +| Item Relationship Service | The Item Relationship Service product is excellent when it comes to search Digital Twins in the Catena-X network, the first discussions where started when talking about linking digital twins in type level, from type to instance and vice versa | https://github.com/eclipse-tractusx/item-relationship-service | +| PCF Exchange KIT | The PCF Exchange KIT has many guidelines on how to validate and create trust on the specific PCF Values, giving guidelines on how to calculate the PCF from different assets using the PCF Rulebook. The concept here developed can be a lighthouse for the PCF Verification demonstrating how to create Verification Assets for Catena-X standardized aspect models. | https://eclipse-tractusx.github.io/docs-kits/kits/PCF%20Exchange%20Kit/Adoption%20View | +| Portal | The portal is responsible for providing solutions like the policy hub and other central components that could be useful for a verification concept. No direct dependencies were found to the product. | https://github.com/eclipse-tractusx/portal | +| Managed Identity Wallet | Several alignment sessions were conducted with the MIW product, since it is vital Catena-X component and utilizes already the SSI logic for giving trust for the Catena-X data exchanges using the EDC. Was found the wallets in the following releases will be decentralized, was found that the wallet is already able to sign credentials in the name of the Business Partners and it could be used in the future to issue the product credentials. | https://github.com/eclipse-tractusx/managed-identity-wallet | +| Digital Twin Registry | The digital twin registry is responsible for providing the digital twins with the verification information included. Alignment meetings were done to find solutions on how to reference the Certification of specific aspect models in the Digital Twins complying to the IDTA. It was important the alignment for the correct definition of the submodels. | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | +| Semantic Hub | The semantic hub is an ideal product to provide semantic information of aspect models. It was identified as possible "repository" to include and provide JSON-LD schemas for the different aspect models in Catena-X. It was found that the functionality is not available yet, however JSON Schemas can be accessed. | https://github.com/eclipse-tractusx/sldt-semantic-hub | +| Industry Core KIT | The industry core kit provides information on how to link digital twins, how to manage the digital twins and define them accordingly. Meetings were arranged to find and propose an architecture concept for [linking digital twins in type level](#linking-digital-twins-in-type-level). | https://eclipse-tractusx.github.io/docs-kits/kits/Industry%20Core%20Kit/Business%20View%20Industry%20Core%20Kit | +| Traceability KIT | The traceability kit gives the overview on how to find and investigate the source of incidents that can occur in the supply chain. Therefore, the Verification/Certification of aspect is considered essential for creating a second layer of data trust in the complete supply chain | https://eclipse-tractusx.github.io/docs-kits/kits/Traceability%20Kit/Business%20View%20Traceability%20Kit | +| CX-ART Architecture | The concept was reviewed by the Platform Capability architects and considered as prominent for the network, since it enables a second layer of data trust over the existing data sovereignty exchange secured by the SSI and EDC data exchanges. Since the concept is not changing the main architecture from Catena-X it complies to the existing standards and provides guidelines for any aspect model to be certified and verified. Aiming to create the first Catena-X Verification/Certification Framework for Standardized Aspect Models. | https://github.com/eclipse-tractusx | + +# Assumptions + +When we talk about verification and certification processes, several questions and concerns can be raised in regard to making it productive and implementable. +When a concept is developed not all the processes and problems can be addressed, therefore this concept has some conditions that should be considered. +Therefore, we have decided to list the initial assumptions that are required for this verification process to be successful: + +| Assumption | Description | +| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Digital Product Pass Process Creation is established** | The digital product pass process is a complex process that is implemented in each *Data Provider* and is tailored to the systems and application available in each company. This concept starts its journey from the assumption that the digital product pass data is already available in the **Data Provider** infrastructure as a **Serialized Aspect Model Payload** | +| **Data Exchange is Standardized** | As we know in Catena-X the data exchange between partners in this case need to be standardized, therefore the digital product pass data and all the related statements will be standardized and available for all members of the network to be able to parse and handle the fields and certifications. | +| **Data Certification Process is defined by Data Auditor** | The complexity of the certification process is high and can vary from auditor company to company. Therefore, in this concept there was decided to resume the certification of attributes to the most unitary and simple **Technical Solution**, allowing each company to adopt and implement the process according to its needs and requirements. | +| **Only minimum exchanged data is specified** | Only the minimum exchanged data is specified when transferring data from one company to another. When a certification process is triggered there are many other attributes, data and elements to be specified. Only the necessary attributes to retrieve the data are specified in this concept to keep things simple and indicate the MVP attributes needed to make it possible. | +| **All legal requirements are fulfilled** | In this company we assume that the company has all the necessary legal requirements and agreements to exchange data with its partners in the Catena-X network, policies and permissions are not going to be specified, all the EDC configurations are the ones specified by the Catena-X network. For more information [see this specification](https://github.com/catenax-eV/cx-odrl-profile). | +| **The digital product pass standards are followed** | The digital twin registry and data service must be implemented as indicated in the latest CX standard for digital product passports and other products. | +| **The certification and verification are not limited to digital product passports** | This concept sets the initial path to verify any aspect model payload in Catena-X that uses JSON as its serialized representation. The concept is tailored to digital product passports since the **EcoDesign** regulations are playing an important role in the future of Data Ecosystems like *Catena-X*. | +| **The wallets used in the concept allow to sign any type of credential** | In order for the concept to work the wallets need to be able to sign any credential document using the private key, and also enable the "DID" endpoint to retrieve the public keys through the internet (DID WEB). | +| **Each company MUST have a decentralized wallet** | In order to sign the credentials by your own as company you need to have a valid that fits to the decentralized wallets concept that is going to be standardized in Catena-X. | +| **All data exchanges are done through the Eclipse DataSpace Connector** | Every company **MUST** have an EDC in order to provide data to other parties and consume data from other partners. Data sovereignty is followed and shall use the guidelines provided by the Catena-X network. | # Processes Terminology @@ -219,21 +334,12 @@ The other terminology from **Data Provider** to **Data Auditor** is called **Dat | **Process Terminology** | **Actors** | **Description** | **Artifacts** | | :---------------------- | :----------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----------------------------------------------------: | -| **Data Verification** | Data Consumer, Data Provider, Data Auditor | The data verification process englobes the complete journey from retrieving data as a data consumer from a data provider. It includes the search for verification statements and attribute level verification in digital twins.At the end of the journey attribute specific verification may or not be found. Other types of verification like self attestations may be or not retrieved. Depends in the available verification information.In the data verification process is included the verification of the signatures included in the data created and certified in the Data Certification Process. | **Verification Result** *with the status/flaws* | -| **Data Certification** | Data Provider, Data Auditor | The data certification process includes all the processes related to triggering the verification until providing the data for certifying specific attributes.The data provider triggers the certification for a external or internal data auditor, which generates and optionally stores a verification statements | **Certified Data Aspects** *as Verification Statements* | - -## **Roles/Actors** -Three main roles are defined and have certain responsibilities or can conduct actions in the processes. Each role can have more than one W3C role and generate different artifacts as specified in the following table: - -| **Role/Actors** | **Company Types** | **W3C Roles** | **Responsibilities/Actions** | **Use Cases** | **Artifacts** | -| :-------------- | ------------------------------------------------------------ | ---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Data Provider | OEMs, Tier-1 | Issuer, Holder | - Creating and Issuing Data- Refence/Provision of data in a Digital Twin Registry
- Store and link complete data submodels in a infrastructure
- **[OPTIONAL]:** Self-sign data when issuing aspects
- **[OPTIONAL]:** Provide and Store certified credentials from external parties
- Store link to external parties certified credential aspects in Digital Twin Registry
- Requests and pays external parties (data auditors) to audit their data | As a data provider I want to be able to hand over my data to consumers and auditors. I want also to be able to manage my data and verified assets. In some cases I want to be able to self-testify my own issued data. | **Digital Twin + Submodels with EDC Endpoints for CDC and CSC** Certified Data Credential (CDC) or Plain **Digital Product Pass**
**[OPTIONAL]:** Storage of Certified Snapshot Credentials (CSC) in **Verification Statements Aspect** | -| Data Auditor | Auditors, Certification Agencies, Consulting Companies, OEMs | Issuer, **Optional: Holder** | - Selects from the data provider data some attributes following selective disclosure.- Certifies Attributes against "methods". And indicate in the generated credential which methods were used for certifying  For example:  - Standards - Rulebooks - Regulations - Manuals - Technical Specifications - etc...- Creates and issues a **Certified Verification Statement**- **[OPTIONAL]:** Provide and Store certified credentials | As a data auditor I want to be able to retrieve and visualize the data I need to audit. I also want to be able to "select" then "certify" specific attributes I was payed to audit by a Data Provider. | Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**
**[OPTIONAL]:** Storage of Verification Aspect and provision through EDC | -| Data Consumer | Recyclers, Dismantlers, OEMs, Tier-1 | Verifier | - Initializes the data retrieval process (Requesting the Data Provider).- Searches for the Verification Data after the data retrieval process. (Looking in the Data Provider Digital Twin)- Verifies signatures against a wallet if the data and attribute credentials received are correct.- Verifies data semantics and data plausibility against the data model semantics/restrictions.- Presents the verification result | As a data consumer I want to be able to know if the data I received is verified and which attributes are certified by an external auditor. I also want to be able to verify that the data certified is authentic and has been issued and signed by a Data Auditor or a Data Provider | **Verification Result Presentation** | +| **Data Verification** | Data Consumer, Data Provider, Data Auditor | The data verification process englobes the complete journey from retrieving data as a data consumer from a data provider. It includes the search for verification statements and attribute level verification in digital twins. At the end of the journey attribute specific verification may or not be found. Other types of verification like self attestations may be or not retrieved. Depends on the available verification information. In the data verification process is included the verification of the signatures included in the data created and certified in the Data Certification Process. | **Verification Result** *with the status/flaws* | +| **Data Certification** | Data Provider, Data Auditor | The data certification process includes all the processes related to triggering the verification until providing the data for certifying specific attributes. The data provider triggers the certification for an external or internal data auditor, which generates and optionally stores a verification statements | **Certified Data Aspects** *as Verification Statements* | -### Abstract Interaction (Business Interaction) +## Abstract Interaction (Business Interaction) -In the following diagram we can observe how the data provider, the data auditor and the data consumer interact:# Certification Processes +In the following diagram we can observe how the data provider, the data auditor and the data consumer interact: ![Roles Business Interaction](./resources/processes/roles-business-interaction.svg) @@ -241,68 +347,23 @@ The **Data Provider** is always the one that has control from its own data, foll The **Data Consumer** `verifies` the data incoming from the **data provider** and certified by the **data auditor**. The **Data Auditor** retrieves data from the **data provider** and `certifies` the data against standards, then sends the `verification statement or certificate` to the **data provider**. -### Document Exchange Details - -The different roles will exchange different document which will contain, information and proof of the data which is being exchanged. - -![Roles Document Exchange Interaction](./resources/processes/roles-document-exchange-interaction.svg) - -**Data Providers** will be providing data for the *Data Consumers* and the *Data Auditors*. -This data may vary depending on the data exchanged and certified by the *Data Auditors*. The auditors - -# Asumptions - -When we talk about verification and certification processes, serveral questions and concerns can be raised in regards of making it productive and implementable. -When a concept is developed not all the processes and problems can be addressed, therefore this concept has some conditions that should be considered. -Therefore we have decided to list the initial asumptions that are required for this verification process to be successful: - -| Asumption | Description | -| ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Digital Product Pass Process Creation is established** | The digital product pass process is a complex process that is implemented in each *Data Provider* and is tailored to the systems and application avaialable in each company. This concepts starts its journey from the assumption that the digital product pass data is already available in the **Data Provider** infrastructure as a **Serialized Aspect Model Payload** | -| **Data Exchange is Standardized** | As we know in Catena-X the data exchange between partners in this case need to be standardized, there fore the digital product pass data and all the related statements will be standardized and available for all members of the network to be able to parse and handle the fields and certifications. | -| **Data Certification Process is defined by Data Auditor** | The complexity of the certification process is high and can vary from auditor company to company. Therefore in this concept there was decided to resume the certification of attributes to the most unitary and simple **Technical Solution**, allowing each company to adopt and implement the process according to its needs and requirements. | -| **Only minimum exchanged data is specified** | Only the minimum exchanged data is specified when transfering data from one company to another. When a certification process is triggered there are many other attributes, data and elements to be specified. Only the neccessary attributes to retrieve the data are specified in this concept to keep things simple and indicate the MVP attributes needed to make it possible. | -| **All legal requirements are fullfilled** | In this company we asume that the company has all the neccessary legal requirements and agreements to exchange data with its partners in the Catena-X network, policies and permissions are not going to be specified, all the EDC configurations are the ones specified by the Catena-X network. For more information [see this specification](https://github.com/catenax-eV/cx-odrl-profile). | -| **The digital product pass standards are followed** | The digital twin registry and data service must be implemented as indicated in the latest CX standard for digital product passports and other products. | -| **The certification and verification are not limited to digital product passports** | This concept sets the initial path to verify any aspect model payload in Catena-X that uses JSON as its serialized representation. The concept is tailored to digital product passports since the **EcoDesign** regulations are playing a important role in the future of Data Ecosystems like *Catena-X*. | -| **The wallets used in the concept allow to sign any type of credential** | In order for the concept to work the wallets need to be able to sign any credential document using the private key, and also enable the "DID" endpoint to retrieve the public keys through the internet (DID WEB). | -| **Each company MUST have an decentral wallet** | In order to sign the credentials by your own as company you need to have a valid that fits to the decentralized wallets concept that is going to be standardized in Catena-X. | -| **All data exchanges are done through the Eclipse DataSpace Connector** | Every company **MUST** have a EDC in order to provide data to othere parties and consume data from other partners. Data sovereighty is followed and shall use the guidelines provided by the Catena-X network. | - -# Verification Statements - -For our technical implementation from the Certification/Verification of aspect models and attributes we can abstract two type of verification statements: - -## Abstract Types - -| Type | Description | -| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Complete Data Verification Statement | Self Signed Document containing the complete data from a aspect model payload. | -| Partial Data Verification Statement | Attribute level certified document containing one or more attributes from the **Complete Data Verification Statement** or from a **Plain JSON Aspect Model payload**. | - -## Verification Statements Documents/Credentials - -The different verificaiton statement types were mapped to certain technical verification statement documents which encapsulate the certification and verification of attributes in the framework. Using the **Verifiable Credential** technology from the W3C we are able to idenfity to different documents to have signature from different issuers: +## Roles/Actors -> [!TIP] -> -> For more information about what is a verifiable credential [go to this chapter](#what-is-a-verifiable-credential). +Three main roles are defined and have certain responsibilities or can conduct actions in the processes. Each role can have more than one W3C role and generate different artifacts as specified in the following table: +| **Role/Actors** | **Company Types** | **W3C Roles** | **Responsibilities/Actions** | **Use Cases** | **Artifacts** | +| :-------------- | ------------------------------------------------------------ | ---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Data Provider | OEMs, Tier-1 | Issuer, Holder | - Creating and Issuing Data- Reference/Provision of data in a Digital Twin Registry
- Store and link complete data submodels in an infrastructure
- **[OPTIONAL]:** Self-sign data when issuing aspects
- **[OPTIONAL]:** Provide and Store certified credentials from external parties
- Store link to external parties certified credential aspects in Digital Twin Registry
- Requests and pays external parties (data auditors) to audit their data | As a data provider I want to be able to hand over my data to consumers and auditors. I want also to be able to manage my data and verified assets. In some cases I want to be able to self-testify my own issued data. | **Digital Twin + Submodels with EDC Endpoints for CDC and CSC** Certified Data Credential (CDC) or Plain **Digital Product Pass**
**[OPTIONAL]:** Storage of Certified Snapshot Credentials (CSC) in **Verification Statements Aspect** | +| Data Auditor | Auditors, Certification Agencies, Consulting Companies, OEMs | Issuer, **Optional: Holder** | - Selects from the data provider data some attributes following selective disclosure.- Certifies Attributes against "methods". And indicate in the generated credential which methods were used for certifying  For example:  - Standards - Rule books - Regulations - Manuals - Technical Specifications - etc...- Creates and issues a **Certified Verification Statement**- **[OPTIONAL]:** Provide and Store certified credentials | As a data auditor I want to be able to retrieve and visualize the data I need to audit. I also want to be able to "select" then "certify" specific attributes I was paid to audit by a Data Provider. | Certified Snapshot Credentials (CSC) in **Verification Statements Aspect**
**[OPTIONAL]:** Storage of Verification Aspect and provision through EDC | +| Data Consumer | Recyclers, Dismantlers, OEMs, Tier-1 | Verifier | - Initializes the data retrieval process (Requesting the Data Provider).- Searches for the Verification Data after the data retrieval process. (Looking in the Data Provider Digital Twin)- Verifies signatures against a wallet if the data and attribute credentials received are correct.- Verifies data semantics and data plausibility against the data model semantics/restrictions.- Presents the verification result | As a data consumer I want to be able to know if the data I received is verified and which attributes are certified by an external auditor. I also want to be able to verify that the data certified is authentic and has been issued and signed by a Data Auditor or a Data Provider | **Verification Result Presentation** | -| Document/Credential Name | Short Name | Issuer | Verification Statement Type | Content | Description | -| --------------------------------- | ---------- | ------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | -| **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | # Creating Trust and Risk Mitigation Assets > Why to place trust in companies which certify data? -The companies auditing the data must be authorized and given the trust -from another member party to issue data related credentials. Only - We know we humans make mistakes. When third party companies already known -in the business of providing trust and certifications for specific assets. This assets would be audited or its original data would be audited, and then will be compared to the different **Regulations**, **Standards** and **Rulebooks** that define if the data content is: +in the business of providing trust and certifications for specific assets. These assets would be audited, or its original data would be audited, and then will be compared to the different **Regulations**, **Standards** and **Rule books** that define if the data content is: - Certify data plausibility (that the values make sense) - Certify that the attribute values in the data that follow the standards. @@ -310,11 +371,13 @@ in the business of providing trust and certifications for specific assets. This - Certify that the actual physical asset has the content which is placed in the Digital Product Pass serialized or type payload. - Certify that issuance of data to prevent fraud +Companies that audit data are trusted by regulators, by several members of the supply chain and also by governments that require this companies to do inspections, auditing processes and other companies in other to generate proofs that companies are following the rules. Therefore, when talking about Catena-X were a Business to Business data exchange is done, allowing the data exchange between parties, to be audited by a third neutral party which will "certify" and "validate" if the data exchanged is correct and plausible. In this way the consumer company can trust that the data received from the data provider party is correct and then more accurate decisions can be taken over this data, knowing that the "data" auditor company has liability, during the certified time, in case something goes wrong. + ## Verifiable Credential Documents The idea behind the verifiable credentials is to provide signed proof for a content. This credential is a JSON-LD structure, which contains -the "data" that was certified and the proof is able to be verified by +the "data" that was certified, and the proof can be verified by resolving the "DID Method" contained in the bottom of the credential. But what is a verifiable credential? @@ -353,7 +416,7 @@ a verifiable credential is: A [verifiable credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-verifiable-credential) can -represent all of the same information that a +represent all the same information that a physical [credential](https://www.w3.org/TR/vc-data-model-2.0/#dfn-credential) represents. The addition of technologies, such as digital signatures, makes [verifiable @@ -364,23 +427,92 @@ In this concept **Verifiable Credentials** are not representing the identities f ### Credential Schema -The signed document credential has the following resumed schema: +The issued document credential has the following resumed schema: ![Configuration Sections](./resources/processes/document-credential-resume.svg) -Depending in each verification types different configuration will be provided in the location of the payload aspect or specific attributes. The detailed configuration is defined in the [Technical Integration Design](#technical-integration-design) chapter. +Depending on each verification types different configuration will be provided in the location of the payload aspect or specific attributes. The detailed configuration is defined in the [Technical Integration Design](#technical-integration-design) chapter. | Section | Description | | --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Metadata** | The metadata contains the context information and credential schema details. Also contains the identification of the credential and which documents it contained. | -| **Aspect Model Data / Credential Data** | In this section is defined all the neccessary data of each credential type. The specific attributes with methods and proof from data auditor or the original data issued and sigend by the data provider. | +| **Aspect Model Data / Credential Data** | In this section is defined all the necessary data of each credential type. The specific attributes with methods and proof from data auditor or the original data issued and signed by the data provider. | | **Proof and Verification Methods** | This section contain the digital signature from the Data Provider or Data Auditor. It also contains all the methods for a Data Verifier/Data Consumer to access the verification requirements to check if the credential is still valid and not revoked. | + + +# Verification Statements + +For our technical implementation from the Certification/Verification of aspect models and attributes we can abstract two type of verification statements: + +## Abstract Types + +| Type | Description | +| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Complete Data Verification Statement | Self Signed Document containing the complete data from an aspect model payload. | +| Partial Data Verification Statement | Attribute level certified document containing one or more attributes from the **Complete Data Verification Statement** or from a **Plain JSON Aspect Model payload**. | + +## Verification Statements Documents/Credentials + +The different verification statement types were mapped to certain technical verification statement documents which encapsulate the certification and verification of attributes in the framework. Using the **Verifiable Credential** technology from the W3C we are able to identity to different documents to have signature from different issuers: + +> [!TIP] +> +> For more information about what is a verifiable credential [go to this chapter](#what-is-a-verifiable-credential). + +| Document/Credential Name | Short Name | Issuer | Verification Statement Type | Content | Description | +| --------------------------------- | ---------- | ------------- | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| **Certified Data Credential** | **CDC** | Data Provider | Complete Data Verification Statement | 1. Complete Aspect Model Payload Data
2. Signature from Data Issuer
3. Version Control | Credential that contains the complete passport and is signed by the issuer of the data. It allows tracking changes during the updates from the passport in the supply chain.
It can be "self-testified" by the data provider when creating/issuing the passport data. | +| **Certified Snapshot Credential** | **CSC** | Data Auditor | Partial Data Verification Statement | 1. Selected attributes from the Aspect Model Payload Data
2. Hashed "proofs" per attribute and data auditor signature
3. Methods used to "certify" each attribute
4. Reference to Audited Complete Verification Statement Content | Credential that follows "selective disclosure" by hashing the verified fields allowing the verification in milliseconds by just comparing hashes. It contains the "partial" digital product pass.
It is signed by the Auditor of the data attributes at the end of the certification, indicating the attributes which are included there were certified against specific "methods". | + +## Document Exchange Details + +The different roles will exchange different document which will contain, information and proof of the data which is being exchanged. + +![Roles Document Exchange Interaction](./resources/processes/roles-document-exchange-interaction.svg) + +**Data Providers** will be providing data for the *Data Consumers* and the *Data Auditors*. +This data may vary depending on the data exchanged and certified by the *Data Auditors*. The auditors will consume data from the **Data Provider** creating "Verification Statements" for the data consumed, signing the data and sending it back to the **Data Provider**. In this way the provider will be able to present the data to the consumers and the consumer will be able to verify the signature with the **Data Auditor**. + +## Trust and Value of having certified aspects + +When comparing with the current data exchange implementation approach using plain JSON payloads to do the data exchange used in Catena-X with this concept there is a question that comes up: + +> What is the added value from using Verification Credentials in comparative with Plain JSON Payloads? + +This is the added value from the concept: + +| | Integrity | Attribute Validation | Semantic Context | Digital Proof (Liability) | Non-CX-Interoperability | Traceability/Version Control | Improved Data Sovereignty | Verification Metadata in Aspect | Selective Disclosure | +| --- | -- | -- | -- | -- | -- | -- | -- | -- | -- | +| **Plain JSON Payload** | - | - | - | - | - | - | - | - | - | +| **Certified Data Credential** | + | - | + | + | + | + | + | + | - | +| **Certified Snapshot Credential** | + | + NEW! | - | + | + NEW! | - | + | + | + | + +By using this concept the following added value metrics are added: + +| Metric | Description | +| -- | -- | +| Integrity | By using verifiable credentials the data integrity is assured, if one specific attribute or value change the integrity will be broken. | +| Attribute Validation | By using the Certified Snapshot Credential the attribute validation can be done referencing the standards used for adding the data. | +| Semantic Context | By using verifiable credentials the semantic context of the credential is travelling with the data. Therefore, if the JSON-LD would be expanded, all the different attributes will be represented in context, and a graph can be created, allowing better data analysis and ontology creations | +| Digital Proof (Liability) | By signing electronically with a wallet the credentials, companies and parties in the Catena-X Network are assuming liability and demonstrating that they are the issuers of this data. Proofing their involvement in the data creation. | +|Non-CX-Interoperability | By using Verifiable Credentials the interoperability with other initiatives that are using the same technology is ensured. Catena-X data will then be enabled to be exchanged in other networks, while still maintaining the data sovereignty by **Presenting** the Verifiable Credential Data in other networks using Verifiable Presentations. | +|Traceability / Version Control | By using the `Certified Data Credential` the traceability and version control of the data can be enabled. Using hashes and DIDs to track the changes in the data and in the supply chain. | +|Improved Data Sovereignty | Data Sovereignty is already covered by the EDC, however once the data is retrieved the track of the data is lost. In this way by using a two layered data sovereignty, we can trace the data once it is retrieved, assuring the ownership of the data. | +|Verification Metadata in Aspect | The verification metadata does not need to be store in a "central" system, it travels decentrally with the data. Therefore, any consumer with access to the internet and a working identity wallet can verify that the data was "certified" and by who was "issued".| +|Selective Disclosure | By using the `Certified Snapshot Credential` a picture of the attributes can be taken without revealing the original content of it. In this way the data auditor can store a copy of the data without bothering about Data Sovereignty issues | + +### Maximum Trust Model + +By using both `Certified Data Credentials` (for the complete aspect model self-certification) and `Certified Snapshot Credentials` (for the attribute certification) we can achieve the maximum number of trust, integrity and data sovereignty. + +The `Certified Data Credential` will allow the auditor to know that the data visualized and the integrity was proof by the `issuer` and that it is the data provider. And once the `Certified Snapshot Credential` is done the data provider can present it to the data consumer using the `Attribute Certification Record` a Verifiable Presentation with all the attributes certified of one specific `Certified Data Credential`. + # Certification Processes For easing the understanding from the certification process and the interaction between the Data Provider and the Data Auditor, some diagrams are provided where the different interactions and artifacts generated are mapped. -> [!NOTE] +> [!NOTE] > > The Certification Processes of data are valid equally for `Type` level digital twins (Aspect Model in Type Level) or `Instance` digital twins (Aspect Model in Serialized Level). The difference relies on the configuration of the digital twin, and in which level the certification wants to be done. > Is important to know that the certification **MUST** be at the same level always. If we talk about a Digital Twin in Type Level, then the Digital Product Pass or any aspect model will contain Type level data, as well as the verified attributes. @@ -388,15 +520,15 @@ For easing the understanding from the certification process and the interaction ## Attribute Certification Process The attribute certification is based on a plain JSON Aspect Model Payload that contains the information from a digital product pass. It starts with the `data provider` that creates the `digital product passport` with the available information from and storing it in the `data service`. -Once that is done the data will be linked in a `digital twin`, so in this way by receiving the digital twin and searching for the passport submodel it can be found. After that it will be stored in the `digital twin registry`. Now if any attribute level certification is required to be done by an auditor, a `request` will be triggered from the data provider side, so a `EDC Push Notification` will be sent to the `data auditor` with the EDC Provider URL, the Digital Twin Id and the DPP Aspect Submodel Id (unique identification) +Once that is done the data will be linked in a `digital twin`, so in this way by receiving the digital twin and searching for the passport submodel it can be found. After that it will be stored in the `digital twin registry`. Now if any attribute level certification is required to be done by an auditor, a `request` will be triggered from the data provider side, so a `EDC Push Notification` will be sent to the `data auditor` with the EDC Provider URL, the Digital Twin ID and the DPP Aspect Submodel ID (unique identification) > [!TIP] > > A possible optimization to be done is to send directly the digital product pass data and the path to the attributes to be verified. However, for maintaining data sovereignty and the data not being transmitted without a contact exchange, the best way would be to send the IDs and then the `data auditor` will retrieve the data using the EDC. -Once the EDC Push Notification is received by the `data auditor` the Digital Twin and the Digital Product Pass (JSON aspect model payload to be audited) will be retrieved using the `EDC Connector` and through the `EDC Data Plane proxy`. When the passport aspect is available the data auditor can certify the `specific attributes requested` from the product against the different catena-x standards and regulations. The `data auditor` will create a new document (a certified snapshot credential) which contains the proof of compliance of the specific attributes audited in the passport using selective disclosure, there the data is not copied it is hashed so it can be signed and stored in the wallet from the `data auditor` for tracking reasons. +Once the EDC Push Notification is received by the `data auditor` the Digital Twin and the Digital Product Pass (JSON aspect model payload to be audited) will be retrieved using the `EDC Connector` and through the `EDC Data Plane proxy`. When the passport aspect is available the data auditor can certify the `specific attributes requested` from the product against the different Catena-X standards and regulations. The `data auditor` will create a new document (a certified snapshot credential) which contains the proof of compliance of the specific attributes audited in the passport using selective disclosure, there the data is not copied it is hashed, so it can be signed and stored in the wallet from the `data auditor` for tracking reasons. -The `CSC Document` (the certificate) will then be sent to the `data provider` using the EDC Push Notification functionality. When the data arrives in the data provider it will be then added to the `Attribute Certification Registry (ACR)` which contains all the attribute certifications for an specific aspect model payload submodel. It contains a list of credentials provided by one or more auditors for this aspect. It will be linked in the digital twin where the aspect is and if additional certification is required it will be triggered and the process repeats again. +The `CSC Document` (the certificate) will then be sent to the `data provider` using the EDC Push Notification functionality. When the data arrives in the data provider it will be then added to the `Attribute Certification Record (ACR)` or an `Attribute Certification Registry (AMReg) Application` both which contains all the attribute certifications for a specific aspect model payload submodel. It contains a list of credentials provided by one or more auditors for this aspect. It will be linked in the digital twin where the aspect is and if additional certification is required it will be triggered and the process repeats. ![csc workflow](./resources/processes/csc-workflow.svg) @@ -408,36 +540,59 @@ The self-testify certification process consist in the data provided singing its ## Total Certification Process -The total certification process is the same as the attribute verification process however the complete process is not starting with a plain json file. In this case the data provider can `self testify` its own data. The rest of the process is same and will result in the verification from the specific attributes from the aspect. +The total certification process is the same as the attribute verification process however the complete process is not starting with a plain JSON file. In this case the data provider can `self testify` its own data. The rest of the process is same and will result in the verification from the specific attributes from the aspect. ![cdc and csc workflow](./resources/processes/cdc-csc-workflow.svg) # Certification and Verification Methods -## Certified Snapshot Credential +## Certified Snapshot Credential Certification By using `hashes` and indicating which attributes were verified we are able to use `Selective Disclosure` to indicate which values were present in the original data audited. In this way the data gets not duplicated and the verification using the data retrieved from the data provider is still possible. ![CSC Simple Verification Method](./resources/technical/simple-verification-CSC.svg) -## Certified Data Credential +## Certified Data Credential Certification -In this case just the data provider would sign its own digital product pass credential and generating the corresponding Certified Data Credential with the proof of the content issued in a specific datetime. +In this case just the data provider would sign its own digital product pass credential and generating the corresponding Certified Data Credential with the proof of the content issued in a specific date time. ![CDC Simple Verification Method](./resources/technical/simple-verification-CDC.svg) -## Complete Data Certification Verification +## Complete Data Certification -The complete verification comparation would be happen when both Certified Data Credential (CDC) and one or more the Certified Snapshot Credentials (CSC) are available. The different partial credential (CSCs) you be compared against the CDC credential hashes. This allows the application to know which attributes were certified by the data-auditor and with each value. +The complete verification comparative would happen when both Certified Data Credential (CDC) and one or more the Certified Snapshot Credentials (CSC) are available. The different partial credential (CSCs) you be compared against the CDC credential hashes. This allows the application to know which attributes were certified by the data-auditor and with each value. ![CDC + CSC Complete Verification Method](./resources/technical/complete-verification-CSC-CDC.svg) - # Verification Processes +In Catena-X a **Data Consumer** you are able to retrieve data from a **Data Provider** by searching for the asset in a digital twin at the provider side and looking up for the desired "submodel" you want to retrieve. + +## Certified Data Credential Verification + +The Digital Product Pass Application acts like a **Data Consumer** which retrieves the data and verifies the signature. This functionality is implemented in the **R24.08** in the Digital Product Pass Application: + +![CDC Verification Process](./resources/processes/cdc-verification-workflow.svg) + +In this Diagram we can observe how a **Data Provider** enables its data to be consumer though an EDC. The data provider is responsible for building the Digital Product Pass Aspect or any other data structure, and then issuing the `Certified Data Credential` of the respective aspect in his own wallet. Once this is done it will be registered as a submodel in the `digital twin registry` so that the consumer can find it. + +Once the consumer retrieves the data, if it is a Verifiable Credential, he will be able to verify the signature using his own wallet, which will then use the `DID:WEB` method to find the public key of the provider and check the integrity of the data. + +## Certified Snapshot Credential Verification + +![CSC Verification Process](./resources/processes/csc-verification-workflow.svg) + +In this Diagram we can see the complete attribute certification process and how **Data Consumers** are able to find the data in Catena-X. The **Data Provider** will create the Digital Product Pass aspect and link it in the Digital Twin. In this way when an Attribute Certification is required to the Data Auditor he will be able to retrieve the data from the Digital Twin, using the EDC connector. Once that is done the Auditor will certify the specific attributes and document them in the `validationMethods` field at the Certified Snapshot Credential. + +Once the `CSC` is issued it will be transferred to the Data Provider Premises using the EDC Push Notification. This credential will be placed in a "Verifiable Presentation" aspect called `Attribute Verification Record` that contains the list of verifiable credentials, and it is issued by the Data Provider. + +The **Data Consumer** once both aspects are retrieved will be able to verify the specific attributes by hashing the original "Digital Product Pass" and comparing the certified attribute hashes. Additionally, the `CSC` signature will be verified against the wallet from the Data Auditor and the overall signature in the `AMR` will be verified against the wallet of the data provider. + +If all signature are verified then the data consumer will know that the data certification is still valid and the attributes certified can be trusted! + ## Flow Diagrams -In order for the Certified Data Credential and Certified Snapshot Credential to be retrieve, the consumer application **MUST** be able to access the digital twin in the data auditor registry. +In order for the Certified Data Credential and Certified Snapshot Credential to be retrieved, the consumer application **MUST** be able to access the digital twin in the data auditor registry. ### CDC Technical Verification Flow @@ -447,452 +602,1726 @@ By simply accessing the digital twin the data will be available as a submodel, t ### CSC Technical Verification Flow -For the partial credential the data will be available in a "Verification" aspect called `Attribute Certification Registry` (ACR) which contains the different attribute verification for a particular submodel in a digital twin. +For the partial credential the data will be available in a "Verification" aspect called `Attribute Certification Record` (ACR) which contains the different attribute verification for a particular submodel in a digital twin. ![Verification Flow CSC](./resources/processes/verification-process-csc.svg) # Technical Specification -## Certification Aspects Schemas +## Certification Aspects Specification - -> [!CAUTION] -> The information added here its still not productive, what its proposed is simply a MOCK, and its not ready to be implemented in a system yet, the actual schema and details **MUST** be defined in the future of this documentation +The following Verification Statements defined in this concept inherit attributes from the standardized [Verifiable Credential Data Model v2](https://www.w3.org/TR/vc-data-model-2.0/) by the W3C. This are the following types of Verifiable Credentials used for the different documents: -### Certified Data Credential Schema +| Credential | Type | +| :--- | --- | +| Certified Data Credential | Verifiable Credential v2 | +| Certified Snapshot Credential | Verifiable Credential v2 | +| Attribute Certification Record | Verifiable Presentation v2 | -The CDC schema contains the complete passport and some additional information, as well as as the signature of the data provider. +### Verifiable Credential Required Fields -Here we have an example with the [Digital Product Passport v2.0.0](https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0) Aspect Model. +For the **Certified Data Credential** and the **Certified Snapshot Credential** the following fields **MUST** be specified in the root level of the credential, following the [Verifiable Credential Data Model v2](https://www.w3.org/TR/vc-data-model-2.0/): -
-🚀 Expand Certified Data Credential (CDC) Aspect Schema +| Field | Description | Example | +| :--- | --- | --- | +| `id` | The uuid4 unique identification of the Verifiable Credential aspect. | `urn:uuid:d2e47115-c430-4145-bbde-1c743804a379` | +| `issuer` | The DID web of the Wallet Public Key DID Document with Business Partner Number | `did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS` | +| `validFrom` | The ISO datetime format of the time when the credential was issued | `2024-06-21T16:52:40Z` | +| `validUntil` | The ISO datetime format of the time when the credential will expire. The time period can vary from issuer to issuer | `2024-12-06T16:52:40Z` | +| `@context` | The context field contains the list of schemas and JSON-LD context definitions. It **MAY** contain URLs to the context definitions. It **MAY** also contain context definitions embedded. | [-> Go to @context definition](#context-definition) | +| `type` | The type field, contains the list of types defined in the `@context` of the credential. In this way the content of the credential `claim` can be defined. It **MAY** vary from credential to credential. | `["VerifiableCredential","CertifiedDataCredential","DigitalProductPassport"]` | + +#### Issuer Structure + +In case of Catena-X every party in the network is identified with the Business Partner Number (BPN). Therefore, the issuer **MUST** contain the BPN in the DID:WEB path, in order to identify correctly who is the issuer of the verifiable credential: + +``` +did:web:<>:<> +``` + +Example: `did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS` + +### Context Definition + +The `@context` field definition **MAY** vary from credential to credential. However, the following context URLs **MUST** be defined when following this concept. + +- W3C Verifiable Credential Data Model v2: https://www.w3.org/ns/credentials/v2 +- W3C JSON Web Signature 2020 Context: https://w3c.github.io/vc-jws-2020/contexts/v1/ + +Additionally, if more specific contexts want to be defined, the following context URL **MAY** be added: + +- W3C Data Integrity Context: https://w3id.org/security/data-integrity/v2 + +For every credential [`Certified Data Credential`](#cdc-json-ld-context-schema), [`Certified Snapshot Credential`](#csc-json-ld-context-schema), [`Attribute Certification Record`](#amr-json-ld-context-schema) the individual JSON-LD context schema specification **MUST** be also added to the `@context` list. + +### Cryptography Signatures & Keys in Self-Descriptions + +The technology used for signatures of [Verifiable Credentials in Gaia-X](https://gaia-x.eu/wp-content/uploads/2022/06/Gaia-x-Architecture-Document-22.04-Release.pdf) is the `JsonWebSignature2020` and the corresponding keys are the following: `JsonWebKey2020`. + +The [simple-wallet](./simple-wallet) component already takes care of complying with the DID:Web standard from the W3C. When resolving a DID it will display a `did.json` in this format: ```json { - "id": "https://dpp-system-url.com/api/public/cx:mfg024:prt-30001", - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "http://json-schema.org/draft-04/schema", - "https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0/gen/DigitalProductPassport-schema.json", - "https://w3c.github.io/vc-jws-2020/contexts/v1/" - ], - "type": ["VerifiableCredential", "CDC", "DPP"], - "issuer": "did:web:wallet-url.test.com:BPNL00000007RVTB", - "credentialSubject": { - "id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A6da1f07c-999b-4602-b4d3-8eb649e5d10f", - "parent": { - "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", - "checksum": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" - }, - "checksum": "ac35e22f24fc4257e2759f7e7105f14568e5e86573fea4b05515697f254111c1f3490d28653b400cb9ddc9690760ef1390f5cac7a3d55966490dab994c1f5cd1", - "data": { - "typology" : { - "shortName" : "8HP60", - "class" : { - "definition" : "Manual transmission (motor vehicle)", - "code" : "44-09-02-02" - }, - "longName" : "Product Description long text" - }, - "metadata" : { - "predecessor" : "null", - "issueDate" : "2000-01-01", - "version" : "1.0.0", - "economicOperator" : { - "legitimization" : "DE123456789", - "identification" : "BPNL1234567890ZZ" - }, - "status" : "draft", - "expirationDate" : "2000-01-01" - }, - "characteristics" : { - "physicalDimension" : { - "grossWeight" : { - "value" : 20.5, - "unit" : "unit:kilogram" - }, - "weightOrVolume" : { - "left" : { - "value" : 20.5, - "unit" : "unit:cubicMetre" - } - }, - "diameter" : { - "value" : 20.5, - "unit" : "unit:millimetre" - }, - "grossVolume" : { - "value" : 20.5, - "unit" : "unit:cubicMetre" - }, - "width" : { - "value" : 20.5, - "unit" : "unit:millimetre" - }, - "length" : { - "value" : 20.5, - "unit" : "unit:millimetre" - }, - "height" : { - "value" : 20.5, - "unit" : "unit:millimetre" - } - }, - "lifespan" : [ { - "value" : 36, - "unit" : "unit:day", - "key" : "guaranteed lifetime" - } ], - "physicalState" : "solid" - }, - "commercial" : { - "placedOnMarket" : "2000-01-01" - }, - "identification" : { - "localIdentifier" : { - "value" : "PRT-30001", - "key" : "PartInstanceId" - }, - "additionalCode" : [ { - "value" : "8703 24 10 00", - "key" : "TARIC" - }, { - "value" : "MFG024", - "key" : "manufacturerPartId" - } ], - "dataCarrier" : { - "carrierType" : "QR", - "carrierLayout" : "upper-left side" - } - }, - "sources" : [ { - "header" : "Sustainability Document Material XY", - "category" : "Product Specifications", - "type" : "URL", - "content" : "www.alink.pdf" - } ], - "handling" : { - "spareParts" : { - "left" : { - "producer" : [ { - "id" : "BPNL1234567890ZZ" - } ], - "part" : [ { - "name" : "Aluminum Housing", - "gtin" : "12345678" - } ] - } - }, - "substanceOfConcern" : { - "left" : [ { - "name" : { - "name" : "phenolphthalein", - "type" : "IUPAC" - }, - "location" : "Housing", - "unit" : "unit:partPerMillion", - "concentration" : { - "left" : [ { - "max" : 2.6, - "min" : 2.1 - } ] - }, - "exemption" : "shall not apply to product x containing not more than 1,5 ml of liquid", - "id" : [ { - "type" : "CAS", - "id" : "201-004-7" - } ] - } ] - } - }, - "additionalData" : [ { - "description" : "This is the machine parameters that are produced when the machine is used", - "label" : "Specific Manufacturer Machine Parameters", - "type" : { - "typeUnit" : null, - "dataType" : "object" - }, - "children" : [ { - "description" : "The usage of the eletricity in the machine", - "label" : "Eletricity Usage", - "type" : { - "typeUnit" : "unit:volts", - "dataType" : "integer" - }, - "data" : "25" - }, { - "description" : "The name of the machine that produced the product", - "label" : "Machine Name", - "type" : { - "typeUnit" : null, - "dataType" : "string" - }, - "data" : "Laser Machine MX-421W" - }, { - "description" : "The list of products the machine can produce", - "label" : "Product Names", - "type" : { - "typeUnit" : null, - "dataType" : "array" - }, - "data" : [ "Tranmissions", "Batteries", "Seats", "Doors" ] - } ] - }, { - "description" : "This are the properties of interest", - "label" : "Properties of Interest", - "type" : { - "typeUnit" : null, - "dataType" : "object" - }, - "children" : [ { - "description" : "This are the main properties of interest", - "label" : "Main Properties", - "type" : { - "typeUnit" : null, - "dataType" : "object" + "@context": [ + "https://www.w3.org/ns/did/v1", + "https://w3c.github.io/vc-jws-2020/contexts/v1" + ], + "id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "verificationMethod": [ + { + "controller": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "publicKeyJwt": { + "crv": "Ed25519", + "kid": "N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "kty": "OKP", + "x": "j3NLrd7Qq_EqW4zx9nuispEt7l8CO-GYJp9dlrWFmvg" }, - "children" : [ { - "description" : "This is the Normal temperature of production", - "label" : "Normal Temperature", - "type" : { - "typeUnit" : "unit:celcius", - "dataType" : "float" - }, - "data" : 62.7 - }, { - "description" : "This is the minimmum temperature of production", - "label" : "Minimum Temperature", - "type" : { - "typeUnit" : "unit:celcius", - "dataType" : "float" - }, - "data" : -80.68 - }, { - "description" : "This is the maximum temperature of production", - "label" : "Maximum Temperature", - "type" : { - "typeUnit" : "unit:celcius", - "dataType" : "float" - }, - "data" : 800.85 - } ] - } ] - } ], - "sustainability" : { - "PEF" : { - "carbon" : [ { - "lifecycle" : "main product production", - "rulebook" : "https://www.alink.pdf/", - "unit" : "kg CO2 eq", - "type" : "Climate Change Total", - "value" : 12.678 - } ] - }, - "state" : "first life", - "material" : { - "left" : [ { - "name" : { - "name" : "phenolphthalein", - "type" : "IUPAC" - }, - "unit" : "unit:partPerMillion", - "recycled" : false, - "id" : [ { - "type" : "CAS", - "id" : "201-004-7" - } ], - "value" : 5, - "renewable" : true - } ] - }, - "critical" : { - "left" : [ "eOMtThyhVNLWUZNRcBaQKxI" ] - } - }, - "operation" : { - "importer" : { - "left" : { - "eori" : "GB123456789000", - "id" : "BPNL1234567890ZZ" - } - }, - "manufacturer" : { - "facility" : "BPNS1234567890ZZ", - "manufacturingDate" : "2000-01-31", - "manufacturer" : "BPNL1234567890ZZ" - } + "type": "JsonWebKey2020" } - } - }, - "issuanceDate": "2024-02-15T00:00:00.000Z", - "proof": { + ] +} +``` + +In this way when a `JsonWebSignature2020` proof is added to a Verifiable Credential, the `verificationMethod` DID can be resolved and the wallet will be providing the `JsonWebKey2020` with the same `kid` (key id) as the credential. In this way the public key can be used to verify the credential signature proof (example): + +```json +"proof": { "type": "JsonWebSignature2020", - "created": "2024-02-15T12:35:39Z", - "verificationMethod": "did:web:wallet-url.test.com:BPNL00000007RVTB#8f858500-7008-4b97-a8bb-605d4c8eca75", "proofPurpose": "assertionMethod", - "jws": "eyJhbGciOiJFZERTQSJ9..4snTkqta4UwXIAtKJiIEDhiwmVtAC3kml0j7Wc25vmTbLbPlviXgL9he9X0A0xRTNlnsEwILf0NbPIyeztzJCw" - } + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-06-21T16:52:40+00:00Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..c_xfb7TCumZqWxeZHXCiu1xWgyzx2JgeAJjPteDbr3gxRtIZvobsxfWR5s5UTMKgp47vC6Mh0_Uq6cN7vB6ABA" } ``` -
- -## Certified Snapshot Credential Schema +The `jws` (JSON Web Signature) field is organized in the following structure: -The CDC schema contains the partial passport with different attributes, all them with the methods used for the ceritification, as well as as the signature of the data provider. +``` +<
>..<> +``` -Here we have an example of the generated CSC from the [previous CDC Aspect](#certified-data-credential-schema) the [Digital Product Passport v2.0.0](https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0) Aspect Model. +#### Signature Header -
-🚀 Expand Certified Snapshot Credential (CSC) Aspect Schema +The `HEADER` content **MUST** be the following structure defined in the [W3C Standard for JSON Web Signatures 2020 Proof Representations](https://www.w3.org/TR/vc-jws-2020/#proof-representation), [JOSE Signature Structure](https://datatracker.ietf.org/doc/draft-ietf-jose-json-web-signature/32/) and the [JOSE Non-Encoded Payload Signature](https://datatracker.ietf.org/doc/html/rfc7797) : ```json { - "id": "https://dpp-system-url.com/api/public/cx:mfg024:prt-30001", - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "http://json-schema.org/draft-04/schema", - "https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/2.0.0/gen/DigitalProductPassport-schema.json", - "https://w3c.github.io/vc-jws-2020/contexts/v1/" - ], - "type": [ - "VerifiableCredential", - "CSC", - "DPP" - ], - "issuer": "did:web:wallet-url.test.com:BPNL000000086WTL", - "credentialSubject": { - "id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", - "checksum": "ac35e22f24fc4257e2759f7e7105f14568e5e86573fea4b05515697f254111c1f3490d28653b400cb9ddc9690760ef1390f5cac7a3d55966490dab994c1f5cd1", - "data": [ - { - "path": "sustainability.PEF.carbon[0].value", - "proof": "112b7337ac2710961e728f5bf983ce1dbdef1972ed6ec949982faf7c80566b7f9146a781d40a3166a9b00286b46136be863c3ca16c6b9d13c218b675892a4fd9", - "method": [ - { - "type": "Standard", - "name": "PCF Rulebook Standard", - "id": "CX-0029", - "url": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" - }, - { - "type": "Regulation", - "name": "Ecodesign for Sustainable Products Regulation", - "id": "2009/125/EC", - "url": "https://eur-lex.europa.eu/legal-content/EN/TXT/PDF/?uri=CELEX:02009L0125-20121204&from=EN" - } - ] - }, - { - "path": "sustainability.state", - "proof": "f4f14ed3c319f1f1cd4ee5a50353ec0147da5cb0f8da86a3161bd2c70c83026bc4bdf64c99a4a38fb10afc19f6e07e6cbf820981ab13468133da3a403036e9eb", - "method": [ - { - "type": "Standard", - "name": "Secondary Material Content Standard", - "id": "CX-0098", - "url": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_Januar_2024/CX-0098-AspectModelSecondaryMaterialContent-v1.0.0.pdf" - } - ] - } - ] - }, - "issuanceDate": "2024-02-15T00:00:00.000Z", - "proof": { - "type": "JsonWebSignature2020", - "created": "2024-02-15T12:35:39Z", - "verificationMethod": "did:web:wallet-url.test.com:BPNL000000086WTL#049f920c-e702-4e36-9b01-540423788a90", - "proofPurpose": "assertionMethod", - "jws": "eyJhbGciOiJFZERTQSJ9..4snTkqta4UwXIAtKJiIEDhiwmVtAC3kml0j7Wc25vmTbLbPlviXgL9he9X0A0xRTNlnsEwILf0NbPIyeztzJCw" - } + "typ": "vc+ld", + "b64": false, + "alg": "HS256", + "crv": "Ed25519", + "crit": ["b64"] } ``` -
+#### Signature Payload -## Attribute Certification Registry - -> [!WARNING] -> The attribute certification registry details is still not available. It will contain the complete list of CSC certificates and also reference to the CDC or plain json submodel in the same digital twin. +The signature payload **MUST** not be mentioned. It will be consider when verifying the signature, as: -# Technical Integration Design - -> [!WARNING] -> The complete technical integration design is still not available here! More details comming soon... +``` +PAYLOAD = VERIFIABLE_CREDENTIAL - VERIFIABLE_CREDENTIAL["proof"] +``` -## Interfaces +In this way the payload does not need to be duplicated in the signature in BASE64. -The digital product pass application would act in the dpp-verification concept as the "Verification System" which is able to communicate with different systems, behind or not behind a EDC connector. Data would be exchange using the EDC however components like the Wallet could be accessed using the "DID Web" method, or the Semantic Hub using the central interface provided by the operator of the network. +For more information about Non-Encoded JOSE JSON Signatures consult the [RFC7797 Standard](https://datatracker.ietf.org/doc/html/rfc7797). -![intefaces](./resources/technical/interfaces.svg) +#### Signature Generation -## Certification Sequence Diagrams +For generating the signature a `Ed25519` Ecliptic Curve Private Key **MUST** be created by the Wallet. In this way public keys in JWK can be generated and verified mathematically correctly. -> [!WARNING] -> Some details may be missing or incorrect, since that is the first implementation concept for the certification and verification. The concept is still being elaborated and will be determined in the new release with the actual implementation! +While generating the signature follow this logic (pseudocode): +```js +// Generate signature content +signature_digest = base64NoPadding(dumpJsonBytesInUtf8(HEADER))+toByte('.')+base64NoPadding(dumpJsonBytesInUtf8(PAYLOAD)); -### CSC Certification Sequence Diagram +// Sign with private key and encode to base64 +signature = base64NoPadding(private_key.sign(signature_digest)); -In this sequence diagram we can see how a data auditor retrieved the data as a normal Digital Product Pass Application. It will select then the different attributes and then sign his certificate against its own `decentral wallet`. After he will send it to the data provider. +// Build the JSON Web Signature and add it to the Verifiable Credential +VERIFIABLE_CREDENTIAL['proof']['jws'] = toString(base64NoPadding(dumpJsonBytesInUtf8(HEADER)) + toByte('..') + signature); +``` -![CSC Certification](./resources/technical/technical-integration-flow-csc-data-auditor.svg) +For details on how to implement the logic and code for the signature consult the [simple-wallet Cryptool Util](./simple-wallet/utilities/cryptool.py). -### CDC + CSC Certification Sequence Diagram +#### Signature Verification -In this sequence diagram we have the same as the first one, however the data auditor can also indicate which data needs to be updated in the original data for being `compliant`. Therefore the data provider can also update its data in the original data and verify it once again. +When Verifying a Credential Signature, a wallet **MUST** be able to resolve the DID:Web and retrieve the private key contained in the `publicKeyJwt` field, [example above](#cryptography-signatures--keys-in-self-descriptions). -![CSC + CDC Certification](./resources/technical/technical-integration-flow-csc+cdc-data-auditor.svg) +Once the public key is available for verifying the following procedure **MUST** be done (pseudocode): -## Verification Sequence Diagrams +```js -### CSC Verification Sequence Diagram +// Check if the expiration date has passed +if(VERIFIABLE_CREDENTIAL['validUntil'] >= currentIsoDateTime()){ + fail; +} -In this verification sequence diagram we can observe the digital product pass application will retrieve the data first and then will request for any verification data available. +// Split JWS signature content with the '.' separator +signature_array = splitBySeparator(VERIFIABLE_CREDENTIAL['proof']['jws'], "."); -![CSC Verification](./resources/technical/technical-integration-flow-csc.svg) +// Retrieve JWS elements +HEADER = loadJson(signature_array[0]); +SIGNATURE = signature_array[2]; +PAYLOAD = delete VERIFIABLE_CREDENTIAL['proof']; -### CDC + CSC Verification Sequence Diagram +// Build the Verification Digest to match the Issue Logic +verification_digest = base64NoPadding(dumpJsonBytesInUtf8(HEADER))+toByte('.')+base64NoPadding(dumpJsonBytesInUtf8(PAYLOAD)); -In this verification sequence diagram the complete verification is found. The CDC credential is retrieved in the first step and checked if it verified against a wallet. And then the data is displayed, after that the user requests more verification and gets it from the data provider if allowed. +// Verify the signature against the verification digest +if(not public_key.verify(signature, verification_digest)){ + fail; +} -![CSC + CDC Verification](./resources/technical/technical-integration-flow-csc+cdc.svg) +// Verifiable Credential is Verified! +success; +``` -# References +>[!TIP] +> +> An idea for a future implementation or version of this documentation is to use `RevocationList` to block and invalidate the verification of the Credentials. In this implementation **JUST** the expiration data in `validUntil` was used as invalidation method. +> +> Another functionality could be to check if the `issuer` from the credential has a Verifiable Credential that allows the company to issue verifiable credentials in the Network, and fail the verification when not authorized. +> +> And finally other options like `TrustedIssuersList` could be used to identify & specify if the `issuer` is trustable in the network or not. -The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to understand on how the different components behave in the network. -No content with copyright was copied. All the information used as reference in this documentation is open source, is available for the public or released under creative commons license. +### Certified Data Credential Schema -| Name | Author | Date | Link | -| :------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/boschresearch/cx-data-integrity-demonstrator | -| ID Union Data Integrity Demonstrator | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/IDunion/i40-examples/tree/main/nameplate-vc | -| Digital Product Passport Verifiable Credential Demo | Spherity | 2023 | https://acme.dpp.spherity.com/ | -| Verifiable Credentials Data Model v1.1/v2.0 | W3C | 2022 - 2024 | https://www.w3.org/TR/vc-data-model/ https://www.w3.org/TR/vc-data-model-2.0/ | -| Tractus-X SSI Documentation | Catena-X Core-ART Architects & Eclipse Tractus-X Contributors | 2023 | https://github.com/eclipse-tractusx/ssi-docu/tree/main/docs/architecture/cx-3-2 | -| Ed25519: high-speed high-security signatures | Daniel J. Bernstein, University of Illinois at Chicago Niels Duif, Technische Universiteit Eindhoven Tanja Lange, TechnischeUniversiteit Eindhoven Peter Schwabe,National Taiwan UniversityBo-Yin Yang,Academia Sinica | 2017 | https://ed25519.cr.yp.to/ | -| Digital Product Pass Documentation and Arc42 | [Mathias Brunkow Moser](https://github.com/matbmoser) & [Muhammad Saud Khan](https://github.com/saudkhan116) - CGI - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/digital-product-pass/ https://github.com/eclipse-tractusx/digital-product-pass/blob/main/docs/arc42/Arc42.md | -| Managed Identity Wallets | Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | -| Digital Twin Registry | Bosch - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | -| Tractus-X EDC | Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | -| Eclipse Connector | Eclipse Foundation Contributors | 2021-2024 | https://github.com/eclipse-edc/Connector | -| Universal Resolver for DIDs | Universal Resolver | 2017-2024 | https://dev.uniresolver.io/ https://github.com/decentralized-identity/universal-resolver | -| Decentralized Identifiers (DIDs) v1.0 | W3C | 2022 | https://www.w3.org/TR/did-core/ | -| Decentralized Identifier Resolution (DID Resolution) v0.3 | W3C | 2023 | https://w3c-ccg.github.io/did-resolution/ | -| Self-Sovereign Identity - Decentralized Digital Identity and Verifiable Credentials v2 | Manning Publications: manning.com | 2020 | https://livebook.manning.com/book/self-sovereign-identity/chapter-8/v-2/7 | -| EECC Verifier for Verifiable Credentials | Free Software Foundation, Inc (https://fsf.org) | 2022-2024 | https://github.com/european-epc-competence-center/vc-verifier [ssi.eecc.de/verifier](ssi.eecc.de/verifier/) | -| Identity Resolution Verification | European EPC Competence Center GmbHhttps://eecc.info/ | 2022-2024 | https://id.eecc.de/ | -| SuplyTree - The Inter-company Tamper-evidence Protocol for Supply Chain Traceability | Matthias Guenther, Robert Bosch GmbH, Economy of Things Dominie Woerner, Robert Bosch Switzerland, Economy of Things | 2023 | | +![CDC Schema](./resources/implementation/cdc-document-credential.svg) + +The CDC schema contains the complete passport and some additional information, as well as the signature of the data provider. + +Here we have an example with the [Digital Product Passport v5.0.0](https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/5.0.0) Aspect Model. + +### CDC Semantic + +The Certified Data Credential uses the [Verifiable Credential Data Model in V2](https://www.w3.org/TR/vc-data-model-2.0/) as an aspect model "parent" instance. Diverse attributes are already modeled and have their JSON-LD `@context` defined in the following URL: [https://www.w3.org/ns/credentials/v2](https://www.w3.org/ns/credentials/v2). + +In order to detail the special attributes used in the Certified Data Credential a SAMM Model was created specifying the fields. + +#### CDC SemanticId + +``` +urn:samm:io.catenax.dpp_verification.cdc:1.0.0#CertifiedDataCredential +``` + +The SAMM RDF file can be found in the following path: [dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedDataCredential.ttl](semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedDataCredential.ttl) + +### CDC Reference to Parent + +A Certified Data Credential **MAY** have a reference to a parent credential with older version. The idea is to link the credentials and maintain a version control of the content. In this way traceability can be improved. The fields included are: + +|Field | Description | Example | +| --- |-- | -- | +| `@id` | Contains the DID Web or URL for the parent version of the credential. In this case because we are using Catena-X Standards, it will contain the HREF for the EDC data plane. |`did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d` | +| `digestMultibase` | This is a standard field from the W3C security data model specifications, it contains in this case a [HASH SHA3-512](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf), that is generated as a checksum from the complete parent credential. | `64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115` | + +### CDC JSON-LD Context Schema + +Using the [simple-wallet](./simple-wallet/README.md) `/context` any SAMM Aspect Model JSON Schema can be converted into a fully functional JSON-LD Context Schema. + +In order to simply the usage of the context schema, it was uploaded to this github repository and can be accessed in its raw version at the credential context in the following way: + +|CDC @Context| [https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/cdc/1.0.0/certifiedDataCredential.jsonld](https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/cdc/1.0.0/certifiedDataCredential.jsonld) | +| - | - | + +### Wrapped Aspect Model + +In the case of the CDC credential, an aspect model payload will be included in the `credentialSubject` field from the verifiable credential. + +The aspect model `semanticId` **MUST** be referenced as a root attribute in the credential. In this way it is easy to know which aspect model is wrapped in the `credentialSubject`. + +For enabling the **semantic context** in the credential when it is expanded, using the [simple-wallet](./simple-wallet/README.md) `/context` any SAMM Aspect Model JSON Schema can be converted into a fully functional JSON-LD Context Schema. + +The JSON-LD context schema for the aspect model can be generated for **any Catena-X standardized aspect model**, based on the JSON schema provided in the SAMM aspect modeler and in the semanticId. + +For easing the PoC implementation the `@context` for the Digital Product Passport v5.0.0 model was generated: + + +|Digital Product Passport @Context| [https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld](https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld) | +| - | - | + +It is really important to **define the semantic model id key** in the `credentialSubject`, example: + +```json +"credentialSubject": { + "DigitalProductPassport": { + "metadata": { + ... + } + ... + } +} +``` + +The value can be found in the end of the semantic id, for example in the digital product pass is: `DigitalProductPassport` because the semanticId is the following: + +``` +urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport +``` + +In this way the semantic structure, can be expanded in the JSON-LD context and each field from the aspect model can be found in context from the standardized aspect model. + +>[!IMPORTANT] +> +> When creating the verifiable credentials using the CDC aspect model, is recommended to use a JSON-LD Playground for expanding the credential and verifying that all the attributes from the aspect model are referenced in a context. Otherwise, the JSON-LD verifiable credential is not valid. JSON-LD Playground Example: [https://json-ld.org/playground/](https://json-ld.org/playground/) + + +### CDC Credential Types Definition + +The following list of types **MUST** be provided in the following order for the Certified Data Credential: + +```json +"type": [ + "VerifiableCredential", + "CertifiedDataCredential", + "<>" +] +``` + +The last field `<>` represents the aspect model semantic id name. + +Example for the Digital Product Passport: + +``` +urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport +``` + +The value can be found in the end of the semantic id, and shall be referenced. + +```json +"type": [ + "VerifiableCredential", + "CertifiedDataCredential", + "DigitalProductPassport" +] +``` + + +### CDC Example + +Here is an example of how the Certified Data Credential looks like for a Digital Product Passport aspect model in version v5.0.0: + +
+🚀 Expand Certified Data Credential (CDC) Aspect Example + +```json +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/cdc/1.0.0/certifiedDataCredential.jsonld", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld" + ], + "type": [ + "VerifiableCredential", + "CertifiedDataCredential", + "DigitalProductPassport" + ], + "parent": { + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", + "digestMultibase": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" + }, + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport", + "credentialSubject": { + "DigitalProductPassport": { + "metadata": { + "backupReference": "https://dummy.link", + "registrationIdentifier": "https://dummy.link/ID8283746239078", + "economicOperatorId": "BPNL0123456789ZZ", + "lastModification": "2000-01-01", + "predecessor": "urn:uuid:00000000-0000-0000-0000-000000000000", + "issueDate": "2000-01-01", + "version": "1.0.0", + "passportIdentifier": "urn:uuid:550e8400-e29b-41d4-a716-446655440000", + "status": "draft", + "expirationDate": "2030-01-01" + }, + "characteristics": { + "generalPerformanceClass": "A", + "physicalState": "solid", + "physicalDimension": { + "volume": { + "value": 20, + "unit": "unit:cubicMetre" + }, + "grossWeight": { + "value": 20, + "unit": "unit:gram" + }, + "diameter": { + "value": 20, + "unit": "unit:millimetre" + }, + "grossVolume": { + "value": 20, + "unit": "unit:cubicMetre" + }, + "width": { + "value": 20, + "unit": "unit:millimetre" + }, + "length": { + "value": 20, + "unit": "unit:millimetre" + }, + "weight": { + "value": 20, + "unit": "unit:gram" + }, + "height": { + "value": 20, + "unit": "unit:millimetre" + } + }, + "lifespan": [ + { + "value": 36, + "unit": "unit:day", + "key": "guaranteed lifetime" + } + ] + }, + "commercial": { + "placedOnMarket": "2000-01-01", + "purpose": [ + "automotive" + ] + }, + "identification": { + "batch": [ + { + "value": "BID12345678", + "key": "batchId" + } + ], + "codes": [ + { + "value": "8703 24 10 00", + "key": "TARIC" + } + ], + "type": { + "manufacturerPartId": "123-0.740-3434-A", + "nameAtManufacturer": "Mirror left" + }, + "classification": [ + { + "classificationStandard": "GIN 20510-21513", + "classificationID": "1004712", + "classificationDescription": "Generic standard for classification of parts in the automotive industry." + } + ], + "serial": [ + { + "value": "SN12345678", + "key": "partInstanceId" + } + ], + "dataCarrier": { + "carrierType": "QR", + "carrierLayout": "upper-left side" + } + }, + "sources": [ + { + "header": "Example Document XYZ", + "category": "Product Specifications", + "type": "URL", + "content": "https://dummy.link" + } + ], + "materials": { + "substancesOfConcern": { + "applicable": true, + "content": [ + { + "unit": "unit:partPerMillion", + "hazardClassification": { + "category": "category 1A", + "statement": "Causes severe skin burns and eye damage.", + "class": "Skin corrosion" + }, + "documentation": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "concentrationRange": [ + { + "max": 2.6, + "min": 2.1 + } + ], + "location": "Housing", + "concentration": 5.3, + "exemption": "shall not apply to product x containing not more than 1,5 ml of liquid", + "id": [ + { + "type": "CAS", + "name": "phenolphthalein", + "id": "201-004-7" + } + ] + } + ] + }, + "materialComposition": { + "applicable": true, + "content": [ + { + "unit": "unit:partPerMillion", + "recycled": 12.5, + "critical": true, + "renewable": 23.5, + "documentation": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "concentration": 5.3, + "id": [ + { + "type": "CAS", + "name": "phenolphthalein", + "id": "201-004-7" + } + ] + } + ] + } + }, + "handling": { + "applicable": true, + "content": { + "producer": [ + { + "id": "BPNL0123456789ZZ" + } + ], + "sparePart": [ + { + "manufacturerPartId": "123-0.740-3434-A", + "nameAtManufacturer": "Mirror left" + } + ] + } + }, + "additionalData": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "array" + }, + "data": "23", + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "array" + }, + "data": "23" + }, + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "array" + }, + "data": "null", + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "object" + }, + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "string" + }, + "data": "asdasdasd", + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "string" + }, + "data": "asdasdasd" + } + ] + } + ] + }, + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "string" + }, + "data": "4323" + } + ] + } + ] + } + ], + "operation": { + "import": { + "applicable": true, + "content": { + "eori": "GB123456789000", + "id": "BPNL0123456789ZZ" + } + }, + "other": { + "id": "BPNL0123456789XX", + "role": "distributor" + }, + "manufacturer": { + "facility": [ + { + "facility": "BPNA1234567890AA" + } + ], + "manufacturingDate": "2000-01-31", + "manufacturer": "BPNLbi7tAJ8UiMsF" + } + }, + "sustainability": { + "reparabilityScore": "B", + "productFootprint": { + "material": [ + { + "lifecycle": "main product production", + "rulebook": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "unit": "kg CO2 / kWh", + "performanceClass": "A", + "manufacturingPlant": [ + { + "facility": "BPNA1234567890AA" + } + ], + "type": "Climate Change Total", + "value": 12.678, + "declaration": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ] + } + ], + "carbon": [ + { + "lifecycle": "main product production", + "rulebook": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "unit": "kg CO2 / kWh", + "performanceClass": "A", + "manufacturingPlant": [ + { + "facility": "BPNA1234567890AA" + } + ], + "type": "Climate Change Total", + "value": 12.678, + "declaration": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ] + } + ], + "environmental": [ + { + "lifecycle": "main product production", + "rulebook": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "unit": "kg CO2 / kWh", + "performanceClass": "A", + "manufacturingPlant": [ + { + "facility": "BPNA1234567890AA" + } + ], + "type": "Climate Change Total", + "value": 12.678, + "declaration": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ] + } + ] + }, + "status": "original", + "durabilityScore": "A" + } + } + }, + "id": "urn:uuid:d2e47115-c430-4145-bbde-1c743804a379", + "issuer": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-06-21T16:52:40Z", + "validUntil": "2024-12-06T16:52:40Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-06-21T16:52:40+00:00Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..c_xfb7TCumZqWxeZHXCiu1xWgyzx2JgeAJjPteDbr3gxRtIZvobsxfWR5s5UTMKgp47vC6Mh0_Uq6cN7vB6ABA" + } +} +``` + +
+ +## Certified Snapshot Credential Schema + +![CSC Schema](./resources/implementation/csc-document-credential.svg) + +The CSC schema contains the partial passport with different attributes, all them with the methods used for the certification, as well as the signature of the data provider. + +Here we have an example of the generated CSC from the [previous CDC Aspect](#certified-data-credential-schema) the [Digital Product Passport v5.0.0](https://raw.githubusercontent.com/eclipse-tractusx/sldt-semantic-models/main/io.catenax.generic.digital_product_passport/5.0.0) Aspect Model. + +### CSC Semantic + +The Certified Snapshot Credential uses the [Verifiable Credential Data Model in V2](https://www.w3.org/TR/vc-data-model-2.0/) as an aspect model "parent" instance. Diverse attributes are already modeled and have their JSON-LD `@context` defined in the following URL: [https://www.w3.org/ns/credentials/v2](https://www.w3.org/ns/credentials/v2). + +In order to detail the special attributes used in the Certified Snapshot Credential a SAMM Model was created specifying the fields. + +#### CSC SemanticId + +``` +urn:samm:io.catenax.dpp_verification.csc:1.0.0#CertifiedSnapshotCredential +``` + +The SAMM RDF file can be found in the following path: [dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedSnapshotCredential.ttl](./semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedSnapshotCredential.ttl) + +### CSC Reference to Origin + +A Certified Snapshot Credential **MUST** have a reference to an origin credential. When issued it **MUST** have used another credential as reference for the attribute certification. In this way if both origin credential and the Certified Snapshot Credential are available a comparative between the hashed values and the original values hashed will result in the Verification of the fields in an assertive manner. + +|Field | Description | Example | +| --- |-- | :-- | +| `@id` | Contains the DID Web or URL for the origin structure used for the attribute certification. In this case because we are using Catena-X Standards, it will contain the HREF for the EDC data plane. |`did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d` | +| `@type` | Contains the mimetype of the data which was used for the certification. |`application/vc+ld+json` | +| `semanticId` | Contains the semanticId of the origin data, allowing anyone to know the structure of the attribute path | `urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport` | +| `digestMultibase` | This is a standard field from the W3C security data model specifications, it contains in this case a [HASH SHA3-512](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf), that is generated as a checksum from the complete origin file | `64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115` | + +### CSC JSON-LD Context Schema + +Using the [simple-wallet](./simple-wallet/README.md) `/context` any SAMM Aspect Model JSON Schema can be converted into a fully functional JSON-LD Context Schema. + +In order to simply the usage of the context schema, it was uploaded to this github repository and can be accessed in its raw version at the credential context in the following way: + +|CSC @Context| [https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld](https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld) | +| - | - | + +### Attribute List Description + +In the case of the CSC credential, a list of certified attributes will be included in the `credentialSubject` field from the verifiable credential. + +As described in the [CSC SAMM Aspect Model](./semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedSnapshotCredential.ttl) + +At the `attribute` key in the `credentialSubject` field each certified attribute **MUST** be included. + +Each certified attribute **MUST** follow this structure (example): + +```json +{ + "validationMethod": [ + { + "@type": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "@id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ], + "@id": "dpp:sustainability.productFootprint.carbon[0].value", + "digestMultibase": "d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32" +} +``` + +These are the field descriptions and rules: + +| Field | Description | Syntax or Example | +| -- | -- | :- | +| `@id` | Contains the path, using "." as separator and "[]" for array access reference, it shall indicate the specific attribute in the aspect model JSON Payload | `<< path.to.attribute >>`
Example: `physicalProperties.height.value`| +| `digestMultibase` | This is a standard field from the W3C security data model specifications, it contains in this case a [HASH SHA3-512](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf) of the value of the attribute key certified | `d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32` | +| `validationMethod` | This field key name is based on W3W that exist like `verificationMethod`. It is a list of documents, sources, applications, standards, manuals used for the **Validation** of the attribute value. | [-> Go to the Validation Method Schema Description](#validation-method-description) | + +#### Validation Method Description + +The `validationMethod` key contains the list of documents, sources, applications, standards used to validate the value of the attribute audited. + +The structure of each validation method is described in the following way (example): + +```json +{ + "@type": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "@id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" +} +``` + +| Field | Description | Syntax or Example | +| -- | -- | :- | +| `label`| It describes the "prefferedName" of the validation method, in order to be visualized in a more human-readable way | Catena-X PCF Rulebook Standard | +| `@id` | Makes reference to the Identification of the specific documentation used. It can be used for quick identification of the verification methods selected. | `CX-0029` | +| `uri` | Indicates the direct url or DID:Web to the "resource" or "document" used to validate the value. | `https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf` | +| `@type` | It describes the validation method type. There is a fixed list of possible values to be selected. | [Go to Validation Method Types Enumeration](#validation-method-types) | + +#### Validation Method Types + +The validation method types **MUST** be one of the following: + +| Type | Description | +| - | - | +| `Standard` | Makes reference to a recognized standard by an official entity/organization. | +| `Regulation` | Makes reference to an official regulation published or in draft state. | +| `Rulebook` | Makes reference to a document where calculation methods and guidelines are mentioned. | +| `Document` | Makes reference to a physical or electronic document with no specific type classification. | +| `Book` | Makes reference to a physical or electronic book. | +| `Application` | Makes reference to an application or API used to validate the field. | +| `Process` | Makes reference to a specific process defined to validate the field. | +| `Other` | Allows any other validation method type to be specified | + +> [!NOTE] +> +> The types mentioned here are an example of possible validation methods to be standardized in the future. In order to align in a common specification of validation methods types across the industry. + +### Attribute Verification Logic + +As describe in the [CSC Certification Chapter](#certified-snapshot-credential-certification) for performing the verification of the attributes the `Origin JSON Payload` **MUST** be available as well as the `Attribute Certification Record`. + +When doing the attribute verification the following logic **MUST** be followed (pseudocode): + +```js + +// If the proof is not verifiable the verifiable presentation integrity has been affected +if(not verifyProof(ATTRIBUTE_CERTIFICATION_RECORD)){ + fail; +} +// Generate the checksum of the original json paylaod credential. +CHECKSUM_JSON_PAYLOAD = SHA3512(ORIGIN_JSON_PAYLOAD) + +// Iterate in parallel over the different credentials contained in the list +<> for (CERTIFIED_SNAPSHOT_CREDENTIAL in ATTRIBUTE_CERTIFICATION_RECORD['verifiableCredential']) { + + // If verifiable Credential Proof is not Valid Fail + if(not verifyProof(CERTIFIED_SNAPSHOT_CREDENTIAL)){ + fail; + } + + // If the original payload checksum hash does not match the checksum in the credential + if(CERTIFIED_SNAPSHOT_CREDENTIAL['origin']['digestMultibase'] != CHECKSUM_JSON_PAYLOAD){ + fail; + } + + // Iterate in parallel over the attributes in the credential. + <> for(ATTRIBUTE in CERTIFIED_SNAPSHOT_CREDENTIAL['credentialSubject']['attributes']){ + + // Get the value from the path in the original payload with recursive function + originPayloadValue = getAttributeByPath(ORIGIN_JSON_PAYLOAD, ATTRIBUTE["@id"], "."); + + //Hash value of the origin payload file + hashedOriginValue = SHA3512(originPayloadValue); + + //If the hashes does not match the credential integrity of this attribute is broken + if(hashedOriginValue != ATTRIBUTE['digestMultibase']){ + fail; + } + } +} + +// Attribute verification is completed successfull! +success; +``` + +>[!TIP] +> +> If the specific attributes information and flaws want to be collected it can be done instead of failing the complete process. And the other credentials can be also verified. + + +### CSC Credential Types Definition + +The following list of types **MUST** be provided in the following order for the Certified Snapshot Credential: + +```json +"type": [ + "VerifiableCredential", + "CertifiedSnapshotCredential", + "<>" +] +``` + +The last field `<>` represents the aspect model semantic id name that was used for the attribute certification. + +Example for the Digital Product Passport: + +``` +urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport +``` + +The value can be found in the end of the semantic id, and shall be referenced: + +```json +"type": [ + "VerifiableCredential", + "CertifiedSnapshotCredential", + "DigitalProductPassport" +] +``` +>[!IMPORTANT] +> +> When creating any verifiable credentials is recommended to use a JSON-LD Playground for expanding the credential and verifying that all the attributes from the aspect model are referenced in a context. Otherwise, the JSON-LD verifiable credential is not valid. JSON-LD Playground Example: [https://json-ld.org/playground/](https://json-ld.org/playground/) + +### CSC Example + +Here is an example of how the Certified Snapshot Credential looks like for a Digital Product Passport aspect model attributes from the model version v5.0.0: + + +
+🚀 Expand Certified Snapshot Credential (CSC) Aspect Example + +```json +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://w3id.org/security/data-integrity/v2", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld" + ], + "type": [ + "VerifiableCredential", + "CertifiedSnapshotCredential", + "DigitalProductPassport" + ], + "credentialSubject": { + "attributes": [ + { + "validationMethod": [ + { + "@type": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "@id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ], + "@id": "sustainability.productFootprint.carbon[0].value", + "digestMultibase": "d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32" + } + ] + }, + "origin": { + "digestMultibase": "c118df3b7bf603a86bd79f03c692153bdb4212ab80d49c12154c92415ae83d6d59187d9ba5af9c4e40208f7d7b1d4c727de78cfbe51e768aae743723ee197374", + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "@type": "application/vc+ld+json" + }, + "id": "urn:uuid:281a8b98-933c-4d80-ad86-721f1adbe5b3", + "issuer": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T15:08:13Z", + "validUntil": "2024-12-25T15:08:13Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T15:08:13Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } +} +``` + +
+ +## Attribute Certification Record Schema + + +![AMR Schema](./resources/implementation/amr-document-credential.svg) + +The attribute certification record (AMR) is a Verifiable Presentation (VP) file that contains all the certificates (Verifiable Credentials) in the format of Certified Snapshot Credentials. These credentials can be issued from different auditors for different attributes in an Aspect Model Payload. + +The only requirement is that this attributes belong to a specific submodel referenced in the digital twin. It **MUST** be referenced in the AMR file in the field `origin`, from which file and submodel are the Certified Snapshot Credentials from. + +> [!NOTE] +> The Attribute Certification Record (AMR) makes reference to a specific file that contains all the certificates. For enableling the storage, access and management of these credentials, and `Attribute Certification Record` can be generated dynamically using an `Attribute Certification Registry (AMReg) Application` which will then generate the Verifiable Presentation Records dynamically. + +### ACR Credential Fields Definition + +The following list of types **MUST** be provided in the following order for the Attribute Certification Record: + +```json +"type": [ + "VerifiablePresentation", + "AttributeCertificationRecord" +] +``` + +Because it is a `Verificable Presentation` it **MUST** the `holder` field in the root level of the credential. +It is defined as a DID:Web for asserting the wallet validity, it **MUST** be defined as described in the W3C standards for Verifiable Credentials. It **MUST** be defined like the `issuer` field in the other credentials, example: + +```json +"holder": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS" +``` + +### ACR JSON-LD Context Schema + +Using the [simple-wallet](./simple-wallet/README.md) `/context` any SAMM Aspect Model JSON Schema can be converted into a fully functional JSON-LD Context Schema. + +In order to simply the usage of the context schema, it was uploaded to this github repository and can be accessed in its raw version at the credential context in the following way: + +|ACR @Context| [https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/acr/1.0.0/attributeCertificationRecord.jsonld](https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/acr/1.0.0/attributeCertificationRecord.jsonld) | +| - | - | + +### ACR Semantic + +The Attribute Certification Record uses the [Verifiable Presentation Data Model in Version 2.0](https://www.w3.org/TR/vc-data-model-2.0/) as an aspect model "parent" instance. It is in this case Diverse attributes are already modeled and have their JSON-LD `@context` defined in the following URL: [https://www.w3.org/ns/credentials/v2](https://www.w3.org/ns/credentials/v2). + +In order to detail the special attributes used in the Attribute Certification Record a SAMM Model was created specifying the fields. + +#### ACR SemanticId + +``` +urn:samm:io.catenax.dpp_verification.acr:1.0.0#AttributeCertificationRecord +``` + +The SAMM RDF file can be found in the following path: [dpp-verification/semantics/io.catenax.dpp_verification.acr/1.0.0/AttributeCertificationRecord.ttl](./semantics/io.catenax.dpp_verification.acr/1.0.0/AttributeCertificationRecord.ttl) + + +### ACR CSC Verifiable Credentials List + +In the field `verifiableCredential` there **MUST** be a list of Certified Snapshot Credentials. +The Certified Snapshot Credentials listed **MUST** be belonging and linked to the **SAME** aspect model. + +### ACR Submodel Reference + +|Field | Description | Syntax or Example | +| --- |-- | :-- | +| `@id` | Contains the URN of the id of the digital twin and the submodel id of the "certified" submodel aspect used for the fields described in the list of Certified Snaphshot Credentials.| `<< digitalTwinId> >> - << submodelId >>`
Example: `urn:uuid:f32fd936-4330-42d9-b230-8cc291cc4140-urn:uuid:cd1c0904-27e2-4ae2-8751-5c8c8e4b6812` | +| `semanticId` | Contains the semanticId of the aspect model "certified". It defines the syntax of the aspect model attribute certifications contained in the list of verifiable credentials. | `urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport` | + + + +>[!IMPORTANT] +> +> When creating any verifiable credentials is recommended to use a JSON-LD Playground for expanding the credential and verifying that all the attributes from the aspect model are referenced in a context. Otherwise, the JSON-LD verifiable credential is not valid. JSON-LD Playground Example: [https://json-ld.org/playground/](https://json-ld.org/playground/) + +### ACR Example + +
+🚀 Expand to see Attribute Certification Record (AMR) Example + +```json +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://w3id.org/security/data-integrity/v2", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/amr/1.0.0/attributeCertificationRecord.jsonld" + ], + "type": [ + "VerifiablePresentation", + "AttributeCertificationRecord" + ], + "verifiableCredential": [ + { + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://w3id.org/security/data-integrity/v2", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/main/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld" + ], + "type": [ + "VerifiableCredential", + "CertifiedSnapshotCredential", + "DigitalProductPassport" + ], + "credentialSubject": { + "attributes": [ + { + "validationMethod": [ + { + "@type": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "@id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ], + "@id": "sustainability.productFootprint.carbon[0].value", + "digestMultibase": "d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32" + } + ] + }, + "origin": { + "digestMultibase": "c118df3b7bf603a86bd79f03c692153bdb4212ab80d49c12154c92415ae83d6d59187d9ba5af9c4e40208f7d7b1d4c727de78cfbe51e768aae743723ee197374", + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "@type": "application/vc+ld+json" + }, + "id": "urn:uuid:281a8b98-933c-4d80-ad86-721f1adbe5b3", + "issuer": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T15:08:13Z", + "validUntil": "2024-12-25T15:08:13Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T15:08:13Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } + } + ], + "submodel": { + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "urn:uuid:f32fd936-4330-42d9-b230-8cc291cc4140-urn:uuid:cd1c0904-27e2-4ae2-8751-5c8c8e4b6812" + }, + "id": "urn:uuid:974d35dd-3e5e-4782-ad61-6c49fe294650", + "holder": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T15:08:13Z", + "validUntil": "2024-12-25T15:08:13Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T15:08:13Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } +} +``` + +
+ +# Technical Integration Design + +## Interfaces + +If implemented in its totality, the digital product pass application would act in the dpp-verification concept as the "Verification System" which is able to communicate with different systems, behind or not behind an EDC connector. Data would be exchange using the EDC however components like the Wallet could be accessed using the "DID Web" method, or the Semantic Hub using the central interface provided by the operator of the network. + +![Interfaces](./resources/technical/interfaces.svg) + +The role of the Semantic Hub would be to store and provide an API to retrieve public JSON-LD contexts for every model in the network. +For a first proof of concept implementation the schemas were provided in this GitHub repository, in the [schemas](./schemas/) section of the `dpp-verification` add-on. + +## Self-Testify Data Certification and Verification Implementation + +In the release R24.08 the self-testification using Certified Data Credentials was successfully implemented. Demonstrating the maturity of the concept and its plausibility. + +Here is a diagram that describes how the self-testification implementation works: + +![Context Implementation](./resources/implementation/cdc-context-blueprint.svg) + +>[!IMPORTANT] +> +> No *Aspect Management System* was provided because the scope of the Digital Product Pass Application is to be a data consumer application. +> Therefore, the registration and certification of assets was done manually. +> For more information for doing a manual registration and certification of Aspect Models like the Digital Product Pass consult the postman collection provider: [DPP-VERIFICATION POSTMAN COLLECTION](./resources/postman/Digital%20Product%20Pass%20Verification%20Add-on.postman_collection.json) +> + +The data provider **MUST** self-testify and create the Certified Data Credential as described in the [Certified Data Credential Schema](#certified-data-credential-schema). + +### Simple Wallet + +In order to ease the testing and to demonstrate the functionality of Verifiable Digital Product Passports using Catena-X as a data exchange motor and the DID:Web methods to find and retrieve the public keys, a minimum viable wallet was developed using `python`. + +The simple wallet documentation and details are all available in the `dpp-verification/simple-wallet` directory, here more information can be found: + +- [Simple Wallet + Docs](./simple-wallet/) +- [Simple Wallet Chart](./charts/simple-wallet/) + +The simple wallet is able to: + +- Issue Verifiable Credentials with the following specifications: + - With Verifiable Credentials Data Model Version 2.0 Schema + - JsonWebSignature2020 signatures, which are used in Gaia-X standards +- Verify Verifiable Credentials with the following functionality: + - Resolve DID:Web from credentials + - Get JsonWebKey2020 public keys from another wallet `did.json` interface. + - Check the expiration data and data integrity. +- Authenticate & Authorize via Business Partner Numbers (BPN) and API Keys. + +Additionally, in order to allow the certification of any aspect model standardized in Catena-X, it would be necessary to create valid JSON-LDs. + +Therefore, the `@context` from the credentials **MUST** be defined in the correct way so that the *JSON-LD* Verifiable Credential can be expanded. + +The `simple-wallet` component provides a solution to this problem, it has an API called `/context` that allows the transformation from JSON Schemas produced by the SAMM Aspect Modeler into valid JSON-LD context schemas. In this way any Catena-X Standardized in SAMM will be able to be "Certified" and included in a credential, so that the attributes keys remain in context (using the `semanticId`) when the JSON-LD is expanded. + +## Attribute Certification Blueprint + +As defined in the [Data Certification Process Chapter](#certification-processes) the data auditor and data provider will engage in a communication process, so that the data provider can send the data with the attributes to be "Validated" or "Certified" by the data auditor. + +### Attribute Certification Components + +For enabling the process of certifying attributes, different systems need to be used in order to automate the process. This is a context diagram that explains the interaction in between the systems: + +![Certification Context](./resources/implementation/csc-context-blueprint.svg) + +#### Attribute Certification Registry + +The **Attribute Certification Registry** (ACReg), is an Aspect Management System which initiates the process and requests the certification of specific aspect models for data auditors using the `EDC Push Notification` functionality. The registry is also responsible for managing the storage, issuance and presentation of Attribute Certification Records (ACR) when called by an EDC component. + +#### Attribute Certification System + +The **Attribute Certification System** provides the auditor with the capability of receiving and processing aspect audit requests. As well as providing the auditor the possibility to select and perform the data validation of specific attributes an aspect model. It is responsible for + +### Attribute Certification Journey + +For the certification journey of specific attributes of a Digital Product Pass or any other JSON Aspect Model payload the following process **MAY** be followed: + +![Certification Journey Flow](./resources/implementation/attribute-certification-journey.svg) + +## Complete Component Interaction Context + +This is the complete component interaction in detail. It shows how Data Consumer, Data Providers and Data Auditor interact: + +![Complete Context Interaction](./resources/implementation/complete-csc-context-blueprint.svg) + +## Digital Twin Configuration + +The Digital Twins are a critical component of this Catena-X Data Verification Concept. They reference where the data and which EDC Assets should be negotiated in order to retrieve data from the EDC Dataplane Proxy. Therefore, the definition of a structure that can be used to differentiate between submodels in a Part Digital Twin is essential. + +Following the [IDTA standard of AAS 3.0](https://industrialdigitaltwin.org/wp-content/uploads/2023/04/IDTA-01002-3-0_SpecificationAssetAdministrationShell_Part2_API.pdf) the specification of the Digital Twin and Submodels below are supported in the current version [v0.5.0] of the [Digital Twin Registry Application](https://github.com/eclipse-tractusx/sldt-digital-twin-registry/releases/tag/v0.5.0). + +> [!TIP] +> +> Revise if the latest version of the Digital Twin Registry is compliant with the following SemanticId annotations: `Entity`, `DataElement`, `Submodel`, `Operation`. + +According to the standards of the IDTA, the semanticId defines the 'content type' and context from which type of data will be retrieved when the endpoint of a submodel is called. It supports multiple keys that specify the data structure to be retrieved. + +For referencing if a submodel contains verifiable credentials or verifiable presentations wrapping the submodel aspect model payload the following fields in the `semanticId` field **MUST** be used: + +| Type | Description | Example | +| --- | ----- | -- | +| `Entity` | Indicates in the highest abstraction level possible in which format is the submodel contained in the twin. In this concept the entity makes reference to which W3C credential/presentation data model is used. | `https://www.w3.org/ns/credentials/v2` | +| `DataElement` | Indicate which type of verifiable credential/verifiable presentation is used. In this concept it makes reference to the semanticId of types of credentials specified. |`urn:samm:io.catenax.dpp_verification.cdc:1.0.0#CertifiedDataCredential` | +| `Submodel` | Required by the Catena-X Standards to reference the Aspect Model type and structure used. It identifies which aspect model are we retrieving, inside or outside a verifiable credential. | `urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport` | +| `Operation` | In order to support and identify different signature types the "operation" semantic type key is used. It includes the context for specific signature types. | `https://w3c.github.io/vc-jws-2020/contexts/v1/` | + +For the different submodels different structures and values are used to identify the different aspects and content-types. All the different fields much match to indicate that the submodel data we are retrieving is the corresponding one. + +> [!NOTE] +> Here you can find a complete digital twin example for the Certified Data Credential for a battery: [CDC Digital Twin Example](./resources/test-payloads/cdcDigitalTwin.json) + +### Certified Data Credential Submodel + +For the CDC submodel the following structure **MUST** be followed: + +### CDC Semantic ID Keys + +| Type | Value | Description | +| --- | -- | -- | +| `Entity` | `https://www.w3.org/ns/credentials/v2` | Verifiable Credential Version | +| `DataElement` | `urn:samm:io.catenax.dpp_verification.cdc:1.0.0#CertifiedDataCredential` | Certified Data Credential Version | +| `Submodel` | `urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport` | Version of the Aspect Model which is contained in the `credentialSubject` field. | +| `Operation` | `https://w3c.github.io/vc-jws-2020/contexts/v1/` | The version and context of the signature type used in the credential | + +### CDC ID Short + +In the case of the Certified Data Credential, the idShort remains the same as the one required by every aspect standarization. + +In case of the Digital Product Passport aspect, the standard [CX-0143](https://catenax-ev.github.io/docs/standards/overview) the idShort to be used is the following: `digitalProductPass`. + +Therefore, every aspect model used **MUST** follow the idShort defined in the corresponding standard. + +### CDC Submodel Example + +```json +{ + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https:///BPNL000000000000/api/public/data/urn:uuid:a377ff49-6bde-4215-8d38-b8f02c991a35", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://dpp.int.demo.catena-x.net/BPNL000000000000", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "digitalProductPass", + "id": "urn:uuid:a377ff49-6bde-4215-8d38-b8f02c991a35", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "Entity", + "value": "https://www.w3.org/ns/credentials/v2" + }, + { + "type": "DataElement", + "value": "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#CertifiedDataCredential" + }, + { + "type": "Submodel", + "value": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport" + }, + { + "type": "Operation", + "value": "https://w3c.github.io/vc-jws-2020/contexts/v1/" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Verifiable Digital Product Passport Submodel" + } + ], + "displayName": [] +} +``` + +### Attribute Certification Record Submodel + +The Attribute Certification Record submodel contains the reference to the verifiable presentation with the different attribute verification Certified Snapshot Credentials(CSC). + +For the AMR submodel the following structure **MUST** be followed. + +### AMR Semantic ID Keys + +| Type | Value | Description | +| --- | -- | -- | +| `Entity` | `https://www.w3.org/ns/credentials/v2` | Verifiable Credential Version | +| `DataElement` | `urn:samm:io.catenax.dpp_verification.amr:1.0.0#AttributeCertificationRecord` | Attribute Certification Record Version | +| `Submodel` | `urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport` | The semanticId from the semantic model attributes certified in the CSC contained in the `verifiableCredential` field in the Verifiable Presentation. | +| `Operation` | `https://w3c.github.io/vc-jws-2020/contexts/v1/` | The version and context of the signature type used in the credential | + +### AMR ID Short + +For easing the identification of the Attribute Verification the following structure of ID short was chosen to link the submodels inside a digital twin. + +Since every aspect model has a standardized idShort the following structure was chosen for referencing the submodel that had their attributes certified: + +``` +Verification +``` + +**Examples**: + +- For Digital Product Passports use: `digitalProductPassVerification` +- For Battery Passports use: `batteryPassVerification` + +By concatenating the "Verification" sufix the consumer applications are able to identify to each idShort in the digital twin submodel list. For every standardized aspect model, an idShort **MUST** be provided. This same idShort shall then be provided as a prefix. + + +### AMR Submodel Example + +```json +{ + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https:///BPNL000000000000/api/public/data/urn:uuid:a377ff49-6bde-4215-8d38-b8f02c991a35", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://dpp.int.demo.catena-x.net/BPNL000000000000", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "digitalProductPassVerification", + "id": "0f861bc8-2ef4-41dc-8fc6-b2a8ef365694", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "Entity", + "value": "https://www.w3.org/ns/credentials/v2" + }, + { + "type": "DataElement", + "value": "urn:samm:io.catenax.dpp_verification.amr:1.0.0#AttributeCertificationRecord" + }, + { + "type": "Submodel", + "value": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport" + }, + { + "type": "Operation", + "value": "https://w3c.github.io/vc-jws-2020/contexts/v1/" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Attributes from Digital Product Passport Submodel" + } + ], + "displayName": [] +} +``` + +# Verification Implementation in the Digital Product Pass + +In the R24.08, the `dpp-backend` component received a [new add-on package](../dpp-backend/digitalproductpass/src/main/java/org/eclipse/tractusx/digitalproductpass/verification/): + +```java +package org.eclipse.tractusx.digitalproductpass.verification +``` + +As described at the beginning of this documentation, one of the [objectives](#objectives) was to implement and provide a working PoC using the Digital Product Pass Application as a "Verifier" application. + +For the first implementation was selected the [Certified Data Credential](#certified-data-credential-certification) use case. Where a Data Provider **SELF-TESTIFIES** its own data using a wallet. + +## Challenges + +When implementing the Digital Product Pass Verification PoC the following challanges were discovered and solved: + + +| Challenge | Description | Solution | +| --- | --- | --- | +| **First Implementation and Data Verification Concept in Catena-X** | +| **The Managed Identity Wallet Component is not Ready** | The MIW Wallet is not ready for signing Aspect Model Verifiable Credentials. And it is currently not decentraly available for each party to host. It is currently just hosted by the data space operator. It is designed to host the "member" credentials and enable the EDC communication with SSI. | Design and Implement a MVP Wallet. There was developed a [simple-wallet](./simple-wallet/) component for issuing and verifying the credentials, imitating the MIW functionality and methods. | +| **There are no JSON-LD contexts for the standardized SAMM Models** | Currently there is no open-source component that transforms JSON Schemas into JSON-LD Contexts. This blocks the credentials to be included in the JSON-LD documents, because the attributes are not in context. | As a solution to this problem an **'adapter'** was developed in the wallet an [add-on that convert SAMM Models JSON Schemas into valid JSON-LD contexts](./simple-wallet/passport/sammSchemaParser.py). In this way any Aspect Model Payload can be referenced in a Verifiable Credential. By calling the `/context` API any JSON Schema can be converted. | +| + +By developing this `adapters` the Verification Concept could be proofed and demontrated using the Catena-X network. + +## Sequence Diagram + +For a better understanding of the implementation here is the sequence diagram of the implementation done for the Digital Product Pass Application. + +![Sequence Diagram](./resources/implementation/implementation-sequence.svg) + +>[!IMPORTANT] +> In this diagram was abstracted: several details and API calls that are made by the backend to seach and negotiate contracts, lookup for digital twin registries + EDCs and communications between the `dpp-frontend` and `dpp-backend` components. +> It was resumed in order to provide a more simple view about the verification process. +> For more information about the backend data retrieval process, consult the [Arc42](../docs/architecture/Arc42.md) documentation, or the [Data Retrieval Guide](../docs/data-retrieval/README.md) for a more generic approach. +> +It starts with a user searching in the `dpp-frontend` component for a specific passport. + +## API Verification Backend Specification + +In the backend there was enabled an API for refreshing the verification status from the frontend side. + +| API | Description | Request | Response | +|-- | -- | -- | -- | +| `/api/verification/verify` | This API refreshes the verification of a credential in the frontned. Allowing the user to check if the data visualized is verified. It requires the Frontend Authorization Token to be accessed. | [Certified Data Credential (CDC)](#cdc-example) | 200 & {data=true} -> Verified
403 & {data=false} -> Not Verified | + +## Verification Status and Loading + +When the contract and policy for the asset are agreed by the user, a verification step will be added dynamically to the loading screen when the process status `verifiable-aspect-found` is found, and if the auto verification is enabled it will be automatically trigger the verification process. If is not verified the backend status will be `verification-failed` and if the verification is successful the backend status will be `verification-completed`: + +![loading](./resources/screenshots/verification-loading-success.png) + +In case the verification fails, a red cross will be displayed in red indicating it failed. However, the data will be visualized in any case. + +For the `/api/status/` API at the `dpp-backend` was added a new section for verification metadata. When `vc` is enabled then a verifiable credential will be returned. This is done by checking the [digital twin submodel id information](#digital-twin-configuration). If the credential was verified, the `verified` flag will be present, and in case it failed, and `error` flag will be presented with the error message in string format. + + +```json +"verification" : { + "vc" : true, + "verified" : true, + "owner" : "BPNL0073928UJ879", + "issuer" : "BPNL00000000W3BS", + "wallet" : "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "issuedAt" : "2024-07-19T07:44:04Z", + "expiresAt" : "2025-01-03T07:44:04Z", + "proof" : { + "type" : "JsonWebSignature2020", + "proofPurpose" : "assertionMethod", + "verificationMethod" : "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created" : "2024-07-19T07:44:04Z", + "jws" : "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..QyuPxWffIIzypt7Zoz_CB28XzZ3TA9SqghVaucLhYtzNSx4eW7C8D65BxugNIr2XyxVtfL-eNfD4tKsm0M7vAA" + } +} +``` + +## Frontend Verification Add-on User Manual + +In the `dpp-frontend` component was implemented a status when the passports are being visualized in the UI: + +| Status | Description | Color | +| --- | -- | -- | +| Unverifiable | The Digital Product Pass aspect visualized is **NOT** a verifiable credential. So it is impossible to be verified | Gray | +| Verified | The Digital Product Pass aspect visualized **IS** a verifiable credential, and it was able to be verified automatically or when the refresh verification was pressed | Green | +| Not Verified | The Digital Product Pass aspect visualized **IS** a verifiable credential, however, it was not able to be verified automatically or when the refresh verification was pressed. An error will be displayed indicating the reason. | Red | + +### [Verified] Verification Successful + +![verication is correct] + +In case the verification was successful the Digital Product Pass aspect will be displayed in the following way: + +![success-dpp](./resources/screenshots/verified-dpp-ui.png) + +In the right corner the **Verified** status is displayed, and when the button is pressed the following dialog is displayed: + +![success dialog](./resources/screenshots/verification-proof.png) + +And if the user **CLICKS** in the **REFRESH VERIFICATION** button, a message will be displayed and the lock will turn green: + +![success dialog 2](./resources/screenshots/verification-button-clicked.png) + +The details displayed allow the user to visualize who is the `owner/holder` from this credential and who is the `issuer` from the credential. It displays the wallet DID with the `BPN` of the issuer party. It will also display the `issued date` and the `expiration date` allowing the user to know when it will expire. + +For additional metadata information the user can also see the `proof` with the JWS format, and also which type of signature and the `method` used for verifying it. + +If the user click in the wallet link, a link to the [universal did resolver](https://dev.uniresolver.io/) will be triggered, proofing that the wallet exists and the verification is correct. + +![Universal DID Resolver](./resources/screenshots/verification-wallet-details.png) + +### [NOT VERIFIED] Verification Failed + +During the loading, if an automatic verification is done the following error will be displayed in the steps: +![verification-failed-step](./resources/screenshots/verification-failed-step.png) + +And once loaded in case the verification failed in the right corner will be displayed a red button: + +![verification-failed](./resources/screenshots/verification-failed.png) + +In this example the reason why it has failed is that a field has changed value. In this case the `version field` which if you compare, was `1.0.0` and now is `1.0.1`. + +When visualizing this error button the user can see that the verification has failed, and the data integrity has been affected. + +By clicking in the button the error message with the reason can be visualized: + +![verification-failed-error](./resources/screenshots/verification-failed-details.png) + +### [UNVERIFIED] Verification Not Supported + +In case the unverified status is displayed the aspect verification is not supported, since it is not a verifiable credential. + +![unverified](./resources/screenshots/unverified-data.png) + + +## Add-on Charts Configurations + +When configuring the charts for the verification are the following: + +```yaml +backend: + verification: + enabled: true + autoVerify: true + wallet: + url: "https://" + apiKey: "" + endpoints: + health: "/health" + verify: "/verify" +``` + +In case the verification is disabled, all the verification steps will be disabled, and the asset even if it is a verifiable credential will be or `unverifiable` or `not verified`. + +The `autoVerify` flag if enabled will trigger the verification automatically when the passport is retrieved. Otherwise, the only way for having the verification done is by clicking the button of refresh verification in the frontend. + +For configuring the add-on at the backend if the add-on is enabled, a wallet **MUST** be specified. In this case the backend is designed and tested to work with a [simple-wallet](./simple-wallet/) instance. The simple wallet **MUST** be configured just for the backend application as a consumer wallet. + +The path to the endpoints is defined by default for the `health` API, that will be called on startup to check if the wallet is accessible, and the `verify` that will be called to verify the credentials. + +Also, the wallet requires a 'API Key' it must match the API key configured for the `backend.edc.participantId` field, since the BPN **MUST** be the same as the one used in the EDC Consumer. + +# Additional Information + +## Linking Digital Twins in Type Level + +During the [Previous Investigation](#previous-investigation) phase several meetings were held with the Industry Core KIT team for defining how to link digital twins in type level. + +The concept of linking digital twins in type level is important when it comes to certifying products. Use cases like the product carbon footprint require digital twins to be placed in instance level instances, but when it comes to the certification of several products from the same type, is more likable to perform the certification in digital twins at type level. + +A concept was proposed to the Industry Core KIT for linking the digital twins from Type to Type level, Instance to Type and Vice Versa. + +### Cardinality + +As specified the Instance Level must have at least one Type Level digital twin and will also belong to just one digital twin in type level, and a type level digital twin can or can not have many instance level digital twins. + +![Cardinality](./resources/previous-investigation/Cardinality.svg) + +In the same way type level digital twins can also have other type level digital twins which specify even more the type. + +Example: + +I produce a Car that was "Engineered" in Germany with the different components and required material etc.... + +However, my Car "Model" will be produced by three different companies in three different countries. Therefore, creating the need to have another type for my product. + +This both Cars will generate the following digital twins: + +![Type Cardinality](./resources/previous-investigation/type-relationships.svg) + +### Instance to Type Level and Vice Versa + +When it comes to link digital twins from instance to type level, the digital twin can be searched by the following `specificAssetIds`: + +| Specific Asset ID | Description | Example | +| --- | ---- | --- | +| `manufacturerId` | Indicates the Business Partner Number (BPN) of the manufacturer | BPNL000000000012 | +| `manufacturerPartId`| Indicate the ID of the part being manufactured from type to instance level | MPI754-544 | +| `digitalTwinType` | Indicates the type of the digital twin. | "PartInstance" or "PartType" | + +By searching for the three specific asset assets the type level digital twin from an instance digital twin can be found. By searching with `digitalTwinType`=`partType`. + +For finding the other digital twins a reverse search can be done from type to instance level by applying the key `digitalTwinType`=`partInstance` in combination with the other keys provided in the table above. + +> [!TIP] +> +> For finding the most updated information and definition of the Industry Core guidelines in Catena-X consult the latest version of the [Industry Core KIT](https://eclipse-tractusx.github.io/docs-kits/kits/Industry%20Core%20Kit/Business%20View%20Industry%20Core%20Kit) in the Eclipse Tractus-X webpage. + +### Type Level to Type Level + +For linking in type level there exists no concept yet available. Therefore, a concept for creating a `singleLevelTypeLinkingAspect` aspect was proposed. +In this case we can reference the linking in between types, when there is the case that I want to know who is my type -1 or +1. + +![Link Type Digital Twins](./resources/previous-investigation/link-type-digital-twins.svg) + +The linking of digital twins from type level could be optimized if an aspect is created and registered as a submodel. In this way the search time can be reduced, and type level digital twins can be found without high complexity. The aspect would look similar to this one: + +```json +{ + "catenaXId": "urn:uuid:055c1128-0375-47c8-98de-7cf802c3241d", + "parentTypes": [ + { + "catenaXId": "urn:uuid:00ab4fd3-baa5-4056-b1f8-a0469c0e550c", + "businessPartner": "BPNL500968945NXY", + "createdOn" : "2022-02-03T14:48:54.709Z", + "lastModifiedOn" : "2022-02-03T14:48:54.709Z", + "identifiers": [ + { + "key": "manufacturerPartId", + "value": "T12A5312X56" + }, + { + "key": "partTypeId", + "value": "KJ-4521D34" + } + ] + + } + ], + "childTypes": [ + { + "catenaXId": "urn:uuid:b61633e2-3e2d-4840-9f67-528e76f0b5ba", + "businessPartner": "BPNL500968945NXY", + "createdOn" : "2022-02-03T14:48:54.709Z", + "lastModifiedOn" : "2022-02-03T14:48:54.709Z", + "identifiers": [ + { + "key": "manufacturerPartId", + "value": "Y45A1Z265A4" + }, + { + "key": "partTypeId", + "value": "GH-SA5212SHS" + } + ] + + } + ] +} +``` + +By referencing the father and the child type digital twins the search for the different digital twins in the Digital Twin Registry is easier. It requires just one query for moving from type to type digital twin, and permits a **MANY to MANY** approach. In the following diagram we can visualize the exchange and movement from type to type level digital twins: + +![Type to Type Movement](./resources/previous-investigation/sequence-linking-types.svg) + +# References + +The following references were used as inspiration for understanding more how product credentials are done in the market. Is also included references to components in Tractus-X that were used to understand on how the different components behave in the network. + +No content with copyright was copied. All the information used as reference in this documentation is open source, is available for the public or released under creative commons license. + +| Name | Author | Date | Link | +| :------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Data Integrity Demonstrator (TRS) in Supply Chain | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/boschresearch/cx-data-integrity-demonstrator | +| ID Union Data Integrity Demonstrator | [Matthias Binzer](https://github.com/matgnt) - Bosch | 2023 | https://github.com/IDunion/i40-examples/tree/main/nameplate-vc | +| Digital Product Passport Verifiable Credential Demo | Spherity | 2023 | https://acme.dpp.spherity.com/ | +| Verifiable Credentials Data Model v1.1/v2.0 | W3C | 2022 - 2024 | https://www.w3.org/TR/vc-data-model/ https://www.w3.org/TR/vc-data-model-2.0/ | +| Tractus-X SSI Documentation | Catena-X Core-ART Architects & Eclipse Tractus-X Contributors | 2023 | https://github.com/eclipse-tractusx/ssi-docu/tree/main/docs/architecture/cx-3-2 | +| Ed25519: high-speed high-security signatures | Daniel J. Bernstein, University of Illinois at Chicago Niels Duif, Technische Universiteit Eindhoven Tanja Lange, TechnischeUniversiteit Eindhoven Peter Schwabe,National Taiwan UniversityBo-Yin Yang,Academia Sinica | 2017 | https://ed25519.cr.yp.to/ | +| Digital Product Pass Documentation and Arc42 | [Mathias Brunkow Moser](https://github.com/matbmoser) & [Muhammad Saud Khan](https://github.com/saudkhan116) - CGI - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/digital-product-pass/ https://github.com/eclipse-tractusx/digital-product-pass/blob/main/docs/arc42/Arc42.md | +| Managed Identity Wallets | Tractus-X Contributors | 2022-2024 | https://github.com/eclipse-tractusx/managed-identity-wallet | +| Digital Twin Registry | Bosch - Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/sldt-digital-twin-registry | +| Tractus-X EDC | Tractus-X Contributors | 2021-2024 | https://github.com/eclipse-tractusx/tractusx-edc | +| Eclipse Connector | Eclipse Foundation Contributors | 2021-2024 | https://github.com/eclipse-edc/Connector | +| Universal Resolver for DIDs | Universal Resolver | 2017-2024 | https://dev.uniresolver.io/ https://github.com/decentralized-identity/universal-resolver | +| Decentralized Identifiers (DIDs) v1.0 | W3C | 2022 | https://www.w3.org/TR/did-core/ | +| Decentralized Identifier Resolution (DID Resolution) v0.3 | W3C | 2023 | https://w3c-ccg.github.io/did-resolution/ | +| Self-Sovereign Identity - Decentralized Digital Identity and Verifiable Credentials v2 | Manning Publications: manning.com | 2020 | https://livebook.manning.com/book/self-sovereign-identity/chapter-8/v-2/7 | +| EECC Verifier for Verifiable Credentials | Free Software Foundation, Inc (https://fsf.org) | 2022-2024 | https://github.com/european-epc-competence-center/vc-verifier [ssi.eecc.de/verifier](ssi.eecc.de/verifier/) | +| Identity Resolution Verification | European EPC Competence Center GmbHhttps://eecc.info/ | 2022-2024 | https://id.eecc.de/ | +| SuplyTree - The Inter-company Tamper-evidence Protocol for Supply Chain Traceability | Matthias Guenther, Robert Bosch GmbH, Economy of Things Dominie Woerner, Robert Bosch Switzerland, Economy of Things | 2023 | | | A Beginners Guide to Decentralized Identifiers (DIDs) | Amarachi Johnson-Ubah - Medium | 2022 | https://medium.com/veramo/a-beginners-guide-to-decentralized-identifiers-dids-5e842398e82c#:~:text=A%20decentralized%20identifier%20is%20an,the%20signatures%20of%20that%20subject | | Schema Organization for JSON-LD | W3C | 2021-2024 | https://schema.org/ | +| IDTA AAS 3.0 Standard | IDTA | April 2023 | https://industrialdigitaltwin.org/wp-content/uploads/2023/04/IDTA-01002-3-0_SpecificationAssetAdministrationShell_Part2_API.pdf | +| SHA-3 Standard | U.S. Federal Infromation Technology Laboratory | August 2015 | https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf | + # Special Thanks -We would like to thank [Matthias Binzer](https://github.com/matgnt) for contributing in the refactoring of the initial concept by giving some insights on how he has done the Supply Chain data integrity concept using Verifiable Credentials (TRS) Data Integrity Demonstrator. He supported us on finding a way and giving the hints for maintaining selective disclosure when it comes to verify specific attributes from a aspect. + +We would like to thank [Matthias Binzer](https://github.com/matgnt) for contributing in the refactoring of the initial concept by giving some insights on how he has done the Supply Chain data integrity concept using Verifiable Credentials (TRS) Data Integrity Demonstrator. He supported us on finding a way and giving the hints for maintaining selective disclosure when it comes to verify specific attributes from an aspect. We also thank for all the Platform Capability Architects for their disposition for reviewing and supporting the concept from an architecture perspective. We thank the Wallet Catena-X Experts for the time they took review the concept and for the feedback that was given. -We thank the managed identify wallets product owner for the support and availability for answering questions which were relevant to the adaptation of the concept to the architecture. +Furthermore, we thank the managed identify wallets product owner for the support and availability for answering questions which were relevant to the adaptation of the concept to the architecture. Last but not least a special thanks for all the Tractus-X and Catena-X Stakeholders that participated in the elaboration and review of this concept. @@ -911,7 +2340,7 @@ explanation of this Certification and Verification Concept. | CDC | Certified Data Credential | | DTR | Digital Twin Registry | | dDTR | Decentralized Digital Twin Registry | -| DID | Decentral Identifier | +| DID | Decentralized Identifier | | DPP | Digital Product Passport | | DT | Digital Twin | | EDC | Eclipse Data Space Connector | @@ -927,6 +2356,8 @@ explanation of this Certification and Verification Concept. | TTL | Terse RDF Triple Language | | VC | Verifiable Credential | | VP | Verifiable Presentation | +| AMReg | Attribute Certification Registry | +| AMR | Attribute Certification Record | | W3C | World Wide Web Consortium | ## NOTICE diff --git a/dpp-verification/resources/implementation/amr-document-credential.svg b/dpp-verification/resources/implementation/amr-document-credential.svg new file mode 100644 index 000000000..b28409157 --- /dev/null +++ b/dpp-verification/resources/implementation/amr-document-credential.svg @@ -0,0 +1,4 @@ + + + +
Proof and Verification Methods
Metadata
Attribute Certification Record
Verifiable Presentation Document
Certified Snapshot Credential for Attr1 Audited by Company A
Certified Snapshot Credential for Attr2 Audited by Company B
....
submodel: <<Submodel Metadata>>
@id: <<Submodel Id>>
semanticId: <<Semantic Id from Submodel>>
verifiableCredential: <<List of Verifiable Credentials>>
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/amr-document-credential.svg.license b/dpp-verification/resources/implementation/amr-document-credential.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/amr-document-credential.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/attribute-certification-journey.svg b/dpp-verification/resources/implementation/attribute-certification-journey.svg new file mode 100644 index 000000000..2d800cbe8 --- /dev/null +++ b/dpp-verification/resources/implementation/attribute-certification-journey.svg @@ -0,0 +1,4 @@ + + + +
Input
<<Aspect JSON Payload>>
Digital Product Passport
Attribute 1
Attribute 2
Attribute 3
....
Output


Input
Attribute 1
Attribute 1 Hashed Value
Attribute 1 JSON Path
List of Validation Methods
Attribute 1
Actions:

1º- Select Attributes 1 & 2
2º- Validate Values Against Validation Methods (Standards, Rulebooks, etc...)
3º- Hash Attributes 1 & 2 Values
4º- Issue CSC Credential


<<Aspect Certification System>>
Attribute Certification System


Attribute 1
Attribute 2 Hashed Value
Attribute 2 JSON Path
List of Validation Methods
Attribute 2

<<Attribute Certification Document>>
Certified Snapshot Credential 1
Auditor Digital Signature
Data Auditor A
<<Wallet System>>
Wallet
Sign
Data Provider A
Output



<<Aspect Management System>>
Attribute Certification Registry

<<Verifiable Presentation>>
Attribute Certification Record
Data Provider Digital Signature
Sign
<<Wallet System>>
Wallet
....
Attribute 3 Hashed Proof
CSC 2 Certified by Auditor B
CSC 1 Certified by Auditor A
Attribute 1 Hashed Proof
Attribute 2 Hashed Proof
Data Provider A
Actions:

1º- Identify the submodel of the "certified" aspect model
2º- Create or Add the CSC to an Attribute Certification Record Document which is linked to the corresponding submodel.
3º- Issue and Store the Certification Record with the input CSC inside.

\ No newline at end of file diff --git a/dpp-verification/resources/implementation/attribute-certification-journey.svg copy.license b/dpp-verification/resources/implementation/attribute-certification-journey.svg copy.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/attribute-certification-journey.svg copy.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/cdc-context-blueprint.svg b/dpp-verification/resources/implementation/cdc-context-blueprint.svg new file mode 100644 index 000000000..8e9a7f191 --- /dev/null +++ b/dpp-verification/resources/implementation/cdc-context-blueprint.svg @@ -0,0 +1,4 @@ + + + +
Data Provider
<<Part Search System>>
Digital Twin Registry
Issue the Certified Data Credential
(CDC)
Store
Certified Data 
Credential
(CDC)
<<Not Implemented in R24.08>>
Aspect Management System
Retrieve 
Aspect Models Payloads
<<Gateway>>
Eclipse Dataspace Connector
Lookup and Retrieve
Digital Twins
Register 
Submodel Endpoint
 in Digital Twin
<<Manage>>
Data
Provider
Admin
<<Wallet System>>
Simple Wallet
Create CDC
from DPP Aspect
<<Static Storage System>>
Data Service
Data Consumer
<<Aspect Verification System>>
Digital Product Pass
<<Wallet System>>
Simple Wallet
<<Gateway>>
Eclipse Dataspace Connector
Verification
Results
Verify
Aspect
Aspect 
& Digital Twin
Get Aspect
& Digital Twin
Send Data Through Proxy
Text
Request Catalog, Negotiate 
& Use EDC Data Plane Proxy
Resolve DID Web and Get Public Key
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/cdc-context-blueprint.svg.license b/dpp-verification/resources/implementation/cdc-context-blueprint.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/cdc-context-blueprint.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/cdc-document-credential.svg b/dpp-verification/resources/implementation/cdc-document-credential.svg new file mode 100644 index 000000000..857b805ff --- /dev/null +++ b/dpp-verification/resources/implementation/cdc-document-credential.svg @@ -0,0 +1,4 @@ + + + +

Proof and Verification Methods
Metadata
Certified Data Credential
Verifiable Credential Document
credentialSubject
DigitalProductPassport: <<SemanticId Aspect Key>>
parent: <<Parent Version Metadata>>
@id: <<DID Web or link to the specific parent version>>
digestMultibase: <<Hash Checksum from Parent Document>
Digital Product Passport Instance JSON 
Payload Content
SemanticId
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/cdc-document-credential.svg.license b/dpp-verification/resources/implementation/cdc-document-credential.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/cdc-document-credential.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/complete-csc-context-blueprint.svg b/dpp-verification/resources/implementation/complete-csc-context-blueprint.svg new file mode 100644 index 000000000..db7e742ad --- /dev/null +++ b/dpp-verification/resources/implementation/complete-csc-context-blueprint.svg @@ -0,0 +1,4 @@ + + + +
Data Provider
<<Part Search System>>
Digital Twin Registry
Present Attribute Certification Record
as Verifiable Presentation 
(AMR)
Issue Attribute Certification Record
as Verifiable Presentation 
(AMR)
Store
 Aspect Model 
Payloads
<<Aspect Management System>>
Attribute Certification Registry
Retrieve 
Aspect Models Payloads
<<Gateway>>
Eclipse Dataspace Connector
Lookup and Retrieve
Digital Twins
Receive EDC Push Notification
with Certified Snapshot Credential 
(CSC)
Register 
Submodel Endpoint
 in Digital Twin
<<Manage>>
Data
Provider
Admin
<<Wallet System>>
Simple Wallet
Store 
CSC in AMR
<<Static Storage System>>
Data Service
Data Auditor
Receive EDC Push Notification
with Metadata + Data about Certification
<<Gateway>>
Eclipse Dataspace Connector
Send 
Certified Snapshot Credential
(CSC)
Issue Certified Snapshot Credential
as Verifiable Credential (CSC)
<<Aspect Certification System>>
Attribute Certification System
<<Wallet System>>
Simple Wallet
<<Certify>>
Data
Auditor
Expert
Create CSC 
from DPP
Send Certification
Metadata & Data 
Send 
Attribute Certification 
Data
Data Consumer
<<Aspect Verification System>>
Digital Product Pass
<<Wallet System>>
Simple Wallet
<<Gateway>>
Eclipse Dataspace Connector
Verification
Results
Verify
Aspect
Aspect 
& Digital Twin
Get Aspect
& Digital Twin
Send Data Through Proxy
Text
Request Catalog, Negotiate 
& Use EDC Data Plane Proxy
Resolve DID Web and Get Public Key
Resolve DID Web
and Get Public Key
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/complete-csc-context-blueprint.svg.license b/dpp-verification/resources/implementation/complete-csc-context-blueprint.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/complete-csc-context-blueprint.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/context-diagram.svg b/dpp-verification/resources/implementation/context-diagram.svg index dc6bc3796..0e4800a1f 100644 --- a/dpp-verification/resources/implementation/context-diagram.svg +++ b/dpp-verification/resources/implementation/context-diagram.svg @@ -1,4 +1,4 @@ -
Authorization & 
Authentication
Find MIW or Operator Wallet
Authorization 
& Authentication
Find MIW or Operator Wallet
Find MIW or Operator Wallet
Authorization &
Authentication
       Data Consumer
Passport 
ID
Admin/System
Verify 
Credential
Request and 
Receive VC
<<Verification System>>
Digital Product Pass
Simple Wallet
EDC
       Data Provider
Register 
Digital Twin
Store 
VC
Admin or
<<Certification System>>
Proxy
Proxy
EDC
Simple Wallet
Digital Twin Registry
Data Service
Generate Credential Context
+ Issue Verifiable Credential 
(VC)
Data Exchange via DCP
       Catena-X Operator
MIW or Operator Wallet
BDRS
       Data Auditor
Generate Credential Context
+ Issue Verifiable Credential 
(VC)
Admin or
<<Certification System>>
EDC
Simple Wallet
Request, 
Receive and Send Data
/<bpn>/did.json
Get Public Key with DID Web
/<bpn>/did.json
Get Public Key with DID Web

Digital Product Pass Verification Add-on Context

\ No newline at end of file +
Authorization & 
Authentication
Find MIW or Operator Wallet
Authorization 
& Authentication
Find MIW or Operator Wallet
Find MIW or Operator Wallet
Authorization &
Authentication
       Data Consumer
Passport 
ID
Admin/System
Verify 
Credential
Request and 
Receive VC
<<Verification System>>
Digital Product Pass
Simple Wallet
EDC
       Data Provider
Register 
Digital Twin
Store 
VC
Admin or
<<Certification System>>
Proxy
Proxy
EDC
Simple Wallet
Digital Twin Registry
Data Service
Generate Credential Context
+ Issue Verifiable Credential 
(CDC)
Data Exchange via DCP
       Catena-X Operator
MIW or Operator Wallet
BDRS
       Data Auditor
Generate Credential Context
+ Issue Snapshot 
Verifiable Credential 
(CSC)
Admin or
<<Certification System>>
EDC
Simple Wallet
Request, 
Receive and Send Data
/<bpn>/did.json
Get Public Key with DID Web
/<bpn>/did.json
Get Public Key with DID Web

Digital Product Pass Verification Add-on Context

Data Exchange via DCP
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/context-diagram.svg.license b/dpp-verification/resources/implementation/context-diagram.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/context-diagram.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/context.svg b/dpp-verification/resources/implementation/context.svg deleted file mode 100644 index 100584c58..000000000 --- a/dpp-verification/resources/implementation/context.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Data Consumer
Passport Id
Admin/System
/verify
Request and 
Receive Data
Digital Product Pass
Simple Wallet
EDC
Data Provider
Register 
DT
Store 
VC
Admin/System
Proxy
Proxy
EDC
Simple Wallet
Digital Twin Registry
Data Service
/context
/issue
Data Exchange via DCP
Catena-X Operator
MIW or Wallet
BDRS
Authorization 
& Authentication
Authorization & 
Authentication
Data Auditor
/context
/issue
Admin/System
EDC
Simple Wallet
Receive and Send Data
/<bpn>/did.json
Get Public Key
/<bpn/did.json
Get Public Key
Find MIW/Wallet
Find MIW/Wallet
Authorization &
Authentication
Find MIW Wallet
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/csc-context-blueprint.svg b/dpp-verification/resources/implementation/csc-context-blueprint.svg new file mode 100644 index 000000000..3d4dc562f --- /dev/null +++ b/dpp-verification/resources/implementation/csc-context-blueprint.svg @@ -0,0 +1,4 @@ + + + +
Data Provider
<<Part Search System>>
Digital Twin Registry
Present Attribute Certification Record
as Verifiable Presentation 
(ACR)
Issue Attribute Certification Record
as Verifiable Presentation 
(ACR)
Store
 Aspect Model 
Payloads
<<Aspect Management System>>
Attribute Certification Registry
(ACReg)
Retrieve 
Aspect Models Payloads
<<Gateway>>
Eclipse Dataspace Connector
Lookup and Retrieve
Digital Twins
Receive EDC Push Notification
with Certified Snapshot Credential 
(CSC)
Register 
Submodel Endpoint
 in Digital Twin
<<Manage>>
Data
Provider
Admin
<<Wallet System>>
Simple Wallet
Store 
CSC in AMR
<<Static Storage System>>
Data Service
Data Auditor
Receive EDC Push Notification
with Metadata + Data about Certification
<<Gateway>>
Eclipse Dataspace Connector
Send 
Certified Snapshot Credential
(CSC)
Issue Certified Snapshot Credential
as Verifiable Credential (CSC)
<<Aspect Certification System>>
Attribute Certification System
<<Wallet System>>
Simple Wallet
<<Certify>>
Data
Auditor
Expert
Create CSC 
from DPP
Send Certification
Metadata & Data 
Send 
Attribute Certification 
Data
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/csc-context-blueprint.svg.license b/dpp-verification/resources/implementation/csc-context-blueprint.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/csc-context-blueprint.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/csc-document-credential.svg b/dpp-verification/resources/implementation/csc-document-credential.svg new file mode 100644 index 000000000..e32da2475 --- /dev/null +++ b/dpp-verification/resources/implementation/csc-document-credential.svg @@ -0,0 +1,4 @@ + + + +

Proof and Verification Methods
Metadata
Certified Snapshot Credential
Verifiable Credential Document
credentialSubject: <<Content of the Credential>>
attributes: <<List of Aspect Attributes>>
....
@id: <<Attribute Path>>
digestMultibase: <<Hash Proof>>
validationMethod: <<List of Document Sources>> 
....
@id: Document/Validation Method Id
@type: Type of Validation Method Source
label: Preferred Name of Validation Method
uri: Link to the source, or DID web
origin: <<Origin Metadata>>
@id: <<DID Web or link to the specific origin document>>
@type: <<Mimetype from Document with all Attributes>>
digestMultibase: <<Hash Checksum from Document>>
semanticId: <<Semantic Id of the Aspect>>
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/csc-document-credential.svg.license b/dpp-verification/resources/implementation/csc-document-credential.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/csc-document-credential.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/implementation/implementation-sequence.svg b/dpp-verification/resources/implementation/implementation-sequence.svg new file mode 100644 index 000000000..9323e349d --- /dev/null +++ b/dpp-verification/resources/implementation/implementation-sequence.svg @@ -0,0 +1,4 @@ + + + +
DPP FRONTEND
DPP BACKEND
Select DTR Configured Policy
CONSUMER
SIMPLE-WALLET
EDC CONSUMER
EDC PROVIDER
PROVIDER
SIMPLE-WALLET
DIGITAL TWIN REGISTRY
User
Get Catalog
DSP Request for Catalog
<<Simple Backend Persistence>>
DATA SERVICE
Search and
Get Status
Negotiate and Transfer
DSP Negotiation & Transfer
EDR
EDR
Search and Get Complete Digital Twin
Digital Twin
Get Passport 
by ID
Get Submodel
Get Catalog
DSP Request for Catalog
Select Asset Configured Policy
Negotiate and Transfer
DSP Negotiation & Transfer
EDR
EDR
Call HREF from Submodel
Submodel Content (Passport or CDC)
Is Verifiable?
1X
/verify
Resolve DID and Get Public Key (/<BPN>/did.json)
Public Key DID Document
Set Status
Verifying
Verifed
Set Status Verified then Set Status Received
Data and 
Verification 
Metadata
Decrypt Data
Visualize Data
and Verified 
Check
DPP FRONTEND
User
DPP BACKEND
DPP BACKEND
CONSUMER
SIMPLE-WALLET
EDC CONSUMER
EDC CONSUMER
EDC PROVIDER
PROVIDER
SIMPLE-WALLET
DIGITAL TWIN REGISTRY
<<Simple Backend Persistence>>
DATA SERVICE
Legend
Direct API Call


Resumed Data Exchange


Reflection


<<Action>>
<<Action>>
<<Action>>
\ No newline at end of file diff --git a/dpp-verification/resources/implementation/implementation-sequence.svg.license b/dpp-verification/resources/implementation/implementation-sequence.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/implementation/implementation-sequence.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/previous-investigation/Cardinality.svg b/dpp-verification/resources/previous-investigation/Cardinality.svg new file mode 100644 index 000000000..5eabd05a5 --- /dev/null +++ b/dpp-verification/resources/previous-investigation/Cardinality.svg @@ -0,0 +1,4 @@ + + + +
Instance Digital Twin
(Serialized Level)
Instance Digital Twin...
Type Digital Twin
(Type Level)
Type Digital Twin...
0..*
0..*
1
1
Type Digital Twin
(Type Level)
Type Digital Twin...
0..*
0..*
0..*
0..*
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/previous-investigation/Cardinality.svg.license b/dpp-verification/resources/previous-investigation/Cardinality.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/previous-investigation/Cardinality.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/previous-investigation/link-type-digital-twins.svg b/dpp-verification/resources/previous-investigation/link-type-digital-twins.svg new file mode 100644 index 000000000..1aed0d385 --- /dev/null +++ b/dpp-verification/resources/previous-investigation/link-type-digital-twins.svg @@ -0,0 +1,4 @@ + + + +
Selected
Type Digital Twin
Selected...
+1
Type Digital Twin
+1...
+2
Type Digital Twin
+2...
-1
Type Digital Twin
-1...
-2
Type Digital Twin
-2...
Serialized Item
Serialized Item
+2
Type Digital Twin
+2...
Serialized Item
Serialized Item
Serialized Item
Serialized Item
Serialized Item
Serialized Item
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/previous-investigation/link-type-digital-twins.svg.license b/dpp-verification/resources/previous-investigation/link-type-digital-twins.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/previous-investigation/link-type-digital-twins.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/previous-investigation/sequence-linking-types.svg b/dpp-verification/resources/previous-investigation/sequence-linking-types.svg new file mode 100644 index 000000000..e21ccb633 --- /dev/null +++ b/dpp-verification/resources/previous-investigation/sequence-linking-types.svg @@ -0,0 +1,4 @@ + + + +
EDC PROVIDER
EDC PROVIDER
DTR
DTR
CONSUMER
APPLICAITON
CONSUMER...
Request Type Digital Twin
Request Type Digital Twin
Type Digital Twin + Submodels
Type Digital Twin + Submodels
CONSUMER
APPLICAITON
CONSUMER...
EDC PROVIDER
EDC PROVIDER
DTR
DTR
Confirmation
Confirmation
Data Provider
Data...
PROVIDER
APPLICATION
PROVIDER...
PROVIDER
APPLICATION
PROVIDER...
Create DT + Submodels
Create DT + Submodels
Confirmation
Confirmation
Data Provider
Data...
DPP Type Aspects
DPP Type Aspects
Request Type Level +1
Digital Twin
Request Type Level +1...
Type Level +1 Digital Twin + Submodels
Type Level +1 Digital Twin + Submodels
Get Type Level Digital Twin Id
Get Type Level Digital Twin Id
SUBMODEL
SERVER
SUBMODEL...
SUBMODEL
SERVER
SUBMODEL...
Request
singleLevelTypeLinkingAspect
Request...
EDC
EDC
EDC
EDC
Contract Negotiation
Contract Negotiation
Register Digital Twins in
singleLevelTypeLinkingAspect
Register Digital Twins in...
Confirmation
Confirmation
Data Consumer
Data...
Data Consumer
Data...
Introduce Type
Level Info
Introduce Type...
Get Type Level +1
Info
Get Type Level +1...
singleLevelTypeLinkingAspect
singleLevelTypeLinkingAspect
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/previous-investigation/sequence-linking-types.svg.license b/dpp-verification/resources/previous-investigation/sequence-linking-types.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/previous-investigation/sequence-linking-types.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/previous-investigation/type-relationships.svg b/dpp-verification/resources/previous-investigation/type-relationships.svg new file mode 100644 index 000000000..b8496dcfc --- /dev/null +++ b/dpp-verification/resources/previous-investigation/type-relationships.svg @@ -0,0 +1,4 @@ + + + +
Type Digital Twin for
Car Designed/Engineered in Country A
Type Digital Twin for...
Type Digital Twin for
Car Planned in Country C
Type Digital Twin for...
Instance Digital Twin for
Car 1 Built in 
Country B
Instance Digital Twin for...
Instance Digital Twin for
Car 2 Built in 
Country B
Instance Digital Twin for...
Type Digital Twin for
Car Planned in Country B
Type Digital Twin for...
Type Digital Twin for
Car Planned in Country A
Type Digital Twin for...
Instance Digital Twin for
Car 1 Built in 
Country C
Instance Digital Twin for...
Instance Digital Twin for
Car 2 Built in 
Country C
Instance Digital Twin for...
Instance Digital Twin for
Car 1 Built in Country A
Instance Digital Twin for...
Instance Digital Twin for
Car 2 Built in Country A
Instance Digital Twin for...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/previous-investigation/type-relationships.svg.license b/dpp-verification/resources/previous-investigation/type-relationships.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/previous-investigation/type-relationships.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/processes/amr-credential-resume.svg b/dpp-verification/resources/processes/amr-credential-resume.svg new file mode 100644 index 000000000..f2bc27055 --- /dev/null +++ b/dpp-verification/resources/processes/amr-credential-resume.svg @@ -0,0 +1,4 @@ + + + +
List of Certified Snapshot Credentials for different attributes with Proofs
List of Certified Snapshot Credentials for dif...
Proof and Verification Methods
Proof and Verification Methods
Metadata
Metadata
Verifiable Presentation Document
Verifiable Presentation Document
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/amr-credential-resume.svg.license b/dpp-verification/resources/processes/amr-credential-resume.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/processes/amr-credential-resume.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/processes/amr-document-credential-resume.svg b/dpp-verification/resources/processes/amr-document-credential-resume.svg new file mode 100644 index 000000000..22048985a --- /dev/null +++ b/dpp-verification/resources/processes/amr-document-credential-resume.svg @@ -0,0 +1,4 @@ + + + +
Proof and Verification Methods
Proof and Verification Methods
Metadata
Metadata
Attribute Certification Record
Verifiable Presentation Document
Attribute Certification Record...
Submodel Metadata
Submodel Metadata
Certified Snapshot Credential for Attr1 Audited by Company A
Certified Snapshot Credential for Attr1 Aud...
Certified Snapshot Credential for Attr2 Audited by Company B
Certified Snapshot Credential for Attr2 Aud...
....
....
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/amr-document-credential-resume.svg.license b/dpp-verification/resources/processes/amr-document-credential-resume.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/processes/amr-document-credential-resume.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/processes/cdc-document-credential-resume.svg b/dpp-verification/resources/processes/cdc-document-credential-resume.svg new file mode 100644 index 000000000..d2528258b --- /dev/null +++ b/dpp-verification/resources/processes/cdc-document-credential-resume.svg @@ -0,0 +1,4 @@ + + + +

Proof and Verification Methods
Proof and Verification Methods
Metadata
Metadata
Certified Data Credential
Verifiable Credential Document
Certified Data CredentialVerifiab...
Parent Version Metadata
Parent Version Metadata
credentialSubject
credential...
DigitalProductPass
DigitalProductPass
Text is not SVG - cannot display
\ No newline at end of file diff --git a/dpp-verification/resources/processes/cdc-document-credential-resume.svg.license b/dpp-verification/resources/processes/cdc-document-credential-resume.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/processes/cdc-document-credential-resume.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/processes/cdc-verification-workflow.svg b/dpp-verification/resources/processes/cdc-verification-workflow.svg new file mode 100644 index 000000000..ef3d9774c --- /dev/null +++ b/dpp-verification/resources/processes/cdc-verification-workflow.svg @@ -0,0 +1,4 @@ + + + +
Self-Testified Verification Process
Data Consumer
Retrieve Digital Product Passport
Is CDC 
Verifiable Credential?
<<Neutral State>>
Show Digital Product Pass 
with Status Unverifiable
Verify Digital Product Pass Verifiable Credential Proof
in Wallet
Signature
Verified?
Yes
<<Error State>>
Show Digital Product Pass 
with Status Not Verified
<<Success State>>
Show Digital Product Pass 
with Status Verified
CONSUMER
END
No
No
Catena-X
Central Discovery Services
Register manufacturerPartId
with BPN in Token
Retrieve the
Digital Product Pass CDC
through the EDC
Resolve Verification Method DID Web and Get Public Key
Data Provider
DT
DPP
CDC
DPP
Create
Digital Product Pass
Gather Part Data with Catena-X & 
Publish Part Identifier
PROVIDER
START
Issue Certified Data Credential (CDC) in Wallet and Store It
Link it in Digital Twin and Register it in the Registry and Configure EDC Assets
PROVIDER
END
SSI
Find Location of Data in 
Dataspace
Find Digital Twin Registries and Search Digital Twin
EDC Endpoints
User Scans QR Code 
or Introduces CX ID in Digital Product Pass App 
Search for EDC
Endpoints for
manufacturerPartId
CONSUMER
START
Get Digital Twin from 
Digital Twin Registry with
 the EDC
Yes
\ No newline at end of file diff --git a/dpp-verification/resources/processes/cdc-verification-workflow.svg copy.license b/dpp-verification/resources/processes/cdc-verification-workflow.svg copy.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/processes/cdc-verification-workflow.svg copy.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/processes/csc-verification-workflow.svg b/dpp-verification/resources/processes/csc-verification-workflow.svg new file mode 100644 index 000000000..9f7cd4341 --- /dev/null +++ b/dpp-verification/resources/processes/csc-verification-workflow.svg @@ -0,0 +1,4 @@ + + + +
Attribute Verification Process
Data Consumer
Retrieve Digital Product Passport and AMR
Is AMR & CSC 
Verifiable Credential?
<<Neutral State>>
Show Complete 
Digital Product Pass 
with Status Unverifiable
Verify AMR (VP) 
+ CSC (VC) Proofs
in Wallet
Yes
No
All
Signatures
Verified?
<<Error State>>
Show Digital Product Pass Specific Attributes 
with Status Not Verified
<<Success State>>
Show Digital Product Pass 
Specific Attributes 
with Status Verified
CONSUMER
END
No
Yes
<<Attribute Verification>>
Hash Digital Product Pass Attributes and Compare with Proof in CSC
Catena-X
Central Discovery Services
Register manufacturerPartId
with BPN in Token
Data Provider
DPP
Create
Digital Product Pass
Gather Part Data with Catena-X & 
Publish Part Identifier
PROVIDER
START
Link it in Digital Twin and Register it in the Registry and Configure EDC Assets
Request Certification for External Auditor
DT
Receive Certified Data Credential and Store it in Attribute Verification Record (AMR)
Issue AMR as Verifiable Presentation in Wallet then link to Digital Twin
AMR
CSC
PROVIDER
END
Catena-X
Data Auditor
Send Certified Snapshot Credential to Data Provider
CSC
Certify Attribute(s) with Validation Method(s) & Issue Certified Snapshot Credential (CSC) in Wallet
Retrieve DPP with EDC
Retrieve AMR with EDC
(SSI)
Resolve DID Web 
and get Public Key
(SSI)
Resolve DID Web and 
get Public Key
Find Location of Data in 
Dataspace
Find Digital Twin Registries and Search Digital Twin
EDC Endpoints
User Scans QR Code 
or Introduces CX ID in Digital Product Pass App 
Search for EDC
Endpoints for
manufacturerPartId
CONSUMER
START
Get Digital Twin from 
Digital Twin Registry with
 the EDC
Receive Request from Data Provider
Retrieve Digital Twin & Digital Product Pass
Send with EDC Notification Push
Required data for Attribute Certification
Retrieve Digital Twin +
 Digital Product Pass Submodel
with the EDC.
\ No newline at end of file diff --git a/dpp-verification/resources/processes/csc-verification-workflow.svg.license b/dpp-verification/resources/processes/csc-verification-workflow.svg.license new file mode 100644 index 000000000..6ae72333e --- /dev/null +++ b/dpp-verification/resources/processes/csc-verification-workflow.svg.license @@ -0,0 +1,13 @@ +## NOTICE + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023, 2024 BMW AG +- SPDX-FileCopyrightText: 2023, 2024 CGI Deutschland B.V. & Co. KG +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/digital-product-pass + +## AUTHORS + +- [Mathias Brunkow Moser](https://github.com/matbmoser) diff --git a/dpp-verification/resources/screenshots/unverified-data.png b/dpp-verification/resources/screenshots/unverified-data.png new file mode 100644 index 000000000..f72a2241e Binary files /dev/null and b/dpp-verification/resources/screenshots/unverified-data.png differ diff --git a/dpp-verification/resources/screenshots/verification-button-clicked.png b/dpp-verification/resources/screenshots/verification-button-clicked.png new file mode 100644 index 000000000..eac0dedbe Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-button-clicked.png differ diff --git a/dpp-verification/resources/screenshots/verification-details.png b/dpp-verification/resources/screenshots/verification-details.png new file mode 100644 index 000000000..16da23da5 Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-details.png differ diff --git a/dpp-verification/resources/screenshots/verification-failed-details.png b/dpp-verification/resources/screenshots/verification-failed-details.png new file mode 100644 index 000000000..65e6f6c3d Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-failed-details.png differ diff --git a/dpp-verification/resources/screenshots/verification-failed-step.png b/dpp-verification/resources/screenshots/verification-failed-step.png new file mode 100644 index 000000000..26711616a Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-failed-step.png differ diff --git a/dpp-verification/resources/screenshots/verification-failed.png b/dpp-verification/resources/screenshots/verification-failed.png new file mode 100644 index 000000000..50a0681da Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-failed.png differ diff --git a/dpp-verification/resources/screenshots/verification-loading-success.png b/dpp-verification/resources/screenshots/verification-loading-success.png new file mode 100644 index 000000000..1df308725 Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-loading-success.png differ diff --git a/dpp-verification/resources/screenshots/verification-proof.png b/dpp-verification/resources/screenshots/verification-proof.png new file mode 100644 index 000000000..bf002c409 Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-proof.png differ diff --git a/dpp-verification/resources/screenshots/verification-wallet-details.png b/dpp-verification/resources/screenshots/verification-wallet-details.png new file mode 100644 index 000000000..4004edecb Binary files /dev/null and b/dpp-verification/resources/screenshots/verification-wallet-details.png differ diff --git a/dpp-verification/resources/screenshots/verified-dpp-ui.png b/dpp-verification/resources/screenshots/verified-dpp-ui.png new file mode 100644 index 000000000..4ca7c2774 Binary files /dev/null and b/dpp-verification/resources/screenshots/verified-dpp-ui.png differ diff --git a/dpp-verification/resources/test-payloads/cdcDigitalTwin.json b/dpp-verification/resources/test-payloads/cdcDigitalTwin.json index 5814497b0..ffdfaea11 100644 --- a/dpp-verification/resources/test-payloads/cdcDigitalTwin.json +++ b/dpp-verification/resources/test-payloads/cdcDigitalTwin.json @@ -107,7 +107,7 @@ }, { "type": "Submodel", - "value": "urn:samm:io.catenax.generic.digital_product_passport:4.0.0#DigitalProductPassport" + "value": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport" }, { "type": "Operation", diff --git a/dpp-verification/resources/verification-logo.png.license b/dpp-verification/resources/verification-logo.png.license index 24c4e4a12..d32b4f552 100644 --- a/dpp-verification/resources/verification-logo.png.license +++ b/dpp-verification/resources/verification-logo.png.license @@ -1,3 +1,5 @@ +Generated with AI (StableDiffusion XL) + ## NOTICE This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). diff --git a/dpp-verification/schemas/amr/1.0.0/attributeCertificationRecord.jsonld b/dpp-verification/schemas/amr/1.0.0/attributeCertificationRecord.jsonld new file mode 100644 index 000000000..ab9608dfc --- /dev/null +++ b/dpp-verification/schemas/amr/1.0.0/attributeCertificationRecord.jsonld @@ -0,0 +1,38 @@ +{ + "@context": { + "@version": 1.1, + "AttributeCertificationRecord": { + "@context": { + "@definition": "Verifiable Presentation which contains the list of Verifiable Credentials for the all attributes of a spec", + "@version": 1.1, + "id": "@id", + "submodel": { + "@context": { + "@definition": "Reference to the submodel which the verifiable presentation is linked to.", + "@version": 1.1, + "id": { + "@context": { + "@definition": "The DID Reference, link to the verifiable credential, or link to specific submodel in the dataModel" + }, + "@id": "amr:id", + "@type": "schema:string" + }, + "semanticId": { + "@context": { + "@definition": "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD." + }, + "@id": "amr:semanticId", + "@type": "schema:string" + }, + "type": "@type" + }, + "@id": "amr:submodel" + }, + "type": "@type" + }, + "@id": "amr:AttributeCertificationRecord" + }, + "amr": "urn:samm:io.catenax.dpp_verification.amr:1.0.0#", + "schema": "https://schema.org/" + } +} \ No newline at end of file diff --git a/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld b/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld new file mode 100644 index 000000000..80bb65515 --- /dev/null +++ b/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld @@ -0,0 +1,97 @@ +{ + "@context": { + "@version": 1.1, + "CertifiedSnapshotCredential": { + "@context": { + "@definition": "Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.\nIt can be \"self-testified\" by the data provider when creating/issuing the passport data. It contains the additional attributes added to the Verifiable Credential Data Model v2.", + "@version": 1.1, + "id": "@id", + "origin": { + "@context": { + "@definition": "The reference to the original credential/data use for creating the ", + "@version": 1.1, + "checksum": { + "@context": { + "@definition": "Constains the SHA512 Hash of the complete verifiable credential/data of the origin content" + }, + "@id": "csc:checksum", + "@type": "schema:string" + }, + "id": "@id", + "semanticId": { + "@context": { + "@definition": "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD." + }, + "@id": "csc:semanticId", + "@type": "schema:string" + }, + "type": "@type" + }, + "@id": "csc:origin" + }, + "type": "@type" + }, + "@id": "csc:CertifiedSnapshotCredential" + }, + "attributes": { + "@container": "@list", + "@context": { + "@context": { + "@version": 1.1, + "id": "@id", + "path": { + "@context": { + "@definition": "The path or location from the attribute in the original payload referenced in \"origin\". In case the value is in array the position of the element will be referenced. Example sustainability.productCarbonFootprint.calculations[0].value, but in the case it is a object the notation sustainability.productCarbonFootprint.value, will be used." + }, + "@id": "csc:path", + "@type": "schema:string" + }, + "proof": { + "@context": { + "@definition": "The hashed proof from the \"raw\" value. Its a sha3-512 hash that contains as content the hashed output produced when the value from the origin path was introduced." + }, + "@id": "csc:proof", + "@type": "schema:string" + }, + "type": "@type", + "validationMethod": { + "@container": "@list", + "@context": { + "@context": { + "@version": 1.1, + "id": "@id", + "label": { + "@context": { + "@definition": "The label of the document selected as validationMethod." + }, + "@id": "csc:label", + "@type": "schema:string" + }, + "type": "@type", + "uri": { + "@context": { + "@definition": "The url, link, direction or DID for the document, validation proof method used." + }, + "@id": "csc:uri", + "@type": "schema:string" + } + }, + "@definition": "List of calculation methods, rulebooks, standards and regulations used to validate the value.", + "@version": 1.1, + "id": "@id", + "type": "@type" + }, + "@id": "csc:validationMethod" + } + }, + "@definition": "The list of attributes that are \"certified\" by the issuer of the credential.", + "@version": 1.1, + "id": "@id", + "type": "@type" + }, + "@id": "csc:attributes" + }, + "csc": "urn:samm:io.catenax.dpp_verification.csc:1.0.0#", + "schema": "https://schema.org/" + } +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/AttributeCertificationRecord.ttl b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/AttributeCertificationRecord.ttl new file mode 100644 index 000000000..479f13628 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/AttributeCertificationRecord.ttl @@ -0,0 +1,84 @@ +################################################################################# +# Tractus-X - Digital Product Pass Verification Add-on +# +# Copyright (c) 2023, 2024 BMW AG +# Copyright (c) 2023, 2024 CGI Deutschland B.V. & Co. KG +# Copyright (c) 2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This work is made available under the terms of the +# Creative Commons Attribution 4.0 International (CC-BY-4.0) license, +# which is available at +# https://creativecommons.org/licenses/by/4.0/legalcode. +# +# SPDX-License-Identifier: CC-BY-4.0 +################################################################################# + +@prefix samm: . +@prefix samm-c: . +@prefix samm-e: . +@prefix unit: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix : . + +:AttributeCertificationRecord a samm:Aspect ; + samm:preferredName "AttributeCertificationRecord"@en ; + samm:description "Verifiable Presentation which contains the list of Verifiable Credentials for the all attributes of a spec"@en ; + samm:see ; + samm:see ; + samm:properties ( :verifiableCredential :submodel :holder ) ; + samm:operations ( ) ; + samm:events ( ) . + +:verifiableCredential a samm:Property ; + samm:preferredName "verifiableCredential"@en ; + samm:description "The standardized component from a verifiable presentation, where a list of one or more verifiable credentials are included."@en ; + samm:see ; + samm:characteristic :VerifiableCredentialCharacteristic . + +:submodel a samm:Property ; + samm:preferredName "submodel"@en ; + samm:description "Reference to the submodel which the verifiable presentation is linked to."@en ; + samm:characteristic :SubmodelCharacteristic . + +:holder a samm:Property ; + samm:preferredName "holder"@en ; + samm:description "The holder is defined in the Verifiable Presentation, to indicate the person that owns the verification aspect, and have requested to external auditor the generation of Certified Snapshot Credentials."@en ; + samm:see ; + samm:characteristic samm-c:Text ; + samm:exampleValue "did:web:dpp-wallet:BPNL00000000012" . + +:VerifiableCredentialCharacteristic a samm-c:List ; + samm:preferredName "verifiableCredential"@en ; + samm:dataType :VerifiableCredentialEntity . + +:SubmodelCharacteristic a samm:Characteristic ; + samm:preferredName "submodelCharacteristic"@en ; + samm:dataType :OriginEntity . + +:VerifiableCredentialEntity a samm:Entity ; + samm:preferredName "CertifiedSnapshotCredentialList"@en ; + samm:description "This is a list that contains the certified snapshot credentials (csc)."@en ; + samm:see ; + samm:properties ( ) . + +:OriginEntity a samm:Entity ; + samm:preferredName "originEntity"@en ; + samm:properties ( :semanticId [ samm:property :originId; samm:payloadName "@id" ] ) . + +:semanticId a samm:Property ; + samm:preferredName "semanticId"@en ; + samm:description "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD."@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass" . + +:originId a samm:Property ; + samm:preferredName "@id"@en ; + samm:description "The DID Reference, link to the verifiable credential, or link to specific submodel in the dataModel"@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "urn:uuid:0109f7d2-8fb5-45f2-b357-fb16fc5a1ccb" . + diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-Example-Expanded.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-Example-Expanded.jsonld new file mode 100644 index 000000000..ad8f40d83 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-Example-Expanded.jsonld @@ -0,0 +1,193 @@ +[ + { + "https://www.w3.org/2018/credentials#holder": [ + { + "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS" + } + ], + "@id": "urn:uuid:974d35dd-3e5e-4782-ad61-6c49fe294650", + "https://w3id.org/security#proof": [ + { + "@graph": [ + { + "http://purl.org/dc/terms/created": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2024-07-10T15:08:13Z" + } + ], + "https://w3id.org/security#jws": [ + { + "@value": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } + ], + "https://w3id.org/security#proofPurpose": [ + { + "@id": "https://w3id.org/security#assertionMethod" + } + ], + "@type": [ + "https://w3id.org/security#JsonWebSignature2020" + ], + "https://w3id.org/security#verificationMethod": [ + { + "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA" + } + ] + } + ] + } + ], + "urn:samm:io.catenax.dpp_verification.amr:1.0.0#submodel": [ + { + "@id": "urn:uuid:cd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "urn:samm:io.catenax.dpp_verification.amr:1.0.0#semanticId": [ + { + "@type": "https://schema.org/string", + "@value": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass" + } + ] + } + ], + "@type": [ + "https://www.w3.org/2018/credentials#VerifiablePresentation", + "urn:samm:io.catenax.dpp_verification.amr:1.0.0#AttributeCertificationRecord" + ], + "https://www.w3.org/ns/credentials/issuer-dependent#validFrom": [ + { + "@value": "2024-07-10T15:08:13Z" + } + ], + "https://www.w3.org/ns/credentials/issuer-dependent#validUntil": [ + { + "@value": "2024-12-25T15:08:13Z" + } + ], + "https://www.w3.org/2018/credentials#verifiableCredential": [ + { + "@graph": [ + { + "https://www.w3.org/2018/credentials#credentialSubject": [ + { + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#attributes": [ + { + "@list": [ + { + "@id": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#sustainability.productFootprint.carbon[0].value", + "https://w3id.org/security#digestMultibase": [ + { + "@type": "https://w3id.org/security#multibase", + "@value": "d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32" + } + ], + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#validationMethod": [ + { + "@list": [ + { + "@id": "CX-0029", + "@type": [ + "https://www.w3.org/ns/credentials/issuer-dependent#Standard" + ], + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#label": [ + { + "@type": "https://schema.org/string", + "@value": "Catena-X PCF Rulebook Standard" + } + ], + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#uri": [ + { + "@type": "https://schema.org/string", + "@value": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ], + "@id": "urn:uuid:281a8b98-933c-4d80-ad86-721f1adbe5b3", + "https://www.w3.org/2018/credentials#issuer": [ + { + "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS" + } + ], + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#origin": [ + { + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "@type": [ + "https://www.w3.org/ns/credentials/issuer-dependent#application/vc+ld+json" + ], + "https://w3id.org/security#digestMultibase": [ + { + "@type": "https://w3id.org/security#multibase", + "@value": "c118df3b7bf603a86bd79f03c692153bdb4212ab80d49c12154c92415ae83d6d59187d9ba5af9c4e40208f7d7b1d4c727de78cfbe51e768aae743723ee197374" + } + ], + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#semanticId": [ + { + "@type": "https://schema.org/string", + "@value": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass" + } + ] + } + ], + "https://w3id.org/security#proof": [ + { + "@graph": [ + { + "http://purl.org/dc/terms/created": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2024-07-10T15:08:13Z" + } + ], + "https://w3id.org/security#jws": [ + { + "@value": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } + ], + "https://w3id.org/security#proofPurpose": [ + { + "@id": "https://w3id.org/security#assertionMethod" + } + ], + "@type": [ + "https://w3id.org/security#JsonWebSignature2020" + ], + "https://w3id.org/security#verificationMethod": [ + { + "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA" + } + ] + } + ] + } + ], + "@type": [ + "https://www.w3.org/2018/credentials#VerifiableCredential", + "urn:samm:io.catenax.dpp_verification.csc:1.0.0#CertifiedSnapshotCredential", + "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport" + ], + "https://www.w3.org/2018/credentials#validFrom": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2024-07-10T15:08:13Z" + } + ], + "https://www.w3.org/2018/credentials#validUntil": [ + { + "@type": "http://www.w3.org/2001/XMLSchema#dateTime", + "@value": "2024-12-25T15:08:13Z" + } + ] + } + ] + } + ] + } +] \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-Example.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-Example.jsonld new file mode 100644 index 000000000..2f57f4546 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-Example.jsonld @@ -0,0 +1,76 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://w3id.org/security/data-integrity/v2", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/docs/v2/verification/dpp-verification/schemas/amr/1.0.0/attributeCertificationRecord.jsonld" + ], + "type": [ + "VerifiablePresentation", + "AttributeCertificationRecord" + ], + "verifiableCredential": [ + { + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://w3id.org/security/data-integrity/v2", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/docs/v2/verification/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/feature/verification-schemas/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld" + ], + "type": [ + "VerifiableCredential", + "CertifiedSnapshotCredential", + "DigitalProductPassport" + ], + "credentialSubject": { + "attributes": [ + { + "validationMethod": [ + { + "@type": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "@id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ], + "@id": "sustainability.productFootprint.carbon[0].value", + "digestMultibase": "d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32" + } + ] + }, + "origin": { + "digestMultibase": "c118df3b7bf603a86bd79f03c692153bdb4212ab80d49c12154c92415ae83d6d59187d9ba5af9c4e40208f7d7b1d4c727de78cfbe51e768aae743723ee197374", + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "@type": "application/vc+ld+json" + }, + "id": "urn:uuid:281a8b98-933c-4d80-ad86-721f1adbe5b3", + "issuer": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T15:08:13Z", + "validUntil": "2024-12-25T15:08:13Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T15:08:13Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } + } + ], + "submodel": { + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "urn:uuid:cd1c0904-27e2-4ae2-8751-5c8c8e4b6812" + }, + "id": "urn:uuid:974d35dd-3e5e-4782-ad61-6c49fe294650", + "holder": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T15:08:13Z", + "validUntil": "2024-12-25T15:08:13Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T15:08:13Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-sample.json b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-sample.json new file mode 100644 index 000000000..5ea8d47a5 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-sample.json @@ -0,0 +1,11 @@ +{ + "submodel": { + "digestMultibase": "9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14", + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "urn:uuid:0109f7d2-8fb5-45f2-b357-fb16fc5a1ccb" + }, + "holder": "did:web:dpp-wallet:BPNL00000000012", + "verifiableCredential": [ + {} + ] +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-schema.json b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-schema.json new file mode 100644 index 000000000..46a843078 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.amr/1.0.0/gen/AttributeCertificationRecord-schema.json @@ -0,0 +1,60 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema", + "description": "Verifiable Presentation which contains the list of Verifiable Credentials for the all attributes of a spec", + "type": "object", + "components": { + "schemas": { + "urn_samm_io.catenax.dpp_verification.amr_1.0.0_VerifiableCredentialEntity": { + "description": "This is a list that contains the certified snapshot credentials (csc).", + "type": "object", + "properties": {} + }, + "urn_samm_io.catenax.dpp_verification.amr_1.0.0_VerifiableCredentialCharacteristic": { + "type": "array", + "items": { + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.amr_1.0.0_VerifiableCredentialEntity" + } + }, + "urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text": { + "type": "string", + "description": "Describes a Property which contains plain text. This is intended exclusively for human readable strings, not for identifiers, measurement values, etc." + }, + "urn_samm_io.catenax.dpp_verification.amr_1.0.0_SubmodelCharacteristic": { + "type": "object", + "properties": { + "semanticId": { + "description": "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + }, + "@id": { + "description": "The DID Reference, link to the verifiable credential, or link to specific submodel in the dataModel", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + } + }, + "required": [ + "semanticId", + "@id" + ] + } + } + }, + "properties": { + "verifiableCredential": { + "description": "The standardized component from a verifiable presentation, where a list of one or more verifiable credentials are included.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.amr_1.0.0_VerifiableCredentialCharacteristic" + }, + "submodel": { + "description": "Reference to the submodel which the verifiable presentation is linked to.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.amr_1.0.0_SubmodelCharacteristic" + }, + "holder": { + "description": "The holder is defined in the Verifiable Presentation, to indicate the person that owns the verification aspect, and have requested to external auditor the generation of Certified Snapshot Credentials.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + } + }, + "required": [ + "verifiableCredential", + "submodel", + "holder" + ] +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedDataCredential.ttl b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedDataCredential.ttl index 998c51849..fd0d24e65 100644 --- a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedDataCredential.ttl +++ b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/CertifiedDataCredential.ttl @@ -24,12 +24,13 @@ @prefix rdfs: . @prefix xsd: . @prefix : . +@prefix ext-csc: . :CertifiedDataCredential a samm:Aspect ; samm:preferredName "CertifiedDataCredential"@en ; samm:description "Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.\nIt can be \"self-testified\" by the data provider when creating/issuing the passport data. It contains the additional attributes added to the Verifiable Credential Data Model v2."@en ; - samm:see ; samm:see ; + samm:see ; samm:properties ( :parent :semanticId ) ; samm:operations ( ) ; samm:events ( ) . @@ -52,7 +53,7 @@ :ParentEntity a samm:Entity ; samm:preferredName "Parent Entity"@en ; samm:description "Entity of the parent characteristic"@en ; - samm:properties ( [ samm:property :id; samm:payloadName "@id" ] :checksum ) . + samm:properties ( [ samm:property :id; samm:payloadName "@id" ] ext-csc:digestMultibase ) . :id a samm:Property ; samm:preferredName "@id"@en ; @@ -60,21 +61,9 @@ samm:characteristic :DID ; samm:exampleValue "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d" . -:checksum a samm:Property ; - samm:preferredName "checksum"@en ; - samm:description "Constains the SHA512 Hash of the complete verifiable credential of the parent content"@en ; - samm:characteristic :SHA512 ; - samm:exampleValue "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" . - :DID a samm:Characteristic ; samm:preferredName "Decentralized Identifier"@en ; samm:description "Decentralized identifiers (DIDs) are a new type of identifier that enables verifiable, decentralized digital identity. A DID refers to any subject (e.g., a person, organization, thing, data model, abstract entity, etc.) as determined by the controller of the DID. In contrast to typical, federated identifiers, DIDs have been designed so that they may be decoupled from centralized registries, identity providers, and certificate authorities. Specifically, while other parties might be used to help enable the discovery of information related to a DID, the design enables the controller of a DID to prove control over it without requiring permission from any other party. DIDs are URIs that associate a DID subject with a DID document allowing trustable interactions associated with that subject."@en ; samm:see ; samm:dataType xsd:string . -:SHA512 a samm:Characteristic ; - samm:preferredName "SHA512"@en ; - samm:description "Secure Hash 512"@en ; - samm:see ; - samm:dataType xsd:string . - diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/CertifiedDataCredential.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/CertifiedDataCredential.jsonld index 610b7413c..f1c15c62e 100644 --- a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/CertifiedDataCredential.jsonld +++ b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/CertifiedDataCredential.jsonld @@ -10,13 +10,6 @@ "@context": { "@definition": "The parent object contains the link for the previous verifiable credential version of the data.", "@version": 1.1, - "checksum": { - "@context": { - "@definition": "Constains the SHA512 Hash of the complete verifiable credential of the parent content" - }, - "@id": "cdc:checksum", - "@type": "schema:string" - }, "id": { "@context": { "@definition": "Contains the DID identification of the previous verifiable credential node" diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC-slim.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC-Example.jsonld similarity index 99% rename from dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC-slim.jsonld rename to dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC-Example.jsonld index 06ce1522f..e4cec9ffb 100644 --- a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC-slim.jsonld +++ b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC-Example.jsonld @@ -12,7 +12,7 @@ ], "parent": { "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", - "checksum": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" + "digestMultibase": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" }, "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport", "credentialSubject": { diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC.jsonld deleted file mode 100644 index dbd9c306f..000000000 --- a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/DigitalProductPassCDC.jsonld +++ /dev/null @@ -1,2144 +0,0 @@ -{ - "@context": [ - "https://www.w3.org/ns/credentials/v2", - "https://w3c.github.io/vc-jws-2020/contexts/v1/", - { - "@context": { - "@version": 1.1, - "CertifiedDataCredential": { - "@context": { - "@definition": "Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.\nIt can be \"self-testified\" by the data provider when creating/issuing the passport data. It contains the additional attributes added to the Verifiable Credential Data Model v2.", - "@version": 1.1, - "id": "@id", - "parent": { - "@context": { - "@definition": "The parent object contains the link for the previous verifiable credential version of the data.", - "@version": 1.1, - "checksum": { - "@context": { - "@definition": "Constains the SHA512 Hash of the complete verifiable credential of the parent content" - }, - "@id": "cdc:checksum", - "@type": "schema:string" - }, - "id": { - "@context": { - "@definition": "Contains the DID identification of the previous verifiable credential node" - }, - "@id": "cdc:id", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "cdc:parent" - }, - "semanticId": { - "@context": { - "@definition": "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD." - }, - "@id": "cdc:semanticId", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "cdc:CertifiedDataCredential" - }, - "cdc": "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#", - "schema": "https://schema.org/" - } - }, - { - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "aspect": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#", - "schema": "https://schema.org/", - "DigitalProductPassport": { - "@id": "aspect:DigitalProductPassport", - "@context": { - "@definition": "The Digital Product Passport (DPP) allows to share process and product-related information amongst supply chain businesses, authorities and consumers. The DPP allows for efficient information flows following best practices; and the possibility of accompanying the measures under this Regulation with mitigating measures so that impacts are expected to remain proportionate for SMEs.This is expected to increase transparency, both for supply chain businesses and for the general public, and increase efficiencies in terms of information transfer to support the data exchange between economic actors in integrating circularity in product design and manufacturing.\nIn particular, it is likely to help facilitate and streamline the monitoring and enforcement of the regulation carried out by EU and Member State authorities. It is also likely to provide a market-intelligence tool that may be used for revising and refining obligations in the future.\nThe DPP includes data about components, materials and chemical substances, information on reparability, spare parts, environmental impact and professional disposal for a product.\nThe data model will be updated, as newer versions of the regulation will be published.\nThe main basis is provided by the document \"Proposal for a REGULATION OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL establishing a framework for setting ecodesign requirements for sustainable products and repealing Directive 2009/125/EC\" from March 30th, 2022. The latest version of the document was the provisional agreement between the EU Council and the Parliament from January 9th, 2024. The text is informal, but the content of the final regulation was agreed between these two institutions.\nThe Title of Ecodesign Regulation has been changed to: Proposal for a REGULATION OF THE EUROPEAN PARLIAMENT AND OF THE COUNCIL establishing a framework for setting ecodesign requirements for sustainable products, amending Regulation (EU) 2023/1542 and repealing Directive 2009/125/EC.", - "@version": 1.1, - "additionalData": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "children": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "data": { - "@context": { - "@definition": "The content from the attribute which is a depended of the data type and typeUnit." - }, - "@id": "aspect:data", - "@type": "schema:string" - }, - "description": { - "@context": { - "@definition": "The description of the attribute context." - }, - "@id": "aspect:description", - "@type": "schema:string" - }, - "id": "@id", - "label": { - "@context": { - "@definition": "The human readable name of the attribute." - }, - "@id": "aspect:label", - "@type": "schema:string" - }, - "type": { - "@context": { - "@definition": "The complex description of the type.", - "@version": 1.1, - "dataType": { - "@context": { - "@definition": "Data type that describe the content of the attributes children and data. In case \"object\" is selected in the enumeration, the children field will be used in the AdditionalDataEntity instead of the \"data\" property. If it is an other type, the content will be specified in \"data\" as a string." - }, - "@id": "aspect:dataType", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type", - "typeUnit": { - "@context": { - "@definition": "Choose a unit type from the unit catalog, or if the property \"children\" is filled, leave empty." - }, - "@id": "aspect:typeUnit", - "@type": "schema:string" - } - }, - "@id": "aspect:type" - } - }, - "@definition": "Children of the hierarchy.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:children" - }, - "data": { - "@context": { - "@definition": "The content from the attribute which is a depended of the data type and typeUnit." - }, - "@id": "aspect:data", - "@type": "schema:string" - }, - "description": { - "@context": { - "@definition": "The description of the attribute context." - }, - "@id": "aspect:description", - "@type": "schema:string" - }, - "id": "@id", - "label": { - "@context": { - "@definition": "The human readable name of the attribute." - }, - "@id": "aspect:label", - "@type": "schema:string" - }, - "type": { - "@context": { - "@definition": "The complex description of the type.", - "@version": 1.1, - "dataType": { - "@context": { - "@definition": "Data type that describe the content of the attributes children and data. In case \"object\" is selected in the enumeration, the children field will be used in the AdditionalDataEntity instead of the \"data\" property. If it is an other type, the content will be specified in \"data\" as a string." - }, - "@id": "aspect:dataType", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type", - "typeUnit": { - "@context": { - "@definition": "Choose a unit type from the unit catalog, or if the property \"children\" is filled, leave empty." - }, - "@id": "aspect:typeUnit", - "@type": "schema:string" - } - }, - "@id": "aspect:type" - } - }, - "@definition": "Data in form of open fields which need to be transferred in addition. The regulation is still under development and may change in the future. To accommodate this, additional data allows the option to include additional data required by future changes to the regulation. In addition, the DPP can be easily updated and adapted to the new requirements. \nThe ESPR provisional agreement from January 9th, 2024 Article 9 mentions:\n2. Where other Union legislation requires or allows the inclusion of specific information in the product passport, that information may be included in the product passport pursuant to the applicable delegated act adopted pursuant to Article 4.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:additionalData" - }, - "characteristics": { - "@context": { - "@definition": "Defines specific characteristics of a product.", - "@version": 1.1, - "generalPerformanceClass": { - "@context": { - "@definition": "The performance class of the product. This attribute is mentioned ESPR provisional agreement from January 9th, 2024 Article 7:\n4. When establishing the information requirements referred to in paragraph 2, point (b), point (i), the Commission shall, as appropriate in view of the specificity of the product group, determine classes of performance. Classes of performance may be based on single parameters, on aggregated scores, in absolute terms or in any other form that enables potential customers to choose the best performing products. Those classes of performance shall correspond to significant improvements in performance levels. Where classes of performance are based on parameters in relation to which performance requirements are established, they shall use as the minimum level the minimum performance required at the time when the classes of performance start to apply.\nDefinition:\n'class of performance': means a range of performance levels in relation to one or more product parameters referred to in Annex I, based on a common methodology for the product or product group, ordered into successive steps to allow for product differentiation." - }, - "@id": "aspect:generalPerformanceClass", - "@type": "schema:string" - }, - "id": "@id", - "lifespan": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": "@id", - "key": { - "@context": { - "@definition": "The type of lifespan represented with the values guaranteed lifetime, technical lifetime and mean time between failures. This attribute is mentioned in the ESPR proposal from March 30th, 2022 ANNEX I:\n(a) durability and reliability of the product or its components as expressed through the product's guaranteed lifetime, technical lifetime [or] mean time between failures [...]." - }, - "@id": "aspect:key", - "@type": "schema:string" - }, - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of the respective lifespan expressed through the possible units day, month, cycle, year and runningOrOperatingHour." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The value as an integer for the respective lifespan." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@definition": "The type of lifespan represented with the values guaranteed lifetime, technical lifetime and mean time between failures. Both can be described through the attributes: type, which defines the type such as guaranteed lifetime or technical lifetime, the unit for the lifetime, and the value represented by an integer. These attributes are mentioned in the ESPR proposal from March 30th, 2022 ANNEX I:\n(a) durability and reliability of the product or its components as expressed through the products guaranteed lifetime, technical lifetime [or] mean time between failures [...].", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:lifespan" - }, - "physicalDimension": { - "@context": { - "@definition": "Physical dimensions are properties associated with physical quantities for purposes of classification or differentiation. These attributes are mentioned in the ESPR provisional agreement from January 9th, Article 7:\n(2) (b) (i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I;\nAnnex I (i) weight and volume of the product and its packaging, and the product-to-packaging ratio.", - "@version": 1.1, - "diameter": { - "@context": { - "@definition": "The diameter of the item, if applicable, measured in a specific linear unit which can be declared in the corresponding unit attribute.", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a linear attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:diameter" - }, - "grossVolume": { - "@context": { - "@definition": "The gross volume of the item, if possible, measured in a specific capacity unit which can be declared in the corresponding unit attribute. If there is no separate packing, the volume of the product shall be given. Gross volume refers to the total volume of a product, including the volume of the packaging. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(2) (b) (i) information on the performance of the product in relation to the product parameters referred to in Annex I;\nAnnex I (i) weight and volume of the product and its packaging, and the product-to-packaging ratio.", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a volume related attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:grossVolume" - }, - "grossWeight": { - "@context": { - "@definition": "The gross weight of the item measured in a specific mass unit which can be declared in the corresponding unit attribute. Gross weight refers to the total weight of a product, including the weight of the packaging. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(2) (b) (i) information on the performance of the product in relation to the product parameters referred to in Annex I;\nAnnex I (i) weight and volume of the product and its packaging, and the product-to-packaging ratio.", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a mass related attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:grossWeight" - }, - "height": { - "@context": { - "@definition": "The height of the item measured in a specific linear unit which can be declared in the corresponding unit attribute.", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a linear attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:height" - }, - "id": "@id", - "length": { - "@context": { - "@definition": "The length of the item measured in a specific linear unit which can be declared in the corresponding unit attribute.", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a linear attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:length" - }, - "type": "@type", - "volume": { - "@context": { - "@definition": "Volume of the product, if possible, measured in a specific capacity unit which can be declared in the corresponding unit attribute. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(2) (b) (i) information on the performance of the product in relation to the product parameters referred to in Annex I;\nAnnex I (i) weight and volume of the product [...].", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a volume related attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:volume" - }, - "weight": { - "@context": { - "@definition": "Weight of the product measured in a specific mass unit which can be declared in the corresponding unit attribute. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(2) (b) (i) information on the performance of the product in relation to the product parameters referred to in Annex I;\nAnnex I (i) weight and volume of the product [...].", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a mass related attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:weight" - }, - "width": { - "@context": { - "@definition": "The width of the item measured in a specific linear unit which can be declared in the corresponding unit attribute.", - "@version": 1.1, - "id": "@id", - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of a linear attribute." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The quantity value associated with the unit." - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@id": "aspect:width" - } - }, - "@id": "aspect:physicalDimension" - }, - "physicalState": { - "@context": { - "@definition": "The physical state of the item. There are four states of matter solid, liquid, gas and plasma which can be chosen from an enumeration." - }, - "@id": "aspect:physicalState", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:characteristics" - }, - "commercial": { - "@context": { - "@definition": "Commercial information of the product.", - "@version": 1.1, - "id": "@id", - "placedOnMarket": { - "@context": { - "@definition": "The timestamp in the format (yyyy-mm-dd) with or without time zone when the product was put in the market." - }, - "@id": "aspect:placedOnMarket", - "@type": "schema:string" - }, - "purpose": { - "@container": "@list", - "@context": { - "@definition": "One or more intended industry/industries of the product described by the digital product passport. If exchanged via Catena-X, 'automotive ' is a must choice included in the list." - }, - "@id": "aspect:purpose", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:commercial" - }, - "handling": { - "@context": { - "@definition": "Properties connected with the handling of the product.", - "@version": 1.1, - "applicable": { - "@context": { - "@definition": "Check whether the connected attributes are applicable to the product. If it is not applicable (false), dummy data can be delivered." - }, - "@id": "aspect:applicable", - "@type": "schema:boolean" - }, - "content": { - "@context": { - "@definition": "The list of spare parts available for the product from various suppliers.", - "@version": 1.1, - "id": "@id", - "producer": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": { - "@context": { - "@definition": "The identifier of a spare part producer of the product. In the Catena-X network, the BPNL is used for the identification of companies and the information stored for this like contact information and addresses." - }, - "@id": "aspect:id", - "@type": "schema:string" - }, - "type": "@type" - }, - "@definition": "Sources of possible spare parts.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:producer" - }, - "sparePart": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": "@id", - "manufacturerPartId": { - "@context": { - "@definition": "Part ID as assigned by the manufacturer of the part. The part ID identifies the part in the manufacturer`s dataspace. The part ID references a specific version of a part. The version number must be included in the part ID if it is available. The part ID does not reference a specific instance of a part and must not be confused with the serial number." - }, - "@id": "aspect:manufacturerPartId", - "@type": "schema:string" - }, - "nameAtManufacturer": { - "@context": { - "@definition": "Name of the part as assigned by the manufacturer." - }, - "@id": "aspect:nameAtManufacturer", - "@type": "schema:string" - }, - "type": "@type" - }, - "@definition": "Possible spare parts of the product.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:sparePart" - }, - "type": "@type" - }, - "@id": "aspect:content" - }, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:handling" - }, - "id": "@id", - "identification": { - "@context": { - "@definition": "Identification information of the product, especially identifiers and codes. These are mentioned in the ESPR provisional agreement from January 9th, 2024 ANNEX III:\n(b) the unique product identifier at the level indicated in the applicable delegated act adopted pursuant to Article 4.\nAdditionally in Article 9 regarding general requirements for the product passport is stated that:\nA product passport shall meet the following conditions:\n(a) it shall be connected through a data carrier to a persistent unique product identifier;\n(e) the information included in the product passport shall refer to the product model, batch, or item as specified in the delegated act adopted pursuant to Article 4.\nArticle 2 Definitions: \n(31) 'unique product identifier' means a unique string of characters for the identification of products that also enables a web link to the product passport;\nRecital (27): A 'model' usually means a version of a product of which all units share the same technical characteristics relevant for the ecodesign requirements and the same model identifier, a 'batch' usually means a subset of a specific model composed of all products produced in a specific manufacturing plant at a specific moment in time and an 'item' usually means a single unit of a model.", - "@version": 1.1, - "batch": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": "@id", - "key": { - "@context": { - "@definition": "The key of a local identifier." - }, - "@id": "aspect:key", - "@type": "schema:string" - }, - "type": "@type", - "value": { - "@context": { - "@definition": "The value of an identifier." - }, - "@id": "aspect:value", - "@type": "schema:string" - } - }, - "@definition": "Identifier for a batch part if available. Identifier for a serial part if available. This is mentioned in the ESPR provisional agreement from January 9th, 2024 Recital (27):\n[...] a 'batch' usually means a subset of a specific model composed of all products produced in a specific manufacturing plant at a specific moment in time [...].", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:batch" - }, - "classification": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "classificationDescription": { - "@context": { - "@definition": "Optional property describing the classification standard." - }, - "@id": "aspect:classificationDescription", - "@type": "schema:string" - }, - "classificationID": { - "@context": { - "@definition": "The classification ID of the part type according to the corresponding standard definition mentioned in the key value pair." - }, - "@id": "aspect:classificationID", - "@type": "schema:string" - }, - "classificationStandard": { - "@context": { - "@definition": "Identified classification standards that align to the Catena-X needs." - }, - "@id": "aspect:classificationStandard", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "Property describing the classification of a part.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:classification" - }, - "codes": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": "@id", - "key": { - "@context": { - "@definition": "The code key for the identification of the product. Examples are GTIN, hash, DID, ISBN, TARIC. This attribute is mentioned in the ESPR proposal from March 30th, 2022 ANNEX III:\n(b) the unique product identifier at the level indicated in the applicable delegated act adopted pursuant to Article 4;\n(c) the Global Trade Identification Number as provided for in standard ISO/IEC 15459-6 or equivalent of products or their parts;\n(d) relevant commodity codes, such as a TARIC code as defined in Council Regulation (EEC) No 2658/87." - }, - "@id": "aspect:key", - "@type": "schema:string" - }, - "type": "@type", - "value": { - "@context": { - "@definition": "The code value for the identification of the product in regard to the chosen code name." - }, - "@id": "aspect:value", - "@type": "schema:string" - } - }, - "@definition": "Codes for identification.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:codes" - }, - "dataCarrier": { - "@context": { - "@definition": "The type and layout of the data carrier on the product. These are mentioned in the ESPR proposal from March 30th, 2022 Article 8:\n(b) the types of data carrier to be used;\n(c) the layout in which the data carrier shall be presented and its positioning;\nArticle 2 defines:\n(30) 'data carrier' means a linear bar code symbol, a two-dimensional symbol or other automatic identification data capture medium that can be read by a device.", - "@version": 1.1, - "carrierLayout": { - "@context": { - "@definition": "The positioning of data carrier on the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 8:\n(2) (c) the layout in which the data carrier shall be presented and its positioning." - }, - "@id": "aspect:carrierLayout", - "@type": "schema:string" - }, - "carrierType": { - "@context": { - "@definition": "The type of data carrier such as a QR code on the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 8:\n(2) (b) the types of data carrier to be used." - }, - "@id": "aspect:carrierType", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:dataCarrier" - }, - "id": "@id", - "serial": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": "@id", - "key": { - "@context": { - "@definition": "The key of a local identifier. " - }, - "@id": "aspect:key", - "@type": "schema:string" - }, - "type": "@type", - "value": { - "@context": { - "@definition": "The value of an identifier." - }, - "@id": "aspect:value", - "@type": "schema:string" - } - }, - "@definition": "Identifier for a serial part if available. This is mentioned in the ESPR provisional agreement from January 9th, 2024 Recital (27):\n[...] an 'item' usually means a single unit of a model.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:serial" - }, - "type": { - "@context": { - "@definition": "Identifier on the level of a part model or type. Identifier for a serial part if available. This is mentioned in the ESPR provisional agreement from January 9th, 2024 Recital (27):\n[...] A 'model' usually means a version of a product of which all units share the same technical characteristics relevant for the ecodesign requirements and the same model identifier [...].", - "@version": 1.1, - "id": "@id", - "manufacturerPartId": { - "@context": { - "@definition": "Part ID as assigned by the manufacturer of the part. The part ID identifies the part in the manufacturer`s dataspace. The part ID references a specific version of a part. The version number must be included in the part ID if it is available. The part ID does not reference a specific instance of a part and must not be confused with the serial number." - }, - "@id": "aspect:manufacturerPartId", - "@type": "schema:string" - }, - "nameAtManufacturer": { - "@context": { - "@definition": "Name of the part as assigned by the manufacturer." - }, - "@id": "aspect:nameAtManufacturer", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:type" - } - }, - "@id": "aspect:identification" - }, - "materials": { - "@context": { - "@definition": "Properties which are relevant for the materials of the product.", - "@version": 1.1, - "id": "@id", - "materialComposition": { - "@context": { - "@definition": "Material composition of the product with information on recycled and renewable materials.", - "@version": 1.1, - "applicable": { - "@context": { - "@definition": "Check whether the connected attributes are applicable to the product. If it is not applicable (false), dummy data can be delivered." - }, - "@id": "aspect:applicable", - "@type": "schema:boolean" - }, - "content": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "concentration": { - "@context": { - "@definition": "Concentration of the material at the level of the product. This attribute is specially mentioned for substances of concern mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(5) (c) the concentration, maximum concentration or concentration range of the substances of concern, at the level of the product [...].\nOther substances are mentioned for the purpose of recycling in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(d) design for recycling, ease and quality of recycling as expressed through: use of easily recyclable materials, safe, easy and non-destructive access to recyclable components and materials or components and materials containing hazardous substances and material composition and homogeneity, possibility for high-purity sorting, number of materials and components used, use of standard components, use of component and material coding standards for the identification of components and materials, number and complexity of processes and tools needed, ease of nondestructive disassembly and re-assembly, conditions for access to product data, conditions for access to or use of hardware and software needed.\n" - }, - "@id": "aspect:concentration", - "@type": "schema:number" - }, - "critical": { - "@context": { - "@definition": "A flag, if the material is a critical raw material. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(h) use or content of recycled materials and recovery of materials, including critical raw materials;\nIn Annex II of the connected proposal Act of Critical Raw Materials, a list of critical raw materials can be found." - }, - "@id": "aspect:critical", - "@type": "schema:boolean" - }, - "documentation": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "Documentation accompanying the material.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:documentation" - }, - "id": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": { - "@context": { - "@definition": "The substance identification, in accordance with the specification in the attribute for the list type." - }, - "@id": "aspect:id", - "@type": "schema:string" - }, - "name": { - "@context": { - "@definition": "The name of the material which is present in the product." - }, - "@id": "aspect:name", - "@type": "schema:string" - }, - "type": { - "@context": { - "@definition": "The type of standard used for the identification of the substances. Selected can be for example CAS, IUPAC or EC." - }, - "@id": "aspect:type", - "@type": "schema:string" - } - }, - "@definition": "The chemical material name and identification, in accordance with the specification in the attribute for the list type. Preference is given to the IUPAC name. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 7:\n(5) (a) the name of the substances of concern present in the product, as follows:\n - name(s) in the International Union of Pure and Applied Chemistry (IUPAC) nomenclature, or another international name when IUPAC name is not available; \n- other names (usual name, trade name, abbreviation);\n- European Community (EC) number, as indicated in the European Inventory of Existing Commercial Chemical Substances (EINECS), the European List of Notified Chemical Substances (ELINCS) or the No Longer Polymer (NLP) list or assigned by the European Chemicals Agency (ECHA), if available;\n- the Chemical Abstract Service (CAS) name(s) and number(s), if available; .", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:id" - }, - "recycled": { - "@context": { - "@definition": "The share of the material, which is recovered recycled content from the product. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(h) use or content of recycled materials and recovery of materials, including critical raw materials;" - }, - "@id": "aspect:recycled", - "@type": "schema:number" - }, - "renewable": { - "@context": { - "@definition": "The share of the material, which is from a renewable resource that can be replenished. Renewable resources are those that can be reproduced by physical, chemical, or mechanical processes. These are the kind of resources that can be regenerated throughout time. Forest wood, for example, can be grown through reforestation. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(ha) use or content of sustainable renewable materials;\n" - }, - "@id": "aspect:renewable", - "@type": "schema:number" - }, - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of concentration chosen from an enumeration: mass percent, volume percent, parts per thousand, parts per million, parts per billion and parts per trillion." - }, - "@id": "aspect:unit", - "@type": "schema:string" - } - }, - "@definition": "Information on different materials in the product.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:content" - }, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:materialComposition" - }, - "substancesOfConcern": { - "@context": { - "@definition": "Information regarding substances of concern in the product. The ESPR provisional agreement from January 9th, 2024 defines:\n(52) 'hazardous substance' means a substance classified as hazardous pursuant to Article 3 of Regulation (EC) No 1272/2008.", - "@version": 1.1, - "applicable": { - "@context": { - "@definition": "Check whether the connected attributes are applicable to the product. If it is not applicable (false), dummy data can be delivered." - }, - "@id": "aspect:applicable", - "@type": "schema:boolean" - }, - "content": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "concentration": { - "@context": { - "@definition": "Concentration of the material at the level of the product. This attribute is specially mentioned for substances of concern mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(5) (c) the concentration, maximum concentration or concentration range of the substances of concern, at the level of the product [...].\nOther substances are mentioned for the purpose of recycling in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(d) design for recycling, ease and quality of recycling as expressed through: use of easily recyclable materials, safe, easy and non-destructive access to recyclable components and materials or components and materials containing hazardous substances and material composition and homogeneity, possibility for high-purity sorting, number of materials and components used, use of standard components, use of component and material coding standards for the identification of components and materials, number and complexity of processes and tools needed, ease of nondestructive disassembly and re-assembly, conditions for access to product data, conditions for access to or use of hardware and software needed.\n" - }, - "@id": "aspect:concentration", - "@type": "schema:number" - }, - "concentrationRange": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": "@id", - "max": { - "@context": { - "@definition": "The maximum concentration of the substance of concern at the level of the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(5) (c) the concentration, maximum concentration or concentration range of the substances of concern, at the level of the product [...]." - }, - "@id": "aspect:max", - "@type": "schema:number" - }, - "min": { - "@context": { - "@definition": "The minimum concentration of the substance of concern at the level of the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(5) (c) [...] concentration range of the substances of concern, at the level of the product [...]." - }, - "@id": "aspect:min", - "@type": "schema:number" - }, - "type": "@type" - }, - "@definition": "The concentration range for the substance of concern. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(5) (c) [...] concentration range of the substances of concern, at the level of the product [...].", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:concentrationRange" - }, - "documentation": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "Documentation accompanying the material.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:documentation" - }, - "exemption": { - "@context": { - "@definition": "Exemptions to the substance of concern. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 7:\n(5) (c) provide duly justified exemptions for substances of concern or information elements from the information requirements referred to in the first subparagraph based on the technical feasibility or relevance of tracking substances of concern, the existence of analytical methods to detect and quantify them, the need to protect confidential business information or in other duly justified cases. Substances of concern within the meaning of Article 2(28), point a), shall not be exempted if they are present in products, their relevant components or spare parts in a concentration above 0,1 % weight by weight." - }, - "@id": "aspect:exemption", - "@type": "schema:string" - }, - "hazardClassification": { - "@context": { - "@definition": "The specification of the hazard class. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(f) use of substances, and in particular the use of substances of concern, on their own, as constituents of substances or in mixtures, during the production process of products, or leading to their presence in products, including once these products become waste, and their impacts on human health and the environment;\nFurther defined is this by Regulation (EC) No 1272/2008 of the European Parliament and of the Council of 16 December 2008 on classification, labelling and packaging of substances and mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and amending Regulation (EC) No 1907/2006.\nDefined in Article 2:\n1. 'hazard class' means the nature of the physical, health or environmental hazard;\n2. 'hazard category' means the division of criteria within each hazard class, specifying hazard severity;\n5. 'hazard statement' means a phrase assigned to a hazard class and category that describes the nature of the hazards of a hazardous substance or mixture, including, where appropriate, the degree of hazard;", - "@version": 1.1, - "category": { - "@context": { - "@definition": "The hazard category of the substance of concern. Defined in Article 2 of Regulation (EC) No 1272/2008 of the European Parliament and of the Council of 16 December 2008 on classification, labelling and packaging of substances and mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and amending Regulation (EC) No 1907/2006:\n2. 'hazard category' means the division of criteria within each hazard class, specifying hazard severity." - }, - "@id": "aspect:category", - "@type": "schema:string" - }, - "class": { - "@context": { - "@definition": "The hazard class of the substance of concern. Defined in Article 2 of Regulation (EC) No 1272/2008 of the European Parliament and of the Council of 16 December 2008 on classification, labelling and packaging of substances and mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and amending Regulation (EC) No 1907/2006:\n1. 'hazard class' means the nature of the physical, health or environmental hazard." - }, - "@id": "aspect:class", - "@type": "schema:string" - }, - "id": "@id", - "statement": { - "@context": { - "@definition": "The hazard statement of the substance of concern. Defined in Article 2 of Regulation (EC) No 1272/2008 of the European Parliament and of the Council of 16 December 2008 on classification, labelling and packaging of substances and mixtures, amending and repealing Directives 67/548/EEC and 1999/45/EC, and amending Regulation (EC) No 1907/2006:\n5. 'hazard statement' means a phrase assigned to a hazard class and category that describes the nature of the hazards of a hazardous substance or mixture, including, where appropriate, the degree of hazard." - }, - "@id": "aspect:statement", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:hazardClassification" - }, - "id": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "id": { - "@context": { - "@definition": "The substance identification, in accordance with the specification in the attribute for the list type." - }, - "@id": "aspect:id", - "@type": "schema:string" - }, - "name": { - "@context": { - "@definition": "The name of the material which is present in the product." - }, - "@id": "aspect:name", - "@type": "schema:string" - }, - "type": { - "@context": { - "@definition": "The type of standard used for the identification of the substances. Selected can be for example CAS, IUPAC or EC." - }, - "@id": "aspect:type", - "@type": "schema:string" - } - }, - "@definition": "The chemical material name and identification, in accordance with the specification in the attribute for the list type. Preference is given to the IUPAC name. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 7:\n(5) (a) the name of the substances of concern present in the product, as follows:\n - name(s) in the International Union of Pure and Applied Chemistry (IUPAC) nomenclature, or another international name when IUPAC name is not available; \n- other names (usual name, trade name, abbreviation);\n- European Community (EC) number, as indicated in the European Inventory of Existing Commercial Chemical Substances (EINECS), the European List of Notified Chemical Substances (ELINCS) or the No Longer Polymer (NLP) list or assigned by the European Chemicals Agency (ECHA), if available;\n- the Chemical Abstract Service (CAS) name(s) and number(s), if available; .", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:id" - }, - "location": { - "@context": { - "@definition": "The location of the substances of concern within the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Article 7:\n(5) (b) the location of the substances of concern within the product." - }, - "@id": "aspect:location", - "@type": "schema:string" - }, - "type": "@type", - "unit": { - "@context": { - "@definition": "The unit of concentration chosen from an enumeration: mass percent, volume percent, parts per thousand, parts per million, parts per billion and parts per trillion." - }, - "@id": "aspect:unit", - "@type": "schema:string" - } - }, - "@definition": "Information regarding substances of concern in the product. Attributes are among others substance names, ids, concentration, location and hazard class. This is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 7:\n(5) (a) the name of the substances of concern present in the product, as follows:\n- name(s) in the International Union of Pure and Applied Chemistry (IUPAC) nomenclature, or another international name when IUPAC name is not available; \n- other names (usual name, trade name, abbreviation);\n- European Community (EC) number, as indicated in the European Inventory of Existing Commercial Chemical Substances (EINECS), the European List of Notified Chemical Substances (ELINCS) or the No Longer Polymer (NLP) list or assigned by the European Chemicals Agency (ECHA), if available;\n- the Chemical Abstract Service (CAS) name(s) and number(s), if available;\n(5) (b) the location of the substances of concern within the product.\n(5) (c) the concentration, maximum concentration or concentration range of the substances of concern, at the level of the product its relevant components, or spare parts;\n(d) relevant instructions for the safe use of the product;\n(e) information relevant for disassembly, preparation for reuse, reuse, recycling and the environmentally sound management of the product at the end of its life.\nAnd in the next paragraph:\n(c) provide duly justified exemptions for substances of concern or information elements from the information requirements referred to in the first subparagraph.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:content" - }, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:substancesOfConcern" - }, - "type": "@type" - }, - "@id": "aspect:materials" - }, - "metadata": { - "@context": { - "@definition": "Metadata of the product passport. These are mentioned in the ESPR proposal from March 30th, 2022 and some changed by the provisional agreement from January 9th, 2024.", - "@version": 1.1, - "backupReference": { - "@context": { - "@definition": "A reference to the data backup of the passport. This mandatory attribute will be further defined in the future. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex III:\n(kb) the reference of the certified independent third-party product passport service provider hosting the back-up copy of the product passport.\nArticle 10 also mentions:\n(c) the data included in the product passport shall be stored by the economic operator responsible for its creation or by certified independent third-party product passport service providers authorised to act on their behalf." - }, - "@id": "aspect:backupReference", - "@type": "schema:string" - }, - "economicOperatorId": { - "@context": { - "@definition": "The identification of the owner/economic operator of the passport. Proposed, according to ISO 15459, is the CIN (company identification code). Other identification numbers like the tax identification number, value added tax identification number, commercial register number and the like are also valid entries. In the Catena-X network, the BPNL is used for the identification of companies and the information stored like contact information and addresses. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Annex III:\n(k) the [...] unique operator identifier code of the economic operator established in the Union responsible for carrying out the tasks set out in Article 4 of Regulation (EU) 2019/1020, or Article 15 of Regulation (EU) on general product safety, or similar tasks pursuant to other EU legislation applicable to the product." - }, - "@id": "aspect:economicOperatorId", - "@type": "schema:string" - }, - "expirationDate": { - "@context": { - "@definition": "The timestamp in the format (yyyy-mm-dd) for the product passport until when it is available or a comment describing this period. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 8:\n(2) (h) the period during which the product passport is to remain available, which shall correspond to at least the expected lifetime of a specific product." - }, - "@id": "aspect:expirationDate", - "@type": "schema:string" - }, - "id": "@id", - "issueDate": { - "@context": { - "@definition": "The timestamp in the format (yyyy-mm-dd) since when the product passport is available." - }, - "@id": "aspect:issueDate", - "@type": "schema:string" - }, - "lastModification": { - "@context": { - "@definition": "Date of the latest modification." - }, - "@id": "aspect:lastModification", - "@type": "schema:string" - }, - "passportIdentifier": { - "@context": { - "@definition": "The identifier of the product passport, which is an uuidv4." - }, - "@id": "aspect:passportIdentifier", - "@type": "schema:string" - }, - "predecessor": { - "@context": { - "@definition": "Identification of the preceding product passport. If there is no preceding passport, input a dummy value. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 8:\n(2)(g) [...] Any new product passport shall be linked to the product passport or passports of the original product whenever appropriate." - }, - "@id": "aspect:predecessor", - "@type": "schema:string" - }, - "registrationIdentifier": { - "@context": { - "@definition": "Identifier in the respective registry. This will be further defined in the future. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 in Article 12:\nBy [2 years from entering into force of this Regulation], the Commission shall set up and manage a digital registry (\"the registry\") storing in a secure manner at least the unique product identifier, the unique operator identifier, the unique facility identifiers. In case of products intended to be placed under the customs procedure 'release for free circulation', the registry shall also store the product commodity code. The registry shall also store the batteries' unique identifiers referred to in Article 77(3) of Regulation (EU) 2023/1542." - }, - "@id": "aspect:registrationIdentifier", - "@type": "schema:string" - }, - "status": { - "@context": { - "@definition": "The current status of the product passport declared through either: draft, approved, invalid or expired." - }, - "@id": "aspect:status", - "@type": "schema:string" - }, - "type": "@type", - "version": { - "@context": { - "@definition": "The current version of the product passport. The possibility of modification/ updating the product passport needs to include versioning of the dataset. This attribute is an internal versioning from the passport issuer. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Article 8:\n(1) [...] The information in the product passport shall be accurate, complete, and up to date." - }, - "@id": "aspect:version", - "@type": "schema:string" - } - }, - "@id": "aspect:metadata" - }, - "operation": { - "@context": { - "@definition": "Operational information of the product.", - "@version": 1.1, - "id": "@id", - "import": { - "@context": { - "@definition": "Importer details such as the identification.", - "@version": 1.1, - "applicable": { - "@context": { - "@definition": "Check whether the connected attributes are applicable to the product. If it is not applicable (false), dummy data can be delivered." - }, - "@id": "aspect:applicable", - "@type": "schema:boolean" - }, - "content": { - "@context": { - "@definition": "Information regarding the importer of the product, if different from the owner of the passport. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex III:\n(j) information related to the importer, including the information referred to in Article 23(3) and its EORI number;\nArticle 23 states:\n(3) Importers shall, for products covered by a delegated act adopted pursuant to Article 4, indicate their name, registered trade name or registered trade mark and the postal address and electronic means of communication, where they can be contacted: (a) on the public part of the product passport, when applicable, and\n(b) on the product or, where this is not possible, on the packaging, or in a document accompanying the product.", - "@version": 1.1, - "eori": { - "@context": { - "@definition": "An economic operator established in the customs territory of the Union needs, for customs purposes, an EORI number. EORI stands for economic operators registration and identification number. In this case, the importer's EORI must be provided. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Annex III:\n(j) information related to the importer, including the information referred to in Article 23(3) and its EORI number." - }, - "@id": "aspect:eori", - "@type": "schema:string" - }, - "id": { - "@context": { - "@definition": "The importer of the product, if different from the owner of the passport. In the Catena-X network, the BPNL is used for the identification of companies and the information stored for this like contact information and addresses.\nThis attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex III:\n(j) information related to the importer, including the information referred to in Article 23(3) and its EORI number;\nArticle 23 states:\n(3) Importers shall, for products covered by a delegated act adopted pursuant to Article 4, indicate their name, registered trade name or registered trade mark and the postal address and electronic means of communication, where they can be contacted: (a) on the public part of the product passport, when applicable, and\n(b) on the product or, where this is not possible, on the packaging, or in a document accompanying the product." - }, - "@id": "aspect:id", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:content" - }, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:import" - }, - "manufacturer": { - "@context": { - "@definition": "Manufacturing information of the product. In the CATENA-X use case, the BPNL and BPNA can be stated. These attributes are mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(h) unique operator identifiers other than that of the manufacturer;\n(k) the name, contact details and unique operator identifier code of the economic operator established in the Union responsible for carrying out the tasks set out in Article 4 of Regulation (EU) 2019/1020, or Article 15 of Regulation (EU) [.../...] on general product safety, or similar tasks pursuant to other EU legislation applicable to the product.", - "@version": 1.1, - "facility": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "facility": { - "@context": { - "@definition": "The identifier used for a location. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(i) unique facility identifiers;\nArticle 2 Definitions: (33) 'unique facility identifier' means a unique string of characters for the identification of locations or buildings involved in the value chain of a product or used by actors involved in the value chain of a product." - }, - "@id": "aspect:facility", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The identifier used for a location. In the CATENA-X use case, the BPNA can be stated. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(i) unique facility identifiers;\nArticle 2 Definitions: (33) 'unique facility identifier' means a unique string of characters for the identification of locations or buildings involved in the value chain of a product or used by actors involved in the value chain of a product.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:facility" - }, - "id": "@id", - "manufacturer": { - "@context": { - "@definition": "The main manufacturer, if different from the passport owner, represented by an identification number. In the Catena-X use case, the BPNL can be stated. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(h) unique operator identifiers other than that of the manufacturer;\n(k) the name, contact details and unique operator identifier code of the economic operator established in the Union responsible for carrying out the tasks set out in Article 4 of Regulation (EU) 2019/1020, or Article 15 of Regulation (EU) [.../...] on general product safety, or similar tasks pursuant to other EU legislation applicable to the product." - }, - "@id": "aspect:manufacturer", - "@type": "schema:string" - }, - "manufacturingDate": { - "@context": { - "@definition": "The timestamp in the format (yyyy-mm-dd) of the manufacturing date as the final step in production process (e.g. final quality check, ready-for-shipment event)." - }, - "@id": "aspect:manufacturingDate", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:manufacturer" - }, - "other": { - "@context": { - "@definition": "Other operators relevant for the product.", - "@version": 1.1, - "id": { - "@context": { - "@definition": "Identifier of the other operator. This can be a BPN." - }, - "@id": "aspect:id", - "@type": "schema:string" - }, - "role": { - "@context": { - "@definition": "Role of the other operator." - }, - "@id": "aspect:role", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:other" - }, - "type": "@type" - }, - "@id": "aspect:operation" - }, - "sources": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "category": { - "@context": { - "@definition": "The category in which the document can be sorted. These are mentioned in the ESPR proposal from March 30th, 2022 ANNEX III:\n(e) compliance documentation and information required under this Regulation or other Union law applicable to the product, such as the declaration of conformity, technical documentation or conformity certificates;\nANNEX IV states additional information regarding the content of the technical documentation\nFurther information on documents are mentioned in the proposal from March 30th, 2022 ANNEX III:\n(f) user manuals, instructions, warnings or safety information, as required by other Union legislation applicable to the product.\nAdditionally requirements are mentioned in Article 21:\n(7) Manufacturers shall ensure that that a product covered by a delegated act adopted pursuant to Article 4 is accompanied by instructions that enable consumers and other end-users to safely assemble, install, operate, store, maintain, repair and dispose of the product in a language that can be easily understood by consumers and other end-users, as determined by the Member State concerned. Such instructions shall be clear, understandable and legible and include at least the information specified in the delegated acts adopted pursuant to Article 4 and pursuant to Article 7(2)(b), point (ii).\nArticle 7 states additionally:\n(2) (b) (ii) information for consumers and other end-users on how to install, use, maintain and repair the product in order to minimize its impact on the environment and to ensure optimum durability, as well as on how to return or dispose of the product at end-of-life;\n(2) (b) (iii) information for treatment facilities on disassembly, recycling, or disposal at end-of-life;\n(2) (b) (iv) other information that may influence the way the product is handled by parties other than the manufacturer in order to improve performance in relation to product parameters referred to in Annex I.\n(5) (d) relevant instructions for the safe use of the product." - }, - "@id": "aspect:category", - "@type": "schema:string" - }, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:type", - "@type": "schema:string" - } - }, - "@definition": "Documents that are mandatory if applicable for the product. These are mentioned in the ESPR provisional agreement from January 9th, 2024 ANNEX III:\n(e) compliance documentation and information required under this Regulation or other Union law applicable to the product, such as the declaration of conformity, technical documentation or conformity certificates;\n(f) user manuals, instructions, warnings or safety information, as required by other Union legislation applicable to the product.\nAdditionally requirements are mentioned in Article 21:\n7. Manufacturers shall ensure that a product covered by a delegated act adopted pursuant to Article 4 is accompanied by instructions in digital format that enable customers and other relevant actors to assemble, install, operate, store, maintain, repair and dispose of the product in a language that can be easily understood, as determined by the Member State concerned. Such instructions shall be clear, understandable and legible and include at least the information set out in Article 7(2), point (b), point (ii) specified in the delegated acts adopted pursuant to Article 4.\nArticle 7 states additionally:\n(ii) information for customers and other actors on how to install, use, maintain and repair the product, in order to minimise its impact on the environment and to ensure optimum durability, on how to install third-party operating systems where relevant, as well as on collection for refurbishment or remanufacture, and on how to return or handle the product at the end of its life;\n(2) (b) (iii) information for treatment facilities on disassembly, reuse, refurbishment, recycling, or disposal at end-of-life;\n(2) (b) (iv) other information that may influence sustainable product choices for customers and the way the product is handled by parties other than the manufacturer in order to facilitate appropriate use, value retaining operations and correct treatment at end-of-life.\n(5) (d) relevant instructions for the safe use of the product.\n(5) (e) information relevant for disassembly, preparation for reuse, reuse, recycling and the environmentally sound management of the product at the end of its life.\nAnnex I:\n(b) [...] availability of repair and maintenance instructions, number of materials and components used, use of standard components,[...] number and complexity of processes and whether specialised toolsare needed, ease of non-destructive disassembly and re-assembly, conditions for access to product data, conditions for access to or use of hardware and software needed;\n(c) ease of upgrading, re-use, remanufacturing and refurbishment as expressed through: [...] number and complexity of processes and tools needed, ease of non-destructive disassembly and re-assembly, conditions for access to product data, conditions for access to or use of hardware and software needed, conditions of access to test protocols or not commonly available testing equipment, availability of guarantees specific to remanufactured or refurbished products, conditions for access to or use of technologies protected by intellectual property rights, modularity;\n(d) design for recycling, ease and quality of recycling as expressed through: use of easily recyclable materials, safe, easy and non-destructive access to recyclable components and materials or components and materials containing hazardous substances and material composition and homogeneity, possibility for high-purity sorting, [...] number and complexity of processes and tools needed, ease of nondestructive disassembly and re-assembly, conditions for access to product data, conditions for access to or use of hardware and software needed;\n(q) functional performance and conditions for use including as expressed through ability in performing its intended use, precautions of use, skills required, compatibility with other products or systems.\nAdditionally to consider are guidelines and instructions regarding the proper management and disposal of packaging materials after use. This can include instructions for separation, reuse, and recycling.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:sources" - }, - "sustainability": { - "@context": { - "@definition": "Sustainability related attributes.", - "@version": 1.1, - "durabilityScore": { - "@context": { - "@definition": "The durability score. This attribute is mentioned ESPR provisional agreement from January 9th, 2024 Article 7:\n(b) as appropriate, also require products to be accompanied by:\n(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability [...]." - }, - "@id": "aspect:durabilityScore", - "@type": "schema:string" - }, - "id": "@id", - "productFootprint": { - "@context": { - "@definition": "The carbon and environmental footprint or material footprint of the product. These attributes are mentioned in the ESPR provisional agreement from January 9th 2024 Annex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories;\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product;\nAll are defined by Article 2:\n(23) 'environmental footprint' means a quantification of product environmental impacts throughout its life cycle, whether in relation to a single environmental impact category or an aggregated set of impact categories based on the Product Environmental Footprint method or other scientific methods developed by international organisations and widely tested in collaboration with different industry sectors and adopted or implemented by the Commission in other Union \nlegislation;\n(25) 'carbon footprint' means the sum of greenhouse gas (GHG) emissions and GHG removals in a product system, expressed as CO2 equivalents and based on a life cycle assessment using the single impact category of climate change.\n(25a) 'material footprint' refers to the total amount of raw materials extracted to meet final consumption demands;", - "@version": 1.1, - "carbon": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "declaration": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The footprint declaration in the format of a link ", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:declaration" - }, - "id": "@id", - "lifecycle": { - "@context": { - "@definition": "The lifecycle stage, to which the environmental footprint corresponds. These could be for example \"raw material acquisition and pre-processing\", \"main product production\", \"distribution\" or \"end of life and recycling\"." - }, - "@id": "aspect:lifecycle", - "@type": "schema:string" - }, - "manufacturingPlant": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "facility": { - "@context": { - "@definition": "The identifier used for a location. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(i) unique facility identifiers;\nArticle 2 Definitions: (33) 'unique facility identifier' means a unique string of characters for the identification of locations or buildings involved in the value chain of a product or used by actors involved in the value chain of a product." - }, - "@id": "aspect:facility", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The manufacturing plant of the footprint in the specific lifecycle phase.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:manufacturingPlant" - }, - "performanceClass": { - "@context": { - "@definition": "The performance classification of the footprint." - }, - "@id": "aspect:performanceClass", - "@type": "schema:string" - }, - "rulebook": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The applied rulebook for the environmental footprint of the product.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:rulebook" - }, - "type": { - "@context": { - "@definition": "The type of the environmental footprint of the product. This could be one of the environmental impact categories. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Article 7:\n(2)(b)(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability, carbon footprint or environmental footprint;\nAnnex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories.\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product." - }, - "@id": "aspect:type", - "@type": "schema:string" - }, - "unit": { - "@context": { - "@definition": "The unit of measurement of the environmental impact category. For each impact category a specific unit is used. If an aggregation is used, utilize the normalization and weighting methods used in the referenced rulebook." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The value of the footprint of the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Annex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories;\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product.\n" - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@definition": "The carbon footprint of the product. This is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\nThe following parameters shall, as appropriate, and where necessary supplemented by others, be used, individually or combined, as a basis for improving the product aspects referred to in Article 5(1):\n(m) the carbon footprint of the product;\nand Article 7:\n(2)(b)(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability, carbon footprint or environmental footprint;\nand defined by Article 2:\n(25) 'carbon footprint' means the sum of greenhouse gas (GHG) emissions and GHG removals in a product system, expressed as CO2 equivalents and based on a life cycle assessment using the single impact category of climate change.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:carbon" - }, - "environmental": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "declaration": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The footprint declaration in the format of a link ", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:declaration" - }, - "id": "@id", - "lifecycle": { - "@context": { - "@definition": "The lifecycle stage, to which the environmental footprint corresponds. These could be for example \"raw material acquisition and pre-processing\", \"main product production\", \"distribution\" or \"end of life and recycling\"." - }, - "@id": "aspect:lifecycle", - "@type": "schema:string" - }, - "manufacturingPlant": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "facility": { - "@context": { - "@definition": "The identifier used for a location. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(i) unique facility identifiers;\nArticle 2 Definitions: (33) 'unique facility identifier' means a unique string of characters for the identification of locations or buildings involved in the value chain of a product or used by actors involved in the value chain of a product." - }, - "@id": "aspect:facility", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The manufacturing plant of the footprint in the specific lifecycle phase.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:manufacturingPlant" - }, - "performanceClass": { - "@context": { - "@definition": "The performance classification of the footprint." - }, - "@id": "aspect:performanceClass", - "@type": "schema:string" - }, - "rulebook": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The applied rulebook for the environmental footprint of the product.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:rulebook" - }, - "type": { - "@context": { - "@definition": "The type of the environmental footprint of the product. This could be one of the environmental impact categories. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Article 7:\n(2)(b)(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability, carbon footprint or environmental footprint;\nAnnex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories.\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product." - }, - "@id": "aspect:type", - "@type": "schema:string" - }, - "unit": { - "@context": { - "@definition": "The unit of measurement of the environmental impact category. For each impact category a specific unit is used. If an aggregation is used, utilize the normalization and weighting methods used in the referenced rulebook." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The value of the footprint of the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Annex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories;\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product.\n" - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@definition": "The environmental footprint of the product. This attribute is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\nThe following parameters shall, as appropriate, and where necessary supplemented by others, be used, individually or combined, as a basis for improving the product aspects referred to in Article 5(1):\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories.\nand Article 7:\n(2)(b)(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability, carbon footprint or environmental footprint;\nand defined by Article 2:\n(23) 'environmental footprint' means a quantification of product environmental impacts throughout its life cycle, whether in relation to a single environmental impact category or an aggregated set of impact categories based on the Product Environmental Footprint method or other scientific methods developed by international organisations and widely tested in collaboration with different industry sectors and adopted or implemented by the Commission in other Union legislation;\n(24) 'Product Environmental Footprint method' means the life cycle assessment method to quantify the environmental impacts of products established by Recommendation (EU) 2021/2279.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:environmental" - }, - "id": "@id", - "material": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "declaration": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The footprint declaration in the format of a link ", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:declaration" - }, - "id": "@id", - "lifecycle": { - "@context": { - "@definition": "The lifecycle stage, to which the environmental footprint corresponds. These could be for example \"raw material acquisition and pre-processing\", \"main product production\", \"distribution\" or \"end of life and recycling\"." - }, - "@id": "aspect:lifecycle", - "@type": "schema:string" - }, - "manufacturingPlant": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "facility": { - "@context": { - "@definition": "The identifier used for a location. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Annex III:\n(i) unique facility identifiers;\nArticle 2 Definitions: (33) 'unique facility identifier' means a unique string of characters for the identification of locations or buildings involved in the value chain of a product or used by actors involved in the value chain of a product." - }, - "@id": "aspect:facility", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The manufacturing plant of the footprint in the specific lifecycle phase.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:manufacturingPlant" - }, - "performanceClass": { - "@context": { - "@definition": "The performance classification of the footprint." - }, - "@id": "aspect:performanceClass", - "@type": "schema:string" - }, - "rulebook": { - "@container": "@list", - "@context": { - "@context": { - "@version": 1.1, - "content": { - "@context": { - "@definition": "The content of the document e.g a link." - }, - "@id": "aspect:content", - "@type": "schema:string" - }, - "contentType": { - "@context": { - "@definition": "The type of content which can be expected in the \"content\" property. Examples are a link, restricted link, pdf, excel, etc." - }, - "@id": "aspect:contentType", - "@type": "schema:string" - }, - "header": { - "@context": { - "@definition": "The header as a short description of the document with a maximum of 100 characters." - }, - "@id": "aspect:header", - "@type": "schema:string" - }, - "id": "@id", - "type": "@type" - }, - "@definition": "The applied rulebook for the environmental footprint of the product.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:rulebook" - }, - "type": { - "@context": { - "@definition": "The type of the environmental footprint of the product. This could be one of the environmental impact categories. This attribute is mentioned in the ESPR provisional agreement from January 9th 2024 Article 7:\n(2)(b)(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability, carbon footprint or environmental footprint;\nAnnex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories.\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product." - }, - "@id": "aspect:type", - "@type": "schema:string" - }, - "unit": { - "@context": { - "@definition": "The unit of measurement of the environmental impact category. For each impact category a specific unit is used. If an aggregation is used, utilize the normalization and weighting methods used in the referenced rulebook." - }, - "@id": "aspect:unit", - "@type": "schema:string" - }, - "value": { - "@context": { - "@definition": "The value of the footprint of the product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Annex I:\n(l) the environmental footprint of the product, expressed as a quantification, in accordance with the applicable delegated act, of a product's life cycle environmental impacts, whether in relation to one or more environmental impact categories or an aggregated set of impact categories;\n(m) the carbon footprint of the product;\n(ma) the material footprint of the product.\n" - }, - "@id": "aspect:value", - "@type": "schema:number" - } - }, - "@definition": "The material footprint of the product. This is mentioned in the ESPR provisional agreement from January 9th, 2024 Annex I:\n(ma) the material footprint of the product;\nand defined by Article 2:\n(25a) 'material footprint' refers to the total amount of raw materials extracted to meet final consumption demands.", - "@version": 1.1, - "id": "@id", - "type": "@type" - }, - "@id": "aspect:material" - }, - "type": "@type" - }, - "@id": "aspect:productFootprint" - }, - "reparabilityScore": { - "@context": { - "@definition": "The reparability score. This attribute is mentioned ESPR provisional agreement from January 9th, 2024 Article 7:\n(b) as appropriate, also require products to be accompanied by:\n(i) information on the performance of the product in relation to one or more of the product parameters referred to in Annex I, including a scoring of reparability or durability [...]." - }, - "@id": "aspect:reparabilityScore", - "@type": "schema:string" - }, - "status": { - "@context": { - "@definition": "The status of the product (original, repurposed, re-used, remanufactured or waste) to indicated, whether it is a used product. This attribute is mentioned in the ESPR proposal from March 30th, 2022 Annex I:\n(j) incorporation of used components." - }, - "@id": "aspect:status", - "@type": "schema:string" - }, - "type": "@type" - }, - "@id": "aspect:sustainability" - }, - "type": "@type" - } - } - } - } - ], - "type": [ - "VerifiableCredential", - "CertifiedDataCredential", - "DigitalProductPassport" - ], - "issuer": "did:web:localhost%3A7777:BPNL00000000W3BS", - "parent": { - "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", - "checksum": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" - }, - "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport", - "credentialSubject": { - "id": "did:web:wallet-url.test.com:BPNL00000007RVTB", - "DigitalProductPassport": { - "metadata": { - "backupReference": "https://dummy.link", - "registrationIdentifier": "https://dummy.link/ID8283746239078", - "economicOperatorId": "BPNL0123456789ZZ", - "lastModification": "2000-01-01", - "predecessor": "urn:uuid:00000000-0000-0000-0000-000000000000", - "issueDate": "2000-01-01", - "version": "1.0.0", - "passportIdentifier": "urn:uuid:550e8400-e29b-41d4-a716-446655440000", - "status": "draft", - "expirationDate": "2030-01-01" - }, - "characteristics": { - "generalPerformanceClass": "A", - "physicalState": "solid", - "physicalDimension": { - "volume": { - "value": 20.0, - "unit": "unit:cubicMetre" - }, - "grossWeight": { - "value": 20.0, - "unit": "unit:gram" - }, - "diameter": { - "value": 20.0, - "unit": "unit:millimetre" - }, - "grossVolume": { - "value": 20.0, - "unit": "unit:cubicMetre" - }, - "width": { - "value": 20.0, - "unit": "unit:millimetre" - }, - "length": { - "value": 20.0, - "unit": "unit:millimetre" - }, - "weight": { - "value": 20.0, - "unit": "unit:gram" - }, - "height": { - "value": 20.0, - "unit": "unit:millimetre" - } - }, - "lifespan": [ - { - "value": 36, - "unit": "unit:day", - "key": "guaranteed lifetime" - } - ] - }, - "commercial": { - "placedOnMarket": "2000-01-01", - "purpose": [ - "automotive" - ] - }, - "identification": { - "batch": [ - { - "value": "BID12345678", - "key": "batchId" - } - ], - "codes": [ - { - "value": "8703 24 10 00", - "key": "TARIC" - } - ], - "type": { - "manufacturerPartId": "123-0.740-3434-A", - "nameAtManufacturer": "Mirror left" - }, - "classification": [ - { - "classificationStandard": "GIN 20510-21513", - "classificationID": "1004712", - "classificationDescription": "Generic standard for classification of parts in the automotive industry." - } - ], - "serial": [ - { - "value": "SN12345678", - "key": "partInstanceId" - } - ], - "dataCarrier": { - "carrierType": "QR", - "carrierLayout": "upper-left side" - } - }, - "sources": [ - { - "header": "Example Document XYZ", - "category": "Product Specifications", - "type": "URL", - "content": "https://dummy.link" - } - ], - "materials": { - "substancesOfConcern": { - "applicable": true, - "content": [ - { - "unit": "unit:partPerMillion", - "hazardClassification": { - "category": "category 1A", - "statement": "Causes severe skin burns and eye damage.", - "class": "Skin corrosion" - }, - "documentation": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ], - "concentrationRange": [ - { - "max": 2.6, - "min": 2.1 - } - ], - "location": "Housing", - "concentration": 5.3, - "exemption": "shall not apply to product x containing not more than 1,5 ml of liquid", - "id": [ - { - "type": "CAS", - "name": "phenolphthalein", - "id": "201-004-7" - } - ] - } - ] - }, - "materialComposition": { - "applicable": true, - "content": [ - { - "unit": "unit:partPerMillion", - "recycled": 12.5, - "critical": true, - "renewable": 23.5, - "documentation": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ], - "concentration": 5.3, - "id": [ - { - "type": "CAS", - "name": "phenolphthalein", - "id": "201-004-7" - } - ] - } - ] - } - }, - "handling": { - "applicable": true, - "content": { - "producer": [ - { - "id": "BPNL0123456789ZZ" - } - ], - "sparePart": [ - { - "manufacturerPartId": "123-0.740-3434-A", - "nameAtManufacturer": "Mirror left" - } - ] - } - }, - "additionalData": [ - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "array" - }, - "data": "23", - "children": [ - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "array" - }, - "data": "23" - }, - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "array" - }, - "data": "null", - "children": [ - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "object" - }, - "children": [ - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "string" - }, - "data": "asdasdasd", - "children": [ - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "string" - }, - "data": "asdasdasd" - } - ] - } - ] - }, - { - "description": "Description of an attribute", - "label": "Maximum permitted battery power", - "type": { - "typeUnit": "unit:volume", - "dataType": "string" - }, - "data": "4323" - } - ] - } - ] - } - ], - "operation": { - "import": { - "applicable": true, - "content": { - "eori": "GB123456789000", - "id": "BPNL0123456789ZZ" - } - }, - "other": { - "id": "BPNL0123456789XX", - "role": "distributor" - }, - "manufacturer": { - "facility": [ - { - "facility": "BPNA1234567890AA" - } - ], - "manufacturingDate": "2000-01-31", - "manufacturer": "BPNLbi7tAJ8UiMsF" - } - }, - "sustainability": { - "reparabilityScore": "B", - "productFootprint": { - "material": [ - { - "lifecycle": "main product production", - "rulebook": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ], - "unit": "kg CO2 / kWh", - "performanceClass": "A", - "manufacturingPlant": [ - { - "facility": "BPNA1234567890AA" - } - ], - "type": "Climate Change Total", - "value": 12.678, - "declaration": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ] - } - ], - "carbon": [ - { - "lifecycle": "main product production", - "rulebook": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ], - "unit": "kg CO2 / kWh", - "performanceClass": "A", - "manufacturingPlant": [ - { - "facility": "BPNA1234567890AA" - } - ], - "type": "Climate Change Total", - "value": 12.678, - "declaration": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ] - } - ], - "environmental": [ - { - "lifecycle": "main product production", - "rulebook": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ], - "unit": "kg CO2 / kWh", - "performanceClass": "A", - "manufacturingPlant": [ - { - "facility": "BPNA1234567890AA" - } - ], - "type": "Climate Change Total", - "value": 12.678, - "declaration": [ - { - "contentType": "URL", - "header": "Example Document XYZ", - "content": "https://dummy.link" - } - ] - } - ] - }, - "status": "original", - "durabilityScore": "A" - } - } - }, - "id": "urn:uuid:efa5681c-423f-4594-a11a-d59960ab3edc", - "validFrom": "2024-06-10T12:26:21+00:00Z", - "validUntil": "2024-11-25T12:26:21+00:00Z", - "proof": { - "type": "JsonWebSignature2020", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:web:localhost%3A7777:BPNL00000000W3BS#KRxYHiKWoOmwNWDN5cFwpACN6L7XPN7CyT-rqt57I-Y", - "created": "2024-06-10T12:26:21+00:00Z", - "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..re5OBXOqEjISL9jO-nPRmXmzeVx7SEpaetJPmpOVm3jgmb8wlH_58zFwYll5SI6lZR81cc_dEF69NKhKbj9ABA" - } -} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC-Expanded.jsonld similarity index 99% rename from dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC.jsonld rename to dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC-Expanded.jsonld index 1e650ba74..f9c2e1016 100644 --- a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC.jsonld +++ b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC-Expanded.jsonld @@ -1395,22 +1395,21 @@ } ] } - ], - "@id": "did:web:wallet-url.test.com:BPNL00000007RVTB" + ] } ], - "@id": "urn:uuid:efa5681c-423f-4594-a11a-d59960ab3edc", + "@id": "urn:uuid:d2e47115-c430-4145-bbde-1c743804a379", "https://www.w3.org/2018/credentials#issuer": [ { - "@id": "did:web:localhost%3A7777:BPNL00000000W3BS" + "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS" } ], "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#parent": [ { "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", - "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#checksum": [ + "https://w3id.org/security#digestMultibase": [ { - "@type": "https://schema.org/string", + "@type": "https://w3id.org/security#multibase", "@value": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" } ] @@ -1423,12 +1422,12 @@ "http://purl.org/dc/terms/created": [ { "@type": "http://www.w3.org/2001/XMLSchema#dateTime", - "@value": "2024-06-10T12:26:21+00:00Z" + "@value": "2024-06-21T16:52:40+00:00Z" } ], "https://w3id.org/security#jws": [ { - "@value": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..re5OBXOqEjISL9jO-nPRmXmzeVx7SEpaetJPmpOVm3jgmb8wlH_58zFwYll5SI6lZR81cc_dEF69NKhKbj9ABA" + "@value": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..c_xfb7TCumZqWxeZHXCiu1xWgyzx2JgeAJjPteDbr3gxRtIZvobsxfWR5s5UTMKgp47vC6Mh0_Uq6cN7vB6ABA" } ], "https://w3id.org/security#proofPurpose": [ @@ -1441,7 +1440,7 @@ ], "https://w3id.org/security#verificationMethod": [ { - "@id": "did:web:localhost%3A7777:BPNL00000000W3BS#KRxYHiKWoOmwNWDN5cFwpACN6L7XPN7CyT-rqt57I-Y" + "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA" } ] } @@ -1462,13 +1461,13 @@ "https://www.w3.org/2018/credentials#validFrom": [ { "@type": "http://www.w3.org/2001/XMLSchema#dateTime", - "@value": "2024-06-10T12:26:21+00:00Z" + "@value": "2024-06-21T16:52:40Z" } ], "https://www.w3.org/2018/credentials#validUntil": [ { "@type": "http://www.w3.org/2001/XMLSchema#dateTime", - "@value": "2024-11-25T12:26:21+00:00Z" + "@value": "2024-12-06T16:52:40Z" } ] } diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC-slim.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC-slim.jsonld deleted file mode 100644 index a7396a5f0..000000000 --- a/dpp-verification/semantics/io.catenax.dpp_verification.cdc/1.0.0/gen/ExpandedDigitalProductPassCDC-slim.jsonld +++ /dev/null @@ -1,1474 +0,0 @@ -[ - { - "https://www.w3.org/2018/credentials#credentialSubject": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#additionalData": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#children": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#data": [ - { - "@type": "https://schema.org/string", - "@value": "23" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "array" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - }, - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#children": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#children": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#children": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#data": [ - { - "@type": "https://schema.org/string", - "@value": "asdasdasd" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "string" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#data": [ - { - "@type": "https://schema.org/string", - "@value": "asdasdasd" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "string" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "object" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - }, - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#data": [ - { - "@type": "https://schema.org/string", - "@value": "4323" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "string" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#data": [ - { - "@type": "https://schema.org/string", - "@value": "null" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "array" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#data": [ - { - "@type": "https://schema.org/string", - "@value": "23" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#description": [ - { - "@type": "https://schema.org/string", - "@value": "Description of an attribute" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#label": [ - { - "@type": "https://schema.org/string", - "@value": "Maximum permitted battery power" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataType": [ - { - "@type": "https://schema.org/string", - "@value": "array" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#typeUnit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:volume" - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#characteristics": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#generalPerformanceClass": [ - { - "@type": "https://schema.org/string", - "@value": "A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#lifespan": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#key": [ - { - "@type": "https://schema.org/string", - "@value": "guaranteed lifetime" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:day" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 36 - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#physicalDimension": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#diameter": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:millimetre" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#grossVolume": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:cubicMetre" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#grossWeight": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:gram" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#height": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:millimetre" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#length": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:millimetre" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#volume": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:cubicMetre" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#weight": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:gram" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#width": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:millimetre" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 20 - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#physicalState": [ - { - "@type": "https://schema.org/string", - "@value": "solid" - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#commercial": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#placedOnMarket": [ - { - "@type": "https://schema.org/string", - "@value": "2000-01-01" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#purpose": [ - { - "@list": [ - { - "@type": "https://schema.org/string", - "@value": "automotive" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#handling": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#applicable": [ - { - "@type": "https://schema.org/boolean", - "@value": true - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#producer": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@type": "https://schema.org/string", - "@value": "BPNL0123456789ZZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#sparePart": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturerPartId": [ - { - "@type": "https://schema.org/string", - "@value": "123-0.740-3434-A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#nameAtManufacturer": [ - { - "@type": "https://schema.org/string", - "@value": "Mirror left" - } - ] - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#identification": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#batch": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#key": [ - { - "@type": "https://schema.org/string", - "@value": "batchId" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/string", - "@value": "BID12345678" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#classification": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#classificationDescription": [ - { - "@type": "https://schema.org/string", - "@value": "Generic standard for classification of parts in the automotive industry." - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#classificationID": [ - { - "@type": "https://schema.org/string", - "@value": "1004712" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#classificationStandard": [ - { - "@type": "https://schema.org/string", - "@value": "GIN 20510-21513" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#codes": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#key": [ - { - "@type": "https://schema.org/string", - "@value": "TARIC" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/string", - "@value": "8703 24 10 00" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#dataCarrier": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#carrierLayout": [ - { - "@type": "https://schema.org/string", - "@value": "upper-left side" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#carrierType": [ - { - "@type": "https://schema.org/string", - "@value": "QR" - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#serial": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#key": [ - { - "@type": "https://schema.org/string", - "@value": "partInstanceId" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/string", - "@value": "SN12345678" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturerPartId": [ - { - "@type": "https://schema.org/string", - "@value": "123-0.740-3434-A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#nameAtManufacturer": [ - { - "@type": "https://schema.org/string", - "@value": "Mirror left" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#materials": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#materialComposition": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#applicable": [ - { - "@type": "https://schema.org/boolean", - "@value": true - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#concentration": [ - { - "@type": "https://schema.org/number", - "@value": 5.3 - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#critical": [ - { - "@type": "https://schema.org/boolean", - "@value": true - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#documentation": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@type": "https://schema.org/string", - "@value": "201-004-7" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#name": [ - { - "@type": "https://schema.org/string", - "@value": "phenolphthalein" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "@type": "https://schema.org/string", - "@value": "CAS" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#recycled": [ - { - "@type": "https://schema.org/number", - "@value": 12.5 - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#renewable": [ - { - "@type": "https://schema.org/number", - "@value": 23.5 - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:partPerMillion" - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#substancesOfConcern": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#applicable": [ - { - "@type": "https://schema.org/boolean", - "@value": true - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#concentration": [ - { - "@type": "https://schema.org/number", - "@value": 5.3 - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#concentrationRange": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#max": [ - { - "@type": "https://schema.org/number", - "@value": 2.6 - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#min": [ - { - "@type": "https://schema.org/number", - "@value": 2.1 - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#documentation": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#exemption": [ - { - "@type": "https://schema.org/string", - "@value": "shall not apply to product x containing not more than 1,5 ml of liquid" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#hazardClassification": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#category": [ - { - "@type": "https://schema.org/string", - "@value": "category 1A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#class": [ - { - "@type": "https://schema.org/string", - "@value": "Skin corrosion" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#statement": [ - { - "@type": "https://schema.org/string", - "@value": "Causes severe skin burns and eye damage." - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@type": "https://schema.org/string", - "@value": "201-004-7" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#name": [ - { - "@type": "https://schema.org/string", - "@value": "phenolphthalein" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "@type": "https://schema.org/string", - "@value": "CAS" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#location": [ - { - "@type": "https://schema.org/string", - "@value": "Housing" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "unit:partPerMillion" - } - ] - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#metadata": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#backupReference": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#economicOperatorId": [ - { - "@type": "https://schema.org/string", - "@value": "BPNL0123456789ZZ" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#expirationDate": [ - { - "@type": "https://schema.org/string", - "@value": "2030-01-01" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#issueDate": [ - { - "@type": "https://schema.org/string", - "@value": "2000-01-01" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#lastModification": [ - { - "@type": "https://schema.org/string", - "@value": "2000-01-01" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#passportIdentifier": [ - { - "@type": "https://schema.org/string", - "@value": "urn:uuid:550e8400-e29b-41d4-a716-446655440000" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#predecessor": [ - { - "@type": "https://schema.org/string", - "@value": "urn:uuid:00000000-0000-0000-0000-000000000000" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#registrationIdentifier": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link/ID8283746239078" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#status": [ - { - "@type": "https://schema.org/string", - "@value": "draft" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#version": [ - { - "@type": "https://schema.org/string", - "@value": "1.0.0" - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#operation": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#import": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#applicable": [ - { - "@type": "https://schema.org/boolean", - "@value": true - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#eori": [ - { - "@type": "https://schema.org/string", - "@value": "GB123456789000" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@type": "https://schema.org/string", - "@value": "BPNL0123456789ZZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturer": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#facility": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#facility": [ - { - "@type": "https://schema.org/string", - "@value": "BPNA1234567890AA" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturer": [ - { - "@type": "https://schema.org/string", - "@value": "BPNLbi7tAJ8UiMsF" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturingDate": [ - { - "@type": "https://schema.org/string", - "@value": "2000-01-31" - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#other": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#id": [ - { - "@type": "https://schema.org/string", - "@value": "BPNL0123456789XX" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#role": [ - { - "@type": "https://schema.org/string", - "@value": "distributor" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#sources": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#category": [ - { - "@type": "https://schema.org/string", - "@value": "Product Specifications" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#sustainability": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#durabilityScore": [ - { - "@type": "https://schema.org/string", - "@value": "A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#productFootprint": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#carbon": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#declaration": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#lifecycle": [ - { - "@type": "https://schema.org/string", - "@value": "main product production" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturingPlant": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#facility": [ - { - "@type": "https://schema.org/string", - "@value": "BPNA1234567890AA" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#performanceClass": [ - { - "@type": "https://schema.org/string", - "@value": "A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#rulebook": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "@type": "https://schema.org/string", - "@value": "Climate Change Total" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "kg CO2 / kWh" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 12.678 - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#environmental": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#declaration": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#lifecycle": [ - { - "@type": "https://schema.org/string", - "@value": "main product production" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturingPlant": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#facility": [ - { - "@type": "https://schema.org/string", - "@value": "BPNA1234567890AA" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#performanceClass": [ - { - "@type": "https://schema.org/string", - "@value": "A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#rulebook": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "@type": "https://schema.org/string", - "@value": "Climate Change Total" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "kg CO2 / kWh" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 12.678 - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#material": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#declaration": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#lifecycle": [ - { - "@type": "https://schema.org/string", - "@value": "main product production" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#manufacturingPlant": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#facility": [ - { - "@type": "https://schema.org/string", - "@value": "BPNA1234567890AA" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#performanceClass": [ - { - "@type": "https://schema.org/string", - "@value": "A" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#rulebook": [ - { - "@list": [ - { - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#content": [ - { - "@type": "https://schema.org/string", - "@value": "https://dummy.link" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#contentType": [ - { - "@type": "https://schema.org/string", - "@value": "URL" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#header": [ - { - "@type": "https://schema.org/string", - "@value": "Example Document XYZ" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#type": [ - { - "@type": "https://schema.org/string", - "@value": "Climate Change Total" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#unit": [ - { - "@type": "https://schema.org/string", - "@value": "kg CO2 / kWh" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#value": [ - { - "@type": "https://schema.org/number", - "@value": 12.678 - } - ] - } - ] - } - ] - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#reparabilityScore": [ - { - "@type": "https://schema.org/string", - "@value": "B" - } - ], - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#status": [ - { - "@type": "https://schema.org/string", - "@value": "original" - } - ] - } - ] - } - ] - } - ], - "@id": "urn:uuid:d2e47115-c430-4145-bbde-1c743804a379", - "https://www.w3.org/2018/credentials#issuer": [ - { - "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS" - } - ], - "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#parent": [ - { - "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", - "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#checksum": [ - { - "@type": "https://schema.org/string", - "@value": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" - } - ] - } - ], - "https://w3id.org/security#proof": [ - { - "@graph": [ - { - "http://purl.org/dc/terms/created": [ - { - "@type": "http://www.w3.org/2001/XMLSchema#dateTime", - "@value": "2024-06-21T16:52:40+00:00Z" - } - ], - "https://w3id.org/security#jws": [ - { - "@value": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..c_xfb7TCumZqWxeZHXCiu1xWgyzx2JgeAJjPteDbr3gxRtIZvobsxfWR5s5UTMKgp47vC6Mh0_Uq6cN7vB6ABA" - } - ], - "https://w3id.org/security#proofPurpose": [ - { - "@id": "https://w3id.org/security#assertionMethod" - } - ], - "@type": [ - "https://w3id.org/security#JsonWebSignature2020" - ], - "https://w3id.org/security#verificationMethod": [ - { - "@id": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA" - } - ] - } - ] - } - ], - "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#semanticId": [ - { - "@type": "https://schema.org/string", - "@value": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport" - } - ], - "@type": [ - "https://www.w3.org/2018/credentials#VerifiableCredential", - "urn:samm:io.catenax.dpp_verification.cdc:1.0.0#CertifiedDataCredential", - "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport" - ], - "https://www.w3.org/2018/credentials#validFrom": [ - { - "@type": "http://www.w3.org/2001/XMLSchema#dateTime", - "@value": "2024-06-21T16:52:40Z" - } - ], - "https://www.w3.org/2018/credentials#validUntil": [ - { - "@type": "http://www.w3.org/2001/XMLSchema#dateTime", - "@value": "2024-12-06T16:52:40Z" - } - ] - } - ] \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/CertifiedSnapshotCredential.ttl b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/CertifiedSnapshotCredential.ttl new file mode 100644 index 000000000..d7b838d82 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/CertifiedSnapshotCredential.ttl @@ -0,0 +1,162 @@ +################################################################################# +# Tractus-X - Digital Product Pass Verification Add-on +# +# Copyright (c) 2023, 2024 BMW AG +# Copyright (c) 2023, 2024 CGI Deutschland B.V. & Co. KG +# Copyright (c) 2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This work is made available under the terms of the +# Creative Commons Attribution 4.0 International (CC-BY-4.0) license, +# which is available at +# https://creativecommons.org/licenses/by/4.0/legalcode. +# +# SPDX-License-Identifier: CC-BY-4.0 +################################################################################# + +@prefix samm: . +@prefix samm-c: . +@prefix samm-e: . +@prefix unit: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix : . + +:CertifiedSnapshotCredential a samm:Aspect ; + samm:preferredName "CertifiedSnapshotCredential"@en ; + samm:description "Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.\nIt can be \"self-testified\" by the data provider when creating/issuing the passport data. It contains the additional attributes added to the Verifiable Credential Data Model v2."@en ; + samm:see ; + samm:see ; + samm:properties ( :credentialSubject :origin ) ; + samm:operations ( ) ; + samm:events ( ) . + +:credentialSubject a samm:Property ; + samm:preferredName "credentialSubject"@en ; + samm:description "The standardized component from the Verifiable Credentials that contains the content from the Verified Aspect."@en ; + samm:see ; + samm:characteristic :CredentialSubjectCharacteristic . + +:origin a samm:Property ; + samm:preferredName "origin"@en ; + samm:description "The reference to the original credential/data use for creating the "@en ; + samm:characteristic :OriginCharacteristic . + +:CredentialSubjectCharacteristic a samm:Characteristic ; + samm:preferredName "credentialSubject"@en ; + samm:dataType :CredentialSubjectEntity . + +:OriginCharacteristic a samm:Characteristic ; + samm:preferredName "originCharacteristic"@en ; + samm:dataType :OriginEntity . + +:CredentialSubjectEntity a samm:Entity ; + samm:preferredName "credentialSubject"@en ; + samm:properties ( :attributes ) . + +:OriginEntity a samm:Entity ; + samm:preferredName "originEntity"@en ; + samm:properties ( :digestMultibase :semanticId [ samm:property :type; samm:payloadName "@type" ] [ samm:property :originId; samm:payloadName "@id" ] ) . + +:attributes a samm:Property ; + samm:preferredName "attributes"@en ; + samm:description "The list of attributes that are \"certified\" by the issuer of the credential."@en ; + samm:characteristic :AttibutesListCharacteristic . + +:digestMultibase a samm:Property ; + samm:preferredName "digestMultibase"@en ; + samm:description "Constains the SHA512 Hash checksum of the complete verifiable credential/data of the origin content"@en ; + samm:see ; + samm:see ; + samm:characteristic :SHA3512 ; + samm:exampleValue "9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14" . + +:semanticId a samm:Property ; + samm:preferredName "semanticId"@en ; + samm:description "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD."@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass" . + +:type a samm:Property ; + samm:preferredName "@type"@en ; + samm:description "Describes the MIME type of the origin document, verifiable credential, data model or any other resource."@en ; + samm:characteristic samm-c:MimeType ; + samm:exampleValue "application/vc+ld+json" . + +:originId a samm:Property ; + samm:preferredName "@id"@en ; + samm:description "The DID Reference, link to the verifiable credential, or the specific resource provided as origin document for the validation/certification of the attributes."@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812" . + +:AttibutesListCharacteristic a samm-c:List ; + samm:preferredName "attributes"@en ; + samm:description "The list of attributes contained in the origin file used to create the \"snapshot\"."@en ; + samm:dataType :AttributeEntity . + +:SHA3512 a samm:Characteristic ; + samm:preferredName "sha3-512"@en ; + samm:description "The Secure Hash Algorithm 3 is a mathematical hash function that receives bytes from a input source and generates a output of 512 \"bytes\". It is considered actually one of the most strong hash functions available from the SHA3 series. Its a more advance permutation of the SHA2-512, and it is not vulnerable to length extension attacks."@en ; + samm:see ; + samm:see ; + samm:dataType xsd:string . + +:AttributeEntity a samm:Entity ; + samm:preferredName "attribute"@en ; + samm:description "The entity that represents one attribute correspondent to the origin aspect from where the \"snapshot\" was taken."@en ; + samm:properties ( [ samm:property :pathId; samm:payloadName "@id" ] :validationMethod :digestMultibase ) . + +:pathId a samm:Property ; + samm:preferredName "@id"@en ; + samm:description "The path or location from the attribute in the original payload referenced in \"origin\". In case the value is in array the position of the element will be referenced. Example sustainability.productCarbonFootprint.calculations[0].value, but in the case it is a object the notation sustainability.productCarbonFootprint.value, will be used. Contains the short name of the model and the path to the attribute"@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "sustainability.productFootprint.carbon[0].value" . + +:validationMethod a samm:Property ; + samm:preferredName "validationMethod"@en ; + samm:description "List of calculation methods, rulebooks, standards and regulations used to validate the value."@en ; + samm:characteristic :MethodListCharacteristic . + +:MethodListCharacteristic a samm-c:List ; + samm:preferredName "methodList"@en ; + samm:description "This is the list of methods."@en ; + samm:dataType :Method . + +:Method a samm:Entity ; + samm:preferredName "method"@en ; + samm:description "The single element that represents the proofing of validation source. Could be a document, standard, rulebook, regulation, etc."@en ; + samm:properties ( :methodType :label :id :uri ) . + +:methodType a samm:Property ; + samm:preferredName "@type"@en ; + samm:description "The type the element validation method, document, standard used."@en ; + samm:characteristic :MethodTypes ; + samm:exampleValue "Standard" . + +:label a samm:Property ; + samm:preferredName "label"@en ; + samm:description "The label of the document selected as validationMethod."@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "Catena-X PCF Rulebook Standard" . + +:id a samm:Property ; + samm:preferredName "id"@en ; + samm:description "The identification of the specific standard, to ease the identification, searching process and verification of the validationMethod."@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "CX-0029" . + +:uri a samm:Property ; + samm:preferredName "uri"@en ; + samm:description "The url, link, direction or DID for the document, validation proof method used."@en ; + samm:characteristic samm-c:Text ; + samm:exampleValue "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" . + +:MethodTypes a samm-c:Enumeration ; + samm:preferredName "methodTypes"@en ; + samm:description "This is the list of different possible options to be used in the @type field."@en ; + samm:dataType xsd:string ; + samm-c:values ( "Standard" "Regulation" "Rulebook" "Document" "Book" "Application" "Resource" "Manual" "Custom" "Other" "Process" "Undefined" ) . + diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/CertifiedSnapshotCredential-sample.json b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/CertifiedSnapshotCredential-sample.json new file mode 100644 index 000000000..ffcc6e30b --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/CertifiedSnapshotCredential-sample.json @@ -0,0 +1,24 @@ +{ + "credentialSubject": { + "attributes": [ + { + "validationMethod": [ + { + "methodType": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ], + "path": "sustainability.productCarbonFootprint.calculations[0].value", + "proof": "2c54d5edfeb095a18805b81df33b21422a18165563fd36c524cd61068044225fcb24cecb1fbd147bd899f16b080fd62671fc175dcdd712c7d05051085ab41160" + } + ] + }, + "origin": { + "checksum": "9ece086e9bac491fac5c1d1046ca11d737b92a2b2ebd93f005d7b710110c0a678288166e7fbe796883a4f2e9b3ca9f484f521d0ce464345cc1aec96779149c14", + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "@type": "application/vc+ld+json" + } +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/CertifiedSnapshotCredential-schema.json b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/CertifiedSnapshotCredential-schema.json new file mode 100644 index 000000000..a844bede2 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/CertifiedSnapshotCredential-schema.json @@ -0,0 +1,157 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema", + "description": "Credential that contains the complete passport and is signed by the issuer of the data. It allows to track changes during the updates from the passport in the supply chain.\nIt can be \"self-testified\" by the data provider when creating/issuing the passport data. It contains the additional attributes added to the Verifiable Credential Data Model v2.", + "type": "object", + "components": { + "schemas": { + "urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text": { + "type": "string", + "description": "Describes a Property which contains plain text. This is intended exclusively for human readable strings, not for identifiers, measurement values, etc." + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_SHA3512": { + "type": "string", + "description": "The Secure Hash Algorithm 3 is a mathematical hash function that receives bytes from a input source and generates a output of 512 \"bytes\". It is considered actually one of the most strong hash functions available from the SHA3 series. Its a more advance permutation of the SHA2-512, and it is not vulnerable to length extension attacks." + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_MethodTypes": { + "type": "string", + "description": "This is the list of different possible options to be used in the @type field.", + "enum": [ + "Standard", + "Regulation", + "Rulebook", + "Document", + "Book", + "Application", + "Resource", + "Manual", + "Custom", + "Other", + "Process", + "Undefined" + ] + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_Method": { + "description": "The single element that represents the proofing of validation source. Could be a document, standard, rulebook, regulation, etc.", + "type": "object", + "properties": { + "methodType": { + "description": "The type the element validation method, document, standard used.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_MethodTypes" + }, + "label": { + "description": "The label of the document selected as validationMethod.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + }, + "id": { + "description": "The identification of the specific standard, to ease the identification, searching process and verification of the validationMethod.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + }, + "uri": { + "description": "The url, link, direction or DID for the document, validation proof method used.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + } + }, + "required": [ + "methodType", + "label", + "id", + "uri" + ] + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_MethodListCharacteristic": { + "description": "This is the list of methods.", + "type": "array", + "items": { + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_Method" + } + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_AttributeEntity": { + "description": "The entity that represents one attribute correspondent to the origin aspect from where the \"snapshot\" was taken.", + "type": "object", + "properties": { + "path": { + "description": "The path or location from the attribute in the original payload referenced in \"origin\". In case the value is in array the position of the element will be referenced. Example sustainability.productCarbonFootprint.calculations[0].value, but in the case it is a object the notation sustainability.productCarbonFootprint.value, will be used.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + }, + "proof": { + "description": "The hashed proof from the \"raw\" value. Its a sha3-512 hash that contains as content the hashed output produced when the value from the origin path was introduced.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_SHA3512" + }, + "validationMethod": { + "description": "List of calculation methods, rulebooks, standards and regulations used to validate the value.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_MethodListCharacteristic" + } + }, + "required": [ + "path", + "proof", + "validationMethod" + ] + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_AttibutesListCharacteristic": { + "description": "The list of attributes contained in the origin file used to create the \"snapshot\".", + "type": "array", + "items": { + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_AttributeEntity" + } + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_CredentialSubjectCharacteristic": { + "type": "object", + "properties": { + "attributes": { + "description": "The list of attributes that are \"certified\" by the issuer of the credential.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_AttibutesListCharacteristic" + } + }, + "required": [ + "attributes" + ] + }, + "urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_MimeType": { + "type": "string", + "description": "A MIME type as defined in RFC 2046, for example \"application/pdf\"." + }, + "urn_samm_io.catenax.dpp_verification.csc_1.0.0_OriginCharacteristic": { + "type": "object", + "properties": { + "checksum": { + "description": "Constains the SHA512 Hash of the complete verifiable credential/data of the origin content", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_SHA3512" + }, + "semanticId": { + "description": "The property which contains the semantic id string of the credential subject. It contains the complete identification of which aspect model version its contained. The key can be used to find the model information in the expanded JSON-LD.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + }, + "@type": { + "description": "Describes the MIME type of the origin document, verifiable credential, data model or any other resource.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_MimeType" + }, + "@id": { + "description": "The DID Reference, link to the verifiable credential, or the specific resource provided as origin document for the validation/certification of the attributes.", + "$ref": "#/components/schemas/urn_samm_org.eclipse.esmf.samm_characteristic_2.1.0_Text" + } + }, + "required": [ + "checksum", + "semanticId", + "@type", + "@id" + ] + } + } + }, + "properties": { + "credentialSubject": { + "description": "The standardized component from the Verifiable Credentials that contains the content from the Verified Aspect.", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_CredentialSubjectCharacteristic" + }, + "origin": { + "description": "The reference to the original credential/data use for creating the ", + "$ref": "#/components/schemas/urn_samm_io.catenax.dpp_verification.csc_1.0.0_OriginCharacteristic" + } + }, + "required": [ + "credentialSubject", + "origin" + ] +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/DigitalProductPassCSC.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/DigitalProductPassCSC.jsonld new file mode 100644 index 000000000..4983885b1 --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/DigitalProductPassCSC.jsonld @@ -0,0 +1,47 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://w3id.org/security/data-integrity/v2", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/docs/v2/verification/dpp-verification/schemas/csc/1.0.0/certifiedSnapshotCredential.jsonld", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/feature/verification-schemas/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld" + ], + "type": [ + "VerifiableCredential", + "CertifiedSnapshotCredential", + "DigitalProductPassport" + ], + "credentialSubject": { + "attributes": [ + { + "validationMethod": [ + { + "@type": "Standard", + "label": "Catena-X PCF Rulebook Standard", + "@id": "CX-0029", + "uri": "https://catena-x.net/fileadmin/user_upload/Standard-Bibliothek/Update_September23/CX-0029-ProductCarbonFootprintRulebook-v2.0.0.pdf" + } + ], + "@id": "sustainability.productFootprint.carbon[0].value", + "digestMultibase": "d05da06852ad3b7f8ac51cf20b4ff07be758878643da52cc3418cf15eea3e2e91d93dbc69de977560d4561109021d5b39c9f26cbc6546b39298e8ae70694ec32" + } + ] + }, + "origin": { + "digestMultibase": "c118df3b7bf603a86bd79f03c692153bdb4212ab80d49c12154c92415ae83d6d59187d9ba5af9c4e40208f7d7b1d4c727de78cfbe51e768aae743723ee197374", + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPass", + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3Acd1c0904-27e2-4ae2-8751-5c8c8e4b6812", + "@type": "application/vc+ld+json" + }, + "id": "urn:uuid:281a8b98-933c-4d80-ad86-721f1adbe5b3", + "issuer": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T15:08:13Z", + "validUntil": "2024-12-25T15:08:13Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T15:08:13Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..Rpq5BU3Y_-pwQofpWyEaG75muQ2ojRAxr7TZP4PMacO6cXZVeGHD_2qd3EzmEITcXEiV1u3Ct-SHyc7AI9cPCA" + } +} \ No newline at end of file diff --git a/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/OriginDigitalProductPassCDC.jsonld b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/OriginDigitalProductPassCDC.jsonld new file mode 100644 index 000000000..9ff30783e --- /dev/null +++ b/dpp-verification/semantics/io.catenax.dpp_verification.csc/1.0.0/gen/OriginDigitalProductPassCDC.jsonld @@ -0,0 +1,404 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://w3c.github.io/vc-jws-2020/contexts/v1/", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/feature/verification-schemas/dpp-verification/schemas/cdc/1.0.0/certifiedDataCredential.jsonld", + "https://raw.githubusercontent.com/eclipse-tractusx/digital-product-pass/feature/verification-schemas/dpp-verification/schemas/dpp/5.0.0/digitalProductPass.jsonld" + ], + "type": [ + "VerifiableCredential", + "CertifiedDataCredential", + "DigitalProductPassport" + ], + "parent": { + "@id": "did:web:dpp-test-system.com:BPNL000000000000:api:public:urn%3Auuid%3A1c5b6a7c-90d4-3481-0538-f134ff53076d", + "digestMultibase": "64b1a523da600e8fc0018cf57b8f7756b83bb6e9b11c81b1c7444272fab239902321b1b6ae6624d6846fd010616ae98c118f12491f922badd64e58b782c6a115" + }, + "semanticId": "urn:samm:io.catenax.generic.digital_product_passport:5.0.0#DigitalProductPassport", + "credentialSubject": { + "DigitalProductPassport": { + "metadata": { + "backupReference": "https://dummy.link", + "registrationIdentifier": "https://dummy.link/ID8283746239078", + "economicOperatorId": "BPNL0123456789ZZ", + "lastModification": "2000-01-01", + "predecessor": "urn:uuid:00000000-0000-0000-0000-000000000000", + "issueDate": "2000-01-01", + "version": "1.0.1", + "passportIdentifier": "urn:uuid:550e8400-e29b-41d4-a716-446655440000", + "status": "draft", + "expirationDate": "2030-01-01" + }, + "characteristics": { + "generalPerformanceClass": "A", + "physicalState": "solid", + "physicalDimension": { + "volume": { + "value": 20, + "unit": "unit:cubicMetre" + }, + "grossWeight": { + "value": 20, + "unit": "unit:gram" + }, + "diameter": { + "value": 20, + "unit": "unit:millimetre" + }, + "grossVolume": { + "value": 20, + "unit": "unit:cubicMetre" + }, + "width": { + "value": 20, + "unit": "unit:millimetre" + }, + "length": { + "value": 20, + "unit": "unit:millimetre" + }, + "weight": { + "value": 20, + "unit": "unit:gram" + }, + "height": { + "value": 20, + "unit": "unit:millimetre" + } + }, + "lifespan": [ + { + "value": 36, + "unit": "unit:day", + "key": "guaranteed lifetime" + } + ] + }, + "commercial": { + "placedOnMarket": "2000-01-01", + "purpose": [ + "automotive" + ] + }, + "identification": { + "batch": [ + { + "value": "BID12345678", + "key": "batchId" + } + ], + "codes": [ + { + "value": "8703 24 10 00", + "key": "TARIC" + } + ], + "type": { + "manufacturerPartId": "123-0.740-3434-A", + "nameAtManufacturer": "Mirror left" + }, + "classification": [ + { + "classificationStandard": "GIN 20510-21513", + "classificationID": "1004712", + "classificationDescription": "Generic standard for classification of parts in the automotive industry." + } + ], + "serial": [ + { + "value": "SN12345678", + "key": "partInstanceId" + } + ], + "dataCarrier": { + "carrierType": "QR", + "carrierLayout": "upper-left side" + } + }, + "sources": [ + { + "header": "Example Document XYZ", + "category": "Product Specifications", + "type": "URL", + "content": "https://dummy.link" + } + ], + "materials": { + "substancesOfConcern": { + "applicable": true, + "content": [ + { + "unit": "unit:partPerMillion", + "hazardClassification": { + "category": "category 1A", + "statement": "Causes severe skin burns and eye damage.", + "class": "Skin corrosion" + }, + "documentation": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "concentrationRange": [ + { + "max": 2.6, + "min": 2.1 + } + ], + "location": "Housing", + "concentration": 5.3, + "exemption": "shall not apply to product x containing not more than 1,5 ml of liquid", + "id": [ + { + "type": "CAS", + "name": "phenolphthalein", + "id": "201-004-7" + } + ] + } + ] + }, + "materialComposition": { + "applicable": true, + "content": [ + { + "unit": "unit:partPerMillion", + "recycled": 12.5, + "critical": true, + "renewable": 23.5, + "documentation": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "concentration": 5.3, + "id": [ + { + "type": "CAS", + "name": "phenolphthalein", + "id": "201-004-7" + } + ] + } + ] + } + }, + "handling": { + "applicable": true, + "content": { + "producer": [ + { + "id": "BPNL0123456789ZZ" + } + ], + "sparePart": [ + { + "manufacturerPartId": "123-0.740-3434-A", + "nameAtManufacturer": "Mirror left" + } + ] + } + }, + "additionalData": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "array" + }, + "data": "23", + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "array" + }, + "data": "23" + }, + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "array" + }, + "data": "null", + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "object" + }, + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "string" + }, + "data": "asdasdasd", + "children": [ + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "string" + }, + "data": "asdasdasd" + } + ] + } + ] + }, + { + "description": "Description of an attribute", + "label": "Maximum permitted battery power", + "type": { + "typeUnit": "unit:volume", + "dataType": "string" + }, + "data": "4323" + } + ] + } + ] + } + ], + "operation": { + "import": { + "applicable": true, + "content": { + "eori": "GB123456789000", + "id": "BPNL0123456789ZZ" + } + }, + "other": { + "id": "BPNL0123456789XX", + "role": "distributor" + }, + "manufacturer": { + "facility": [ + { + "facility": "BPNA1234567890AA" + } + ], + "manufacturingDate": "2000-01-31", + "manufacturer": "BPNLbi7tAJ8UiMsF" + } + }, + "sustainability": { + "reparabilityScore": "B", + "productFootprint": { + "material": [ + { + "lifecycle": "main product production", + "rulebook": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "unit": "kg CO2 / kWh", + "performanceClass": "A", + "manufacturingPlant": [ + { + "facility": "BPNA1234567890AA" + } + ], + "type": "Climate Change Total", + "value": 12.678, + "declaration": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ] + } + ], + "carbon": [ + { + "lifecycle": "main product production", + "rulebook": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "unit": "kg CO2 / kWh", + "performanceClass": "A", + "manufacturingPlant": [ + { + "facility": "BPNA1234567890AA" + } + ], + "type": "Climate Change Total", + "value": 12.678, + "declaration": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ] + } + ], + "environmental": [ + { + "lifecycle": "main product production", + "rulebook": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ], + "unit": "kg CO2 / kWh", + "performanceClass": "A", + "manufacturingPlant": [ + { + "facility": "BPNA1234567890AA" + } + ], + "type": "Climate Change Total", + "value": 12.678, + "declaration": [ + { + "contentType": "URL", + "header": "Example Document XYZ", + "content": "https://dummy.link" + } + ] + } + ] + }, + "status": "original", + "durabilityScore": "A" + } + } + }, + "id": "urn:uuid:d3fe2ef3-52f3-49b3-be2c-06ea5c851014", + "issuer": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS", + "validFrom": "2024-07-10T11:52:38Z", + "validUntil": "2024-12-25T11:52:38Z", + "proof": { + "type": "JsonWebSignature2020", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:web:dpp-provider-wallet.int.demo.catena-x.net:BPNL00000000W3BS#N4bTDb14GEnCvwZdFRqK5lwL4nje3bB5Y4nvb01VBKA", + "created": "2024-07-10T11:52:38Z", + "jws": "eyJ0eXAiOiAidmMrbGQiLCAiYjY0IjogZmFsc2UsICJjcnYiOiAiRWQyNTUxOSJ9..GGp894YeB1dHPi8mWZ6FQ_ydonAlt_MIm2LblrfR5YnbxWZyDRRBKNqBFV6oeIs3ZbnWqVZL9L3HH5MP9X5BDA" + } +} \ No newline at end of file diff --git a/dpp-verification/simple-wallet/utilities/cryptool.py b/dpp-verification/simple-wallet/utilities/cryptool.py index 784fa2c0b..356f9f083 100644 --- a/dpp-verification/simple-wallet/utilities/cryptool.py +++ b/dpp-verification/simple-wallet/utilities/cryptool.py @@ -138,9 +138,11 @@ def issueJwsVerifiableCredential(walletUrl, methodId, issuerId, expirationTimede ## Prepare the header with the specification header = { + 'alg':"HS256", 'typ': 'vc+ld', 'b64': False, - 'crv': 'Ed25519' + 'crv': 'Ed25519', + 'crit':['b64'] } ## Prepare the content to sign