import { EbsiVerifiableAttestation, verifyCredentialJwt, } from '@cef-ebsi/verifiable-credential'; import * as EbsiVerifiablePresentation from '@cef-ebsi/verifiable-presentation'; import { verifyPresentationJwt } from '@cef-ebsi/verifiable-presentation'; import { CredentialValidationOptions, PresentationValidationOptions, } from '../dto/validationOptions.dto.js'; import { EbsiEnvironment, EbsiHost } from '../../config.js'; export class EbsiWrapper { async validate( vc: string, options?: CredentialValidationOptions, ): Promise { const isConformance = options.ebsiAuthority?.includes('conformance') || options.didRegistry?.includes('conformance'); const host = isConformance ? EbsiHost.CONFORMANCE : EbsiHost.PILOT; const environment = isConformance ? EbsiEnvironment.CONFORMANCE : EbsiEnvironment.PILOT; return await verifyCredentialJwt( vc, { hosts: [host], scheme: 'ebsi', network: { name: environment, isOptional: false, }, services: { 'did-registry': 'v5', 'trusted-issuers-registry': 'v5', 'trusted-policies-registry': 'v3', 'trusted-schemas-registry': 'v3', }, }, { validAt: new Date().getTime() / 1000, }, ); } public async verifyPresentationJwt( vpToken: string, audience: string, options: PresentationValidationOptions, ): Promise { const environment = options.ebsiAuthority.includes('conformance') || options.didRegistry.includes('conformance') ? 'conformance' : 'pilot'; return await verifyPresentationJwt( vpToken, audience, { hosts: [`api-${environment}.ebsi.eu`], scheme: 'ebsi', network: { name: environment, isOptional: false, }, services: { 'did-registry': 'v5', 'trusted-issuers-registry': 'v5', 'trusted-policies-registry': 'v3', 'trusted-schemas-registry': 'v3', }, }, { validAt: new Date().getTime() / 1000, }, ); } }