diff --git a/README.md b/README.md index 2945804..0c21dcd 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,11 @@ The [Digital Credentials Consortium](https://digitalcredentials.mit.edu/) was founded by leading universities with expertise in the design of verifiable digital credentials. Together, we are designing an infrastructure for digital credentials of academic achievement. -We are committed to open standards and encourage all to contribute through the [W3C VC-EDU task force](https://w3c-ccg.github.io/vc-ed/). +We are committed to open standards and encourage all to contribute through the [W3C VC-EDU task force](https://w3c-ccg.github.io/vc-ed/). For more details on how to implement our technologies and for non-technical information, check out our [Knowledge Base](https://wiki.dcconsortium.org). ## Overview of Components -For additional context, the [DCC whitepaper](https://digitalcredentials.mit.edu/wp-content/uploads/2020/02/white-paper-building-digital-credential-infrastructure-future.pdf) outlines our approach and high-level architecture. +For additional context, the [DCC whitepaper](https://wiki.dcconsortium.org/app/page/1EN-emRW0Rc5Rrw9KcKkKBnEtEa8YqR-y?p=1h1VJHHv2zSe0n9Ltg-KQevSuqWbGcExy) outlines our approach and high-level architecture. Overview of the Digital Credentials Consortium components: @@ -30,7 +30,6 @@ Overview of the Digital Credentials Consortium components: DCC uses the [Verifiable Credentials Data Model](https://w3c.github.io/vc-data-model/) with linked data. - [Authoring guide](authoring/README.md) - authoring DCC credentials -- [Online credential editing tool](https://digitalcredentials.github.io/playground/) - experimental - [Modeling Educational Verifiable Credentials](https://w3c-ccg.github.io/vc-ed-models/) - see similar standards incubation efforts at the [W3C VC-EDU task force](https://w3c-ccg.github.io/vc-ed/) diff --git a/deployment-guide/DCCDeploymentGuide.md b/deployment-guide/DCCDeploymentGuide.md index a9f8e5a..d8f6f32 100644 --- a/deployment-guide/DCCDeploymentGuide.md +++ b/deployment-guide/DCCDeploymentGuide.md @@ -101,6 +101,7 @@ Setting up digital credential issuing typically requires integrating into existi - [Simple Issuer](#simple-issuer) - [Local dashboard](#local-dashboard) - [Dashboard with DNS](#dashboard-with-dns) + - [Full Dashboard Example](#full-dashboard-example) ## Overview @@ -944,3 +945,10 @@ You can run it like so, subsituting your domain name for the value of the HOST e ```curl https://raw.githubusercontent.com/digitalcredentials/docs/main/deployment-guide/docker-compose-files/dashboard-dns-compose.yaml | HOST=myhost.org docker compose -f - up``` +### Full Dashboard Example + +This is likely closest to what most people who want to use the admin dashboard will need. Pretty much the same as the prior but configured to use the [Mongo Status Service](https://github.com/digitalcredentials/status-service-db) to manage credential status (revocation) and SMTP to email credential recipients with a link to collect their credential: + +[dashboard-status-compose.yaml](docker-compose-files/dashboard-status-compose.yaml) + +NOTE: You will have to add your mongo connection string and your SMTP configuration, which is better described in the [Admin Dashboard Getting Started](https://github.com/digitalcredentials/dcc-admin-dashboard/blob/main/docs/GETTING_STARTED.md) page. \ No newline at end of file diff --git a/deployment-guide/docker-compose-files/admin-dashboard-compose.yaml b/deployment-guide/docker-compose-files/admin-dashboard-compose.yaml index 7e863b0..9d67e55 100644 --- a/deployment-guide/docker-compose-files/admin-dashboard-compose.yaml +++ b/deployment-guide/docker-compose-files/admin-dashboard-compose.yaml @@ -1,7 +1,7 @@ name: dashboard services: coordinator: - image: digitalcredentials/workflow-coordinator:0.1.0 + image: digitalcredentials/workflow-coordinator:1.0.1 container_name: "ad-coordinator" environment: - ENABLE_STATUS_SERVICE=false @@ -10,15 +10,15 @@ services: ports: - "4005:4005" signing: - image: digitalcredentials/signing-service:0.2.0 + image: digitalcredentials/signing-service:1.2.0 container_name: "ad-signing" environment: - TENANT_SEED_LEF_TEST=z1AeiPT496wWmo9BG2QYXeTusgFSZPNG3T9wNeTtjrQ3rCB transactions: - image: digitalcredentials/transaction-service:0.1.1 + image: digitalcredentials/transaction-service:0.3.0 container_name: "ad-transactions" payload: - image: digitalcredentials/dashboard:0.1.1 + image: digitalcredentials/dcc-admin-dashboard:1.0.1 container_name: "ad-payload" depends_on: - coordinator @@ -40,7 +40,7 @@ services: ports: - "3000:3000" claim-page: - image: digitalcredentials/admin-dashboard-claim-page:1.0.0 + image: digitalcredentials/admin-dashboard-claim-page:1.1.0 container_name: "ad-claim-page" depends_on: - payload diff --git a/deployment-guide/docker-compose-files/dashboard-dns-compose.yaml b/deployment-guide/docker-compose-files/dashboard-dns-compose.yaml index 94439b7..a35d457 100644 --- a/deployment-guide/docker-compose-files/dashboard-dns-compose.yaml +++ b/deployment-guide/docker-compose-files/dashboard-dns-compose.yaml @@ -1,7 +1,7 @@ name: dashboard services: coordinator: - image: digitalcredentials/workflow-coordinator:0.1.0 + image: digitalcredentials/workflow-coordinator:1.0.1 container_name: "ad-coordinator" environment: - ENABLE_STATUS_SERVICE=false @@ -10,15 +10,15 @@ services: ports: - "4005:4005" signing: - image: digitalcredentials/signing-service:0.2.0 + image: digitalcredentials/signing-service:1.2.0 container_name: "ad-signing" environment: - TENANT_SEED_LEF_TEST=z1AeiPT496wWmo9BG2QYXeTusgFSZPNG3T9wNeTtjrQ3rCB transactions: - image: digitalcredentials/transaction-service:0.1.1 + image: digitalcredentials/transaction-service:0.3.0 container_name: "ad-transactions" payload: - image: digitalcredentials/dashboard:0.1.1 + image: digitalcredentials/dcc-admin-dashboard:1.0.1 container_name: "ad-payload" depends_on: - coordinator @@ -44,7 +44,7 @@ services: ports: - "3000:3000" claim-page: - image: digitalcredentials/admin-dashboard-claim-page:1.0.0 + image: digitalcredentials/admin-dashboard-claim-page:1.1.0 container_name: "ad-claim-page" environment: - VIRTUAL_HOST=${HOST} diff --git a/deployment-guide/docker-compose-files/dashboard-status-compose.yaml b/deployment-guide/docker-compose-files/dashboard-status-compose.yaml new file mode 100644 index 0000000..174f281 --- /dev/null +++ b/deployment-guide/docker-compose-files/dashboard-status-compose.yaml @@ -0,0 +1,109 @@ +name: dashboard +services: + coordinator: + image: digitalcredentials/workflow-coordinator:1.0.1 + container_name: "ad-coordinator" + environment: + - ENABLE_STATUS_SERVICE=true + - PUBLIC_EXCHANGE_HOST=https://${HOST}/api + - TENANT_TOKEN_LEF_TEST=UNPROTECTED + - VIRTUAL_HOST=${HOST} + - VIRTUAL_PATH=/status + - VIRTUAL_PORT=4005 + - LETSENCRYPT_HOST=${HOST} + ports: + - "4005:4005" + signing: + image: digitalcredentials/signing-service:1.2.0 + container_name: "ad-signing" + environment: + - TENANT_SEED_LEF_TEST=z1AeiPT496wWmo9BG2QYXeTusgFSZPNG3T9wNeTtjrQ3rCB + transactions: + image: digitalcredentials/transaction-service:0.3.0 + container_name: "ad-transactions" + status: + image: digitalcredentials/status-service-db:0.1.0 + container_name: "ad-status" + environment: + - STATUS_CRED_SITE_ORIGIN=https://${HOST}/status + - CRED_STATUS_SERVICE=mongodb + - CRED_STATUS_DB_URL=mongodb+srv://your-mongo-user:your-mongo-password@cluster0.8s9a0.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0 + - CRED_STATUS_DID_SEED=z1AeiPT496wWmo9BG2QYXeTusgFSZPNG3T9wNeTtjrQ3rCB + ports: + - "4008:4008" + payload: + image: digitalcredentials/dcc-admin-dashboard:1.0.1 + container_name: "ad-payload" + depends_on: + - coordinator + - redis + environment: + - COORDINATOR_URL=http://coordinator:4005 + - STATUS_URL=http://status:4008 + - REDIS_URL=redis + - REDIS_PORT=6379 + - MONGODB_URI=mongodb+srv://your-mongo-user:your-mongo-password@cluster0.8s9a0.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0 + - PAYLOAD_SECRET=aaaaaaaaaaaaaaaaaaaaaaaa + - TENANT_NAME=lef_test + - SMTP_HOST=your-smtp-host + - SMTP_USER=your-smtp-user + - SMTP_PASS=your-smpt-password + - EMAIL_FROM=Digital Credentials Consortium Demo Isser '> + - CLAIM_PAGE_URL=https://${HOST}/claim + - PAYLOAD_PUBLIC_SERVER_URL=https://${HOST} + - VIRTUAL_HOST=${HOST} + - VIRTUAL_PATH=/ + - VIRTUAL_PORT=3000 + - LETSENCRYPT_HOST=${HOST} + ports: + - "3000:3000" + claim-page: + image: digitalcredentials/admin-dashboard-claim-page:1.1.0 + container_name: "ad-claim-page" + environment: + - VIRTUAL_HOST=${HOST} + - VIRTUAL_PATH=/claim + - VIRTUAL_DEST=/ + - VIRTUAL_PORT=8080 + - PUBLIC_PAYLOAD_URL=https://${HOST}/api + - LETSENCRYPT_HOST=${HOST} + depends_on: + - payload + ports: + - "8080:8080" + redis: + image: redis:alpine + container_name: ad-redis + environment: + - ALLOW_EMPTY_PASSWORD=yes + ports: + - "6379:6379" + nginx-proxy: + image: nginxproxy/nginx-proxy + container_name: "ad-nginx" + restart: unless-stopped + ports: + - "80:80" + - "443:443" + volumes: + - /var/run/docker.sock:/tmp/docker.sock:ro + - html:/usr/share/nginx/html + - certs:/etc/nginx/certs + - vhost:/etc/nginx/vhost.d + nginx-proxy-acme: + image: nginxproxy/acme-companion + container_name: "ad-nginx-proxy" + volumes_from: + - nginx-proxy + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - acme:/etc/acme.sh + environment: + - DEFAULT_EMAIL=some.email@example.org +volumes: + transactions: + mongo_data: + vhost: + html: + certs: + acme: diff --git a/deployment-guide/docker-compose-files/simple-issuer-compose.yaml b/deployment-guide/docker-compose-files/simple-issuer-compose.yaml index da65094..3ae0e4c 100644 --- a/deployment-guide/docker-compose-files/simple-issuer-compose.yaml +++ b/deployment-guide/docker-compose-files/simple-issuer-compose.yaml @@ -1,8 +1,8 @@ -version: '3.5' +name: coordinator services: coordinator: - image: digitalcredentials/issuer-coordinator:0.2.0 + image: digitalcredentials/issuer-coordinator:1.0.0 ports: - "4005:4005" signer: - image: digitalcredentials/signing-service:0.3.0 + image: digitalcredentials/signing-service:1.2.0 \ No newline at end of file diff --git a/example-credentials/kerri-lcw-experience-badge.json b/example-credentials/kerri-lcw-experience-badge.json new file mode 100644 index 0000000..2fe8034 --- /dev/null +++ b/example-credentials/kerri-lcw-experience-badge.json @@ -0,0 +1,66 @@ +{ + "@context": [ + "https://www.w3.org/ns/credentials/v2" + ], + "type": [ + "VerifiablePresentation" + ], + "verifiableCredential": [ + { + "@context": [ + "https://www.w3.org/ns/credentials/v2", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.2.json", + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "issuer": { + "id": "did:key:z6MktL8XGbuYv5f7hwf6hVyJkJWynNtNhcsXFYe9NJzjKHkW", + "type": [ + "Profile" + ], + "name": "Digital Credentials Consortium", + "url": "https://digitalcredentials.mit.edu/", + "image": { + "id": "https://github.com/user-attachments/assets/dec7ea33-912f-4fc8-af44-9d3f114bea0b", + "type": "Image" + } + }, + "validFrom": "2025-05-08T18:47:06.830Z", + "name": "LCW Experience Badge", + "credentialSubject": { + "name": "Kerri Lemoie", + "type": [ + "AchievementSubject" + ], + "achievement": { + "id": "urn:uuid:142e9fe0-d7cd-46f2-bcde-78e8d0acfaad", + "type": [ + "Achievement" + ], + "achievementType": "Badge", + "criteria": { + "narrative": "- Learner experienced the on-demand issuing of the [LCW Experience Badge](https://badging.dcconsortium.org/lcw-experience-badge).\n- Learned about [W3C Verifiable Credentials and Open Badges 3.0](https://blog.dcconsortium.org/explaining-verifiable-credentials-and-open-badges-3-0-34ae898b98b2)" + }, + "image": { + "id": "https://github.com/user-attachments/assets/3042a8c8-4835-4340-91b0-aa2cec3b2cf2", + "type": "Image" + }, + "description": "Learner has experienced claiming and accepting an Open Badge 3.0 in their Learner Credential Wallet Application.", + "name": "LCW Experience Badge" + }, + "id": "did:key:z6MkwEqnrbHuqFdtEzdbWcFeQomdYG2YpmJBXo6ki7ac83gK" + }, + "proof": { + "type": "Ed25519Signature2020", + "created": "2025-05-08T18:47:13Z", + "verificationMethod": "did:key:z6MktL8XGbuYv5f7hwf6hVyJkJWynNtNhcsXFYe9NJzjKHkW#z6MktL8XGbuYv5f7hwf6hVyJkJWynNtNhcsXFYe9NJzjKHkW", + "proofPurpose": "assertionMethod", + "proofValue": "z4VMDnBNhwNgQptkbFLZEQL3bRQsSqnqmYUfkNCV7FzqEFHGnSKm1W6hTvwoisy7STdaWjeafhc6pqdwmbwEc13TB" + } + } + ] +} \ No newline at end of file diff --git a/test-files/badge-images/sample-code-badge.png b/test-files/badge-images/sample-code-badge.png new file mode 100644 index 0000000..793e03f Binary files /dev/null and b/test-files/badge-images/sample-code-badge.png differ diff --git a/test-files/example-credential-templates/example-web-developement-credential-template.json b/test-files/example-credential-templates/example-web-developement-credential-template.json new file mode 100644 index 0000000..e0e809f --- /dev/null +++ b/test-files/example-credential-templates/example-web-developement-credential-template.json @@ -0,0 +1,41 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json" + ], + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "name": "{{ badgeName }}", + "issuer": { + "url": "https://digitalcredentials.mit.edu/", + "type": "Profile", + "name": "DCC Demo University", + "image": { + "id": "https://github.com/digitalcredentials/test-files/assets/206059/3f3e1476-fd1e-4c8f-a560-5cfb4017bbc3", + "type": "Image" + } + }, + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "achievement": { + "type": [ + "Achievement" + ], + "achievementType": "certificate", + "name": "{{ badgeName }}", + "image": { + "id": "https://github.com/digitalcredentials/test-files/assets/206059/54aea3df-0eb1-4afe-ad70-4ac49d10016d", + "type": "Image" + }, + "criteria": { + "type": "Criteria", + "narrative": "This certificate program is designed to provide the technical computer skills required to design business web sites. The program has as its learning outcomes the demonstrated proficiency in the skills listed below.\n\n1. Demonstrate a basic understanding of the information technology field, demonstrate problem-solving and creative-thinking skills\n2. Apply programming concepts and techniques and utilize a programming language to design, code, compile, execute and debug programs\n3. Apply relational database concepts to query and manipulate data in relational database\n4. Demonstrate a basic understating of the Linux operating system, its GUI and command-line environments, and its tools\n5. Demonstrate the ability to create web sites by programming in HTML, the industry standard language for Internet presentation. Students will demonstrate this skill by using HTML programming to create functional web sites that employ all of the fundamental aspects of HTML, including HTML syntax, links, tables, images, frames, forms, and cascading style sheets\n6. Demonstrate the ability to create web sites that incorporate the graphical elements required of business web sites. Students will demonstrate this skill by creating web sites that employ all of the major industry standard graphical file formats and graphical compression techniques\n7. Demonstrate the ability to produce dynamic web sites that interact with the user. Students will demonstrate this skill by creating web sites that employ the fundamental client-side interactive Internet technologies, such as JavaScript and Dynamic HTML\n8. Demonstrate the ability to produce web sites that serve as user interfaces to computer programs and databases. Students will demonstrate this ability by designing web sites that pass data to and from databases that reside on a web server" + }, + "description": "Demo certificate credential recognizing proficiency in web development" + } + } +} \ No newline at end of file diff --git a/test-files/example-credentials-unsigned/degree/dcc-demo-degree-basic.json b/test-files/example-credentials-unsigned/degree/dcc-demo-degree-basic.json new file mode 100644 index 0000000..1f80c0c --- /dev/null +++ b/test-files/example-credentials-unsigned/degree/dcc-demo-degree-basic.json @@ -0,0 +1,41 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json" + ], + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "name": "{{ earnerName }} - {{ degreeType }} in {{ subject }}", + "issuer": { + "url": "https://digitalcredentials.mit.edu/", + "type": "Profile", + "name": "DCC Demo University", + "image": { + "id": "https://github.com/digitalcredentials/test-files/assets/206059/3f3e1476-fd1e-4c8f-a560-5cfb4017bbc3", + "type": "Image" + } + }, + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "{{ earnerName }}", + "achievement": { + "type": [ + "Achievement" + ], + "achievementType": "BachelorDegree", + "name": "{{ degreeType }} in {{ subject }}", + "fieldOfStudy": "I{{ subject }}", + "criteria": { + "type": "Criteria", + "narrative": "{{ earnerName }} has fulfilled the requirements to earn this {{ degreeType }} in {{ subject }}" + }, + "description": "DCC Demo University {{ degreeType }} in {{ subject }}", + + + } + } +} \ No newline at end of file diff --git a/test-files/example-credentials-unsigned/degree/mock-mit-bachelors-credential-template.json b/test-files/example-credentials-unsigned/degree/mock-mit-bachelors-credential-template.json new file mode 100644 index 0000000..f798686 --- /dev/null +++ b/test-files/example-credentials-unsigned/degree/mock-mit-bachelors-credential-template.json @@ -0,0 +1,52 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + } + ], + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "name": "{{ earnerName }} - {{ degreeType }} in {{ subject }}", + "issuer": { + "url": "https://web.mit.edu/", + "type": "Profile", + "name": "Massachusetts Institute of Technology", + "image": { + "id": "https://github.com/digitalcredentials/test-files/assets/206059/01eca9f5-a508-40ac-9dd5-c12d11308894", + "type": "Image" + } + }, + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "{{ earnerName }}", + "achievement": { + "type": [ + "Achievement" + ], + "achievementType": "BachelorDegree", + "name": "{{ degreeType }} in {{ subject }}", + "fieldOfStudy": "{{ subject }}", + "criteria": { + "type": "Criteria", + "narrative": "{{ earnerName }} has fulfilled the requirements to earn this {{ degreeType }} in {{ subject }}" + }, + "description": "DCC Demo University {{ degreeType }} in {{ subject }}" + }, + "renderMethod": [ + { + "id": "https://raw.githubusercontent.com/digitalcredentials/test-files/main/html-templates/mock-MIT-bachelors-template.html", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + } + ], + } +} \ No newline at end of file diff --git a/test-files/example-credentials-unsigned/degree/mock-tec-de-monterrey-bachelors-credential-template.json b/test-files/example-credentials-unsigned/degree/mock-tec-de-monterrey-bachelors-credential-template.json new file mode 100644 index 0000000..822de7a --- /dev/null +++ b/test-files/example-credentials-unsigned/degree/mock-tec-de-monterrey-bachelors-credential-template.json @@ -0,0 +1,88 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b", + "awardedDatePretty": "urn:uuid:786f4e61-1b34-4895-8c4b-3ebc624e77b6" + } + ], + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "name": "{{ subject }} - {{ credentialName}}", + "awardedDate": "{{ awardedDate }}", + "awardedDatePretty": "{{ awardedDatePretty }}", + "issuer": { + "url": "https://tec.mx/es", + "type": "Profile", + "name": "Instituto Tecnológico y de Estudios superiores de Monterrey", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "{{ earnerName }}", + "achievement": { + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "type": [ + "Achievement" + ], + "name": "{{ credentialName}}", + "criteria": { + "type": "Criteria", + "narrative": "Cumplido con los estudios correspondientes y satisfecho todas los requisitos necesarios" + }, + "description": "{{ earnerName }} cumplido con los estudios correspondientes y satisfecho todas los requisitos necesarios", + "fieldOfStudy": "{{ subject }}", + "achievementType": "BachelorDegree" + } + }, + "evidence": [ + { + "type":"Evidence", + "name": "Título Electrónico Folio Control", + "narrative": "{{ tituloElectronicoFolioControl }}" + }, + { + "type":"Evidence", + "name": "Sello Autenticación", + "narrative": "{{ selloAutenticacion }}" + }, + { + "type":"Evidence", + "name": "Certificado Autoridad", + "narrative": "{{ certificadoAutoridad }}" + }, + { + "type":"Evidence", + "name": "Sello Titulo", + "narrative": "{{ selloTitulo}}" + }, + { + "type":"Evidence", + "name": "Fecha Autenticacion", + "narrative": "{{ fechaAutenticacion }}" + }, + { + "type":"Evidence", + "name": "Folio Digital", + "narrative": "{{ foliodigital }}" + } + ], + "renderMethod": [ + { + "id": "https://raw.githubusercontent.com/digitalcredentials/test-files/main/html-templates/mock-tec-degree-template.html", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + } + ] +} \ No newline at end of file diff --git a/test-files/example-credentials-unsigned/degree/tec-de-monterrey.json b/test-files/example-credentials-unsigned/degree/tec-de-monterrey.json new file mode 100644 index 0000000..4d3f10c --- /dev/null +++ b/test-files/example-credentials-unsigned/degree/tec-de-monterrey.json @@ -0,0 +1,77 @@ +{ + "name": "Título Profesional e21.02", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "issuer": { + "id":"did:key:z6MkhVTX9BF3NGYX6cc7jWpbNnR7cAjH8LUffabZP8Qu4ysC", + "url": "https://tec.mx/es", + "type": "Profile", + "name": "Instituto Tecnológico y de Estudios superiores de Monterrey", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json" + ], + "issuanceDate": "2020-12-16T00:00:00Z", + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "Adolfo Daniel Javier Alberto Giese-Caballero Benavides", + "achievement": { + "type": [ + "Achievement" + ], + "id": "urn:uuid:7d9f1061-81b4-48d5-b6eb-6524c4074146", + "name": "Título Profesional", + "criteria": { + "type": "Criteria", + "narrative": "Javier Alberto Giese Ruiz has fulfilled the requirements to earn this degree. -- do we want to include other criteria here?" + }, + "description": "Description content here?", + "fieldOfStudy": "Ingeniero en Sistemas Electrónicos", + "achievementType": "BachelorDegree" + } + }, + "evidence": [ + { + "type":"Evidence", + "name": "Título Electrónico Folio Control", + "narrative": "M-A00500923-5" + }, + { + "type":"Evidence", + "name": "Sello Autenticación", + "narrative": "RzWvSLK1vpxOltu/71LeuuoxC6lDJ0vEocVHjUjItgSj+GH50KophCABW3ZqPEVhIxEJ1dQAPS3TsNz+UepJu6EK4B2Y36+Z+D3j4bRCmBkdA/IQVd97Sp7itv9XUsgNIZicMEfrufhkrPCVvS7aOJ+nicISpU86lnZwAAU27HSw+5ca2hZ1OQ6an0bvd8/cPgsclldHUWsiSUsPESyoCeurd1nT03LoEwX4WrgQT6xSY+2HixOgGPWiR7mQV5tIlnNZvhT1BsGCMwr7XsL3Pbdgo2QCMYx1cRDatMWydjyMdRvgU/mAaHwdncxv1nAORfxruIFgr9W2Gjvi4OOyAQ==" + }, + { + "type":"Evidence", + "name": "No. Certificado Autoridad", + "narrative": "00001000000123456789" + }, + { + "type":"Evidence", + "name": "Sello Titulo", + "narrative": "Hjru5ABq7bOaDK5khME3A163xwNx2uHhX/3gRZ+0MM80i0Eok2v+7SbBhGGZ8ZDxDFrY6kusMXYWvw7rZidv9ZiBjJfp9YIYqixmvSEFtUfBhN/MZOF/tP7zhGRNPELu31GKE2jIyN7jAZB30xf7XOlZoIBuxPsiUljGcqaCStzdofOpJiN+NqvlzMs/LMYwny7OrIE5w65lPHbuocMl1nqlMGwfWioSbnHu8x52DQWa65VMEiknLTfMerZJ06ly7q/mI8tDpKgIAuhVY6WwN9c/8qrbGGZ2qqDCZmyiB75bjWQBIwMBXTV4QnfSnIy1tPbTra43utMkkb+ZhaFbUQ==" + }, + { + "type":"Evidence", + "name": "Fecha Autenticacion", + "narrative": "1/27/2020 17:22:22" + }, + { + "type":"Evidence", + "name": "Folio Digital", + "narrative": "701a5cf8-67va-4452-abc8-c18b1bb94be1" + } + ] +} + + diff --git a/test-files/example-credentials-unsigned/render-method/tec-de-monterrey-unsigned-html-template.json b/test-files/example-credentials-unsigned/render-method/tec-de-monterrey-unsigned-html-template.json new file mode 100644 index 0000000..650d19a --- /dev/null +++ b/test-files/example-credentials-unsigned/render-method/tec-de-monterrey-unsigned-html-template.json @@ -0,0 +1,90 @@ +{ + "name": "Título Profesional e21.02", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "issuer": { + "id": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q", + "url": "https://tec.mx/es", + "type": "Profile", + "name": "Instituto Tecnológico y de Estudios superiores de Monterrey", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + }, + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "issuanceDate": "2020-12-16T00:00:00Z", + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "Adolfo Daniel Javier Alberto Giese-Caballero Benavides", + "achievement": { + "type": [ + "Achievement" + ], + "id": "urn:uuid:7d9f1061-81b4-48d5-b6eb-6524c4074146", + "name": "Título Profesional", + "criteria": { + "type": "Criteria", + "narrative": "Javier Alberto Giese Ruiz has fulfilled the requirements to earn this degree. -- do we want to include other criteria here?" + }, + "description": "Description content here?", + "fieldOfStudy": "Ingeniero en Sistemas Electrónicos", + "achievementType": "BachelorDegree" + }, + "id": "did:key:z6MkpCSjiYdZe55pvraC8N9SNxthqtMfJQUry3Yhk8XwZ7co" + }, + "evidence": [ + { + "type": "Evidence", + "name": "Título Electrónico Folio Control", + "narrative": "M-A00500923-5" + }, + { + "type": "Evidence", + "name": "Sello Autenticación", + "narrative": "RzWvSLK1vpxOltu/71LeuuoxC6lDJ0vEocVHjUjItgSj+GH50KophCABW3ZqPEVhIxEJ1dQAPS3TsNz+UepJu6EK4B2Y36+Z+D3j4bRCmBkdA/IQVd97Sp7itv9XUsgNIZicMEfrufhkrPCVvS7aOJ+nicISpU86lnZwAAU27HSw+5ca2hZ1OQ6an0bvd8/cPgsclldHUWsiSUsPESyoCeurd1nT03LoEwX4WrgQT6xSY+2HixOgGPWiR7mQV5tIlnNZvhT1BsGCMwr7XsL3Pbdgo2QCMYx1cRDatMWydjyMdRvgU/mAaHwdncxv1nAORfxruIFgr9W2Gjvi4OOyAQ==" + }, + { + "type": "Evidence", + "name": "No. Certificado Autoridad", + "narrative": "00001000000123456789" + }, + { + "type": "Evidence", + "name": "Sello Titulo", + "narrative": "Hjru5ABq7bOaDK5khME3A163xwNx2uHhX/3gRZ+0MM80i0Eok2v+7SbBhGGZ8ZDxDFrY6kusMXYWvw7rZidv9ZiBjJfp9YIYqixmvSEFtUfBhN/MZOF/tP7zhGRNPELu31GKE2jIyN7jAZB30xf7XOlZoIBuxPsiUljGcqaCStzdofOpJiN+NqvlzMs/LMYwny7OrIE5w65lPHbuocMl1nqlMGwfWioSbnHu8x52DQWa65VMEiknLTfMerZJ06ly7q/mI8tDpKgIAuhVY6WwN9c/8qrbGGZ2qqDCZmyiB75bjWQBIwMBXTV4QnfSnIy1tPbTra43utMkkb+ZhaFbUQ==" + }, + { + "type": "Evidence", + "name": "Fecha Autenticacion", + "narrative": "1/27/2020 17:22:22" + }, + { + "type": "Evidence", + "name": "Folio Digital", + "narrative": "701a5cf8-67va-4452-abc8-c18b1bb94be1" + } + ], + "renderMethod": [ + { + "id": "https://raw.githubusercontent.com/digitalcredentials/docs/main/credential-render-examples/tec-de-monterrey-test-example-template.html", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + } + ] +} diff --git a/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-1-svg.json b/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-1-svg.json new file mode 100644 index 0000000..0966137 --- /dev/null +++ b/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-1-svg.json @@ -0,0 +1,46 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.2.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + } + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "issuer": { + "id": "did:key:z6MkhVTX9BF3NGYX6cc7jWpbNnR7cAjH8LUffabZP8Qu4ysC", + "type": "Profile", + "name": "Test Tec de Monterrey", + "url": "https://tec.mx/es", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "issuanceDate": "2023-10-23T00:00:00Z", + "name": "renderMethod Rocks", + "credentialSubject": { + "type": "AchievementSubject", + "achievement": { + "id": "urn:uuid:8341e81f-ae8a-410f-ab5e-a107d0a1496e", + "type": "Achievement", + "criteria": { + "narrative": "It is an achievement to use render method!" + }, + "description": "Credential to test renderMethod", + "name": "renderMethod Rocks" + } + }, + "renderMethod": [{ + "id": "https://raw.githubusercontent.com/digitalcredentials/test-files/main/svg-templates/tec-de-monterrey-sample-1.svg", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + }] +} \ No newline at end of file diff --git a/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-2-svg.json b/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-2-svg.json new file mode 100644 index 0000000..6b3ec93 --- /dev/null +++ b/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-2-svg.json @@ -0,0 +1,86 @@ +{ + "name": "Título Profesional e21.02", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "issuer": { + "id":"did:key:z6MkhVTX9BF3NGYX6cc7jWpbNnR7cAjH8LUffabZP8Qu4ysC", + "url": "https://tec.mx/es", + "type": "Profile", + "name": "Instituto Tecnológico y de Estudios superiores de Monterrey", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + } + ], + "issuanceDate": "2020-12-16T00:00:00Z", + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "Adolfo Daniel Javier Alberto Giese-Caballero Benavides", + "achievement": { + "type": [ + "Achievement" + ], + "id": "urn:uuid:7d9f1061-81b4-48d5-b6eb-6524c4074146", + "name": "Título Profesional", + "criteria": { + "type": "Criteria", + "narrative": "Javier Alberto Giese Ruiz has fulfilled the requirements to earn this degree. -- do we want to include other criteria here?" + }, + "description": "Description content here?", + "fieldOfStudy": "Ingeniero en Sistemas Electrónicos", + "achievementType": "BachelorDegree" + } + }, + "evidence": [ + { + "type":"Evidence", + "name": "Título Electrónico Folio Control", + "narrative": "M-A00500923-5" + }, + { + "type":"Evidence", + "name": "Sello Autenticación", + "narrative": "RzWvSLK1vpxOltu/71LeuuoxC6lDJ0vEocVHjUjItgSj+GH50KophCABW3ZqPEVhIxEJ1dQAPS3TsNz+UepJu6EK4B2Y36+Z+D3j4bRCmBkdA/IQVd97Sp7itv9XUsgNIZicMEfrufhkrPCVvS7aOJ+nicISpU86lnZwAAU27HSw+5ca2hZ1OQ6an0bvd8/cPgsclldHUWsiSUsPESyoCeurd1nT03LoEwX4WrgQT6xSY+2HixOgGPWiR7mQV5tIlnNZvhT1BsGCMwr7XsL3Pbdgo2QCMYx1cRDatMWydjyMdRvgU/mAaHwdncxv1nAORfxruIFgr9W2Gjvi4OOyAQ==" + }, + { + "type":"Evidence", + "name": "No. Certificado Autoridad", + "narrative": "00001000000123456789" + }, + { + "type":"Evidence", + "name": "Sello Titulo", + "narrative": "Hjru5ABq7bOaDK5khME3A163xwNx2uHhX/3gRZ+0MM80i0Eok2v+7SbBhGGZ8ZDxDFrY6kusMXYWvw7rZidv9ZiBjJfp9YIYqixmvSEFtUfBhN/MZOF/tP7zhGRNPELu31GKE2jIyN7jAZB30xf7XOlZoIBuxPsiUljGcqaCStzdofOpJiN+NqvlzMs/LMYwny7OrIE5w65lPHbuocMl1nqlMGwfWioSbnHu8x52DQWa65VMEiknLTfMerZJ06ly7q/mI8tDpKgIAuhVY6WwN9c/8qrbGGZ2qqDCZmyiB75bjWQBIwMBXTV4QnfSnIy1tPbTra43utMkkb+ZhaFbUQ==" + }, + { + "type":"Evidence", + "name": "Fecha Autenticacion", + "narrative": "1/27/2020 17:22:22" + }, + { + "type":"Evidence", + "name": "Folio Digital", + "narrative": "701a5cf8-67va-4452-abc8-c18b1bb94be1" + } + ], + "renderMethod": [{ + "id": "https://raw.githubusercontent.com/digitalcredentials/test-files/main/svg-templates/tec-de-monterrey-pdf-sample-2.svg", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + }] + } \ No newline at end of file diff --git a/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-3-svg.json b/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-3-svg.json new file mode 100644 index 0000000..4a3bec6 --- /dev/null +++ b/test-files/example-credentials-unsigned/svg-templates/tec-de-monterrey-pdf-sample-3-svg.json @@ -0,0 +1,86 @@ +{ + "name": "Título Profesional e21.02", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "issuer": { + "id":"did:key:z6MkhVTX9BF3NGYX6cc7jWpbNnR7cAjH8LUffabZP8Qu4ysC", + "url": "https://tec.mx/es", + "type": "Profile", + "name": "Instituto Tecnológico y de Estudios superiores de Monterrey", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + } + ], + "issuanceDate": "2020-12-16T00:00:00Z", + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "Adolfo Daniel Javier Alberto Giese-Caballero Benavides", + "achievement": { + "type": [ + "Achievement" + ], + "id": "urn:uuid:7d9f1061-81b4-48d5-b6eb-6524c4074146", + "name": "Título Profesional", + "criteria": { + "type": "Criteria", + "narrative": "Javier Alberto Giese Ruiz has fulfilled the requirements to earn this degree. -- do we want to include other criteria here?" + }, + "description": "Description content here?", + "fieldOfStudy": "Ingeniero en Sistemas Electrónicos", + "achievementType": "BachelorDegree" + } + }, + "evidence": [ + { + "type":"Evidence", + "name": "Título Electrónico Folio Control", + "narrative": "M-A00500923-5" + }, + { + "type":"Evidence", + "name": "Sello Autenticación", + "narrative": "RzWvSLK1vpxOltu/71LeuuoxC6lDJ0vEocVHjUjItgSj+GH50KophCABW3ZqPEVhIxEJ1dQAPS3TsNz+UepJu6EK4B2Y36+Z+D3j4bRCmBkdA/IQVd97Sp7itv9XUsgNIZicMEfrufhkrPCVvS7aOJ+nicISpU86lnZwAAU27HSw+5ca2hZ1OQ6an0bvd8/cPgsclldHUWsiSUsPESyoCeurd1nT03LoEwX4WrgQT6xSY+2HixOgGPWiR7mQV5tIlnNZvhT1BsGCMwr7XsL3Pbdgo2QCMYx1cRDatMWydjyMdRvgU/mAaHwdncxv1nAORfxruIFgr9W2Gjvi4OOyAQ==" + }, + { + "type":"Evidence", + "name": "No. Certificado Autoridad", + "narrative": "00001000000123456789" + }, + { + "type":"Evidence", + "name": "Sello Titulo", + "narrative": "Hjru5ABq7bOaDK5khME3A163xwNx2uHhX/3gRZ+0MM80i0Eok2v+7SbBhGGZ8ZDxDFrY6kusMXYWvw7rZidv9ZiBjJfp9YIYqixmvSEFtUfBhN/MZOF/tP7zhGRNPELu31GKE2jIyN7jAZB30xf7XOlZoIBuxPsiUljGcqaCStzdofOpJiN+NqvlzMs/LMYwny7OrIE5w65lPHbuocMl1nqlMGwfWioSbnHu8x52DQWa65VMEiknLTfMerZJ06ly7q/mI8tDpKgIAuhVY6WwN9c/8qrbGGZ2qqDCZmyiB75bjWQBIwMBXTV4QnfSnIy1tPbTra43utMkkb+ZhaFbUQ==" + }, + { + "type":"Evidence", + "name": "Fecha Autenticacion", + "narrative": "1/27/2020 17:22:22" + }, + { + "type":"Evidence", + "name": "Folio Digital", + "narrative": "701a5cf8-67va-4452-abc8-c18b1bb94be1" + } + ], + "renderMethod": [{ + "id": "https://raw.githubusercontent.com/digitalcredentials/test-files/main/svg-templates/tec-de-monterrey-pdf-sample-3.svg", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + }] + } \ No newline at end of file diff --git a/test-files/html-templates/MIT-mockup.html b/test-files/html-templates/MIT-mockup.html new file mode 100644 index 0000000..a6ee739 --- /dev/null +++ b/test-files/html-templates/MIT-mockup.html @@ -0,0 +1,23 @@ + + + + +MIT Degree + + + +

+

UPON THE RECOMMENDATION OF THE FACULTY

+

HEREBY CONFERS ON

+

{{ credential.credentialSubject.name }}

+

THE DEGREE OF 

+

 DOCTOR OF PHILOSOPHY   

+

IN RECONITION OF SCIENTIFIC ATTAINMENTS AND THE ABILITY 

+

TO CARRY ON ORIGINAL RESEARCH AS DEMONSTRATED BY A

+

THESIS IN THE FIELD OF

+

{{ credential.name }}  

+ +
+ + \ No newline at end of file diff --git a/test-files/html-templates/mock-MIT-bachelors-template.html b/test-files/html-templates/mock-MIT-bachelors-template.html new file mode 100644 index 0000000..8b3aabf --- /dev/null +++ b/test-files/html-templates/mock-MIT-bachelors-template.html @@ -0,0 +1,39 @@ + + + + +MIT Degree + + + + + +
+ +

UPON THE RECOMMENDATION OF THE FACULTY

+

HEREBY CONFERS ON

+

{{ credential.credentialSubject.name }}

+

THE MOCK DEGREE OF

+

BACHELOR OF SCIENCE

+

IN

+

{{ credential.credentialSubject.achievement.fieldOfStudy }}

+

IN RECOGNITION OF PROFICIENCY IN THE GENERAL AND THE

+

SPECIAL STUDIES AND EXERCISES PRESCRIBED BY SAID INSTITUTION

+

FOR SUCH MOCK DEGREE GIVEN THIS DAY UNDER THE SEAL OF THE

+

INSTITUTE AT CAMBRIDGE IN THE COMMONWEALTH OF

+

MASSACHUSETTS

+

September 16, 2020

+ +
QR Code
+
+ + diff --git a/test-files/html-templates/mock-tec-degree-template.html b/test-files/html-templates/mock-tec-degree-template.html new file mode 100644 index 0000000..900f9c6 --- /dev/null +++ b/test-files/html-templates/mock-tec-degree-template.html @@ -0,0 +1,81 @@ + + + + + + + +
+
+

concede a

+

{{ credential.credentialSubject.name }}

+

el titulo profesional de

+

{{ credential.name }}

+

considerando que ha cumplido con los estudios correspondientes y satisfecho todas los requisitos necesarios.

+

Dado en la ciudad de Monterrey, estado de Nuevo León, el dia

+

{{ credential.awardedDatePretty }}

+
+
+

Titulo Electrónico folio control: {{ credential.evidence.[0].narrative }}

+

Sello Autenticoción:

+

{{ credential.evidence.[1].narrative }}

+

No. Certifico Autoridad: {{ credential.evidence.[2].narrative }}

+

Sello Título:

+

{{ credential.evidence.[3].narrative }}

+

Fecha Autenticación: {{ credential.evidence.[4].narrative }}

+

Folio Digital: {{ credential.evidence.[5].narrative }}

+
+ + diff --git a/test-files/html-templates/rendermethod-qrcode-test.html b/test-files/html-templates/rendermethod-qrcode-test.html new file mode 100644 index 0000000..c5d4655 --- /dev/null +++ b/test-files/html-templates/rendermethod-qrcode-test.html @@ -0,0 +1,40 @@ + + + + + +MIT Degree + + + + + +
+ +

UPON THE RECOMMENDATION OF THE FACULTY

+

HEREBY CONFERS ON

+

{{ credential.credentialSubject.name }}

+

THE MOCK DEGREE OF

+

BACHELOR OF SCIENCE

+

IN

+

{{ credential.credentialSubject.achievement.fieldOfStudy }}

+

IN RECOGNITION OF PROFICIENCY IN THE GENERAL AND THE

+

SPECIAL STUDIES AND EXERCISES PRESCRIBED BY SAID INSTITUTION

+

FOR SUCH MOCK DEGREE GIVEN THIS DAY UNDER THE SEAL OF THE

+

INSTITUTE AT CAMBRIDGE IN THE COMMONWEALTH OF

+

MASSACHUSETTS

+

September 16, 2020

+
+
QR Code
+
+ + diff --git a/test-files/html-templates/tec-de-monterrey-pdf-sample-3.html b/test-files/html-templates/tec-de-monterrey-pdf-sample-3.html new file mode 100644 index 0000000..15634d7 --- /dev/null +++ b/test-files/html-templates/tec-de-monterrey-pdf-sample-3.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + +
+
+ +
Dado en la ciudad de Monterrey, estado de Nuevo León, el día
{{ credential.awardedDate }}.
considerando que ha cumplido con los estudios correspondientes y
satisfecho todos los requisitos necesarios.
{{ credential.credentialSubject.name }}
el título profesional de
{{ credential.name }}
concede a
Título Electrónico Folio Control: {{ credential.evidence.[0].narrative }}
Sello Autenticación:
{{ credential.evidence.[1].narrative }}
No. Certicado Autoridad:
{{ credential.evidence.[2].narrative }}
+
+
+ +
+ + diff --git a/test-files/logos/DCC-small.png b/test-files/logos/DCC-small.png new file mode 100644 index 0000000..59d9a11 Binary files /dev/null and b/test-files/logos/DCC-small.png differ diff --git a/test-files/logos/IMG_9411.jpeg b/test-files/logos/IMG_9411.jpeg new file mode 100644 index 0000000..7f30167 Binary files /dev/null and b/test-files/logos/IMG_9411.jpeg differ diff --git a/test-files/logos/demo-univ-small.png b/test-files/logos/demo-univ-small.png new file mode 100644 index 0000000..bdb7fe3 Binary files /dev/null and b/test-files/logos/demo-univ-small.png differ diff --git a/test-files/logos/logo-colors-BG-mit-red.png b/test-files/logos/logo-colors-BG-mit-red.png new file mode 100644 index 0000000..29e13de Binary files /dev/null and b/test-files/logos/logo-colors-BG-mit-red.png differ diff --git a/test-files/logos/mit-logo.png b/test-files/logos/mit-logo.png new file mode 100644 index 0000000..92509e1 Binary files /dev/null and b/test-files/logos/mit-logo.png differ diff --git a/test-files/logos/mit-seal.png b/test-files/logos/mit-seal.png new file mode 100644 index 0000000..4c65179 Binary files /dev/null and b/test-files/logos/mit-seal.png differ diff --git a/test-files/logos/tec-logo.png b/test-files/logos/tec-logo.png new file mode 100644 index 0000000..4135616 Binary files /dev/null and b/test-files/logos/tec-logo.png differ diff --git a/test-files/logos/tec-signature.png b/test-files/logos/tec-signature.png new file mode 100644 index 0000000..072688d Binary files /dev/null and b/test-files/logos/tec-signature.png differ diff --git a/test-files/signed-example-credentials/.DS_Store b/test-files/signed-example-credentials/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/test-files/signed-example-credentials/.DS_Store differ diff --git a/test-files/signed-example-credentials/svg-templates/tec-de-monterrey-pdf-sample-1-svg-signed.json b/test-files/signed-example-credentials/svg-templates/tec-de-monterrey-pdf-sample-1-svg-signed.json new file mode 100644 index 0000000..c07e946 --- /dev/null +++ b/test-files/signed-example-credentials/svg-templates/tec-de-monterrey-pdf-sample-1-svg-signed.json @@ -0,0 +1,57 @@ +{ + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.2.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + }, + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "issuer": { + "id": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q", + "type": "Profile", + "name": "Test Tec de Monterrey", + "url": "https://tec.mx/es", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "issuanceDate": "2023-10-23T00:00:00Z", + "name": "renderMethod Rocks", + "credentialSubject": { + "type": "AchievementSubject", + "achievement": { + "id": "urn:uuid:8341e81f-ae8a-410f-ab5e-a107d0a1496e", + "type": "Achievement", + "criteria": { + "narrative": "It is an achievement to use render method!" + }, + "description": "Credential to test renderMethod", + "name": "renderMethod Rocks" + }, + "id": "did:key:z6MkvdxNi72zjHn8zk1coVMYK3yqDyzPQ64SiWcWSXbwawyu" + }, + "renderMethod": [ + { + "id": "https://raw.githubusercontent.com/digitalcredentials/test-files/main/svg-templates/tec-de-monterrey-pdf-sample-1.svg", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + } + ], + "proof": { + "type": "Ed25519Signature2020", + "created": "2023-10-23T20:36:32Z", + "verificationMethod": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q#z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q", + "proofPurpose": "assertionMethod", + "proofValue": "z3vE7M53ifa4f1c7LaeQX4EYAuANkDmGzhJa44Tka77xRxXnwz5cuK9PyBbh2xviESXw8qxdVgXfFGZFiXqNgJT1f" + } +} diff --git a/test-files/signed-example-credentials/svg-templates/tec-de-monterrey-pdf-sample-2-svg-signed.json b/test-files/signed-example-credentials/svg-templates/tec-de-monterrey-pdf-sample-2-svg-signed.json new file mode 100644 index 0000000..539a257 --- /dev/null +++ b/test-files/signed-example-credentials/svg-templates/tec-de-monterrey-pdf-sample-2-svg-signed.json @@ -0,0 +1,97 @@ +{ + "name": "Título Profesional e21.02", + "type": [ + "VerifiableCredential", + "OpenBadgeCredential" + ], + "id": "urn:uuid:951b475e-b795-43bc-ba8f-a2d01efd2eb1", + "issuer": { + "id": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q", + "url": "https://tec.mx/es", + "type": "Profile", + "name": "Instituto Tecnológico y de Estudios superiores de Monterrey", + "image": { + "id": "https://coursereport-production.imgix.net/uploads/school/logo/490/original/logo-tecnolo-cc-81gico-monterrey-boot-camp-20.jpg", + "type": "Image" + } + }, + "@context": [ + "https://www.w3.org/2018/credentials/v1", + "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.1.json", + { + "renderMethod": "urn:uuid:b2ab3546-228a-47a8-b97a-9a5646007c53", + "css3MediaQuery": "urn:uuid:c4c53282-e8e2-4914-83d8-566e25d2f899", + "digestMultibase": "urn:uuid:caef1a4e-67b8-4dfc-9881-2b51da7edc1b" + }, + "https://w3id.org/security/suites/ed25519-2020/v1" + ], + "issuanceDate": "2020-12-16T00:00:00Z", + "credentialSubject": { + "type": [ + "AchievementSubject" + ], + "name": "Adolfo Daniel Javier Alberto Giese-Caballero Benavides", + "achievement": { + "type": [ + "Achievement" + ], + "id": "urn:uuid:7d9f1061-81b4-48d5-b6eb-6524c4074146", + "name": "Título Profesional", + "criteria": { + "type": "Criteria", + "narrative": "Javier Alberto Giese Ruiz has fulfilled the requirements to earn this degree. -- do we want to include other criteria here?" + }, + "description": "Description content here?", + "fieldOfStudy": "Ingeniero en Sistemas Electrónicos", + "achievementType": "BachelorDegree" + }, + "id": "did:key:z6MkpCSjiYdZe55pvraC8N9SNxthqtMfJQUry3Yhk8XwZ7co" + }, + "evidence": [ + { + "type": "Evidence", + "name": "Título Electrónico Folio Control", + "narrative": "M-A00500923-5" + }, + { + "type": "Evidence", + "name": "Sello Autenticación", + "narrative": "RzWvSLK1vpxOltu/71LeuuoxC6lDJ0vEocVHjUjItgSj+GH50KophCABW3ZqPEVhIxEJ1dQAPS3TsNz+UepJu6EK4B2Y36+Z+D3j4bRCmBkdA/IQVd97Sp7itv9XUsgNIZicMEfrufhkrPCVvS7aOJ+nicISpU86lnZwAAU27HSw+5ca2hZ1OQ6an0bvd8/cPgsclldHUWsiSUsPESyoCeurd1nT03LoEwX4WrgQT6xSY+2HixOgGPWiR7mQV5tIlnNZvhT1BsGCMwr7XsL3Pbdgo2QCMYx1cRDatMWydjyMdRvgU/mAaHwdncxv1nAORfxruIFgr9W2Gjvi4OOyAQ==" + }, + { + "type": "Evidence", + "name": "No. Certificado Autoridad", + "narrative": "00001000000123456789" + }, + { + "type": "Evidence", + "name": "Sello Titulo", + "narrative": "Hjru5ABq7bOaDK5khME3A163xwNx2uHhX/3gRZ+0MM80i0Eok2v+7SbBhGGZ8ZDxDFrY6kusMXYWvw7rZidv9ZiBjJfp9YIYqixmvSEFtUfBhN/MZOF/tP7zhGRNPELu31GKE2jIyN7jAZB30xf7XOlZoIBuxPsiUljGcqaCStzdofOpJiN+NqvlzMs/LMYwny7OrIE5w65lPHbuocMl1nqlMGwfWioSbnHu8x52DQWa65VMEiknLTfMerZJ06ly7q/mI8tDpKgIAuhVY6WwN9c/8qrbGGZ2qqDCZmyiB75bjWQBIwMBXTV4QnfSnIy1tPbTra43utMkkb+ZhaFbUQ==" + }, + { + "type": "Evidence", + "name": "Fecha Autenticacion", + "narrative": "1/27/2020 17:22:22" + }, + { + "type": "Evidence", + "name": "Folio Digital", + "narrative": "701a5cf8-67va-4452-abc8-c18b1bb94be1" + } + ], + "renderMethod": [ + { + "id": "https://github.com/digitalcredentials/test-files/blob/main/svg-templates/tec-de-monterrey-pdf-sample-2.svg", + "type": "SvgRenderingTemplate2023", + "name": "PDF Display", + "css3MediaQuery": "@media (orientation: portrait)" + } + ], + "proof": { + "type": "Ed25519Signature2020", + "created": "2023-11-13T20:13:31Z", + "verificationMethod": "did:key:z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q#z6MknNQD1WHLGGraFi6zcbGevuAgkVfdyCdtZnQTGWVVvR5Q", + "proofPurpose": "assertionMethod", + "proofValue": "z213xqePmhzPPwjdqAF3fecGZLz2BTYmzqSpYPzBj7oW6QWoJZJ4PE7zdughG7AVqApZzMvxJY5BYD7i1kyB57Tid" + } +} \ No newline at end of file diff --git a/test-files/svg-templates/tec-de-monterrey-pdf-sample-1.svg b/test-files/svg-templates/tec-de-monterrey-pdf-sample-1.svg new file mode 100644 index 0000000..8a10fec --- /dev/null +++ b/test-files/svg-templates/tec-de-monterrey-pdf-sample-1.svg @@ -0,0 +1,150 @@ + + + +Dado en la ciudad de Monterrey, estado de Nuevo León, el día {{credential.issuanceDate}}.considerando que ha cumplido con los estudios correspondientes y satisfecho todos los requisitos necesarios.{{credential.credentialSubject.name}}el título profesional de{{credential.name}}concede a diff --git a/test-files/svg-templates/tec-de-monterrey-pdf-sample-2.svg b/test-files/svg-templates/tec-de-monterrey-pdf-sample-2.svg new file mode 100644 index 0000000..5d450fc --- /dev/null +++ b/test-files/svg-templates/tec-de-monterrey-pdf-sample-2.svg @@ -0,0 +1,190 @@ + + + +Dado en la ciudad de Monterrey, estado de Nuevo León, el día {{credential.awardedeDate}}.considerando que ha cumplido con los estudios correspondientes y satisfecho todos los requisitos necesarios.{{credential.credentialSubject.name}}el título profesional de{{credential.name}}concede aTítulo Electrónico Folio Control: {{credential.evidence[0].narrative}}Sello Autenticación: {{credential.evidence[1].narrative}}No. Certificado Autoridad: {{credential.evidence[2].narrative}} diff --git a/test-files/svg-templates/tec-de-monterrey-pdf-sample-3.svg b/test-files/svg-templates/tec-de-monterrey-pdf-sample-3.svg new file mode 100644 index 0000000..7d6d921 --- /dev/null +++ b/test-files/svg-templates/tec-de-monterrey-pdf-sample-3.svg @@ -0,0 +1,190 @@ + + + +Dado en la ciudad de Monterrey, estado de Nuevo León, el día {{credential.awardedeDate}}.considerando que ha cumplido con los estudios correspondientes y satisfecho todos los requisitos necesarios.{{credential.credentialSubject.name}}el título profesional de{{credential.name}}concede aTítulo Electrónico Folio Control: {{credential.evidence[0].narrative}}Sello Autenticación: {{credential.evidence[1].narrative}}No. Certificado Autoridad: {{credential.evidence[2].narrative}}