UNPKG

@digitalcredentials/verifier-core

Version:

For verifying Verifiable Credentials in the browser, Node.js, and React Native.

37 lines (36 loc) 1.96 kB
import { RegistryClient } from '@digitalcredentials/issuer-registry-client'; import { REGISTERED_ISSUER_STEP_ID } from './constants/verificationSteps.js'; const registries = new RegistryClient(); const registryNotYetLoaded = true; /** * Checks to see if a VC's issuer appears in any of the known DID registries. * * @returns An object containing a list of the names of the DID registries in * which the issuer appears and a list of registries that couldn't be loaded */ export async function getTrustedRegistryListForIssuer({ issuer, knownDIDRegistries, reloadIssuerRegistry = false }) { let registryLoadResult = []; // eslint-disable-next-line no-use-before-define if (reloadIssuerRegistry || registryNotYetLoaded) { registryLoadResult = await registries.load({ config: knownDIDRegistries }); } const registriesNotLoaded = registryLoadResult.filter((registry) => !registry.loaded).map(entry => { return { name: entry.name, url: entry.url }; }); const issuerDid = typeof issuer === 'string' ? issuer : issuer.id; const issuerInfo = registries.didEntry(issuerDid); // See if the issuer DID appears in any of the known registries // If yes, assemble a list of registries in which it appears const foundInRegistries = issuerInfo?.inRegistries ? Array.from(issuerInfo.inRegistries).map(r => r.name) : []; return { foundInRegistries, registriesNotLoaded }; } export async function addTrustedIssuersToVerificationResponse({ issuer, knownDIDRegistries, reloadIssuerRegistry = false, verificationResponse }) { const { foundInRegistries, registriesNotLoaded } = await getTrustedRegistryListForIssuer({ issuer, knownDIDRegistries, reloadIssuerRegistry }); const registryStep = { "id": REGISTERED_ISSUER_STEP_ID, "valid": !!foundInRegistries.length, foundInRegistries, registriesNotLoaded }; (verificationResponse.log ??= []).push(registryStep); }