From 92784efb849ef8841817d30a1762b7ba0d550970 Mon Sep 17 00:00:00 2001 From: pstamatop Date: Tue, 9 Apr 2024 13:57:45 +0300 Subject: [PATCH 1/3] Rename dateOfBirth to birtdate --- .../verifier/VerifierConfigurationService.ts | 16 ++++++++-------- .../EHICSupportedCredentialSdJwt.ts | 4 ++-- .../VIDSupportedCredentialSdJwt.ts | 4 ++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts b/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts index f0df032..ef5e7e1 100644 --- a/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts +++ b/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts @@ -40,7 +40,7 @@ const verifiableIdDescriptor = { "filter": {} }, { - "path": ['$.credentialSubject.dateOfBirth'], + "path": ['$.credentialSubject.birthdate'], "filter": {} } ] @@ -164,7 +164,7 @@ const europeanHealthInsuranceCardDescriptor = { "filter": {} }, { - "path": ['$.credentialSubject.dateOfBirth'], + "path": ['$.credentialSubject.birthdate'], "filter": {} }, ] @@ -176,7 +176,7 @@ const europeanHealthInsuranceCardDescriptor = { const verifiableIdWithBachelorPresentationDefinition = { "id": "VerifiableIdWithBachelor", "title": "Verifiable ID and Bachelor Diploma", - "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, dateOfBirth), Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate)", + "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, birthdate), Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate)", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ verifiableIdDescriptor, @@ -187,7 +187,7 @@ const verifiableIdWithBachelorPresentationDefinition = { const verifiableIdWithEuropeanHealthInsuranceCardPresentationDefinition = { "id": "VerifiableIdWithEuropeanHealthInsuranceCard", "title": "Verifiable ID and European Health Insurance Card", - "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, dateOfBirth), EHIC (id, firstName, familyName, personalIdentifier, dateOfBirth)", + "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, birthdate), EHIC (id, firstName, familyName, personalIdentifier, birthdate)", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ verifiableIdDescriptor, @@ -198,7 +198,7 @@ const verifiableIdWithEuropeanHealthInsuranceCardPresentationDefinition = { const bachelorWithEuropeanHealthInsuranceCardPresentationDefinition = { "id": "BachelorWithEuropeanHealthInsuranceCard", "title": "Bachelor Diploma and European Health Insurance Card", - "description": "Required Fields: Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate), EHIC (id, firstName, familyName, personalIdentifier, dateOfBirth)", + "description": "Required Fields: Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate), EHIC (id, firstName, familyName, personalIdentifier, birthdate)", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ bachelorDescriptor, @@ -209,7 +209,7 @@ const bachelorWithEuropeanHealthInsuranceCardPresentationDefinition = { const verifiableIdWithBachelorWithEuropeanHealthInsuranceCardPresentationDefinition = { "id": "VerifiableIdWithBachelorWithEuropeanHealthInsuranceCard", "title": "Verifiable ID, Bachelor Diploma and European Health Insurance Card", - "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, dateOfBirth), Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate), EHIC (id, firstName, familyName, personalIdentifier, dateOfBirth)", + "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, dateOfBirth), Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate), EHIC (id, firstName, familyName, personalIdentifier, birthdate)", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ verifiableIdDescriptor, @@ -231,7 +231,7 @@ const minimalBachelorSdJwtPresentationDefinition = { const customVerifiableIdSdJwtPresentationDefinition = { "id": "CustomVerifiableId", "title": "Custom Verifiable ID", - "description": "Selectable Fields: personalIdentifier, firstName, familyName, dateOfBirth", + "description": "Selectable Fields: personalIdentifier, firstName, familyName, birthdate", "selectable": true, "format": { "vc+sd-jwt": { alg: ['ES256'] }, jwt_vc_json: { alg: ['ES256'] }, jwt_vp: { alg: ['ES256'] } }, "input_descriptors": [ @@ -338,7 +338,7 @@ export class VerifierConfigurationService implements VerifierConfigurationInterf { "id": "EuropeanHealthInsuranceCard", "title": "European HealthInsurance Card", - "description": "Required Fields: id, firstName, familyName, personalIdentifier, dateOfBirth", + "description": "Required Fields: id, firstName, familyName, personalIdentifier, birthdate", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ europeanHealthInsuranceCardDescriptor diff --git a/wallet-enterprise-configurations/ehic-issuer/src/configuration/SupportedCredentialsConfiguration/EHICSupportedCredentialSdJwt.ts b/wallet-enterprise-configurations/ehic-issuer/src/configuration/SupportedCredentialsConfiguration/EHICSupportedCredentialSdJwt.ts index 476b93b..371f5ca 100644 --- a/wallet-enterprise-configurations/ehic-issuer/src/configuration/SupportedCredentialsConfiguration/EHICSupportedCredentialSdJwt.ts +++ b/wallet-enterprise-configurations/ehic-issuer/src/configuration/SupportedCredentialsConfiguration/EHICSupportedCredentialSdJwt.ts @@ -77,7 +77,7 @@ export class EHICSupportedCredentialSdJwt implements SupportedCredentialProtocol firstName: ehicEntry.firstName, id: holderDID, personalIdentifier: ehicEntry.personalIdentifier, - dateOfBirth: ehicEntry.birthdate + birthdate: ehicEntry.birthdate } as any; const payload = { @@ -102,7 +102,7 @@ export class EHICSupportedCredentialSdJwt implements SupportedCredentialProtocol const disclosureFrame = { vc: { credentialSubject: { - dateOfBirth: true, + birthdate: true, personalIdentifier: true, } } diff --git a/wallet-enterprise-configurations/vid-issuer/src/configuration/SupportedCredentialsConfiguration/VIDSupportedCredentialSdJwt.ts b/wallet-enterprise-configurations/vid-issuer/src/configuration/SupportedCredentialsConfiguration/VIDSupportedCredentialSdJwt.ts index a482b89..d8b38f2 100644 --- a/wallet-enterprise-configurations/vid-issuer/src/configuration/SupportedCredentialsConfiguration/VIDSupportedCredentialSdJwt.ts +++ b/wallet-enterprise-configurations/vid-issuer/src/configuration/SupportedCredentialsConfiguration/VIDSupportedCredentialSdJwt.ts @@ -76,7 +76,7 @@ export class VIDSupportedCredentialSdJwt implements SupportedCredentialProtocol familyName: vidEntry.familyName, firstName: vidEntry.firstName, personalIdentifier: vidEntry.personalIdentifier, - dateOfBirth: vidEntry.birthdate + birthdate: vidEntry.birthdate } as any; const payload = { @@ -107,7 +107,7 @@ export class VIDSupportedCredentialSdJwt implements SupportedCredentialProtocol credentialSubject: { familyName: true, firstName: true, - dateOfBirth: true, + birthdate: true, personalIdentifier: true, } } From 5790da8342b2dbd30d1ff5e74f2cb62dbe33e5e1 Mon Sep 17 00:00:00 2001 From: kkmanos Date: Wed, 10 Apr 2024 12:22:13 +0300 Subject: [PATCH 2/3] added fix to avoid overwritting the presentation definition object in memory --- .../configuration/verifier/VerifierConfigurationService.ts | 1 + .../EdiplomasBlueprintSdJwt.ts | 6 +++--- .../authentication/VIDAuthenticationComponent.ts | 6 ++++-- .../configuration/verifier/VerifierConfigurationService.ts | 1 + .../authentication/VIDAuthenticationComponent.ts | 6 ++++-- .../configuration/verifier/VerifierConfigurationService.ts | 1 + .../configuration/verifier/VerifierConfigurationService.ts | 1 + 7 files changed, 15 insertions(+), 7 deletions(-) diff --git a/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts b/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts index f0df032..850792d 100644 --- a/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts +++ b/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts @@ -4,6 +4,7 @@ import { authorizationServerMetadataConfiguration } from "../../authorizationSer import config from "../../../config"; import { VerifierConfigurationInterface } from "../../services/interfaces"; import { InputDescriptorType } from "@wwwallet/ssi-sdk"; +import "reflect-metadata"; export type PresentationDefinitionTypeWithFormat = { title: string; diff --git a/wallet-enterprise-configurations/diploma-issuer/src/configuration/SupportedCredentialsConfiguration/EdiplomasBlueprintSdJwt.ts b/wallet-enterprise-configurations/diploma-issuer/src/configuration/SupportedCredentialsConfiguration/EdiplomasBlueprintSdJwt.ts index f0d0da5..9e2ee81 100644 --- a/wallet-enterprise-configurations/diploma-issuer/src/configuration/SupportedCredentialsConfiguration/EdiplomasBlueprintSdJwt.ts +++ b/wallet-enterprise-configurations/diploma-issuer/src/configuration/SupportedCredentialsConfiguration/EdiplomasBlueprintSdJwt.ts @@ -118,9 +118,9 @@ export class EdiplomasBlueprintSdJwt implements SupportedCredentialProtocol { "completionDate": diploma.completionDate, "awardingDate": diploma.awardingDate, "achievement": { - "name": "University Degree Credential", - "description": "A Europass Diploma issued by the University of Athens", - "type": "Bachelor", + "name": "Systems Programming", + "description": "This course examines in depth the Unix environment as a development environment. We will look at the Linux API for the C / C ++ languages as well as the Linux shell. We will cover topics such as: basic Unix commands, shell programming, script languages, programming of system functions in C / C ++ for error handling, creation and termination of processes, sending / receiving signals, low-level input / output system calls, communication between local processes, creation, termination and synchronization of threads, file system management, as well as network programming. This course requires independent and consistent effort from the student.", + "type": "Compulsory", "image": config.url + "/images/EuropassUoaCard.png" }, }, diff --git a/wallet-enterprise-configurations/diploma-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts b/wallet-enterprise-configurations/diploma-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts index 588cbc5..4935307 100644 --- a/wallet-enterprise-configurations/diploma-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts +++ b/wallet-enterprise-configurations/diploma-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts @@ -10,8 +10,9 @@ import { CONSENT_ENTRYPOINT } from "../../authorization/constants"; import { GrantType } from "../../types/oid4vci"; import locale from "../locale"; import * as qrcode from 'qrcode'; -import { openidForPresentationReceivingService } from "../../services/instances"; +import { openidForPresentationReceivingService, verifierConfigurationService } from "../../services/instances"; import { UserAuthenticationMethod } from "../../types/UserAuthenticationMethod.enum"; +import { PresentationDefinitionTypeWithFormat } from "../verifier/VerifierConfigurationService"; export class VIDAuthenticationComponent extends AuthenticationComponent { @@ -112,8 +113,9 @@ export class VIDAuthenticationComponent extends AuthenticationComponent { } + const presentationDefinition = JSON.parse(JSON.stringify(verifierConfigurationService.getPresentationDefinitions().filter(pd => pd.id == "vid")[0])) as PresentationDefinitionTypeWithFormat; - const { url, stateId } = await openidForPresentationReceivingService.generateAuthorizationRequestURL({req, res}, "vid", config.url + CONSENT_ENTRYPOINT); + const { url, stateId } = await openidForPresentationReceivingService.generateAuthorizationRequestURL({req, res}, presentationDefinition, config.url + CONSENT_ENTRYPOINT); // attach the vid_auth_state with an authorization server state req.authorizationServerState.vid_auth_state = stateId; diff --git a/wallet-enterprise-configurations/diploma-issuer/src/configuration/verifier/VerifierConfigurationService.ts b/wallet-enterprise-configurations/diploma-issuer/src/configuration/verifier/VerifierConfigurationService.ts index 57bc241..4e1423d 100644 --- a/wallet-enterprise-configurations/diploma-issuer/src/configuration/verifier/VerifierConfigurationService.ts +++ b/wallet-enterprise-configurations/diploma-issuer/src/configuration/verifier/VerifierConfigurationService.ts @@ -4,6 +4,7 @@ import { authorizationServerMetadataConfiguration } from "../../authorizationSer import config from "../../../config"; import { VerifierConfigurationInterface } from "../../services/interfaces"; import { InputDescriptorType } from "@wwwallet/ssi-sdk"; +import "reflect-metadata"; export type PresentationDefinitionTypeWithFormat = { id: string; diff --git a/wallet-enterprise-configurations/ehic-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts b/wallet-enterprise-configurations/ehic-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts index 52646d9..7e637f2 100644 --- a/wallet-enterprise-configurations/ehic-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts +++ b/wallet-enterprise-configurations/ehic-issuer/src/configuration/authentication/VIDAuthenticationComponent.ts @@ -10,8 +10,9 @@ import { CONSENT_ENTRYPOINT } from "../../authorization/constants"; import { GrantType } from "../../types/oid4vci"; import locale from "../locale"; import * as qrcode from 'qrcode'; -import { openidForPresentationReceivingService } from "../../services/instances"; +import { openidForPresentationReceivingService, verifierConfigurationService } from "../../services/instances"; import { UserAuthenticationMethod } from "../../types/UserAuthenticationMethod.enum"; +import { PresentationDefinitionTypeWithFormat } from "../verifier/VerifierConfigurationService"; export class VIDAuthenticationComponent extends AuthenticationComponent { @@ -112,8 +113,9 @@ export class VIDAuthenticationComponent extends AuthenticationComponent { } + const presentationDefinition = JSON.parse(JSON.stringify(verifierConfigurationService.getPresentationDefinitions().filter(pd => pd.id == "vid")[0])) as PresentationDefinitionTypeWithFormat; - const { url, stateId } = await openidForPresentationReceivingService.generateAuthorizationRequestURL({req, res}, "vid", config.url + CONSENT_ENTRYPOINT); + const { url, stateId } = await openidForPresentationReceivingService.generateAuthorizationRequestURL({req, res}, presentationDefinition, config.url + CONSENT_ENTRYPOINT); // attach the vid_auth_state with an authorization server state req.authorizationServerState.vid_auth_state = stateId; diff --git a/wallet-enterprise-configurations/ehic-issuer/src/configuration/verifier/VerifierConfigurationService.ts b/wallet-enterprise-configurations/ehic-issuer/src/configuration/verifier/VerifierConfigurationService.ts index 98ed080..58c38f2 100644 --- a/wallet-enterprise-configurations/ehic-issuer/src/configuration/verifier/VerifierConfigurationService.ts +++ b/wallet-enterprise-configurations/ehic-issuer/src/configuration/verifier/VerifierConfigurationService.ts @@ -4,6 +4,7 @@ import { authorizationServerMetadataConfiguration } from "../../authorizationSer import config from "../../../config"; import { VerifierConfigurationInterface } from "../../services/interfaces"; import { InputDescriptorType } from "@wwwallet/ssi-sdk"; +import "reflect-metadata"; export type PresentationDefinitionTypeWithFormat = { id: string; diff --git a/wallet-enterprise-configurations/vid-issuer/src/configuration/verifier/VerifierConfigurationService.ts b/wallet-enterprise-configurations/vid-issuer/src/configuration/verifier/VerifierConfigurationService.ts index bcf78fd..cb38ff3 100644 --- a/wallet-enterprise-configurations/vid-issuer/src/configuration/verifier/VerifierConfigurationService.ts +++ b/wallet-enterprise-configurations/vid-issuer/src/configuration/verifier/VerifierConfigurationService.ts @@ -4,6 +4,7 @@ import { authorizationServerMetadataConfiguration } from "../../authorizationSer import config from "../../../config"; import { VerifierConfigurationInterface } from "../../services/interfaces"; import { InputDescriptorType } from "@wwwallet/ssi-sdk"; +import "reflect-metadata"; export type PresentationDefinitionTypeWithFormat = { id: string; From a0cddc893c67a9d36937c3d6426bc3a250b94e6d Mon Sep 17 00:00:00 2001 From: pstamatop Date: Wed, 10 Apr 2024 13:05:30 +0300 Subject: [PATCH 3/3] Minor text about birthdate --- .../configuration/verifier/VerifierConfigurationService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts b/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts index 36d49b7..5d2cd4e 100644 --- a/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts +++ b/wallet-enterprise-configurations/acme-verifier/src/configuration/verifier/VerifierConfigurationService.ts @@ -210,7 +210,7 @@ const bachelorWithEuropeanHealthInsuranceCardPresentationDefinition = { const verifiableIdWithBachelorWithEuropeanHealthInsuranceCardPresentationDefinition = { "id": "VerifiableIdWithBachelorWithEuropeanHealthInsuranceCard", "title": "Verifiable ID, Bachelor Diploma and European Health Insurance Card", - "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, dateOfBirth), Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate), EHIC (id, firstName, familyName, personalIdentifier, birthdate)", + "description": "Required Fields: Verifiable ID (type, personalIdentifier, firstName, familyName, birthdate), Bachelor Diploma (id, firstName, familyName, diplomaTitle, grade, eqfLevel, certificateId, dateOfBirth, awardingDate, completionDate), EHIC (id, firstName, familyName, personalIdentifier, birthdate)", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ verifiableIdDescriptor, @@ -320,7 +320,7 @@ export class VerifierConfigurationService implements VerifierConfigurationInterf { "id": "VerifiableId", "title": "Verifiable ID", - "description": "Required Fields: type, personalIdentifier, firstName, familyName, dateOfBirth", + "description": "Required Fields: type, personalIdentifier, firstName, familyName, birthdate", "format": { "vc+sd-jwt": { alg: [ 'ES256' ] },jwt_vc_json: { alg: [ 'ES256' ] }, jwt_vp: { alg: [ 'ES256' ] } }, "input_descriptors": [ verifiableIdDescriptor