Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
import { IsDefined, IsEnum, IsOptional, IsString, ValidateNested } from 'class-validator';
import { IsArray, IsDefined, IsEnum, IsOptional, IsString, ValidateIf, ValidateNested } from 'class-validator';
import { Type } from 'class-transformer';
import { ResponseMode } from '@credebl/enum/enum';
import { RequestSignerDto } from './oid4vc-verifier-presentation.dto';
Expand All @@ -20,4 +20,16 @@ export class CreateIntentBasedVerificationDto {
@ValidateNested()
@Type(() => RequestSignerDto)
requestSigner?: RequestSignerDto;

//TODO: check e2e flow and add ResponseMode based restrictions
// @IsOptional()
@ApiPropertyOptional({
type: [String],
description: 'Required when responseMode is dc_api or dc_api.jwt',
example: ['https://example.com']
})
@ValidateIf((obj) => obj.responseMode === ResponseMode.DC_API || obj.responseMode === ResponseMode.DC_API_JWT)
@IsDefined({ message: 'expectedOrigins is required when responseMode is dc_api or dc_api.jwt' })
@IsArray()
expectedOrigins: string[];
}
Original file line number Diff line number Diff line change
Expand Up @@ -401,14 +401,14 @@ export class Oid4vcVerificationController {

return res.status(HttpStatus.OK).json({
success: true,
message: 'Verifier details retrieved successfully.',
message: 'Verification presentation details retrieved successfully.',
data: result
});
} catch (error) {
this.logger.debug(
`Error in getVerificationPresentation(): ${error.message || 'Failed to fetch verifier presentation.'}`
`Error in getVerificationPresentation(): ${error.message || 'Failed to fetch verification presentation.'}`
);
throw new BadRequestException(error.message || 'Failed to fetch verifier presentation.');
throw new BadRequestException(error.message || 'Failed to fetch verification presentation.');
}
}

Expand Down Expand Up @@ -457,19 +457,19 @@ export class Oid4vcVerificationController {
);

this.logger.debug(
`Verifier presentation response details fetched successfully for verificationPresentationId: ${verificationPresentationId}`
`Verification presentation response details fetched successfully for verificationPresentationId: ${verificationPresentationId}`
);

return res.status(HttpStatus.OK).json({
success: true,
message: 'Verifier presentation response details retrieved successfully.',
message: 'Verification presentation response details retrieved successfully.',
data: result
});
} catch (error) {
this.logger.debug(
`Error in getVerificationPresentationResponse(): ${error.message || 'Failed to fetch verifier presentation response details.'}`
`Error in getVerificationPresentationResponse(): ${error.message || 'Failed to fetch verification presentation response details.'}`
);
throw new BadRequestException(error.message || 'Failed to fetch verifier presentation response details.');
throw new BadRequestException(error.message || 'Failed to fetch verification presentation response details.');
}
}
/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@ export class Oid4vcVerificationService {
createIntentDto: CreateIntentBasedVerificationDto,
userDetails: user
): Promise<object> {
const { intent, responseMode, requestSigner } = createIntentDto;
const payload = { orgId, verifierId, intent, responseMode, requestSigner, userDetails };
const { intent, responseMode, requestSigner, expectedOrigins } = createIntentDto;
const payload = { orgId, verifierId, intent, responseMode, requestSigner, expectedOrigins, userDetails };
this.logger.debug(
`[createIntentBasedVerificationPresentation] Called with orgId=${orgId}, verifierId=${verifierId}, intent=${intent}, user=${userDetails?.id}`
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,9 @@ export class Oid4vpVerificationController {
responseMode: string;
requestSigner: IRequestSigner;
userDetails: user;
expectedOrigins?: string[];
}): Promise<object> {
const { orgId, verifierId, intent, responseMode, requestSigner, userDetails } = payload;
const { orgId, verifierId, intent, responseMode, requestSigner, expectedOrigins, userDetails } = payload;
this.logger.debug(
`[createIntentBasedVerificationPresentation] Received 'oid4vp-intent-based-verification-presentation' for orgId=${orgId}, verifierId=${verifierId}, intent=${intent}, user=${userDetails?.id ?? 'unknown'}`
);
Expand All @@ -123,7 +124,8 @@ export class Oid4vpVerificationController {
intent,
responseMode,
requestSigner,
userDetails
userDetails,
expectedOrigins
);
}

Expand Down
9 changes: 5 additions & 4 deletions apps/oid4vc-verification/src/oid4vc-verification.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -312,7 +312,8 @@ export class Oid4vpVerificationService extends BaseService {
intent: string,
responseMode: string,
requestSigner: IRequestSigner,
userDetails: user
userDetails: user,
expectedOrigins?: string[]
): Promise<object> {
this.logger.debug(
`[createIntentBasedVerificationPresentation] called for orgId=${orgId}, verifierId=${verifierId}, intent=${intent}, user=${userDetails?.id ?? 'unknown'}`
Expand Down Expand Up @@ -354,7 +355,8 @@ export class Oid4vpVerificationService extends BaseService {
verifierId: verifier.publicVerifierId,
dcql: templateData?.template?.templateJson.dcql,
responseMode,
requestSigner: null
requestSigner: null,
expectedOrigins
};

// Handle request signer based on method
Expand Down Expand Up @@ -426,8 +428,7 @@ export class Oid4vpVerificationService extends BaseService {
: getAgentUrl(agentEndPoint, CommonConstants.OIDC_VERIFIER_SESSION_GET_BY_QUERY);

if (!query.id) {
//TODO: Temp fix due to deployment issues
url = buildUrlWithQuery(url, query as Record<string, string | number | boolean | object>);
url = buildUrlWithQuery(url, query as Record<string, object>);
}
this.logger.debug(`[getVerifierSession] calling agent URL=${url}`);

Expand Down