import { isEbsiDid } from '../shared/utils.js'; import { EbsiWrapper } from '../shared/middleware/ebsiWrapper.js'; import { CredentialValidationOptions } from '../shared/dto/validationOptions.dto.js'; import { VerifiableCredentialsValidator } from './credential/verifiableCredentialsValidator.js'; import { ValidationResult } from '../shared/dto/validationResult.dto.js'; import { EbsiCredentialValidator } from './credential/ebsiCredentialValidator.js'; import { DidPublicKeyResolver } from '../resolvers/didPublicKeyResolver.js'; import { SignatureValidator } from './credential/signatureValidator.js'; import { DidDocumentResolver } from '../resolvers/didDocumentResolver.js'; import { HttpPublicKeyResolver } from '../resolvers/httpPublicKeyResolver.js'; export interface Validator { validate( credential: string, opts?: CredentialValidationOptions, ): Promise; } export class CredentialValidatorFactory { static create(issuerDid: string): Validator { if (isEbsiDid(issuerDid)) { const ebsiWrapper = new EbsiWrapper(); return new EbsiCredentialValidator(ebsiWrapper); } return new VerifiableCredentialsValidator( new DidPublicKeyResolver(new DidDocumentResolver()), new HttpPublicKeyResolver(), new SignatureValidator(), ); } }