@digitalcredentials/verifier-core
Version:
For verifying Verifiable Credentials in the browser, Node.js, and React Native.
37 lines (36 loc) • 1.96 kB
JavaScript
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);
}