UNPKG

did-provider-quick

Version:

Veramo plugin that can enable creation and control of did:quick identifiers.

43 lines 2.05 kB
import { getDIDQuickUpdates } from './getDIDQuickUpdates.js'; import { multibaseToBytes } from '@veramo/utils'; export async function resolveDID(did, agent) { if (!did.startsWith('did:quick:')) { throw Error('DID not of type did:quick'); } const rootDid = did.replace('did:quick:', ''); const rootDoc = await agent.resolveDid({ didUrl: rootDid }); const creds = await getDIDQuickUpdates({ did: rootDid }, agent); let keyAgreementKeys = rootDoc.didDocument.keyAgreement ? [...(rootDoc.didDocument.keyAgreement)] : []; let authenticationKeys = rootDoc.didDocument.authentication ? [...(rootDoc.didDocument.authentication)] : []; let verificationMethods = [...(rootDoc.didDocument.verificationMethod)]; let serviceEndpoints = rootDoc.didDocument.service ? [...(rootDoc.didDocument.service)] : []; // let numKeys = 0 for (const cred of creds) { const { verifiableCredential } = cred; if (verifiableCredential?.type?.includes('DIDQuickAddKey')) { verificationMethods = [...verificationMethods, verifiableCredential.credentialSubject]; const { keyBytes, keyType } = multibaseToBytes(verifiableCredential.credentialSubject.publicKeyMultibase); if (keyType === 'Ed25519' || keyType === "Secp256k1") { authenticationKeys = [...authenticationKeys, verifiableCredential.credentialSubject.id]; } if (keyType === 'Ed25519') { keyAgreementKeys = [...keyAgreementKeys, verifiableCredential.credentialSubject.id]; } } } const didDocument = { ...rootDoc.didDocument, id: 'did:quick:' + rootDid, verificationMethod: verificationMethods, authentication: authenticationKeys, assertionMethod: authenticationKeys, keyAgreement: keyAgreementKeys, service: serviceEndpoints }; return { didDocument, didDocumentMetadata: {}, didResolutionMetadata: {} }; } //# sourceMappingURL=resolveDID.js.map