import { DecodedVerifiableCredentialDto } from '../../shared/dto/decodedVerifiableCredential.dto.js'; import { CredentialValidationResult, CredentialValidator, } from './credentialValidator.interface.js'; import { CredentialValidationTypes } from '../presentation/verifiablePresentationValidationReport.js'; export class NotYetValidValidator implements CredentialValidator { private result: CredentialValidationResult; constructor() { this.result = { valid: true, }; } validate( credential: DecodedVerifiableCredentialDto, ): Promise { const currentDate = new Date(); if (credential.nbf) { this.checkValidFromDate( new Date((credential.nbf as number) * 1000), currentDate, credential.vc.id, ); } if (credential.vc?.validFrom) { this.checkValidFromDate( new Date(credential.vc.validFrom), currentDate, credential.vc.id, ); } return Promise.resolve(this.result); } private checkValidFromDate( validFromDate: Date, currentDate: Date, credentialId: string, ) { if (validFromDate >= currentDate) { this.result = { valid: false, message: `${credentialId} is not yet valid`, }; } } getValidationType(): CredentialValidationTypes { return CredentialValidationTypes.NotYetValid; } }