From e5198a9a4e0432b488b51963fab13eec0a18bbf8 Mon Sep 17 00:00:00 2001 From: bhavanakarwade <137506897+bhavanakarwade@users.noreply.github.com> Date: Wed, 14 Aug 2024 19:06:19 +0530 Subject: [PATCH] refactor: attributes payload changes while creating a proofrequest (#907) * fix: verification bugs Signed-off-by: bhavanakarwade * fix: take regex in common constants Signed-off-by: bhavanakarwade * fix: added prooftype for polygon and no ledger Signed-off-by: bhavanakarwade * fix: add proof type in common constants Signed-off-by: bhavanakarwade --------- Signed-off-by: bhavanakarwade Signed-off-by: KulkarniShashank --- apps/verification/src/verification.service.ts | 11 +++++------ libs/common/src/cast.helper.ts | 6 ++++-- libs/common/src/common.constant.ts | 2 ++ libs/enum/src/enum.ts | 5 +++++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/apps/verification/src/verification.service.ts b/apps/verification/src/verification.service.ts index 2286e4c46..e0075556f 100644 --- a/apps/verification/src/verification.service.ts +++ b/apps/verification/src/verification.service.ts @@ -4,7 +4,7 @@ import { ClientProxy, RpcException } from '@nestjs/microservices'; import { map } from 'rxjs/operators'; import { IGetAllProofPresentations, IProofRequestSearchCriteria, IGetProofPresentationById, IProofPresentation, IProofRequestPayload, IRequestProof, ISendProofRequestPayload, IVerifyPresentation, IVerifiedProofData, IInvitation } from './interfaces/verification.interface'; import { VerificationRepository } from './repositories/verification.repository'; -import { CommonConstants } from '@credebl/common/common.constant'; +import { ATTRIBUTE_NAME_REGEX, CommonConstants } from '@credebl/common/common.constant'; import { RecordType, agent_invitations, org_agents, organisation, presentations, user } from '@prisma/client'; import { AutoAccept, OrgAgentType, VerificationProcessState } from '@credebl/enum/enum'; import { ResponseMessages } from '@credebl/common/response-messages'; @@ -273,7 +273,6 @@ export class VerificationService { ...proofRequestPayload }; } - const getProofPresentationById = await this._sendProofRequest(payload); return getProofPresentationById?.response; } catch (error) { @@ -781,7 +780,6 @@ export class VerificationService { const verifiableCredential = getProofPresentationById?.response?.presentation?.presentationExchange?.verifiableCredential[0] ?.credentialSubject; - if (getProofPresentationById?.response) { certificate = getProofPresentationById?.response?.presentation?.presentationExchange?.verifiableCredential[0].prettyVc @@ -792,12 +790,13 @@ export class VerificationService { Array.isArray(requestedAttributesForPresentationExchangeFormat) ) { requestedAttributesForPresentationExchangeFormat.forEach((requestedAttributeKey) => { - const attributeName = requestedAttributeKey?.split('.').pop(); - const attributeValue = verifiableCredential[attributeName]; + + const attributeName = requestedAttributeKey?.match(ATTRIBUTE_NAME_REGEX)?.[1]; + const attributeValue = verifiableCredential?.[attributeName]; + const schemaId = getProofPresentationById?.response?.request?.presentationExchange?.presentation_definition ?.input_descriptors[0].schema[0].uri; - if (attributeName && attributeValue !== undefined) { const extractedData: IProofPresentationDetails = { [attributeName]: attributeValue, diff --git a/libs/common/src/cast.helper.ts b/libs/common/src/cast.helper.ts index 9bf6bc096..7d70557a8 100644 --- a/libs/common/src/cast.helper.ts +++ b/libs/common/src/cast.helper.ts @@ -1,4 +1,4 @@ -import { JSONSchemaType, ledgerLessDIDType, schemaRequestType, TemplateIdentifier } from '@credebl/enum/enum'; +import { DidMethod, JSONSchemaType, ledgerLessDIDType, ProofType, schemaRequestType, TemplateIdentifier } from '@credebl/enum/enum'; import { ISchemaFields } from './interfaces/schema.interface'; import { BadRequestException, PipeTransform } from '@nestjs/common'; import { plainToClass } from 'class-transformer'; @@ -184,6 +184,8 @@ export const createOobJsonldIssuancePayload = (JsonldCredentialDetails: IJsonldC const {credentialData, orgDid, orgId, schemaLedgerId, schemaName} = JsonldCredentialDetails; const credentialSubject = { }; + const proofType = (orgDid?.includes(DidMethod.POLYGON)) ? ProofType.POLYGON_PROOFTYPE : ProofType.NO_LEDGER_PROOFTYPE; + for (const key in credentialData) { if (credentialData.hasOwnProperty(key) && TemplateIdentifier.EMAIL_COLUMN !== key) { credentialSubject[key] = credentialData[key]; @@ -208,7 +210,7 @@ export const createOobJsonldIssuancePayload = (JsonldCredentialDetails: IJsonldC prettyVc }, 'options': { - 'proofType': 'Ed25519Signature2018', + proofType, 'proofPurpose': 'assertionMethod' } } diff --git a/libs/common/src/common.constant.ts b/libs/common/src/common.constant.ts index a18b5b7ae..e80085d05 100644 --- a/libs/common/src/common.constant.ts +++ b/libs/common/src/common.constant.ts @@ -374,6 +374,8 @@ ACCEPT_OFFER = '/multi-tenancy/credentials/accept-offer/', SEED_LENGTH = 32 } +export const ATTRIBUTE_NAME_REGEX = /\['(.*?)'\]/; + export const postgresqlErrorCodes = []; postgresqlErrorCodes['23503'] = 'foreign_key_violation'; postgresqlErrorCodes['00000'] = 'successful_completion'; diff --git a/libs/enum/src/enum.ts b/libs/enum/src/enum.ts index 97d2cabbc..dc776df9c 100644 --- a/libs/enum/src/enum.ts +++ b/libs/enum/src/enum.ts @@ -251,3 +251,8 @@ export enum UserRole { DEFAULT_USER = 'DEFAULT_USER', HOLDER = 'HOLDER' } + +export enum ProofType { + POLYGON_PROOFTYPE = 'EcdsaSecp256k1Signature2019', + NO_LEDGER_PROOFTYPE = 'Ed25519Signature2018' +}